Notation "#< l , x ># " := (Vcontra p l x).

(* Specifications: *)
Lemma is_vector_space_swap n x l : is_vector_space n l -> In x l -> exists l1, is_vector_space n (x::l1) /\ joinl n l = joinl n (x::l1).
Lemma factor0 n x : factor n x 0 = 0.
Lemma factor_id n x : x <> 0 -> hom n 1 x -> factor n x x = 1.
Lemma factor0_hom0 n x1 x2 : x1 <> 0 -> hom n 1 x1 -> hom n 0 x2 -> factor n x1 x2 = 0.
Lemma fortho0 n : 0 < n -> fortho n 0 0.
Lemma fortho_refl n x : fortho n x x -> x = 0.
Lemma fortho_add n v1 v2 v3 : fortho n v1 v2 -> fortho n v1 v3 -> fortho n v1 (v2 + v3).
Lemma fortho_conj n b v1 v2 : fortho n v1 v2 -> fortho n v1 (v2 ^_ b).
Lemma mprod_hom n k l1 l2 : (forall i, In i l2 -> hom n k i) -> hom n k (l1 *X* l2).