2017-06-26 7 views
2

私はCoqで2008 PHOAS paperセクション2.1から(非公式の)定義を転記しています。PHOAS in Coq:タイプの不一致

Inductive tm' {V : Set} : Set := 
| Var : V -> tm' 
| App : tm' -> tm' -> tm' 
| Abs : (V -> tm') -> tm'. 

Definition tm := forall X, @tm' X. 

Fail Example id : tm := Abs Var. 

出力:

The term "Abs Var" has type "tm'" while it is expected to have type "tm". 

むしろ不愉快です。どのようにしてこのコードタイプチェックを行うことができますか?

Example id : tm := fun _ => Abs Var. 

問題は、あなたがラムダ(fun)なし(タイプforallの何かを)機能を構築しようとしていたということです。ここで

答えて

2

は動作するコードです。

0
Example id : tm := fun (X : Set) => Abs Var. 
+0

追加の情報を追加するには、質問の編集リンクを使用してください。回答を投稿するボタンは、質問に対する完全な回答のためだけに使用してください。 - [レビューから](レビュー/低品質の投稿/ 16533671) –

+1

Jason Grossの答えからわかるように、これは本当に完全な答えです。 –

関連する問題