(*s Computing the minimum of edges in a Map *)

Definition all_min (f : ad -> D -> option D) := MapFold _ _ None Ddmin f.

Lemma all_min_le_2_1 : forall (f : ad -> D -> option D) (m : Map D) (pf : ad -> ad) (d : D), MapFold1 _ _ None Ddmin f pf m = Some d -> {a : ad & {d' : D | MapGet _ m a = Some d' /\ f (pf a) d' = Some d}}.