[英]Can you prove Excluded Middle is wrong in Coq if I do not import classical logic
我知道在構造邏輯中排中線是不可能的。 但是,當我嘗試在 Coq 中顯示它時,我被卡住了。
Theorem em: forall P : Prop, ~P \/ P -> False.
我的做法是:
intros P H.
unfold not in H.
intuition.
系統提示如下:
2 subgoals
P : Prop
H0 : P -> False
______________________________________(1/2)
False
______________________________________(2/2)
False
我應該如何進行? 謝謝
你想要構建的不是對LEM的否定,LEM會說“存在某些P使得EM不能保持”,但是聲稱沒有命題是可判定的,這當然會導致一個微不足道的不一致:
Axiom not_lem : forall (P : Prop), ~ (P \/ ~ P).
Goal False.
now apply (not_lem True); left.
不需要使用花哨的雙重否定引理; 因為這顯然不一致[想象它會持有!]
LEM的“經典”否定確實是:
Axiom not_lem : exists (P : Prop), ~ (P \/ ~ P).
並且它不可證明[否則EM不可接受],但你可以安全地假設它; 但是對你來說它不會有多大用處。
人們不能反駁Coq中排除中間(LEM)的定律。 讓我們假設你證明了你對LEM的反駁。 我們通過將其假設為公理來模擬這種情況:
Axiom not_lem : forall (P : Prop), ~ (P \/ ~ P).
但是,我們還有一個較弱的LEM版本(雙重否定):
Lemma not_not_lem (P : Prop) :
~ ~ (P \/ ~ P).
Proof.
intros nlem. apply nlem.
right. intros p. apply nlem.
left. exact p.
Qed.
這兩個事實將使Coq的邏輯不一致:
Lemma Coq_would_be_inconsistent :
False.
Proof.
apply (not_not_lem True).
apply not_lem.
Qed.
我來自 mathoverflow,但我無權評論 @Anton Trunov 的回答。 我認為他的回答是不公正的,或者至少是不完整的:他隱藏了以下“民間傳說”:
Coq + Impredicative Set + Weak Excluded-middle -> False
這個民間傳說是以下事實的變體:
證明無關+大消除->假
而 Coq + Impredicative Set 是規范的,穩健的,強歸一化的,所以是一致的。
Coq + Impredicative Set 是 Coq 的舊版本。 我認為這至少表明基於雙重否定翻譯的 LEM 辯護沒有那么令人信服。
如果您想獲取有關解決方案的信息,可以從這里獲取https://github.com/FStarLang/FStar/issues/360
另一方面,你可能對 Coq-HoTT+UA 如何對抗 LEM∞ 的故事感興趣......
================================================== ===
好的,讓我們有一些解決方案。
-impredicative-set
,或安裝舊版本(<8.0)的 coq。或者你可以使用標准的 coq + coq-hott。
不建議你在沒有掌握具體概念的情況下直接點擊有問題的代碼。
我跳過了很多關於元理論實現的內容,例如 Univalence 在 Coq-HoTT 中不可計算,而只能在 Agda-CuTT 中計算,例如 Coq+Impredicative Set/Coq-HoTT 的一致性證明。
然而,元理論的考慮很重要。 如果我們只是想得到一個 Anti-LEM 模型而不關心元理論,那么我們可以在 coq 中使用“Boolean-valued forcing”來破壞只有 LEM 才能引入的東西,比如各種奇怪的實集,Dedekind無限的...
但這個答案到此為止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.