私はCoqが初めてです。単位、積、合計を使用してリスト、マップ、ツリーを定義するのに問題があります。タイトルのエラーメッセージが表示されます。コメントの上のコードは正常に機能しますが、その下のコードは機能しません。
Inductive one : Type := nil : one.
Inductive sum (t0 t1 : Type) : Type :=
| inject_left : t0 -> sum t0 t1
| inject_right : t1 -> sum t0 t1.
Inductive product (t0 t1 : Type) : Type := pair : t0 -> t1 -> product t0 t1.
Definition list (t0 : Type) : Type := sum one (product t0 (list t0)).
Definition map (t0 t1 : Type) : Type := list (product t0 t1).
(* From here on nothing works. *)
Definition List (t0 : Type) : Type := sum one (product t0 (List t0)).
Definition map (t0 t1 : Type) : Type :=
sum one (product (product t0 t1) (map t0 t1)).
Definition Map (t0 t1 : Type) : Type :=
sum one (product (product t0 t1) (Map t0 t1)).
Definition tree (t0 : Type) : Type :=
sum one (product t0 (product (tree t0) (tree t0))).
Definition Tree (t0 : Type) : Type :=
sum one (product t0 (product (Tree t0) (Tree t0))).