繁体   English   中英

如何证明所有人(pq:Prop),〜p->〜((p-> q)-> p) 使用coq

[英]How to prove forall (p q:Prop), ~p->~((p ->q) ->p). using coq

我对coq编程完全陌生,无法在定理下进行证明。 我需要有关如何解决以下构造的步骤的帮助吗?

定理PeirceContra:forall(pq:Prop),〜p->〜((p-> q)-> p)。

我尝试了以下方式的证明。 公理为Axiom classic : forall P:Prop, P \\/ ~ P.

Theorem PeirceContra: forall (p q:Prop), ~ p -> ~((p  -> q)  -> p).
Proof.
  unfold not.
  intros.
  apply H.
  destruct (classic p) as [ p_true | p_not_true].
  - apply p_true.
  - elimtype False. apply H.
Qed.

使用elimtype后获得子目标并将H用作

1 subgoal
p, q : Prop
H : p -> False
H0 : (p -> q) -> p
p_not_true : ~ p
______________________________________(1/1)
p

但是现在我被困在这里,因为我无法使用给定公理的p_not_true构造来证明P……请提出一些帮助……我不清楚如何使用给定公理来证明逻辑。 ..............

这个引理可以得到建设性的证明。 如果您考虑在取得进步的每个步骤中可以做什么,则引理证明了自己:

Lemma PeirceContra :
  forall P Q, ~P -> ~((P -> Q) -> P).
Proof.
  intros P Q np.
  unfold "~".
  intros pq_p.
  apply np.     (* this is pretty much the only thing we can do at this point *)
  apply pq_p.   (* this is almost inevitable too *)

  (* the rest should be easy *)
(* Qed. *)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM