generalize Rel_of_transitive; intro RoT; red in RoT.
intros A B H' a b bsup H'0 H'1 H'2; try assumption.
elim H'0; elim H'1; elim H'2.
intros H'3 H'4 H'5 H'6 H'7 H'8; try assumption.
elim H'5; elim H'7.
elim (Upper_Bound_Couple_inv U D a b bsup);
[ intros H'15 H'16; elim H'16; intros H'17 H'18; try exact H'17; clear H'16
| idtac ]; auto with sets.
intros H'9 H'10 H'11 H'12; try assumption.
apply Lub_definition; auto with sets.
apply Upper_Bound_definition; auto with sets.
intros y H'13; elim H'13.
intros x H'30; apply RoT with (y := a); auto with sets.
intros x H'30; apply RoT with (y := b); auto with sets.
intros y H'13; try assumption.
apply H'4.
elim H'13; auto 7 with sets.
Qed.

(* Specifications: *)
Theorem Lub_of_Union :
Conditionally_complete U D ->
forall A B : Ensemble U,
Included U (Union U A B) (Carrier_of U D) ->
forall x : U,
In U (Carrier_of U D) x ->
Upper_Bound U D (Union U A B) x ->
forall a b : U,
Lub U D A a ->
Lub U D B b ->
exists bsup : U, Lub U D (Union U A B) bsup /\ Lub U D (Couple U a b) bsup.