当 simpl 或 cbn 策略无效时减少 coq
Reduction in coq when the simpl or cbn tactics are not effective
我正在尝试证明这一点:
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.
(...)
simpl 和 cbn 策略没有产生任何结果。
如果我调用 cbv [max],那么我会得到一个 redex,之后我不知道如何继续证明。更准确地说,我得到:
n = (fix max (a b : nat) {struct a} : nat := if a <=? b then b else a) n n
如何摆脱这个 redex (fix max ....) n n
?
即使函数不是递归的,也有一个 Fixpoint
,这就是 fix
的来源。请改用 Definition
。
A fix
仅当结构递减的参数(此处 n
,第一个)以构造函数开始时才减少。所以如果你的函数真的是递归的,你可以使用 destruct n.
.
我正在尝试证明这一点:
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.
(...)
simpl 和 cbn 策略没有产生任何结果。 如果我调用 cbv [max],那么我会得到一个 redex,之后我不知道如何继续证明。更准确地说,我得到:
n = (fix max (a b : nat) {struct a} : nat := if a <=? b then b else a) n n
如何摆脱这个 redex (fix max ....) n n
?
即使函数不是递归的,也有一个 Fixpoint
,这就是 fix
的来源。请改用 Definition
。
A fix
仅当结构递减的参数(此处 n
,第一个)以构造函数开始时才减少。所以如果你的函数真的是递归的,你可以使用 destruct n.
.