proposition: Lemma is_empty_no_binding m : is_empty m = true <-> (forall x e, ~List.In (x,e) (bindings m)).
proof: Proof. rewrite is_empty_bindings. destruct (bindings m) as [|(x,e) l]; simpl; firstorder. easy. destruct (H x e). now left. Qed.
imports: Coq(Bool Equalities Orders OrdersFacts OrdersLists) Coq(Morphisms Permutation SetoidPermutation) MMaps(Utils Comparisons Interface)