簡體   English   中英

Coq中哪些目標形式被視為“真實”?

[英]What forms of goal in Coq are considered to be “true”?

當我證明一些定理時,我的目標會隨着我運用越來越多的策略而發展。 一般來說,目標往往會分解為子目標,而子目標則更為簡單。 在最后一點,Coq決定目標已得到證明。 這個“經過驗證的”目標可能是什么樣的? 這些目標似乎很好:

a = a.                       (* Any object is identical to itself (?) *)
myFunc x y = myFunc x y.     (* Result of the same function with the same params
                                is always the same (?) *)

還有什么可能是例子根本上是錯誤的?

換句話說,當我最終應用reflexivity ,Coq會說** Got it **沒有任何解釋。 是否有任何方法可以獲取有關其實際操作或為何確定該目標已得到證明的更多詳細信息?

實際上,您面對的是一個不太通用的概念,因為Coq擁有一些用戶友好的工具來進行特別的平等推理。

通常,Coq會在收到其類型為目標類型的術語后立即接受已解決的目標:已經確信該命題是正確的,因為它已經確信該命題描述的類型已經有人居住,並且確信了什么它是您幫助您建立證據的實際見證人。


對於歸納數據類型的特殊情況,您將能夠證明命題P abc的兩種方法是:

  • 通過使用歸納類型P的構造函數構造類型P abc的術語,並提供所有必要的參數。

  • 或通過在類型可以與P abc匹配的環境中重用現有證明或公理。


對於更特殊的等式證明(等式只是 Coq中的歸納數據類型),我上面列出的兩種相同的方式退化為:

  • 相等的唯一構造函數是eq_refl ,要應用它,您需要證明雙方在判斷上是相等的。 對於大多數目的,這對應於看起來像T abc = T abc ,但實際上它是一個稍寬泛的平等概念(請參見下文)。 對於這些,您所要做的就是應用eq_refl構造函數。 簡而言之,這就是reflexivity

  • 第二種情況是證明平等成立,因為您在上下文中還有其他平等,這里沒有什么特別的。


現在,您的問題的一部分是:Coq何時通過反射性接受平等的兩個方面相等?

如果我沒記錯的話,答案是等式的兩個邊都是αβδιζ可轉換的。 總的來說 ,這意味着可以通過重復應用以下方法使它們在句法上相等:

  • α:非自由變量的合理重命名
  • β:計算可約式
  • δ:展開定義
  • ι:簡化比賽
  • ζ:擴展讓約束表達式

[如果適用更多規則或我弄錯了,請有人糾正我]

例如,這些規則未捕獲的一些內容是:

  • 功能相同,以不同的方式或多或少地做相同的事情:

     (fun x => 0 + x) = (fun x => x + 0) quicksort = mergesort 
  • 減少但相等的術語的相等性:

     forall n, 0 + n = n + 0 

暫無
暫無

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

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