我想知道归纳类型的声明顺序是否重要。
例如,在Coq中,您可以Nat
通过以下方式之一进行定义:
Inductive Nat :=
| O : Nat
| S : Nat -> Nat.
要么
Inductive Nat :=
| S : Nat -> Nat
| O : Nat.
这也许会改变自动生成的消除器中参数的顺序,但这没什么大不了的。
我想知道的是,是否可以编写像这样的声明
Inductive typewhereordermatters :=
| cons1 : type1
| cons2 : type2.
其中type2
是一个依赖型,这取决于cons1
?(在这种情况下,以其他顺序编写声明将没有任何意义,因为type2
要引用的声明cons1
尚不存在)。