簡體   English   中英

在Isabelle中解決〜(P / \\ Q)|-Q->〜P

[英]Solve ~(P /\ Q) |- Q -> ~P in Isabelle

〜(P / \\ Q)|-Q->〜P

我不知道從哪里開始。 否定使我感到困惑。

我必須在Isabelle(一個程序)中解決此問題,但是如果有人解釋了如何使用自然演繹來解決問題,這將是足夠的幫助。

假設您正在談論Isabelle / HOL,則可以將“單步策略”(例如ruleeruleassumption與基本自然演繹規則一起使用。 您可能需要的建議是:

  • 引進規則notIconjIdisjE impI
  • 刪除規則一樣notEconjEdisjEimpE
  • 銷毀規則,例如mp (modus ponens), conjunct1conjunct2

如果您想了解特定規則的含義,只需編寫thm notI ,Isabelle將顯示該定理的陳述。

您可以設定一個目標

lemma "¬(P ∧ Q) ⟹ Q ⟶ ¬P"

然后寫例如

apply (rule impI)

應用介紹規則進行暗示,使您擁有更新的目標狀態

goal (1 subgoal):
 1. ¬ (P ∧ Q) ⟹ Q ⟹ ¬ P

現在,您找到下一條合適的規則,並應用該規則,直到解決所有子目標。 然后,您可以寫done並且證明已經完成。

至於assumptionerule :如果你結束了,有一些目標P證明和P已經在假設,您可以使用apply assumption來解決它。 erule就像帶有直接鏈接在其后的assumption rule ,通常便於應用消除規則)

但是,這種證明非常繁瑣。 更好的方法是使用Isabelle的結構化證明語言Isar進行整個證明。 有關Isar的介紹,請參閱《 具體語義》的第5章。

這是一個示例,一個SO問題的質量很多時候是由答案而不是問題決定的。 我會給這個答案以感謝M.Eberl的另一個有用的答案,因為我無法發表評論。

關於上面的評論,您可能會問一個作業問題,該評論是有效的,但是如果您對否定感到困惑,那么無論如何您都會注定要失敗,直到取得進展,所以即使是一個完整的答案也不會幫助您,在這里,沒有正確的答案。

該公式是如此基礎,除非通過應用分步規則,否則任何人都很難證明自己理解自己的論證,而無需經過繁瑣的步驟。

例如:

lemma "~(P ∧ Q) ==> Q --> ~P"
  by auto

如果要求是您表現出理解力,那肯定不會給您帶來任何好處。

我在很大程度上是通過“隨着時間的推移吸收吸收的方法”取得了進步,在回答中,埃伯爾先生對自然演繹的基本原理做了重要的概述。 我對它的興趣是弄亂周圍,看看我是否還能吸收更多。

至於ruleerule ,有備忘單:

http://www.phil.cmu.edu/~avigad/formal/FormalCheatSheet.pdf

對於通過Isabelle進行的邏輯證明,Isabelle / HOL是如此龐大且涉及很多,以至於一點點幫助都不會給您帶來什么好處,盡管總的來說這很重要。

基本的邏輯對等

我很久以前就知道了一種含蓄的等效陳述。 甚至在HOL.thy,第998行中

lemma disj_not2: "(P | ~Q) = (Q --> P)"

由此可見,連同DeMorgon的定律(HOL.thy的993行)一起,您發現自己在問題中的等同性。

好吧,當然不完全是,這就是所有麻煩的源頭。根據瑣碎的對等重新排列事物,以最終證明對等。 (雖然也知道表示法的含義,例如|-將是==> 。我使用ASCII是因為我不信任瀏覽器中的圖形。)

M.Eberl提到了結構化證明。 考慮一下這一點:

lemma "~(P ∧ Q) ==> Q --> ~P"
proof-
  fix P Q :: bool
  assume "~(P ∧ Q)"
  hence "~P ∨ ~Q" by simp
  hence "~Q ∨ ~P" by metis
  thus "Q --> ~P" by metis
qed

在功課方面,我應該得到什么? 沒什么。 metis知道如何使用基本的一階邏輯實際上是一個證詞。 否則,如何知道從~Q ∨ ~P跳至Q --> ~P

與JIT編譯器類似,這是一個LJEFAATGAA答案(從另一個答案中學到的知識足以給出答案)。

這更多的是我學到的東西,而不是別人可能學到的東西,這可能有助於別人學習。 Isabelle的學習曲線非常殘酷。 我認為OP需要幫助的時機已經過去了。

  • 除了M.Eberl的回答EXI和REFL需要行為的解釋 ,它仍然是一個謎我為什么rule thm產生特定的目標狀態,對於特定的thm ,為什么rule thm產生無法應用初步證明方法的消息。
  • 除了克里斯給出的精確輪廓,規則和花括號之外,我將無法填寫精確的細節。 例如,如果一個人有時間學習,最好給他們部分答案,讓他們做一點工作,而不是給他們完整的答案。

