(** Useful tactic for simplifying expressions like [In y (add x (union s s'))] *)
Ltac set_iff :=
repeat (progress (
rewrite add_iff || rewrite remove_iff || rewrite singleton_iff
|| rewrite union_iff || rewrite inter_iff || rewrite diff_iff
|| rewrite empty_iff)).
(**  * Specifications written using boolean predicates *)
Section BoolSpec.
Variable s s' s'' : t.
Variable x y z : elt.

Lemma remove_neq_b : ~ E.eq x y -> mem y (remove x s) = mem y s.