我正在尝试使用公理在Coq中证明(p-> q)->(〜p / q):
Axiom tautology : forall P:Prop, P \/ ~ P.
我试图通过应用p-> q将〜p / q转换为〜p / p。所以做这样的事情:
Theorem Conversion: forall (p q: Prop),(p -> q) -> (~ p \/ q).
Proof.
intros p q.
intros p_implies_q.
(do something here, change ~p\/q into ~p\/p)
apply tautology...
但是我不知道该怎么办。如果有更好的方法,请告诉我。谢谢!。
答案 0 :(得分:3)
一种使用tautology
的方法是使用策略destruct
。这样可以减少p
为真而p
为非真的情况。
Axiom tautology : forall P:Prop, P \/ ~ P.
Theorem Conversion: forall (p q: Prop),(p -> q) -> (~ p \/ q).
Proof.
intros p q.
intros p_implies_q.
destruct (tautology p) as [p_true | p_not_true].
- (* prove ~p \/ q using p *)
- (* prove ~p \/ q using ~p *)
Qed.
您能看到在每种情况下如何证明~p \/ q
吗?