End RegularVectType.Section LfunVspaceDefs.Fact lfun_key : unit. Proof. by []. Qed.n_key fun_of_lfun_def.
Canonical fun_of_lfun_unlockable := [unlockable fun fVector.Hom (lin1_mx (v2r \o f \o r2v)).
Definition linfun := locked_with lfun_key linectType (K : fieldType) (vT : vectType K) n :=
  [vectType K of vT ^ n].Implicit Types aT rT : vectType K.Definition inv_lfun aT rT (f : 'Hom(aT, rT)) := Vector.Hom (pinvmx (f2mx f)).
Definition lker aT rT (f : 'Hom(aT, rT)) := mx2vs (kermx (f2mx f)).
Fact lfun_img_key : unit. Proof. by []. Qed.Notation "f ^-1" := (inv_lfun f) : lfuSection LinearPreimage.Implicit Types f g h : 'Hom(aT, rT).Definition lfun_eqMixin := Eval hnf in [eqMixin of 'Hom(aT, rT) by <:].
Canonical lfun_eqType := EqType 'Hom(aT, rT) lfun_eqMixin.
Definition lfun_choiceMixin := [cT, rT) lfun_choiceMixin.Fact lfun_is_linear f : linear f.

(* Specifications: *)
Canonical lfun_additive f := Additive (lfun_is_linear f
Lemma lfunE (ff : {linear aT -> rT}) : linfun ff =1 ff.
by rewrite 2!unlock /= !rowE mul_rV