фиксация же в принципе определяется баиндингом переменной в описании типа?
т.е. если бы сигнатура писалась как Inductive eq (A : Type) (a: A) A : Prop
, то последний аргумент никак не определен и его надо указывать в конструкторе, а с переменной он будет фиксирован уже в любом случае (или также Inductive eq (A : Type) : (a : A) -> A -> Prop
)
Inductive eq A (a : A) (b : A) : Prop зафиксировал бы все компоненты равенства, т.е. мы могли бы написать только eq_refl : eq A a b, что, конечно, лишило бы смысла наше _определение_ равенства.
Ещё можно было бы сделать a индексом:
Inductive eq A : A -> A -> Prop
Это работает, но менее удобно в доказательствах