帰納的な型の宣言の順序が問題になるかどうか疑問に思っていました。
たとえば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
がありません)。