unfold in_part in |- *.
intros x y A.
case A; intros a pa.
simpl in |- *.
intuition.
apply H.
apply (pa y x); auto with algebra.
Qed.

(* Specifications: *)
Lemma cardinal_sup3 :
forall (A B C : part_set E) (x y : E),
Equal A (add_part B x) ->
Equal A (add_part C y) ->
~ in_part x B ->
~ in_part y C ->
~ Equal x y ->
exists D : part_set E,
Equal B (add_part D y) /\
Equal C (add_part D x) /\ ~ in_part x D /\ ~ in_part y D.