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).

Lemma MapFold_ext_f_1 :
forall (m:Map A) (f g:ad -> A -> M) (pf:ad -> ad),
(forall (a:ad) (y:A), MapGet _ m a = Some y -> f (pf a) y = g (pf a) y) ->
MapFold1 _ _ neutral op f pf m = MapFold1 _ _ neutral op g pf m.