![](/img/trans.png)
[英]How to prove “~(nat = False)”, “~(nat = bool)” and “~(nat = True)” in coq
[英]Datatype.nat versus nat?
問題是我在Coq中聲明了一個歸納函數並想對其進行測試。 但是我的Check
行出現錯誤:
Inductive natprod : Type :=
pair : nat -> nat -> natprod.
Check pair(3 5).
這是錯誤:
Error: Illegal application (Non-functional construction):
The expression "3" of type "Datatypes.nat"
cannot be applied to the term
"5" : "Datatypes.nat"
我真的不明白問題是什么? Datatype.nat和nat之間有什么區別?
PS:我已經為“ nat”(也稱為“歸納nat”)編寫了歸納函數,這可能有問題嗎?
pair
是類型nat -> nat -> natprod
。
因此,要應用它,請使用函數應用程序語法:
Definition threefive := pair 3 5.
因此,要測試其類型:
Check (pair 3 5).
nat
和Datatypes.nat
是同一類型。 為了避免混淆,Coq在某些消息中只是更加冗長(它告訴您“在Datatypes模塊中定義的nat”,以防您在其他地方定義了另一個版本...)
而且我猜想出現此消息是因為您定義了自己的nat
,所以如果這樣做,您可能會遇到麻煩:
Check (pair 3 5).
因為3和5是Datatypes.nat
,所以不是您創建的nat
類型的一部分。
因此,您應該使用自己的nat
類型的構造函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.