当简单或cbn策略无效时,减少Coq

时间:2018-11-17 19:10:04

标签: coq coq-tactic

我正试图证明这一点:

Fixpoint max(a: nat)(b:nat): nat :=
if a <=? b then b
else a.
Example ex: forall n:nat, n = max n n.
Proof.
intros.
(...)

简单和cbn策略不会产生任何效果。 如果我叫cbv [max],那么我得到一个redex,但之后我不知道如何继续证明。更准确地说,我得到:

n = (fix max (a b : nat) {struct a} : nat := if a <=? b then b else a) n n

如何摆脱此重做(fix max ....) n n

1 个答案:

答案 0 :(得分:3)

即使函数不是递归的,也存在Fixpoint,这就是fix的来源。请改用Definition

fix仅在结构递减的参数(此处为n,第一个)以构造函数开头时才减小。因此,如果您的函数确实打算递归,则可以使用destruct n.