(* ========================================================
          ALWAYS (multi-)sets
==========================================================*)

(* s1 - s2: *)

Fixpoint set_minus(s1 s2:set){struct s1}:set:=
 match s1 with
     Vs => Vs
   | Is s0 x =>
       if exds_dec s2 x then set_minus s0 s2
       else Is (set_minus s0 s2) x
 end.

Lemma exds_set_minus_eq:forall(s1 s2:set)(z:dart), (exds s1 z /\ ~exds s2 z) <-> exds (set_minus s1 s2) z.