Eu queria saber se a ordem das declarações de um tipo indutivo pode importar.
Por exemplo, no Coq, você pode definir Nat
:
Inductive Nat :=
| O : Nat
| S : Nat -> Nat.
ou
Inductive Nat :=
| S : Nat -> Nat
| O : Nat.
Talvez isso mude a ordem dos parâmetros no eliminador gerado automaticamente, mas isso não é grande coisa.
O que eu quero saber é se é possível escrever uma declaração como
Inductive typewhereordermatters :=
| cons1 : type1
| cons2 : type2.
onde type2
é um tipo dependente, dependendo cons1
? (e, neste caso, escreva as declarações na outra ordem não teriam significado, porque type2
se refeririam a cons1
qual ainda não existe).