Coq:自动重复重写

Coq:自动重复重写,coq,coq-tactic,Coq,Coq Tactic,进一步实现自动化的好方法是什么?特别是,我不想在任何地方提及假设的名称。如果目标可以通过一系列重写来解决,那么策略可以处理它 皮埃尔·科尔比诺(Pierre Corbineau)的《策略》同余,实现了标准的Nelson和Oppen同余闭包算法,这是一种使用未解释符号的地面等式的决策过程。它还包括构造器理论(见8.5.7和8.5.6)。如果目标是一个非量化的等式,同余试图在上下文中用非量化的等式来证明它。否则,它试图从上下文中推断出一个可区别的等式。或者,一致性试图证明一个假设等于目标或另一个假设

进一步实现自动化的好方法是什么?特别是,我不想在任何地方提及假设的名称。

如果目标可以通过一系列重写来解决,那么策略可以处理它

皮埃尔·科尔比诺(Pierre Corbineau)的《策略》
同余
,实现了标准的Nelson和Oppen同余闭包算法,这是一种使用未解释符号的地面等式的决策过程。它还包括构造器理论(见8.5.7和8.5.6)。如果目标是一个非量化的等式,
同余
试图在上下文中用非量化的等式来证明它。否则,它试图从上下文中推断出一个可区别的等式。或者,
一致性
试图证明一个假设等于目标或另一个假设的否定

同余
还能够利用说明量化等式的假设,您必须为通过这种方式生成的额外等式的数量提供一个界限。请注意,等式的一个成员必须包含所有量化变量,以便
同余
与之匹配

上述内容基本上意味着,如果可以使用
重写
区分
策略来解决目标,那么
一致性
可以解决目标。但有时,
congrence
无法帮助您,因为它无法为您展开定义——在这种情况下,您必须帮助它

Example test: forall f (n: nat), f n = n -> f (f n) = n.
Proof.
  intros f n H. repeat rewrite H. reflexivity.
Qed.

重复重写H.
可以替换为
重写?H.
(重写零次或多次)或
重写!H.(重写一次或多次)。还有代码>自动重写< /Cord>策略。有没有办法使<代码>自动重写< /代码>考虑局部假设?您可以使用这个新的:<代码>需要导入SETIOD。提示重写我的提示:我的数据库。自上而下重写;自上而下(提示我的数据库)。
Example test: forall f (n: nat), f n = n -> f (f n) = n.
Proof. congruence. Qed.