我希望有以下定义:
Inductive a : Set :=
|basic : string -> a
|complex : string -> list t -> a.
Definition t := string * a * a.
如您所见,在定义a时使用t,在定义t时使用a。我的问题是如何同时定义这两个?
非常感谢!
答案 0 :(得分:4)
您可以使用Inductive
命令相互定义它们。
Inductive a : Set :=
| basic : string -> a
| complex : string -> list t -> a
with t : Set :=
| t_intro : string * a * a -> t.
或者您可以使用t
的定义替换,然后定义t
。
Inductive a : Set :=
| basic : string -> a
| complex : string -> list (string * a * a) -> a.
Definition t : Set := (string * a * a)%type.
Definition complex' : string -> list t -> a := complex.