Section ua_fm_diese_def.
Variables (B : Monoid) (f : Map A (FunForget B)).
Fixpoint UA_FM_diese_fun (l : FreeMonoid A) : B :=
match l with
| Empty => Munit B
| Concat1 a m => f a +_M UA_FM_diese_fun m
end.

(* Specifications: *)
Lemma UA_FM_diese_map_law : Map_law UA_FM_diese_fun.
Canonical Structure UA_FM_diese_map := Build_Map UA_FM_diese_map_law.
Lemma UA_FM_diese_unit_law : MonUnit_law UA_FM_diese_map.
Lemma UA_FM_diese_op_law : MonOp_law UA_FM_diese_map.
Canonical Structure UA_FM_diese :=
Build_MonMor UA_FM_diese_unit_law UA_FM_diese_op_law.