(** Specification of [is_empty] *)

(* Specifications: *)
Lemma is_empty_spec: forall s, Empty s <-> is_empty s = true.
Lemma is_empty_1: forall s, Empty s -> is_empty s = true.
Lemma subset_1: forall s s', Subset s s' -> subset s s' = true.
Lemma equal_spec: forall s s', Equal s s' <-> equal s s' = true.
Lemma equal_1: forall s s', Equal s s' -> equal s s' = true.
Lemma lex_Eq: forall u v, lex u v = Eq <-> u=Eq /\ v=Eq.
Lemma compare_gt: forall s s', compare_fun s s' = Gt -> lt s' s.
Lemma compare_eq: forall s s', compare_fun s s' = Eq -> eq s s'.
Lemma compare : forall s s' : t, Compare lt eq s s'.
Lemma ct_compare_bool:
forall a b c, ct (compare_bool a b) (compare_bool b c) (compare_bool a c).
Lemma compare_x_Leaf: forall s,
compare_fun s Leaf = if is_empty s then Eq else Gt.
Lemma compare_empty_x: forall a, is_empty a = true ->
forall b, compare_fun a b = if is_empty b then Eq else Lt.
Lemma compare_x_empty: forall a, is_empty a = true ->
forall b, compare_fun b a = if is_empty b then Eq else Gt.
Lemma ct_compare_fun:
forall a b c, ct (compare_fun a b) (compare_fun b c) (compare_fun a c).