簡體   English   中英

Datatype.nat vs nat?

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

natDatatypes.nat是同一類型。 為了避免混淆,Coq在某些消息中只是更加冗長(它告訴您“在Datatypes模塊中定義的nat”,以防您在其他地方定義了另一個版本...)


而且我猜想出現此消息是因為您定義了自己的nat ,所以如果這樣做,您可能會遇到麻煩:

Check (pair 3 5).

因為3和5是Datatypes.nat ,所以不是您創建的nat類型的一部分。

因此,您應該使用自己的nat類型的構造函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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