Me preguntaba si el orden de las declaraciones de tipo inductivo puede importar.
Por ejemplo, en Coq, puede definir Nat
ya sea por:
Inductive Nat :=
| O : Nat
| S : Nat -> Nat.
o
Inductive Nat :=
| S : Nat -> Nat
| O : Nat.
Quizás esto cambie el orden de los parámetros en el eliminador generado automáticamente, pero eso no es gran cosa.
Lo que me pregunto es si es posible escribir una declaración como
Inductive typewhereordermatters :=
| cons1 : type1
| cons2 : type2.
donde type2
es un tipo dependiente, dependiendo de cons1
? (y en este caso, escribir las declaraciones en el otro orden no tendría ningún significado, porque type2
se estaría refiriendo a lo cons1
que aún no existe).