End RmorphismTheory.
Module Scale.
Section ScaleLaw.
Structure law (R : ringType) (V : zmodType) (s : R -> V -> V) := Law {
op : R -> V -> V;
_ : op = s;
_ : op (-1) =1 -%R;
_ : forall a, additive (op a)
}.
Definition mul_law R := Law (erefl *%R) (@mulN1r R) (@mulrBr R).
Definition scale_law R U := Law (erefl *:%R) (@scaleN1r R U) (@scalerBr R U).
Variables (R : ringType) (V : zmodType) (s : R -> V -> V) (s_law : law s).
Local Notation s_op := (op s_law).

(* Specifications: *)
Lemma opE : s_op = s. Proof. by case: s_law. Qed.
Lemma N1op : s_op (-1) =1 -%R. Proof. by case: s_law. Qed.
Fact opB a : additive (s_op a). Proof. by case: s_law. Qed.