簡體   English   中英

Coq定理中的Coq箭頭->是什么意思?

[英]What is meant by Coq arrow -> in Coq theorem?

我試圖理解Coq定理:

Theorem thm0 : UseCl Pos (PredVP (UsePN john_PN) walk_V) ->
               UseCl Pos (PredVP (UsePN john_PN) walk_V).
intro H.
exact H.
Qed.

來自https://github.com/GU-CLASP/FraCoq/blob/master/Tutorial.org

箭頭符號->是什么意思? 據我了解,然后Coq使用兩個箭頭https://softwarefoundations.cis.upenn.edu/lf-current/Basics.html:1 )雙箭頭定義類型構造函數,2)單箭頭->用於定義新類型。 但是這個定理是陳述,而不是類型定義。 為什么會有這個箭頭? 如何將此陳述理解為Coq定理?

Coq中使用雙箭頭( => )標記模式匹配分支。 例如,我們可以這樣定義布爾取反:

Definition negb (b : bool) : bool :=
  match b with
  | true  => false
  | false => true
  end.

單箭頭( -> )用於表示兩個看似無關的概念:

  1. 函數類型。 例如, nat -> bool是從自然數到布爾值的函數類型。

  2. 邏輯含義 這是您在定理陳述中看到的用法。 語句A -> B表示只要A這樣做, B都會成立。

但是,實際上,這種區別只是膚淺的:在Coq中,含義和功能的證明實際上是同一回事! 對於Coq而言,從精確的意義上講,蘊涵證明A -> B是一個函數,該函數接受一個斷言A的真相的證明,並返回一個斷言B的真相的證明。 如果這聽起來令人困惑,請不要擔心:您可以在大多數時候假裝箭頭的兩次使用指的是不同的事物,這不會對您造成傷害。 Software Foundations一書中有一詳細討論了這些問題。

暫無
暫無

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

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