[英]Product Type in Coq
我在將參數傳遞給coq中的產品類型時遇到問題。 我的定義看起來像,
Definition bar (a:Type) := a->Type.
我需要定義一個函數,它接收'a'和'bar a'所做的東西並輸出它們的產品/有序對。 所以我嘗試了以下內容。
Definition foo (a:Type)(b:bar a):= prod a b.
這給了我錯誤
術語“b”具有“bar a”類型,而預期類型為“Type”。
這里真正令人困惑的是,
Definition foo (a:Type) := prod a (bar a).
工作得很好。 很明顯'bar a'有'Type'類型,所以我不知道如何修復我原來的定義。 我懷疑我沒有正確傳遞變量。
要查看錯誤,請在foo
定義中展開bar a
:
Definition foo (a:Type)(b:a->Type):= prod a b.
現在應該清楚b
不是一個類型,它是從a
到Type
的函數。
而且,由於您從未獲得類型為a
的對象,因此無法將b
應用於任何內容,並且無法從中獲取Type
。
對於第二個定義,再次展開以查看其工作原理:
Definition foo (a:Type) := prod a (a->Type).
a
和a->Type
都是產品的有效Type
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.