[英]Use coqtop to check type of expression
我對與邏輯連接詞等效的Coq實體的類型感到好奇。 為了具體起見,讓我們說->
和/\\
。 如果->
是一個神奇的非[一流實體],那么我們僅使用/\\
作為實體。 我很好奇它的域名是Prop還是Set。
是否可以使用coqtop
獲取表達式的類型?
我想用ghci做類似以下的事情。
> ghci
:GHCi, version 8.6.3: :? for help
Prelude> :t (**)
(**) :: Floating a => a -> a -> a
/\\
和->
都是符號,而不是Coq中的實際常量。 要找到它們的簽名,您必須首先確定它們的符號。 運行命令Locate "/\\".
應該按照
Notation
"A /\ B" := and A B : type_scope
(default interpretation)
所以/\\
是常數and
的表示法。 然后,您可以使用命令Check
來找到其類型。 Check and.
給
and
: Prop -> Prop -> Prop
因此and
需要兩個Prop
並給出一個Prop
。
類似地, A -> B
是forall _: A, B
的符號forall _: A, B
。 與and
不同, forall
不是常量,而是Coq語言的關鍵字,因此您不能使用Check forall.
獲得簽名。 在這種情況下,您可以查看產品的參考手冊,然后
表達式
forall ident : type, term
表示術語term
上typetype
的變量ident
的乘積。 至於抽象,forall
之后是一個綁定器列表,並且多個變量上的乘積等效於單變量乘積的迭代。 請注意,該term
旨在作為一種類型。
因此,這意味着A
和B
都應該是類型,這意味着它們可以是Prop
, Set
或Type
任意Universe的元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.