Definition compat_cmp :=
 forall e e', cmp e e' = true <-> eq_elt e e'.

(* Specifications: *)
Lemma Equiv_Equivb : compat_cmp -> forall m m', Equiv eq_elt m m' <-> Equivb cmp m m'.
Lemma Equal_Equivb : forall cmp, (forall e e', cmp e e' = true <-> e = e') -> forall (m m':t elt), Equal m m' <-> Equivb cmp m m'.
Lemma Equal_Equivb_eqdec : forall eq_elt_dec : (forall e e', { e = e' } + { e <> e' }), let cmp := fun e e' => if eq_elt_dec e e' then true else false in forall (m m':t elt), Equal m m' <-> Equivb cmp m m'.
Lemma Equal_refl : forall (elt:Type)(m : t elt), Equal m m.
Lemma Equal_sym : forall (elt:Type)(m m' : t elt), Equal m m' -> Equal m' m.
Lemma Equal_trans : forall (elt:Type)(m m' m'' : t elt), Equal m m' -> Equal m' m'' -> Equal m m''.
Lemma Equal_ST : forall elt:Type, Equivalence (@Equal elt).