(** Properties of [is_empty] *)

(* Specifications: *)
Lemma is_empty_cardinal: is_empty s = zerob (cardinal s).
(** Properties of [singleton] *)
Lemma singleton_mem_1: mem x (singleton x)=true.
Lemma singleton_mem_2: ~E.eq x y -> mem y (singleton x)=false.
Lemma singleton_mem_3: mem y (singleton x)=true -> E.eq x y.
(** Properties of [union] *)
Lemma union_sym:
equal (union s s') (union s' s)=true.
Lemma union_subset_equal:
subset s s'=true -> equal (union s s') s'=true.
Lemma union_equal_1:
equal s s'=true-> equal (union s s'') (union s' s'')=true.
Lemma union_equal_2:
equal s' s''=true-> equal (union s s') (union s s'')=true.
Lemma union_assoc:
equal (union (union s s') s'') (union s (union s' s''))=true.
Lemma add_union_singleton:
equal (add x s) (union (singleton x) s)=true.
Lemma union_add:
equal (union (add x s) s') (add x (union s s'))=true.
Lemma is_empty_cardinal: is_empty s = zerob (cardinal s).
(** Properties of [singleton] *)
Lemma singleton_mem_1: mem x (singleton x)=true.
Lemma singleton_mem_2: ~E.eq x y -> mem y (singleton x)=false.
Lemma singleton_mem_3: mem y (singleton x)=true -> E.eq x y.
(** Properties of [union] *)
Lemma union_sym:
equal (union s s') (union s' s)=true.
Lemma union_subset_equal:
subset s s'=true -> equal (union s s') s'=true.
Lemma union_equal_1:
equal s s'=true-> equal (union s s'') (union s' s'')=true.
Lemma union_equal_2:
equal s' s''=true-> equal (union s s') (union s s'')=true.
Lemma union_assoc:
equal (union (union s s') s'') (union s (union s' s''))=true.
Lemma add_union_singleton:
equal (add x s) (union (singleton x) s)=true.
Lemma union_add:
equal (union (add x s) s') (add x (union s s'))=true.