Section Lmodule.
Variables (R : ringType) (V : lmodType R) (S : {pred V}).
Variables (linS : submodPred S) (kS : keyed_pred linS).
Variables (W : subType (mem kS)) (Z : zmodType) (ZeqW : Z = W :> Type).
Let scaleW a (w : W) := (Sub _ : _ -> W) (rpredZ a (valP w)).
Let W' := cast_zmodType ZeqW.
Hypothesis valD : {morph (val : W' -> V) : x y / x + y}.
Fact scaleA a b (w : W') : scaleW a (scaleW b w) = scaleW (a * b) w.

Lemma comRingMixin (R : comRingType) (T : ringType) (f : T -> R) :
phant T -> injective f -> {morph f : x y / x * y} -> commutative (@mul T).