Ltac clean_eauto := unfold O.eqke, O.ltk; simpl; intuition; eauto.Definition gtb (p p':key*elt) :=
    match E.compare (fst p) (fst p') with GT _ => true | _ => false end.Definition leb p := fun p' => negb (gtb p p').Definition elements_lt p m := List.filter (gtb p) (elements m).Definition elements_ge p m := List.filter (leb p) (elements m).

Lemma elements_Add : forall m m' x e, ~In x m -> Add x e m m' -> eqlistA eqke (elements m') (elements_lt (x,e) m ++ (x,e):: elements_ge (x,e) m).