[英]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.
單箭頭( ->
)用於表示兩個看似無關的概念:
函數類型。 例如, nat -> bool
是從自然數到布爾值的函數類型。
邏輯含義 。 這是您在定理陳述中看到的用法。 語句A -> B
表示只要A
這樣做, B
都會成立。
但是,實際上,這種區別只是膚淺的:在Coq中,含義和功能的證明實際上是同一回事! 對於Coq而言,從精確的意義上講,蘊涵證明A -> B
是一個函數,該函數接受一個斷言A
的真相的證明,並返回一個斷言B
的真相的證明。 如果這聽起來令人困惑,請不要擔心:您可以在大多數時候假裝箭頭的兩次使用指的是不同的事物,這不會對您造成傷害。 Software Foundations一書中有一章詳細討論了這些問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.