簡體   English   中英

如何在不使用直覺的情況下證明皮爾士,經典,排除_中間,de_morgan_not_and_not和implies_to_or的等價性

[英]How to prove the mutual equivalence of peirce, classic, excluded_middle, de_morgan_not_and_not and implies_to_or without using intuition in coq

我簡化了peirce,classic,excluded_middle,de_morgan_not_and_not和implies_to_or相互等價的證明程序,主要寫在git@github.com:B-Rich/sf.git ,如下所示。

Theorem excluded_middle_irrefutable:  forall (P:Prop), ~ ~ (P \/ ~ P).
Proof.
  intros. unfold not. intros.
  apply H. right. intros. apply H. left. apply H0.
Qed.

Definition peirce                := forall P Q: Prop, ((P->Q)->P)->P.
Definition classic               := forall P :  Prop, ~~P -> P.
Definition excluded_middle       := forall P :  Prop, P \/ ~P.
Definition de_morgan_not_and_not := forall P Q: Prop, ~(~P /\ ~Q) -> P\/Q.
Definition implies_to_or         := forall P Q: Prop, (P->Q) -> (~P\/Q).

Theorem peirce_classic : peirce -> classic.
Proof.
  compute. intros.
  specialize (H P False).
  apply H. intros.
  apply H. contradiction H0.
Qed.

Theorem classic_excluded_middle : classic -> excluded_middle.
Proof.
  compute. intros.
  apply H. intros.
  apply H0.
  right.
  intros.
  assert (P \/ (P->False)) as H2.
    apply (or_introl H1).
  apply (H0 H2).
Qed.

Theorem false_dist_1 : forall {P Q : Prop}, (P \/ Q -> False) -> (P -> False) /\ (Q -> False).
Proof.
  intros.
  split.
  intros.
  apply (H (or_introl H0)).
  intros.
  apply (H (or_intror H0)).
Qed.

Theorem false_dist_2 : forall {P Q : Prop}, (P -> False) /\ (Q -> False) -> (P \/ Q -> False).
Proof.
  intros.
  inversion H.
  inversion H0.
  apply (H1 H3).
  apply (H2 H3).
Qed.

Theorem em_de_morgan : excluded_middle -> de_morgan_not_and_not.
Proof.
  compute. intros.
  specialize (H (P \/ Q)).
  inversion H.
  apply H1.
  apply (False_ind (P \/ Q) (H0 (false_dist_1 H1))).
Qed.

Theorem double_neg : forall P : Prop,
  P -> ((P->False)->False).
Proof.
  (* WORKED IN CLASS *)
  intros P H. intros G. apply G. apply H.  Qed.

Theorem de_morgan_to_or : de_morgan_not_and_not -> implies_to_or.
Proof.
  compute. intros.
  specialize (H (P -> False) Q).
  intuition.
Qed.

Theorem to_or_peirce: implies_to_or -> peirce.
Proof.
  compute. intros.
  specialize (H P P).
  intuition.
Qed.

我成功地刪除了一些intuition策略,最后兩個除外。

我的問題是:

  • 如何在不使用intuition策略的情況下證明to_or_peirce和de_morgan_to_or?
  • intuition策略是做什么的?
  • 有沒有辦法提取intuition戰術可能產生的具體程序?

(首先,我知道這是Benjamin C. Pierce的Software Foundations的一部分 。這些都是用於大學課程的,所以我不會為您提供這些練習的解決方案,並且會破壞其他所有人的樂趣。很抱歉,但您希望自己能像我一樣(我也一樣),但我希望您能理解–我不想“獎勵”他們將這些資料公開發布的努力,而為此付出了額外的工作來提出新的練習。)


有沒有辦法提取intuition戰術可能產生的具體程序?

好吧,對於任何已定義的內容,您都可以執行“ Print thing. 得到定義。 對於已經手動定義的內容,通常看起來很像您編寫的內容。 對於戰術產生的事物,這可能是非常不可讀的(甚至包含不必要的冗長的間接指令)。通過實踐,您最終將能夠大部分閱讀和重構(以更易讀的方式)這些證明。

可能有用或可能無效的是說info <tactic> ,它應該輸出應用策略的列表/樹–但它似乎已經被破壞了(到現在為止已經好幾年了……),在Coq的新版本中,可能會有專門的策略,例如info_trivialinfo_autoinfo_eauto 可能會對您有所幫助。


直覺策略是做什么的?

intuition文檔相當神秘,但是包含有用的代碼片段

[…]實際上, tauto只是intuition fail

[...]

變種:

  1. intuition
    等效於intuition auto with *

(最后一部分意味着您可以嘗試intuition info_auto ,看看是否能給您任何有用的信息。不幸的是,它只會打印一長串(* info auto : *) idtac.因為這些定理都是重言式,而auto沒有什么都不要做。)

因此,轉到tauto文檔

該策略基於Roy Dyckhoff [ 54 ]的無緊縮后續演算LJT *來實現直覺命題演算的決策程序。 請注意,在直覺重言式命題的任何情況下, tauto成功。 tauto展開否定和邏輯等價關系,但不展開任何其他定義。

現在應該很清楚了,對吧? 對? ;-)

(到那時,您可以嘗試查看tauto定義但這還不夠清楚。)

將各個部分放在一起並給出示例:

如文檔所述, tauto (以及intuition )“為直覺命題演算實現了決策過程”。 也就是說,凡是僅在連詞( /\\ ),析取詞( \\/ ),(bi)蘊涵( <-> / -> )和某些否定情況( ~ )結合在一起的情況下,都可以通過此方法解決。

Variables A B C D : Prop.
Lemma foo : (A /\ B) -> A.  tauto.  Qed.            (* solves *)
Lemma bar : (A /\ B) -> A.  auto. (* fails *) auto 9999 with *. (* fails *)
Lemma baz : ((B /\ C) /\ D) -> ((A /\ C) -> (D /\ B /\ (A /\ A))).
            tauto.  Qed.  (* solves *)
Lemma qux : (A \/ B) /\ (C \/ (A -> B)) /\ ~B -> C.  tauto.  Qed. (* solves *)
(* etc. *)

對於所有這些, auto只會做什么,而tauto (“重言式”)會立即解決它們。 當完成了tauto的基本組合和tauto但還不能解決所有問題時, intuition只會嘗試做更多的事情。

(有幫助嗎?)


如何在不使用intuition策略的情況下證明to_or_peircede_morgan_to_or

提示:您的H的格式為… -> (… \\/ …) ,您可以對它進行destructcase分析,就像使用析取法一樣(但在這種“符號之海”中,可能很難看到這個有可能)。 其余的應該很容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM