[英]How does the induction principle for the singleton type unit in Coq work?
我正在瀏覽亞當·克里帕拉(Adam Chlipala)關於Coq的書,它定義了歸納類型:
Inductive unit : Set :=
| tt.
我試圖理解其歸納原理:
Check unit_ind.
(* unit_ind
: forall P : unit -> Prop, P tt -> forall u : unit, P u *)
我不確定我是否了解Coq的輸出是什么意思。
1)因此檢查可以讓我了解“對象”的類型,對嗎? 所以unit_ind
具有類型:
forall P : unit -> Prop, P tt -> forall u : unit, P u
對?
2)一個人怎么讀這種類型的? 我在理解括號或其他內容的位置時遇到了麻煩...對於逗號之前的第一件事,將其讀為:
IF "for all P of type unit" THEN " Prop "
因為假說並不是真的是假的。 因此,我認為實現第一件事的真正方法是:
forall P : (unit -> Prop), ...
所以P只是要支持的類型單位的函數。 這個對嗎?
我希望這是正確的,但是根據這種解釋,我不知道在第一次逗號后如何閱讀該部分:
P tt -> forall u : unit, P u
我本來希望對所有存在的變量進行量化,然后再對命題進行定義,但這並不是其完成的過程,所以我不確定會發生什么...
有人可以幫助我正式且直觀地閱讀這一主張嗎? 我還想從概念上理解它要說的內容,而不僅僅是被它的細節所困擾。
讓我再加上一些(不是必須的)括號:
forall P : unit -> Prop, P tt -> (forall u : unit, P u)
我將其翻譯為“對於unit
類型上的任何謂詞P
,如果P
持有tt
,則P
持有類型unit
的任何項”。
直觀上,由於tt
是類型unit
的唯一值,所以僅證明該唯一值的P
是有意義的。
您可以通過嘗試以相同的方式解釋bool
類型的歸納原理來檢查這種直覺是否對您bool
。
Check bool_ind.
bool_ind
: forall P : bool -> Prop, P true -> P false -> (forall b : bool, P b)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.