Section MapFoldResults.
Variable A : Type.
Variable M : Type.
Variable neutral : M.
Variable op : M -> M -> M.
Variable nleft : forall a:M, op neutral a = a.
Variable nright : forall a:M, op a neutral = a.
Variable assoc : forall a b c:M, op (op a b) c = op a (op b c).
Variable comm : forall a b:M, op a b = op b a.

Lemma MapFold_Merge_disjoint_1 :
forall (f:ad -> A -> M) (m1 m2:Map A) (pf:ad -> ad),
MapDisjoint A A m1 m2 ->
MapFold1 A M neutral op f pf (MapMerge A m1 m2) =
op (MapFold1 A M neutral op f pf m1) (MapFold1 A M neutral op f pf m2).