Section mon_mors.
Variable m1 m2 : Monoid.
Definition MonUnit_law (f : Map m1 m2) := f (Munit m1) =_S Munit m2.
Definition MonOp_law (f : Map m1 m2) :=
forall a b : m1, f (a +_M b) =_S f a +_M f b.
Structure MonMor : Type :=
{MonMap :> Map m1 m2;
Prf_MonUnit_law : MonUnit_law MonMap;
Prf_MonOp_law : MonOp_law MonMap}.
(*** rewrite rules ***)
(* *)
(* equality of two monoid morphisms *)
Definition Equal_MonMor (f g : MonMor) := f =_M g.

Lemma Equal_MonMor_equiv : Equivalence Equal_MonMor.