簡體   English   中英

Coq中單例類型單元的歸納原理如何工作?

[英]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.

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