Section MapFoldCanon.
Variables A B : Type.

Lemma MapFold_canon_1 :
forall m0:Map B,
mapcanon B m0 ->
forall op:Map B -> Map B -> Map B,
(forall m1:Map B,
mapcanon B m1 ->
forall m2:Map B, mapcanon B m2 -> mapcanon B (op m1 m2)) ->
forall f:ad -> A -> Map B,
(forall (a:ad) (y:A), mapcanon B (f a y)) ->
forall (m:Map A) (pf:ad -> ad),
mapcanon B (MapFold1 A (Map B) m0 op f pf m).