End FSetCanon.
Section MapFoldCanon.
Variables A B : Type.

(* Specifications: *)
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).
Lemma MapFold_canon :
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, mapcanon B (MapFold A (Map B) m0 op f m).
Lemma MapCollect_canon :
forall f:ad -> A -> Map B,
(forall (a:ad) (y:A), mapcanon B (f a y)) ->
forall m:Map A, mapcanon B (MapCollect A B f m).