Я определил аксиомы поля в Coq и использовал их для доказательства простых свойств, подобных описанным здесь . Затем я добавил аксиомы векторного пространства и доказал простые свойства там. Поскольку нотация 0
уже используется моим полем:
(*******************)
(* Field notations *)
(*******************)
Notation "0" := zero.
Notation "1" := one.
Infix "+" := add.
Infix "*" := mul.
Я использовал несколько более уродливые обозначения для своего векторного пространства:
(**************************)
(* Vector space notations *)
(**************************)
Notation "00" := zerov.
Notation "11" := onev.
Infix "+_v" := addv (at level 50, no associativity).
Infix "*_v" := mulv (at level 60, no associativity).
Что позволило доказать следующую простую лемму:
Lemma mul_0_l: forall (v : V), (eqv (mulv 0 v) 00).
Когда я изменил "00"
на "0V"
(что красивее), все перестало работать, и я получил следующую ошибку:
In environment
v : V
The term "0" has type "F" while it is expected to have type "V".
Есть ли способ использовать "0V"
? или я застрял с "00"
?