(************************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* (EXT m: nat | (Upper_Bound nat nat_po X m)). Proof. Intros X H'; Elim H'. Exists O. Apply Upper_Bound_definition; Auto with sets arith. Intros y H'0; Elim H'0; Auto with sets arith. Intros A H'0 H'1 x H'2; Try Assumption. Elim H'1; Intros x0 H'3; Clear H'1. Elim le_total_order. Simpl. Intro H'1; Try Assumption. LApply H'1; [Intro H'4; Idtac | Try Assumption]; Auto with sets arith. Generalize (H'4 x0 x). Clear H'4. Clear H'1. Intro H'1; LApply H'1; [Intro H'4; Elim H'4; [Intro H'5; Try Exact H'5; Clear H'4 H'1 | Intro H'5; Clear H'4 H'1] | Clear H'1]. Exists x. Apply Upper_Bound_definition; Auto with sets arith; Simpl. Intros y H'1; Elim H'1. Generalize le_trans. Intro H'4; Red in H'4. Intros x1 H'6; Try Assumption. Apply H'4 with y := x0; Auto with sets arith. Elim H'3; Simpl; Auto with sets arith. Intros x1 H'4; Elim H'4; Auto with sets arith. Exists x0. Apply Upper_Bound_definition; Auto with sets arith; Simpl. Intros y H'1; Elim H'1. Intros x1 H'4; Try Assumption. Elim H'3; Simpl; Auto with sets arith. Intros x1 H'4; Elim H'4; Auto with sets arith. Red. Intros x1 H'1; Elim H'1; Auto with sets arith. Qed. Lemma Integers_has_no_ub: ~ (EXT m:nat | (Upper_Bound nat nat_po Integers m)). Proof. Red; Intro H'; Elim H'. Intros x H'0. Elim H'0; Intros H'1 H'2. Cut (In nat Integers (S x)). Intro H'3. Specialize 1 H'2 with y := (S x); Intro H'4; LApply H'4; [Intro H'5; Clear H'4 | Try Assumption; Clear H'4]. Simpl in H'5. Absurd (le (S x) x); Auto with arith. Auto with sets arith. Qed. Lemma Integers_infinite: ~ (Finite nat Integers). Proof. Generalize Integers_has_no_ub. Intro H'; Red; Intro H'0; Try Exact H'0. Apply H'. Apply Finite_subset_has_lub; Auto with sets arith. Qed. End Integers_sect.