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.
clear B.
intros A BB maj H' H'0 H'1 H'2; elim H'2; auto.
Qed.
intro H'; elim H'; auto 10.
intro H'0; generalize (H'0 (Empty_set U)); intro h; lapply h;
[ intro H'1; lapply H'1;
[ intro h0; elim h0; intros bsup E; clear h H'1 h0; elim E | clear h ]
| clear h ]; auto 10.
intros H'1 H'2; exists bsup; apply Bottom_definition; auto 10.
elim H'1; auto 10.
intros y H'3; try assumption; auto 10.
apply H'2; auto 10.
apply Upper_Bound_definition; auto 10.
intros y0 H'4; elim H'4; auto 10.
Qed.
Hint Resolve Conditionally_complete_has_a_bottom.
red in |- *; intro x; red in |- *.
exists x; intros H' H'0; split; [ idtac | apply Upper_Bound_definition ];
auto.
intros y H'1; elim H'1; auto.
Qed.

Theorem Couple_is_symmetric :
forall x y : U, Couple U x y = Couple U y x :>Ensemble U.