Canonical amulr_linear := Eval hnf in AddLinear amulr_is_lrmorphism.
Canonical amulr_rmorphism := Eval hnf in AddRMorphism amulr_is_lrmorphism.
Canonical amulr_lrmorphism := Eval hnf in LRMorphism amulr_is_lrmorphism.

(* Specifications: *)
Lemma lker0_amull u : u \is a GRing.unit -> lker (amull u) == 0%VS.
Lemma prodvP {U V W} :
reflect {in U & V, forall u v, u * v \in W} (U * V <= W)%VS.
Lemma prodv_line u v : (<[u]> * <[v]> = <[u * v]>)%VS.
Lemma dimv1: \dim (1%VS : {vspace aT}) = 1%N.
Lemma prod0v : left_zero 0%VS prodv.
Lemma prodv0 : right_zero 0%VS prodv.
Canonical prodv_muloid := Monoid.MulLaw prod0v prodv0.
Lemma prod1v : left_id 1%VS prodv.
Lemma prodv1 : right_id 1%VS prodv.
Lemma prodvS U1 U2 V1 V2 : (U1 <= U2 -> V1 <= V2 -> U1 * V1 <= U2 * V2)%VS.
Lemma prodvSl U1 U2 V : (U1 <= U2 -> U1 * V <= U2 * V)%VS.
Lemma prodvDr : right_distributive prodv addv.
Canonical addv_addoid := Monoid.AddLaw prodvDl prodvDr.
Lemma prodvA : associative prodv.
Canonical prodv_monoid := Monoid.Law prodvA prod1v prodv1.