兩個主要驅動點

經過幾番評論,我從大綱中顯示了我的證明。 從必須解決的細節中我獲得了以下理解,我在談話中好像我知道自己是對的:

  1. apply(rule thm)的用法apply(rule thm)鏈式事實和目標聲明的組合,其中輸出中的this顯示一個或多個鏈式事實。
  2. 花括號開始和結束本地上下文/范圍。 上下文/作用域內部和外部的變量可以像我們期望的那樣起作用,也就是說,作用域通常在編程語言中起作用。 因此,如果我在證明的開頭聲明fix PQ :: bool ,然后在子上下文中聲明fix Q :: bool ,則子上下文中的Q引用的變量不同於父上下文Q

在適當地相信Chris之后,我在此處插入他的概述,因此可以輕松地將其與Isar來源進行比較:

1. ~(P & Q) premise
2. { Q       assumption
3.   { P     assumption
4.     P & Q and-introduction 3, 2
5.     _|_   negation-elimination 1, 4 }
6.   ~P      negation-introduction 3-5 }
7. Q -> ~P   implication-introduction 2-6

來源:

lemma "~(P & Q) ==> Q --> ~P"
proof-
  fix P Q :: bool
  assume a1: "~(P & Q)"
  { 
    assume a2: "Q"
    { 
      assume a3: "P"
      have a4: "P & Q" 
        apply(rule conjI) apply(rule a3) by(rule a2)
      (* NOTE: have to set 'notE' up right. Next 'hence False' doesn't do it. *)
      (* hence False apply(rule) by(metis a1) *)
      (* 'rule' applies the default of 'conjI', because there is the fact
         'this: P & Q', which comes from 'hence'; 'rule notE' gives an error.*)
      from a1 a4
      have False (* From 'this' and 'goal': ~(P & Q) ⟹ P & Q ==> False *)
        by(rule notE) (* notE: ~P ==> P ==> R *)
    }
    hence "~P" 
      apply(rule notI) by(assumption)
  }
  thus "Q --> ~P" 
    apply(rule impI) by(assumption)
qed

更好地了解范圍

在我的陳述中要求有人認為是have False 我不是在為notE設置合適的東西。 只看我是否走在正確的軌道上,我將執行sledgehammer ,但是在那種情況下它不能證明是False

這是因為我處於自動駕駛狀態,並且在兩個本地環境中使用了fix Q :: boolfix P :: bool 我把它們拿出來, sledgehammer很容易找到證據。

這是一個人了解一些邏輯,但不知道如何正確使用Isabelle / HOL和Isabelle / Isar語言實現邏輯的示例。

接下來,我必須學習如何正確設置apply(rule notE)apply(rule notE)

闡述觀點

我對上述消息來源的部分理解來自於isar-ref.pdf中的 鏈接事實 一詞 稍微接觸自然演繹規則以及M.Eberl對統一,實例化和解析的解釋最終有助於弄清輸出面板中發生的事情。

上面, hence False我將hence False注釋掉,然后使用have False 幸運的是,在伊莎貝爾(Isabelle),有多種做事方法,但目標是應用notE 即使這樣,也可以使用不同的Isar關鍵字進行設置。

無論如何,看到如何將rule事實與鏈式事實一起使用是一個瞬間。 我猜這實際上是語句have False涉及的內容,因為它與notE

term "~P ==> P ==> R" (* notE: line 376 of HOL.thy *)

lemma "~(P & Q) ⟹ P & Q ==> False"
  by(rule notE)

如果我有一個帳戶,我會投票贊成這個問題,以擺脫那個-1。

感謝克里斯給出了准確的輪廓。

由於您明確提到自然推論。 在一種特殊的自然演繹形式中-行編號並且假設范圍用方框顯式標記(在下面用大括號表示)-一種證明您的陳述的方法如下:

1. ~(P & Q) premise
2. { Q       assumption
3.   { P     assumption
4.     P & Q and-introduction 3, 2
5.     _|_   negation-elimination 1, 4 }
6.   ~P      negation-introduction 3-5 }
7. Q -> ~P   implication-introduction 2-6

實際上,由於您的目標是證明含義,所以一開始您只有一個選擇,即含義引入。

最好將上述證明盡可能忠實地轉換為結構化的Isar證明(例如,使用所謂的“原始證明塊”,順便說一下,在Isabelle中也用花括號表示)。

暫無
暫無

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

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