Je me demandais si l'ordre des déclarations de type inductif pouvait avoir de l'importance.
Par exemple, dans Coq, vous pouvez définir Nat
soit par:
Inductive Nat :=
| O : Nat
| S : Nat -> Nat.
ou
Inductive Nat :=
| S : Nat -> Nat
| O : Nat.
Cela changera peut-être l'ordre des paramètres dans l'éliminateur généré automatiquement, mais ce n'est pas un gros problème.
Je me demande s'il est possible d'écrire une déclaration comme
Inductive typewhereordermatters :=
| cons1 : type1
| cons2 : type2.
où type2
est un type dépendant, selon cons1
? (et dans ce cas, écrire les déclarations dans l'autre ordre n'aurait aucun sens, car type2
se référer à cons1
ce qui n'existe pas encore).