Section Lemmas_on_partial_orders.
Variable U : Type.
Variable B : Ensemble U.
Variable D : PO U.
elim D; simpl in |- *; auto.
intros C R H' H'0; elim H'0; auto 10.
Qed.
Hint Resolve Rel_of_reflexive.
elim D; simpl in |- *; auto.
intros C R H' H'0; elim H'0; auto 10.
Qed.
Hint Resolve Rel_of_antisymmetric.
elim D; simpl in |- *; auto.
intros C R H' H'0; elim H'0; auto 10.
Qed.
Hint Resolve Rel_of_transitive.
intros x y H' H'0; red in |- *; auto 20.
intros x0 H'1; elim H'1; auto 20.
Qed.
Hint Resolve Couple_included_in_carrier.
intros bsup X H' H'0; elim H'0; auto 20.
intro H'1; elim H'1; auto 20.
Qed.
intros x H'; auto 20.
apply Lub_definition; auto 10.
apply Upper_Bound_definition; auto 10.
intros y H'0; elim H'0; auto 10.
intros y H'0; elim H'0; auto 10.
Qed.
Hint Resolve Singleton_has_lub.
elim D.
intros C R n o.
elim n.
intros x H'; exists x.
apply Upper_Bound_definition; auto.
intros y H'0; elim H'0; auto.
Qed.
Hint Resolve Empty_set_has_Upper_Bound.
intro H'; elim H'.
intro h; elim h; intros bot E; clear h.
intro H'0; exists bot.
apply Lub_definition.
apply Upper_Bound_definition.
elim E; auto.
intros y H'1; elim H'1; auto.
intros y H'1; elim H'1; auto.
elim E; auto.
Qed.
Hint Resolve Empty_set_has_lub.

Theorem Upper_downward_stable :
forall (A B : Ensemble U) (maj : U),
Included U A (Carrier_of U D) ->
Included U B (Carrier_of U D) ->
Included U A B -> Upper_Bound U D B maj -> Upper_Bound U D A maj.