intros A B; try assumption.
apply not_in_empty.
intros x; red in |- *; intros H'; try exact H'.
absurd (in_part x A).
apply diff_in_r with B.
auto with *.
apply in_part_inter_r with A; auto with *.
apply in_part_inter_l with (diff B A); auto with *.
Qed.
Hint Resolve disjoint_diff: algebra.

(* Specifications: *)
Lemma cardinal_union :
forall (a b : nat) (A B : part_set E),
cardinal A a -> cardinal (diff B A) b -> cardinal (union A B) (a + b).