Mi chiedevo se l'ordine delle dichiarazioni di tipo induttivo può importare.
Ad esempio in Coq puoi definire Nat
:
Inductive Nat :=
| O : Nat
| S : Nat -> Nat.
o
Inductive Nat :=
| S : Nat -> Nat
| O : Nat.
Questo forse cambierà l'ordine dei parametri nell'eliminatore generato automaticamente, ma non è un grosso problema.
Quello che mi chiedo è se è possibile scrivere una dichiarazione come
Inductive typewhereordermatters :=
| cons1 : type1
| cons2 : type2.
dove type2
è un tipo dipendente, a seconda di cons1
? (e in questo caso, scrivere le dichiarazioni nell'altro ordine non avrebbe alcun significato, perché type2
farebbe riferimento a cons1
ciò che non esiste ancora).