Section Bool.
(** Properties of [filter] *)
Variable f:elt->bool.
Variable Comp: Proper (E.eq==>Logic.eq) f.
Let Comp' : Proper (E.eq==>Logic.eq) (fun x =>negb (f x)).

Lemma union_filter: forall f g,
Proper (E.eq==>Logic.eq) f -> Proper (E.eq==>Logic.eq) g ->
forall s, union (filter f s) (filter g s) [=] filter (fun x=>orb (f x) (g x)) s.