如果我在Coq,我发现自己陷入了这样的目标:
==================
x = y -> y = x
是否有一种策略可以一举处理?事实上,我正在写
intros H. rewrite -> H. reflexivity.
但它有点笨重。
答案 0 :(得分:7)
要“翻转”平等H: x = y
,您可以使用symmetry in H
。如果您想要翻转目标,只需使用symmetry
即可。
答案 1 :(得分:4)
如果你正在寻找一种策略,那么easy
策略会立即处理这个策略:
Coq < Parameter x y : nat.
x is assumed
y is assumed
Coq < Lemma sym : x = y -> y = x.
1 subgoal
============================
x = y -> y = x
sym < easy.
No more subgoals.
如果您查看easy
策略找到的证明,关键部分是eq_sym
的应用:
sym < Show Proof.
(fun H : x = y => eq_sym H)
较重的auto
战术也将在一步中完成这一目标。对于生成完全相同的证明术语的轻微低级证明,您可以使用symmetry
策略(也会自动为您执行必要的intro
):
sym < Restart.
1 subgoal
============================
x = y -> y = x
sym < symmetry.
1 subgoal
H : x = y
============================
x = y
sym < assumption.
No more subgoals.
sym < Show Proof.
(fun H : x = y => eq_sym H)