(** Properties of [inter] *)

(* Specifications: *)
Lemma inter_sym: equal (inter s s') (inter s' s)=true.
Lemma inter_subset_equal:
subset s s'=true -> equal (inter s s') s=true.
Lemma inter_equal_1:
equal s s'=true -> equal (inter s s'') (inter s' s'')=true.
Lemma inter_equal_2:
equal s' s''=true -> equal (inter s s') (inter s s'')=true.
Lemma inter_assoc:
equal (inter (inter s s') s'') (inter s (inter s' s''))=true.
Lemma union_inter_1:
equal (inter (union s s') s'') (union (inter s s'') (inter s' s''))=true.
Lemma union_inter_2:
equal (union (inter s s') s'') (inter (union s s'') (union s' s''))=true.
Lemma inter_add_1: mem x s'=true ->
equal (inter (add x s) s') (add x (inter s s'))=true.
Lemma inter_add_2: mem x s'=false ->
equal (inter (add x s) s') (inter s s')=true.
Lemma inter_sym: equal (inter s s') (inter s' s)=true.
Lemma inter_subset_equal:
subset s s'=true -> equal (inter s s') s=true.
Lemma inter_equal_1:
equal s s'=true -> equal (inter s s'') (inter s' s'')=true.
Lemma inter_equal_2:
equal s' s''=true -> equal (inter s s') (inter s s'')=true.
Lemma inter_assoc:
equal (inter (inter s s') s'') (inter s (inter s' s''))=true.
Lemma union_inter_1:
equal (inter (union s s') s'') (union (inter s s'') (inter s' s''))=true.
Lemma union_inter_2:
equal (union (inter s s') s'') (inter (union s s'') (union s' s''))=true.
Lemma inter_add_1: mem x s'=true ->
equal (inter (add x s) s') (add x (inter s s'))=true.
Lemma inter_add_2: mem x s'=false ->
equal (inter (add x s) s') (inter s s')=true.