fact: Definition union (f : key -> elt -> elt -> option elt) := let f' := fun k o1 o2 => match o1,o2 with | Some v1, Some v2 => f k v1 v2 | o,None | None,o => o end in merge f'.
imports: Coq(Bool Equalities Orders OrdersFacts OrdersLists) Coq(Morphisms Permutation SetoidPermutation) MMaps(Utils Comparisons Interface)