证明 Coq 中的矛盾
Proving a contradiction in Coq
我试图用 Coq
证明一个简单的引理,但我遇到了一些麻烦
排除不可行的情况。这是我的引理:
Theorem helper : forall (a b : bool),
((negb a) = (negb b)) -> (a = b).
Proof.
intros a b.
intros H.
destruct a.
- destruct b.
+ reflexivity.
+ (** this case is trivially true *)
由于假设 H
是错误的,因此相关的子目标是微不足道的。我如何告诉 Coq
?
1 subgoal
H : negb true = negb false
______________________________________(1/1)
true = false
当假设不同的构造函数之间存在相等性时(在本例中为 H : false = true
),您可以使用 discriminate.
在其他情况下,当您有 False
作为假设时,您可以使用 contradiction.
我试图用 Coq
证明一个简单的引理,但我遇到了一些麻烦
排除不可行的情况。这是我的引理:
Theorem helper : forall (a b : bool),
((negb a) = (negb b)) -> (a = b).
Proof.
intros a b.
intros H.
destruct a.
- destruct b.
+ reflexivity.
+ (** this case is trivially true *)
由于假设 H
是错误的,因此相关的子目标是微不足道的。我如何告诉 Coq
?
1 subgoal
H : negb true = negb false
______________________________________(1/1)
true = false
当假设不同的构造函数之间存在相等性时(在本例中为 H : false = true
),您可以使用 discriminate.
在其他情况下,当您有 False
作为假设时,您可以使用 contradiction.