Require Import Arith.
Goal forall a b c: nat, nat_eq a b -> nat_eq b c -> nat_eq a c.
Proof.
intros a b c H0 H1.
1 subgoal
a, b, c : nat
H0 : eq_nat a b
H1 : eq_nat b c
______________________________________(1/1)
eq_nat a c
这只是我所举的一个例子,我的问题是,如果我想通过与目标矛盾来证明这一点,假设(〜eq_nat ac)是正确的,然后通过在上下文中找到矛盾来证明,我应该如何做?实现吗?找不到解决方法,是否暗示我应该使用哪种策略?
答案 0 :(得分:1)
这需要双重否定消除(不是目标->目标)才能起作用。如果您将其作为公理(例如Axiom dne: forall P: Prop, ~~P -> P
),则可以使用策略apply dne
。
确切地说,
Require Import Arith.
Axiom dne: forall P: Prop, ~~P -> P.
Goal forall a b c: nat, nat_eq a b -> nat_eq b c -> nat_eq a c.
Proof.
intros a b c H0 H1.
apply dne; intro H2.
(* now the context is
1 subgoal
a, b, c : nat
H0 : eq_nat a b
H1 : eq_nat b c
H2 : ~ eq_nat a c
______________________________________(1/1)
False
*)
Abort.