Built with Alectryon, running Coq+SerAPI v8.10.0+0.7.0. Coq sources are in this panel; goals and messages will appear in the other. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus.
(************************************************************************) (* * The Coq Proof Assistant / The Coq Development Team *) (* v * INRIA, CNRS and contributors - Copyright 1999-2018 *) (* <O___,, * (see CREDITS file for the list of authors) *) (* \VV/ **************************************************************) (* // * This file is distributed under the terms of the *) (* * GNU Lesser General Public License Version 2.1 *) (* * (see LICENSE file for the text of the license) *) (************************************************************************) Require Import Coq.Reals.Rdefinitions. Require Import Coq.Reals.Raxioms. Require Import Rfunctions. Require Import Coq.Reals.RIneq. Require Import Coq.Logic.FinFun. Require Import Coq.Logic.ConstructiveEpsilon. Definition enumeration (A : Type) (u : nat -> A) (v : A -> nat) : Prop := (forall x : A, u (v x) = x) /\ (forall n : nat, v (u n) = n). Definition in_holed_interval (a b hole : R) (u : nat -> R) (n : nat) : Prop := Rlt a (u n) /\ Rlt (u n) b /\ u n <> hole. (* Here we use axiom total_order_T, which is not constructive *)a, b, h:Ru:nat -> Rn:nat{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b, h:Ru:nat -> Rn:nat{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b, h:Ru:nat -> Rn:natl:(a < u n)%R{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b, h:Ru:nat -> Rn:nate:a = u n{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b, h:Ru:nat -> Rn:nathi:(a > u n)%R{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b, h:Ru:nat -> Rn:natl:(a < u n)%R{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b, h:Ru:nat -> Rn:natl:(a < u n)%Rlb:(b < u n)%R{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b, h:Ru:nat -> Rn:natl:(a < u n)%Reb:b = u n{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%R{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b, h:Ru:nat -> Rn:natl:(a < u n)%Rlb:(b < u n)%R{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b, h:Ru:nat -> Rn:natl:(a < u n)%Rlb:(b < u n)%R~ in_holed_interval a b h u na, b, h:Ru:nat -> Rn:natl:(a < u n)%Rlb:(b < u n)%RH:in_holed_interval a b h u nFalsea, b, h:Ru:nat -> Rn:natl:(a < u n)%Rlb:(b < u n)%RH:(a < u n)%RH0:(u n < b)%R /\ u n <> hFalsea, b, h:Ru:nat -> Rn:natl:(a < u n)%Rlb:(b < u n)%RH:(a < u n)%RH0:(u n < b)%RH1:u n <> hFalsecontradiction.a, b, h:Ru:nat -> Rn:natl:(a < u n)%Rlb:(b < u n)%RH:(a < u n)%RH0:~ (b < u n)%RH1:u n <> hFalsea, b, h:Ru:nat -> Rn:natl:(a < u n)%Reb:b = u n{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, h:Ru:nat -> Rn:natl:(a < u n)%R{in_holed_interval a (u n) h u n} + {~ in_holed_interval a (u n) h u n}a, h:Ru:nat -> Rn:natl:(a < u n)%R~ in_holed_interval a (u n) h u na, h:Ru:nat -> Rn:natl:(a < u n)%RH:in_holed_interval a (u n) h u nFalsea, h:Ru:nat -> Rn:natl, H:(a < u n)%RH0:(u n < u n)%R /\ u n <> hFalsea, h:Ru:nat -> Rn:natl, H:(a < u n)%RH0:(u n < u n)%RH1:u n <> hFalsecontradiction.a, h:Ru:nat -> Rn:natl, H:(a < u n)%RH0:(u n < u n)%RH1:u n <> hH2:~ (u n < u n)%RFalsea, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%R{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%Re:h = u n{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%Rn0:h <> u n{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%R{in_holed_interval a b (u n) u n} + {~ in_holed_interval a b (u n) u n}a, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%Rn0:h <> u n{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%R~ in_holed_interval a b (u n) u na, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%Rn0:h <> u n{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%RH:in_holed_interval a b (u n) u nFalsea, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%Rn0:h <> u n{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%RH:(a < u n)%RH0:(u n < b)%R /\ u n <> u nFalsea, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%Rn0:h <> u n{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%RH:(a < u n)%RH0:(u n < b)%RH1:u n <> u nFalsea, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%Rn0:h <> u n{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%Rn0:h <> u n{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%Rn0:h <> u nin_holed_interval a b h u na, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%Rn0:h <> u n(a < u n)%Ra, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%Rn0:h <> u n(u n < b)%R /\ u n <> ha, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%Rn0:h <> u n(u n < b)%R /\ u n <> ha, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%Rn0:h <> u n(u n < b)%Ra, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%Rn0:h <> u nu n <> ha, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%Rn0:h <> u nu n <> ha, b, h:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%Rn0:h <> u nH:u n = hFalseexact (n0 eq_refl).a, b:Ru:nat -> Rn:natl:(a < u n)%Rhb:(b > u n)%Rn0:u n <> u nFalsea, b, h:Ru:nat -> Rn:nate:a = u n{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}b, h:Ru:nat -> Rn:nat{in_holed_interval (u n) b h u n} + {~ in_holed_interval (u n) b h u n}b, h:Ru:nat -> Rn:nat~ in_holed_interval (u n) b h u nb, h:Ru:nat -> Rn:natH:in_holed_interval (u n) b h u nFalseb, h:Ru:nat -> Rn:natH:(u n < u n)%RH0:(u n < b)%R /\ u n <> hFalsecontradiction.b, h:Ru:nat -> Rn:natH:(u n < u n)%RH0:(u n < b)%R /\ u n <> hH1:~ (u n < u n)%RFalsea, b, h:Ru:nat -> Rn:nathi:(a > u n)%R{in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}a, b, h:Ru:nat -> Rn:nathi:(a > u n)%R~ in_holed_interval a b h u na, b, h:Ru:nat -> Rn:nathi:(a > u n)%RH:in_holed_interval a b h u nFalsea, b, h:Ru:nat -> Rn:nathi:(a > u n)%RH:(a < u n)%RH0:(u n < b)%R /\ u n <> hFalsecontradiction. Qed. Definition point_in_holed_interval (a b h : R) : R := if Req_EM_T h (Rdiv (Rplus a b) (INR 2)) then (Rdiv (Rplus a h) (INR 2)) else (Rdiv (Rplus a b) (INR 2)).a, b, h:Ru:nat -> Rn:nathi:(a > u n)%RH:~ (u n < a)%RH0:(u n < b)%R /\ u n <> hFalseforall a b : R, (a < b)%R -> (a < (a + b) / INR 2 < b)%Rforall a b : R, (a < b)%R -> (a < (a + b) / INR 2 < b)%Ra, b:RH:(a < b)%R(a < (a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RINR 2 <> 0%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%R(a < (a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RINR 2 <> 0%Ra, b:RH:(a < b)%R2 <> 0inversion abs.a, b:RH:(a < b)%Rabs:2 = 0Falsea, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%R(a < (a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%R(0 < / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%R(a < (a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%R(0 < / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%R(0 < INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%R0 < 2a, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%R0 <= 1apply le_n.a, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%R0 <= 0a, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%R(a < (a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rforall x : R, (x + x)%R = (INR 2 * x)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%R(a < (a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rforall x : R, (x + x)%R = (INR 2 * x)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rx:R(x + x)%R = (INR 2 * x)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rx:R(x + x)%R = ((INR 1 + INR 1) * x)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rx:R(x + x)%R = (INR 1 * x + INR 1 * x)%Rreflexivity.a, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rx:R(x + x)%R = (x + x)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%R(a < (a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%R(a < (a + b) / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%R((a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%R(a < (a + b) / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%R(a + a < a + b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(a + a < a + b)%R(a < (a + b) / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%R(a + a < a + b)%Rassumption.a, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%R(a < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(a + a < a + b)%R(a < (a + b) / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(INR 2 * a < a + b)%R(a < (a + b) / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(/ INR 2 * (INR 2 * a) < / INR 2 * (a + b))%R(a < (a + b) / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(INR 2 * a < a + b)%R(0 < / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(/ INR 2 * INR 2 * a < / INR 2 * (a + b))%R(a < (a + b) / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(INR 2 * a < a + b)%R(0 < / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(1 * a < / INR 2 * (a + b))%R(a < (a + b) / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(/ INR 2 * INR 2 * a < / INR 2 * (a + b))%RINR 2 <> 0%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(INR 2 * a < a + b)%R(0 < / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(1 * a < / (1 + 1) * (a + b))%R(a < (a + b) / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(/ INR 2 * INR 2 * a < / INR 2 * (a + b))%RINR 2 <> 0%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(INR 2 * a < a + b)%R(0 < / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(a < / (1 + 1) * (a + b))%R(a < (a + b) / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(/ INR 2 * INR 2 * a < / INR 2 * (a + b))%RINR 2 <> 0%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(INR 2 * a < a + b)%R(0 < / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(a < (a + b) * / (1 + 1))%R(a < (a + b) / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(/ INR 2 * INR 2 * a < / INR 2 * (a + b))%RINR 2 <> 0%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(INR 2 * a < a + b)%R(0 < / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(/ INR 2 * INR 2 * a < / INR 2 * (a + b))%RINR 2 <> 0%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(INR 2 * a < a + b)%R(0 < / INR 2)%Rassumption.a, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(INR 2 * a < a + b)%R(0 < / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%R((a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%R(b + a < b + b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(b + a < b + b)%R((a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%R(b + a < b + b)%Rassumption.a, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%R(a < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(b + a < b + b)%R((a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(a + b < b + b)%R((a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(a + b < INR 2 * b)%R((a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(/ INR 2 * (a + b) < / INR 2 * (INR 2 * b))%R((a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(a + b < INR 2 * b)%R(0 < / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(/ INR 2 * (a + b) < / INR 2 * INR 2 * b)%R((a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(a + b < INR 2 * b)%R(0 < / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(/ INR 2 * (a + b) < 1 * b)%R((a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(/ INR 2 * (a + b) < / INR 2 * INR 2 * b)%RINR 2 <> 0%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(a + b < INR 2 * b)%R(0 < / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(/ (1 + 1) * (a + b) < 1 * b)%R((a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(/ INR 2 * (a + b) < / INR 2 * INR 2 * b)%RINR 2 <> 0%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(a + b < INR 2 * b)%R(0 < / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(/ (1 + 1) * (a + b) < b)%R((a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(/ INR 2 * (a + b) < / INR 2 * INR 2 * b)%RINR 2 <> 0%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(a + b < INR 2 * b)%R(0 < / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:((a + b) * / (1 + 1) < b)%R((a + b) / INR 2 < b)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(/ INR 2 * (a + b) < / INR 2 * INR 2 * b)%RINR 2 <> 0%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(a + b < INR 2 * b)%R(0 < / INR 2)%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(/ INR 2 * (a + b) < / INR 2 * INR 2 * b)%RINR 2 <> 0%Ra, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(a + b < INR 2 * b)%R(0 < / INR 2)%Rassumption. Qed.a, b:RH:(a < b)%RtwoNotZero:INR 2 <> 0%RtwoAboveZero:(0 < / INR 2)%Rdouble:forall x : R, (x + x)%R = (INR 2 * x)%RH0:(a + b < INR 2 * b)%R(0 < / INR 2)%Ra, b, h:R(a < b)%R -> let p := point_in_holed_interval a b h in (a < p)%R /\ (p < b)%R /\ p <> ha, b, h:R(a < b)%R -> let p := point_in_holed_interval a b h in (a < p)%R /\ (p < b)%R /\ p <> ha, b, h:RH:(a < b)%Rp:=point_in_holed_interval a b h:R(a < p)%R /\ (p < b)%R /\ p <> ha, b, h:RH:(a < b)%Rp:=if Req_EM_T h ((a + b) / INR 2) then ((a + h) / INR 2)%R else ((a + b) / INR 2)%R:R(a < p)%R /\ (p < b)%R /\ p <> ha, b, h:RH:(a < b)%Rp:=if Req_EM_T h ((a + b) / INR 2) then ((a + h) / INR 2)%R else ((a + b) / INR 2)%R:RH0:(a < (a + b) / INR 2 < b)%R(a < p)%R /\ (p < b)%R /\ p <> ha, b, h:RH:(a < b)%Rp:=if Req_EM_T h ((a + b) / INR 2) then ((a + h) / INR 2)%R else ((a + b) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%R(a < p)%R /\ (p < b)%R /\ p <> ha, b, h:RH:(a < b)%Re:h = ((a + b) / INR 2)%Rp:=((a + h) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%R(a < p)%R /\ (p < b)%R /\ p <> ha, b, h:RH:(a < b)%Rn:h <> ((a + b) / INR 2)%Rp:=((a + b) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%R(a < p)%R /\ (p < b)%R /\ p <> ha, b, h:RH:(a < b)%Re:h = ((a + b) / INR 2)%Rp:=((a + h) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%R(a < p)%R /\ (p < b)%R /\ p <> ha, b:RH:(a < b)%Rp:=((a + (a + b) / INR 2) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%R(a < p)%R /\ (p < b)%R /\ p <> ((a + b) / INR 2)%Ra, b:RH:(a < b)%Rp:=((a + (a + b) / INR 2) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%RH2:(a < (a + (a + b) / INR 2) / INR 2 < (a + b) / INR 2)%R(a < p)%R /\ (p < b)%R /\ p <> ((a + b) / INR 2)%Ra, b:RH:(a < b)%Rp:=((a + (a + b) / INR 2) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%RH2:(a < (a + (a + b) / INR 2) / INR 2)%RH3:((a + (a + b) / INR 2) / INR 2 < (a + b) / INR 2)%R(a < p)%R /\ (p < b)%R /\ p <> ((a + b) / INR 2)%Ra, b:RH:(a < b)%Rp:=((a + (a + b) / INR 2) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%RH2:(a < (a + (a + b) / INR 2) / INR 2)%RH3:((a + (a + b) / INR 2) / INR 2 < (a + b) / INR 2)%R(a < p)%Ra, b:RH:(a < b)%Rp:=((a + (a + b) / INR 2) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%RH2:(a < (a + (a + b) / INR 2) / INR 2)%RH3:((a + (a + b) / INR 2) / INR 2 < (a + b) / INR 2)%R(p < b)%R /\ p <> ((a + b) / INR 2)%Ra, b:RH:(a < b)%Rp:=((a + (a + b) / INR 2) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%RH2:(a < (a + (a + b) / INR 2) / INR 2)%RH3:((a + (a + b) / INR 2) / INR 2 < (a + b) / INR 2)%R(p < b)%R /\ p <> ((a + b) / INR 2)%Ra, b:RH:(a < b)%Rp:=((a + (a + b) / INR 2) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%RH2:(a < (a + (a + b) / INR 2) / INR 2)%RH3:((a + (a + b) / INR 2) / INR 2 < (a + b) / INR 2)%R(p < b)%Ra, b:RH:(a < b)%Rp:=((a + (a + b) / INR 2) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%RH2:(a < (a + (a + b) / INR 2) / INR 2)%RH3:((a + (a + b) / INR 2) / INR 2 < (a + b) / INR 2)%Rp <> ((a + b) / INR 2)%Ra, b:RH:(a < b)%Rp:=((a + (a + b) / INR 2) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%RH2:(a < (a + (a + b) / INR 2) / INR 2)%RH3:((a + (a + b) / INR 2) / INR 2 < (a + b) / INR 2)%R(p < (a + b) / INR 2)%Ra, b:RH:(a < b)%Rp:=((a + (a + b) / INR 2) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%RH2:(a < (a + (a + b) / INR 2) / INR 2)%RH3:((a + (a + b) / INR 2) / INR 2 < (a + b) / INR 2)%R((a + b) / INR 2 < b)%Ra, b:RH:(a < b)%Rp:=((a + (a + b) / INR 2) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%RH2:(a < (a + (a + b) / INR 2) / INR 2)%RH3:((a + (a + b) / INR 2) / INR 2 < (a + b) / INR 2)%Rp <> ((a + b) / INR 2)%Ra, b:RH:(a < b)%Rp:=((a + (a + b) / INR 2) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%RH2:(a < (a + (a + b) / INR 2) / INR 2)%RH3:((a + (a + b) / INR 2) / INR 2 < (a + b) / INR 2)%R((a + b) / INR 2 < b)%Ra, b:RH:(a < b)%Rp:=((a + (a + b) / INR 2) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%RH2:(a < (a + (a + b) / INR 2) / INR 2)%RH3:((a + (a + b) / INR 2) / INR 2 < (a + b) / INR 2)%Rp <> ((a + b) / INR 2)%Ra, b:RH:(a < b)%Rp:=((a + (a + b) / INR 2) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%RH2:(a < (a + (a + b) / INR 2) / INR 2)%RH3:((a + (a + b) / INR 2) / INR 2 < (a + b) / INR 2)%Rp <> ((a + b) / INR 2)%Rassumption.a, b:RH:(a < b)%Rp:=((a + (a + b) / INR 2) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%RH2:(a < (a + (a + b) / INR 2) / INR 2)%RH3:((a + (a + b) / INR 2) / INR 2 < (a + b) / INR 2)%R(p < (a + b) / INR 2)%Ra, b, h:RH:(a < b)%Rn:h <> ((a + b) / INR 2)%Rp:=((a + b) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%R(a < p)%R /\ (p < b)%R /\ p <> ha, b, h:RH:(a < b)%Rn:h <> ((a + b) / INR 2)%Rp:=((a + b) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%R(a < p)%Ra, b, h:RH:(a < b)%Rn:h <> ((a + b) / INR 2)%Rp:=((a + b) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%R(p < b)%R /\ p <> ha, b, h:RH:(a < b)%Rn:h <> ((a + b) / INR 2)%Rp:=((a + b) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%R(p < b)%R /\ p <> ha, b, h:RH:(a < b)%Rn:h <> ((a + b) / INR 2)%Rp:=((a + b) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%R(p < b)%Ra, b, h:RH:(a < b)%Rn:h <> ((a + b) / INR 2)%Rp:=((a + b) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%Rp <> ha, b, h:RH:(a < b)%Rn:h <> ((a + b) / INR 2)%Rp:=((a + b) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%Rp <> ha, b, h:RH:(a < b)%Rn:h <> ((a + b) / INR 2)%Rp:=((a + b) / INR 2)%R:RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%Rabs:p = hFalsecontradiction. Qed. (* An enumeration of R reaches any open interval of R, extract the first two real numbers in it. *)a, b:RH:(a < b)%Rp:=((a + b) / INR 2)%R:Rn:p <> ((a + b) / INR 2)%RH0:(a < (a + b) / INR 2)%RH1:((a + b) / INR 2 < b)%RFalseu:nat -> Rv:R -> nata, b, h:Renumeration R u v -> (a < b)%R -> {n : nat | in_holed_interval a b h u n /\ (forall k : nat, k < n -> ~ in_holed_interval a b h u k)}u:nat -> Rv:R -> nata, b, h:Renumeration R u v -> (a < b)%R -> {n : nat | in_holed_interval a b h u n /\ (forall k : nat, k < n -> ~ in_holed_interval a b h u k)}u:nat -> Rv:R -> nata, b, h:RH:enumeration R u vH0:(a < b)%R{n : nat | in_holed_interval a b h u n /\ (forall k : nat, k < n -> ~ in_holed_interval a b h u k)}u:nat -> Rv:R -> nata, b, h:RH:enumeration R u vH0:(a < b)%Rforall n : nat, {in_holed_interval a b h u n} + {~ in_holed_interval a b h u n}u:nat -> Rv:R -> nata, b, h:RH:enumeration R u vH0:(a < b)%Rexists n : nat, in_holed_interval a b h u nu:nat -> Rv:R -> nata, b, h:RH:enumeration R u vH0:(a < b)%Rexists n : nat, in_holed_interval a b h u nu:nat -> Rv:R -> nata, b, h:RH:enumeration R u vH0:(a < b)%Rin_holed_interval a b h u (v (point_in_holed_interval a b h))u:nat -> Rv:R -> nata, b, h:RH:forall x : R, u (v x) = xH1:forall n : nat, v (u n) = nH0:(a < b)%Rin_holed_interval a b h u (v (point_in_holed_interval a b h))u:nat -> Rv:R -> nata, b, h:RH:forall x : R, u (v x) = xH1:forall n : nat, v (u n) = nH0:(a < b)%R(a < u (v (point_in_holed_interval a b h)))%R /\ (u (v (point_in_holed_interval a b h)) < b)%R /\ u (v (point_in_holed_interval a b h)) <> hu:nat -> Rv:R -> nata, b, h:RH:forall x : R, u (v x) = xH1:forall n : nat, v (u n) = nH0:(a < b)%R(a < point_in_holed_interval a b h)%R /\ (point_in_holed_interval a b h < b)%R /\ point_in_holed_interval a b h <> hassumption. Defined.u:nat -> Rv:R -> nata, b, h:RH:forall x : R, u (v x) = xH1:forall n : nat, v (u n) = nH0:(a < b)%R(a < b)%Ru:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rlet (c, _) := first_in_holed_interval u v a b h pen plow in forall x : R, (a < x)%R -> (x < b)%R -> x <> h -> x <> u c -> c < v xu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rlet (c, _) := first_in_holed_interval u v a b h pen plow in forall x : R, (a < x)%R -> (x < b)%R -> x <> h -> x <> u c -> c < v xu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:nata0:in_holed_interval a b h u c /\ (forall k : nat, k < c -> ~ in_holed_interval a b h u k)forall x : R, (a < x)%R -> (x < b)%R -> x <> h -> x <> u c -> c < v xu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:nata0:in_holed_interval a b h u c /\ (forall k : nat, k < c -> ~ in_holed_interval a b h u k)x:RH:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u cc < v xu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:nata0:in_holed_interval a b h u c /\ (forall k : nat, k < c -> ~ in_holed_interval a b h u k)x:RH:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:(c ?= v x) = Eqc < v xu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:nata0:in_holed_interval a b h u c /\ (forall k : nat, k < c -> ~ in_holed_interval a b h u k)x:RH:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:(c ?= v x) = Ltc < v xu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:nata0:in_holed_interval a b h u c /\ (forall k : nat, k < c -> ~ in_holed_interval a b h u k)x:RH:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:(c ?= v x) = Gtc < v xu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:nata0:in_holed_interval a b h u c /\ (forall k : nat, k < c -> ~ in_holed_interval a b h u k)x:RH:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:(c ?= v x) = Eqc < v xu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:nata0:in_holed_interval a b h u c /\ (forall k : nat, k < c -> ~ in_holed_interval a b h u k)x:RH:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:(c ?= v x) = EqFalseu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:nata0:in_holed_interval a b h u c /\ (forall k : nat, k < c -> ~ in_holed_interval a b h u k)x:RH:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:c = v xFalseu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:nata0:in_holed_interval a b h u c /\ (forall k : nat, k < c -> ~ in_holed_interval a b h u k)x:RH:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u (v x)order:c = v xFalseu:nat -> Rv:R -> nata, b, h:RH3:forall x0 : R, u (v x0) = x0H4:forall n : nat, v (u n) = nplow:(a < b)%Rc:nata0:in_holed_interval a b h u c /\ (forall k : nat, k < c -> ~ in_holed_interval a b h u k)x:RH:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u (v x)order:c = v xFalseexact (H2 eq_refl).u:nat -> Rv:R -> nata, b, h:RH3:forall x0 : R, u (v x0) = x0H4:forall n : nat, v (u n) = nplow:(a < b)%Rc:nata0:in_holed_interval a b h u c /\ (forall k : nat, k < c -> ~ in_holed_interval a b h u k)x:RH:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> xorder:c = v xFalseu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:nata0:in_holed_interval a b h u c /\ (forall k : nat, k < c -> ~ in_holed_interval a b h u k)x:RH:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:(c ?= v x) = Ltc < v xassumption.u:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:nata0:in_holed_interval a b h u c /\ (forall k : nat, k < c -> ~ in_holed_interval a b h u k)x:RH:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:c < v xc < v xu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:nata0:in_holed_interval a b h u c /\ (forall k : nat, k < c -> ~ in_holed_interval a b h u k)x:RH:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:(c ?= v x) = Gtc < v xu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:nata0:in_holed_interval a b h u c /\ (forall k : nat, k < c -> ~ in_holed_interval a b h u k)x:RH:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:(c ?= v x) = GtFalseu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:nata0:in_holed_interval a b h u c /\ (forall k : nat, k < c -> ~ in_holed_interval a b h u k)x:RH:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:v x < cFalseu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:natH3:in_holed_interval a b h u cH4:forall k : nat, k < c -> ~ in_holed_interval a b h u kx:RH:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:v x < cFalseu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:natH3:in_holed_interval a b h u cx:RH4:~ in_holed_interval a b h u (v x)H:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:v x < cFalseu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:natH3:in_holed_interval a b h u cx:RH4:~ in_holed_interval a b h u (v x)H:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:v x < cin_holed_interval a b h u (v x)u:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:natH3:in_holed_interval a b h u cx:RH4:~ in_holed_interval a b h u (v x)H:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:v x < cH5:in_holed_interval a b h u (v x)Falseu:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:natH3:in_holed_interval a b h u cx:RH4:~ in_holed_interval a b h u (v x)H:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:v x < cin_holed_interval a b h u (v x)u:nat -> Rv:R -> nata, b, h:RH5:forall x0 : R, u (v x0) = x0H6:forall n : nat, v (u n) = nplow:(a < b)%Rc:natH3:in_holed_interval a b h u cx:RH4:~ in_holed_interval a b h u (v x)H:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:v x < cin_holed_interval a b h u (v x)u:nat -> Rv:R -> nata, b, h:RH5:forall x0 : R, u (v x0) = x0H6:forall n : nat, v (u n) = nplow:(a < b)%Rc:natH3:in_holed_interval a b h u cx:RH4:~ in_holed_interval a b h u (v x)H:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:v x < c(a < u (v x))%Ru:nat -> Rv:R -> nata, b, h:RH5:forall x0 : R, u (v x0) = x0H6:forall n : nat, v (u n) = nplow:(a < b)%Rc:natH3:in_holed_interval a b h u cx:RH4:~ in_holed_interval a b h u (v x)H:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:v x < c(u (v x) < b)%R /\ u (v x) <> hu:nat -> Rv:R -> nata, b, h:RH5:forall x0 : R, u (v x0) = x0H6:forall n : nat, v (u n) = nplow:(a < b)%Rc:natH3:in_holed_interval a b h u cx:RH4:~ in_holed_interval a b h u (v x)H:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:v x < c(a < x)%Ru:nat -> Rv:R -> nata, b, h:RH5:forall x0 : R, u (v x0) = x0H6:forall n : nat, v (u n) = nplow:(a < b)%Rc:natH3:in_holed_interval a b h u cx:RH4:~ in_holed_interval a b h u (v x)H:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:v x < c(u (v x) < b)%R /\ u (v x) <> hu:nat -> Rv:R -> nata, b, h:RH5:forall x0 : R, u (v x0) = x0H6:forall n : nat, v (u n) = nplow:(a < b)%Rc:natH3:in_holed_interval a b h u cx:RH4:~ in_holed_interval a b h u (v x)H:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:v x < c(u (v x) < b)%R /\ u (v x) <> hsplit; assumption.u:nat -> Rv:R -> nata, b, h:RH5:forall x0 : R, u (v x0) = x0H6:forall n : nat, v (u n) = nplow:(a < b)%Rc:natH3:in_holed_interval a b h u cx:RH4:~ in_holed_interval a b h u (v x)H:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:v x < c(x < b)%R /\ x <> hcontradiction. Qed. Definition first_two_in_interval (u : nat -> R) (v : R -> nat) (a b : R) (pen : enumeration R u v) (plow : Rlt a b) : prod R R := let (first_index, pr) := first_in_holed_interval u v a b b pen plow in let (second_index, pr2) := first_in_holed_interval u v a b (u first_index) pen plow in if Rle_dec (u first_index) (u second_index) then (u first_index, u second_index) else (u second_index, u first_index).u:nat -> Rv:R -> nata, b, h:Rpen:enumeration R u vplow:(a < b)%Rc:natH3:in_holed_interval a b h u cx:RH4:~ in_holed_interval a b h u (v x)H:(a < x)%RH0:(x < b)%RH1:x <> hH2:x <> u corder:v x < cH5:in_holed_interval a b h u (v x)Falseforall a b c d : R, (a, b) = (c, d) -> a = c /\ b = dforall a b c d : R, (a, b) = (c, d) -> a = c /\ b = da, b, c, d:RH:(a, b) = (c, d)a = c /\ b = da, b, c, d:RH:(a, b) = (c, d)b = d -> a = c -> a = c /\ b = da, b, c, d:RH:(a, b) = (c, d)H0:b = dH1:a = ca = c /\ b = da, b, c, d:RH:(a, b) = (c, d)H0:b = dH1:a = ca = ca, b, c, d:RH:(a, b) = (c, d)H0:b = dH1:a = cb = dc, d:RH:(c, d) = (c, d)c = ca, b, c, d:RH:(a, b) = (c, d)H0:b = dH1:a = cb = da, b, c, d:RH:(a, b) = (c, d)H0:b = dH1:a = cb = dreflexivity. Qed.c, d:RH:(c, d) = (c, d)d = du:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rlet (c, d) := first_two_in_interval u v a b pen plow in (a < c)%R /\ (c < b)%R /\ (a < d)%R /\ (d < b)%R /\ (c < d)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> c -> x <> d -> v c < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rlet (c, d) := first_two_in_interval u v a b pen plow in (a < c)%R /\ (c < b)%R /\ (a < d)%R /\ (d < b)%R /\ (c < d)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> c -> x <> d -> v c < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rlet (c, d) := first_two_in_interval u v a b pen plow in (a < c)%R /\ (c < b)%R /\ (a < d)%R /\ (d < b)%R /\ (c < d)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> c -> x <> d -> v c < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rft:first_two_in_interval u v a b pen plow = (r, r0)(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rft:(let (first_index, _) := first_in_holed_interval u v a b b pen plow in let (second_index, _) := first_in_holed_interval u v a b (u first_index) pen plow in if Rle_dec (u first_index) (u second_index) then (u first_index, u second_index) else (u second_index, u first_index)) = (r, r0)(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rft:(let (first_index, _) := first_in_holed_interval u v a b b pen plow in let (second_index, _) := first_in_holed_interval u v a b (u first_index) pen plow in if Rle_dec (u first_index) (u second_index) then (u first_index, u second_index) else (u second_index, u first_index)) = (r, r0)H:let (c, _) := first_in_holed_interval u v a b b pen plow in forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u c -> c < v x(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rfirst_index:natpr:in_holed_interval a b b u first_index /\ (forall k : nat, k < first_index -> ~ in_holed_interval a b b u k)ft:(let (second_index, _) := first_in_holed_interval u v a b (u first_index) pen plow in if Rle_dec (u first_index) (u second_index) then (u first_index, u second_index) else (u second_index, u first_index)) = (r, r0)H:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v x(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rfirst_index:natpr:in_holed_interval a b b u first_index /\ (forall k : nat, k < first_index -> ~ in_holed_interval a b b u k)ft:(let (second_index, _) := first_in_holed_interval u v a b (u first_index) pen plow in if Rle_dec (u first_index) (u second_index) then (u first_index, u second_index) else (u second_index, u first_index)) = (r, r0)H:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:let (c, _) := first_in_holed_interval u v a b (u first_index) pen plow in forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u c -> c < v x(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rfirst_index:natH1:in_holed_interval a b b u first_indexH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u kft:(let (second_index, _) := first_in_holed_interval u v a b (u first_index) pen plow in if Rle_dec (u first_index) (u second_index) then (u first_index, u second_index) else (u second_index, u first_index)) = (r, r0)H:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:let (c, _) := first_in_holed_interval u v a b (u first_index) pen plow in forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u c -> c < v x(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%R /\ u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u kft:(let (second_index, _) := first_in_holed_interval u v a b (u first_index) pen plow in if Rle_dec (u first_index) (u second_index) then (u first_index, u second_index) else (u second_index, u first_index)) = (r, r0)H:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:let (c, _) := first_in_holed_interval u v a b (u first_index) pen plow in forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u c -> c < v x(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u kft:(let (second_index, _) := first_in_holed_interval u v a b (u first_index) pen plow in if Rle_dec (u first_index) (u second_index) then (u first_index, u second_index) else (u second_index, u first_index)) = (r, r0)H:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:let (c, _) := first_in_holed_interval u v a b (u first_index) pen plow in forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u c -> c < v x(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natpr2:in_holed_interval a b (u first_index) u second_index /\ (forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u k)ft:(if Rle_dec (u first_index) (u second_index) then (u first_index, u second_index) else (u second_index, u first_index)) = (r, r0)H:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:in_holed_interval a b (u first_index) u second_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kft:(if Rle_dec (u first_index) (u second_index) then (u first_index, u second_index) else (u second_index, u first_index)) = (r, r0)H:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%R /\ u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kft:(if Rle_dec (u first_index) (u second_index) then (u first_index, u second_index) else (u second_index, u first_index)) = (r, r0)H:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kft:(if Rle_dec (u first_index) (u second_index) then (u first_index, u second_index) else (u second_index, u first_index)) = (r, r0)H:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%Rft:(u first_index, u second_index) = (r, r0)H:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%Rft:(u second_index, u first_index) = (r, r0)H:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%Rft:(u first_index, u second_index) = (r, r0)H:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%Rft:u first_index = rft0:u second_index = r0H:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < u first_index)%R /\ (u first_index < b)%R /\ (a < u second_index)%R /\ (u second_index < b)%R /\ (u first_index < u second_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> v (u first_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < u first_index)%Ru:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u first_index < b)%R /\ (a < u second_index)%R /\ (u second_index < b)%R /\ (u first_index < u second_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> v (u first_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u first_index < b)%R /\ (a < u second_index)%R /\ (u second_index < b)%R /\ (u first_index < u second_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> v (u first_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u first_index < b)%Ru:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < u second_index)%R /\ (u second_index < b)%R /\ (u first_index < u second_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> v (u first_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < u second_index)%R /\ (u second_index < b)%R /\ (u first_index < u second_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> v (u first_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < u second_index)%Ru:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u second_index < b)%R /\ (u first_index < u second_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> v (u first_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u second_index < b)%R /\ (u first_index < u second_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> v (u first_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u second_index < b)%Ru:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u first_index < u second_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> v (u first_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u first_index < u second_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> v (u first_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u first_index < u second_index)%Ru:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v xforall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> v (u first_index) < v xu:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:{(u first_index < u second_index)%R} + {u first_index = u second_index}H:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u first_index < u second_index)%Ru:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v xforall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> v (u first_index) < v xu:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr:(u first_index < u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u first_index < u second_index)%Ru:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u ke:u first_index = u second_indexH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u first_index < u second_index)%Ru:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v xforall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> v (u first_index) < v xu:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u ke:u first_index = u second_indexH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u first_index < u second_index)%Ru:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v xforall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> v (u first_index) < v xu:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u ke:u first_index = u second_indexH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v xFalseu:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v xforall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> v (u first_index) < v xu:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u second_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u ke:u first_index = u second_indexH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v xFalseu:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v xforall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> v (u first_index) < v xu:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v xforall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> v (u first_index) < v xu:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u first_indexH12:x <> u second_indexv (u first_index) < v xu:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n : nat, v (u n) = nplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u first_indexH12:x <> u second_indexv (u first_index) < v xu:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n : nat, v (u n) = nplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u first_indexH12:x <> u second_indexfirst_index < v xu:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n : nat, v (u n) = nplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u first_indexH12:x <> u second_index(a < x)%Ru:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n : nat, v (u n) = nplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u first_indexH12:x <> u second_index(x < b)%Ru:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n : nat, v (u n) = nplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u first_indexH12:x <> u second_indexx <> bu:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n : nat, v (u n) = nplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u first_indexH12:x <> u second_indexx <> u first_indexu:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n : nat, v (u n) = nplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u first_indexH12:x <> u second_index(x < b)%Ru:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n : nat, v (u n) = nplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u first_indexH12:x <> u second_indexx <> bu:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n : nat, v (u n) = nplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u first_indexH12:x <> u second_indexx <> u first_indexu:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n : nat, v (u n) = nplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u first_indexH12:x <> u second_indexx <> bu:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n : nat, v (u n) = nplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u first_indexH12:x <> u second_indexx <> u first_indexu:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n : nat, v (u n) = nplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u first_indexH12:x <> u second_index(x < b)%Ru:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n : nat, v (u n) = nplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u first_indexH12:x <> u second_indexx <> u first_indexassumption.u:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n : nat, v (u n) = nplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kr1:(u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u first_indexH12:x <> u second_indexx <> u first_indexu:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%Rft:(u second_index, u first_index) = (r, r0)H:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rr, r0:Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%Rft:u second_index = rft0:u first_index = r0H:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < u second_index)%R /\ (u second_index < b)%R /\ (a < u first_index)%R /\ (u first_index < b)%R /\ (u second_index < u first_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u second_index -> x <> u first_index -> v (u second_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < u second_index)%Ru:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u second_index < b)%R /\ (a < u first_index)%R /\ (u first_index < b)%R /\ (u second_index < u first_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u second_index -> x <> u first_index -> v (u second_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u second_index < b)%R /\ (a < u first_index)%R /\ (u first_index < b)%R /\ (u second_index < u first_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u second_index -> x <> u first_index -> v (u second_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u second_index < b)%Ru:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < u first_index)%R /\ (u first_index < b)%R /\ (u second_index < u first_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u second_index -> x <> u first_index -> v (u second_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < u first_index)%R /\ (u first_index < b)%R /\ (u second_index < u first_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u second_index -> x <> u first_index -> v (u second_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(a < u first_index)%Ru:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u first_index < b)%R /\ (u second_index < u first_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u second_index -> x <> u first_index -> v (u second_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u first_index < b)%R /\ (u second_index < u first_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u second_index -> x <> u first_index -> v (u second_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u first_index < b)%Ru:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u second_index < u first_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u second_index -> x <> u first_index -> v (u second_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u second_index < u first_index)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> u second_index -> x <> u first_index -> v (u second_index) < v x)u:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u second_index < u first_index)%Ru:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v xforall x : R, (a < x)%R -> (x < b)%R -> x <> u second_index -> x <> u first_index -> v (u second_index) < v xu:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:(u second_index < u first_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v x(u second_index < u first_index)%Ru:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v xforall x : R, (a < x)%R -> (x < b)%R -> x <> u second_index -> x <> u first_index -> v (u second_index) < v xu:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x : R, (a < x)%R -> (x < b)%R -> x <> b -> x <> u first_index -> first_index < v xH0:forall x : R, (a < x)%R -> (x < b)%R -> x <> u first_index -> x <> u second_index -> second_index < v xforall x : R, (a < x)%R -> (x < b)%R -> x <> u second_index -> x <> u first_index -> v (u second_index) < v xu:nat -> Rv:R -> nata, b:Rpen:enumeration R u vplow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u second_indexH12:x <> u first_indexv (u second_index) < v xu:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n0 : nat, v (u n0) = n0plow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u second_indexH12:x <> u first_indexv (u second_index) < v xu:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n0 : nat, v (u n0) = n0plow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u second_indexH12:x <> u first_indexsecond_index < v xu:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n0 : nat, v (u n0) = n0plow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u second_indexH12:x <> u first_index(a < x)%Ru:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n0 : nat, v (u n0) = n0plow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u second_indexH12:x <> u first_index(x < b)%Ru:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n0 : nat, v (u n0) = n0plow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u second_indexH12:x <> u first_indexx <> u first_indexu:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n0 : nat, v (u n0) = n0plow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u second_indexH12:x <> u first_indexx <> u second_indexu:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n0 : nat, v (u n0) = n0plow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u second_indexH12:x <> u first_index(x < b)%Ru:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n0 : nat, v (u n0) = n0plow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u second_indexH12:x <> u first_indexx <> u first_indexu:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n0 : nat, v (u n0) = n0plow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u second_indexH12:x <> u first_indexx <> u second_indexu:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n0 : nat, v (u n0) = n0plow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u second_indexH12:x <> u first_indexx <> u first_indexu:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n0 : nat, v (u n0) = n0plow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u second_indexH12:x <> u first_indexx <> u second_indexassumption. Qed. (* If u,v is an enumeration of R, this sequence of open intervals tears the segment [0,1]. The recursive definition needs the proof that the previous interval is ordered, hence the type. The first sequence is increasing, the second decreasing. The first is below the second. Therefore the first sequence has a limit, a least upper bound b, that u cannot reach, which contradicts u (v b) = b. *)u:nat -> Rv:R -> nata, b:RH13:forall x0 : R, u (v x0) = x0H14:forall n0 : nat, v (u n0) = n0plow:(a < b)%Rfirst_index:natH1:(a < u first_index)%RH3:(u first_index < b)%RH4:u first_index <> bH2:forall k : nat, k < first_index -> ~ in_holed_interval a b b u ksecond_index:natH5:(a < u second_index)%RH7:(u second_index < b)%RH8:u second_index <> u first_indexH6:forall k : nat, k < second_index -> ~ in_holed_interval a b (u first_index) u kn:~ (u first_index <= u second_index)%RH:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> b -> x0 <> u first_index -> first_index < v x0H0:forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> u first_index -> x0 <> u second_index -> second_index < v x0x:RH9:(a < x)%RH10:(x < b)%RH11:x <> u second_indexH12:x <> u first_indexx <> u second_indexu:nat -> Rv:R -> natenumeration R u v -> nat -> {ab : R * R | (fst ab < snd ab)%R}u:nat -> Rv:R -> natenumeration R u v -> nat -> {ab : R * R | (fst ab < snd ab)%R}u:nat -> Rv:R -> natpen:enumeration R u vnat -> {ab : R * R | (fst ab < snd ab)%R}u:nat -> Rv:R -> natpen:enumeration R u v{ab : R * R | (fst ab < snd ab)%R}u:nat -> Rv:R -> natpen:enumeration R u vnat -> {ab : R * R | (fst ab < snd ab)%R} -> {ab : R * R | (fst ab < snd ab)%R}u:nat -> Rv:R -> natpen:enumeration R u v{ab : R * R | (fst ab < snd ab)%R}u:nat -> Rv:R -> natpen:enumeration R u v(fst (INR 0, INR 1) < snd (INR 0, INR 1))%Rapply Rlt_0_1.u:nat -> Rv:R -> natpen:enumeration R u v(0 < 1)%Ru:nat -> Rv:R -> natpen:enumeration R u vnat -> {ab : R * R | (fst ab < snd ab)%R} -> {ab : R * R | (fst ab < snd ab)%R}u:nat -> Rv:R -> natpen:enumeration R u vn:nata, b:Rpr:(fst (a, b) < snd (a, b))%R{ab : R * R | (fst ab < snd ab)%R}u:nat -> Rv:R -> natpen:enumeration R u vn:nata, b:Rpr:(fst (a, b) < snd (a, b))%R(fst (first_two_in_interval u v a b pen pr) < snd (first_two_in_interval u v a b pen pr))%Ru:nat -> Rv:R -> natpen:enumeration R u vn:nata, b:Rpr:(fst (a, b) < snd (a, b))%RH:let (c, d) := first_two_in_interval u v a b pen pr in (a < c)%R /\ (c < b)%R /\ (a < d)%R /\ (d < b)%R /\ (c < d)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> c -> x <> d -> v c < v x)(fst (first_two_in_interval u v a b pen pr) < snd (first_two_in_interval u v a b pen pr))%Rapply H. Defined.u:nat -> Rv:R -> natpen:enumeration R u vn:nata, b:Rpr:(fst (a, b) < snd (a, b))%Rr, r0:RH:(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)(fst (r, r0) < snd (r, r0))%Ru:nat -> Rv:R -> naten:enumeration R u vn:natlet (I, pr) := tearing_sequences u v en n in proj1_sig (tearing_sequences u v en (S n)) = first_two_in_interval u v (fst I) (snd I) en pru:nat -> Rv:R -> naten:enumeration R u vn:natlet (I, pr) := tearing_sequences u v en n in proj1_sig (tearing_sequences u v en (S n)) = first_two_in_interval u v (fst I) (snd I) en pru:nat -> Rv:R -> naten:enumeration R u vn:natlet (I, pr) := tearing_sequences u v en n in proj1_sig (let (x, x0) := tearing_sequences u v en n in (let (a, b) as p return ((fst p < snd p)%R -> {ab : R * R | (fst ab < snd ab)%R}) := x in fun pr0 : (a < b)%R => exist (fun ab : R * R => (fst ab < snd ab)%R) (first_two_in_interval u v a b en pr0) ((let (r, r0) as p return ((let (c, d) := p in (a < c)%R /\ (c < b)%R /\ (a < d)%R /\ (d < b)%R /\ (...)%R /\ (...)) -> (fst p < snd p)%R) := first_two_in_interval u v a b en pr0 in fun H : (a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x0 : R, (a < x0)%R -> (...)%R -> ... -> ...) => match match match ... with | conj _ H1 => H1 end with | conj _ H1 => H1 end with | conj H0 _ => H0 end) (first_two_in_interval_works u v a b en pr0))) x0) = first_two_in_interval u v (fst I) (snd I) en pru:nat -> Rv:R -> naten:enumeration R u vn:nata, b:Rpr:(fst (a, b) < snd (a, b))%Rproj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) (first_two_in_interval u v a b en pr) ((let (r, r0) as p return ((let (c, d) := p in (a < c)%R /\ (c < b)%R /\ (a < d)%R /\ (d < b)%R /\ (c < d)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> c -> x <> d -> ... < ...)) -> (fst p < snd p)%R) := first_two_in_interval u v a b en pr in fun H : (a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x) => match match match match match ... with | ... H1 end with | conj _ H1 => H1 end with | conj _ H1 => H1 end with | conj _ H1 => H1 end with | conj H0 _ => H0 end) (first_two_in_interval_works u v a b en pr))) = first_two_in_interval u v (fst (a, b)) (snd (a, b)) en prreflexivity. Qed. (* The first tearing sequence in increasing, the second decreasing. That means the tearing sequences are nested intervals. *)u:nat -> Rv:R -> naten:enumeration R u vn:nata, b:Rpr:(fst (a, b) < snd (a, b))%Rfirst_two_in_interval u v a b en pr = first_two_in_interval u v a b en pru:nat -> Rv:R -> natpen:enumeration R u vforall n : nat, let I := proj1_sig (tearing_sequences u v pen n) in let SI := proj1_sig (tearing_sequences u v pen (S n)) in (fst I < fst SI)%R /\ (snd SI < snd I)%Ru:nat -> Rv:R -> natpen:enumeration R u vforall n : nat, let I := proj1_sig (tearing_sequences u v pen n) in let SI := proj1_sig (tearing_sequences u v pen (S n)) in (fst I < fst SI)%R /\ (snd SI < snd I)%Ru:nat -> Rv:R -> natpen:enumeration R u vn:natlet I := proj1_sig (tearing_sequences u v pen n) in let SI := proj1_sig (tearing_sequences u v pen (S n)) in (fst I < fst SI)%R /\ (snd SI < snd I)%Ru:nat -> Rv:R -> natpen:enumeration R u vn:nat(fst (proj1_sig (tearing_sequences u v pen n)) < fst (proj1_sig (let (x, x0) := tearing_sequences u v pen n in (let (a, b) as p return (fst p < snd p -> {ab : R * R | fst ab < snd ab}) := x in fun pr : a < b => exist (fun ab : R * R => fst ab < snd ab) (first_two_in_interval u v a b pen pr) ((let (r, r0) as p return ((let (c, d) := p in a < c /\ c < b /\ ... /\ ...) -> fst p < snd p) := first_two_in_interval u v a b pen pr in fun H : a < r /\ r < b /\ a < r0 /\ r0 < b /\ r < r0 /\ (..., ...) => match match ... ... end with | conj _ H1 => H1 end with | conj H0 _ => H0 end) (first_two_in_interval_works u v a b pen pr))) x0)))%R /\ (snd (proj1_sig (let (x, x0) := tearing_sequences u v pen n in (let (a, b) as p return (fst p < snd p -> {ab : R * R | fst ab < snd ab}) := x in fun pr : a < b => exist (fun ab : R * R => fst ab < snd ab) (first_two_in_interval u v a b pen pr) ((let (r, r0) as p return ((let (c, d) := p in a < c /\ c < b /\ ... /\ ...) -> fst p < snd p) := first_two_in_interval u v a b pen pr in fun H : a < r /\ r < b /\ a < r0 /\ r0 < b /\ r < r0 /\ (..., ...) => match match ... ... end with | conj _ H1 => H1 end with | conj H0 _ => H0 end) (first_two_in_interval_works u v a b pen pr))) x0)) < snd (proj1_sig (tearing_sequences u v pen n)))%Ru:nat -> Rv:R -> natpen:enumeration R u vn:nata, b:Rpr:(fst (a, b) < snd (a, b))%R(fst (proj1_sig (exist (fun ab : R * R => fst ab < snd ab) (a, b) pr)) < fst (proj1_sig (exist (fun ab : R * R => fst ab < snd ab) (first_two_in_interval u v a b pen pr) ((let (r, r0) as p return ((let (c, d) := p in a < c /\ c < b /\ a < d /\ d < b /\ c < d /\ (forall ..., ... -> ...)) -> fst p < snd p) := first_two_in_interval u v a b pen pr in fun H : a < r /\ r < b /\ a < r0 /\ r0 < b /\ r < r0 /\ (forall x : R, a < x -> x < b -> x <> r -> x <> r0 -> (...)%nat) => match match match match ... with | ... H1 end with | conj _ H1 => H1 end with | conj _ H1 => H1 end with | conj H0 _ => H0 end) (first_two_in_interval_works u v a b pen pr)))))%R /\ (snd (proj1_sig (exist (fun ab : R * R => fst ab < snd ab) (first_two_in_interval u v a b pen pr) ((let (r, r0) as p return ((let (c, d) := p in a < c /\ c < b /\ a < d /\ d < b /\ c < d /\ (forall ..., ... -> ...)) -> fst p < snd p) := first_two_in_interval u v a b pen pr in fun H : a < r /\ r < b /\ a < r0 /\ r0 < b /\ r < r0 /\ (forall x : R, a < x -> x < b -> x <> r -> x <> r0 -> (...)%nat) => match match match match ... with | ... H1 end with | conj _ H1 => H1 end with | conj _ H1 => H1 end with | conj H0 _ => H0 end) (first_two_in_interval_works u v a b pen pr)))) < snd (proj1_sig (exist (fun ab : R * R => fst ab < snd ab) (a, b) pr)))%Ru:nat -> Rv:R -> natpen:enumeration R u vn:nata, b:Rpr:(fst (a, b) < snd (a, b))%R(a < fst (first_two_in_interval u v a b pen pr))%R /\ (snd (first_two_in_interval u v a b pen pr) < b)%Ru:nat -> Rv:R -> natpen:enumeration R u vn:nata, b:Rpr:(fst (a, b) < snd (a, b))%RH:let (c, d) := first_two_in_interval u v a b pen pr in (a < c)%R /\ (c < b)%R /\ (a < d)%R /\ (d < b)%R /\ (c < d)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> c -> x <> d -> v c < v x)(a < fst (first_two_in_interval u v a b pen pr))%R /\ (snd (first_two_in_interval u v a b pen pr) < b)%Ru:nat -> Rv:R -> natpen:enumeration R u vn:nata, b:Rpr:(fst (a, b) < snd (a, b))%Rr, r0:RH:(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)(a < fst (r, r0))%R /\ (snd (r, r0) < b)%Ru:nat -> Rv:R -> natpen:enumeration R u vn:nata, b:Rpr:(fst (a, b) < snd (a, b))%Rr, r0:RH:(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)(a < r)%R /\ (r0 < b)%Ru:nat -> Rv:R -> natpen:enumeration R u vn:nata, b:Rpr:(fst (a, b) < snd (a, b))%Rr, r0:RH:(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)(a < r)%Ru:nat -> Rv:R -> natpen:enumeration R u vn:nata, b:Rpr:(fst (a, b) < snd (a, b))%Rr, r0:RH:(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)(r0 < b)%Ru:nat -> Rv:R -> natpen:enumeration R u vn:nata, b:Rpr:(fst (a, b) < snd (a, b))%Rr, r0:RH:(a < r)%RH0:(r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)(a < r)%Ru:nat -> Rv:R -> natpen:enumeration R u vn:nata, b:Rpr:(fst (a, b) < snd (a, b))%Rr, r0:RH:(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)(r0 < b)%Ru:nat -> Rv:R -> natpen:enumeration R u vn:nata, b:Rpr:(fst (a, b) < snd (a, b))%Rr, r0:RH:(a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)(r0 < b)%Rassumption. Qed.u:nat -> Rv:R -> natpen:enumeration R u vn:nata, b:Rpr:(fst (a, b) < snd (a, b))%Rr, r0:RH1:(a < r)%RH2:(r < b)%RH3:(a < r0)%RH4:(r0 < b)%RH5:(r < r0)%R /\ (forall x : R, (a < x)%R -> (x < b)%R -> x <> r -> x <> r0 -> v r < v x)(r0 < b)%Rforall n m : nat, n < S m -> n < m \/ n = mforall n m : nat, n < S m -> n < m \/ n = mn, m:natn < S m -> n < m \/ n = mm:natforall n : nat, n < S m -> n < m \/ n = mforall n : nat, n < 1 -> n < 0 \/ n = 0m:natIHm:forall n : nat, n < S m -> n < m \/ n = mforall n : nat, n < S (S m) -> n < S m \/ n = S mforall n : nat, n < 1 -> n < 0 \/ n = 0n:natH:n < 1n < 0 \/ n = 0H:0 < 10 < 0 \/ 0 = 0n:natH:S n < 1S n < 0 \/ S n = 0H:0 < 10 = 0n:natH:S n < 1S n < 0 \/ S n = 0n:natH:S n < 1S n < 0 \/ S n = 0n:natH:S n < 1Falseinversion H1.n:natH:S n < 1m:natH1:S (S n) <= 0H0:m = 0Falsem:natIHm:forall n : nat, n < S m -> n < m \/ n = mforall n : nat, n < S (S m) -> n < S m \/ n = S mm:natIHm:forall n0 : nat, n0 < S m -> n0 < m \/ n0 = mn:natH:n < S (S m)n < S m \/ n = S mm:natIHm:forall n : nat, n < S m -> n < m \/ n = mH:0 < S (S m)0 < S m \/ 0 = S mm:natIHm:forall n0 : nat, n0 < S m -> n0 < m \/ n0 = mn:natH:S n < S (S m)S n < S m \/ S n = S mm:natIHm:forall n : nat, n < S m -> n < m \/ n = mH:0 < S (S m)0 < S mm:natIHm:forall n0 : nat, n0 < S m -> n0 < m \/ n0 = mn:natH:S n < S (S m)S n < S m \/ S n = S mm:natIHm:forall n : nat, n < S m -> n < m \/ n = mH:0 < S (S m)1 <= S mm:natIHm:forall n0 : nat, n0 < S m -> n0 < m \/ n0 = mn:natH:S n < S (S m)S n < S m \/ S n = S mm:natIHm:forall n : nat, n < S m -> n < m \/ n = mH:0 < S (S m)0 <= mm:natIHm:forall n0 : nat, n0 < S m -> n0 < m \/ n0 = mn:natH:S n < S (S m)S n < S m \/ S n = S mm:natIHm:forall n0 : nat, n0 < S m -> n0 < m \/ n0 = mn:natH:S n < S (S m)S n < S m \/ S n = S mm:natIHm:forall n0 : nat, n0 < S m -> n0 < m \/ n0 = mn:natH:n < Init.Nat.pred (S (S m))S n < S m \/ S n = S mm:natIHm:forall n0 : nat, n0 < S m -> n0 < m \/ n0 = mn:natH:n < S mS n < S m \/ S n = S mm, n:natIHm:n < m \/ n = mH:n < S mS n < S m \/ S n = S mm, n:natH0:n < mH:n < S mS n < S m \/ S n = S mm, n:natH0:n = mH:n < S mS n < S m \/ S n = S mm, n:natH0:n < mH:n < S mS n < S mm, n:natH0:n = mH:n < S mS n < S m \/ S n = S mm, n:natH0:n < mH:n < S mn < mm, n:natH0:n = mH:n < S mS n < S m \/ S n = S mm, n:natH0:n = mH:n < S mS n < S m \/ S n = S mm:natH:m < S mS m < S m \/ S m = S mreflexivity. Qed.m:natH:m < S mS m = S mu:nat -> R(forall n : nat, (u n < u (S n))%R) -> forall n m : nat, n < m -> (u n < u m)%Ru:nat -> R(forall n : nat, (u n < u (S n))%R) -> forall n m : nat, n < m -> (u n < u m)%Ru:nat -> RH:forall n0 : nat, (u n0 < u (S n0))%Rn, m:natH0:n < m(u n < u m)%Ru:nat -> RH:forall n0 : nat, (u n0 < u (S n0))%Rn:natH0:n < 0(u n < u 0%nat)%Ru:nat -> RH:forall n0 : nat, (u n0 < u (S n0))%Rn, m:natH0:n < S mIHm:n < m -> (u n < u m)%R(u n < u (S m))%Ru:nat -> RH:forall n0 : nat, (u n0 < u (S n0))%Rn:natH0:n < 0(u n < u 0%nat)%Rinversion H0.u:nat -> RH:forall n0 : nat, (u n0 < u (S n0))%Rn:natH0:n < 0(u n < u 0%nat)%Ru:nat -> RH:forall n0 : nat, (u n0 < u (S n0))%Rn, m:natH0:n < S mIHm:n < m -> (u n < u m)%R(u n < u (S m))%Ru:nat -> RH:forall n0 : nat, (u n0 < u (S n0))%Rn, m:natH0:n < S mIHm:n < m -> (u n < u m)%R(u n < u (S m))%Ru:nat -> RH:forall n0 : nat, (u n0 < u (S n0))%Rn, m:natH0:n < S mIHm:n < m -> (u n < u m)%RH1:n < m(u n < u (S m))%Ru:nat -> RH:forall n0 : nat, (u n0 < u (S n0))%Rn, m:natH0:n < S mIHm:n < m -> (u n < u m)%RH1:n = m(u n < u (S m))%Ru:nat -> RH:forall n0 : nat, (u n0 < u (S n0))%Rn, m:natH0:n < S mIHm:n < m -> (u n < u m)%RH1:n < m(u n < u (S m))%Ru:nat -> RH:forall n0 : nat, (u n0 < u (S n0))%Rn, m:natH0:n < S mIHm:n < m -> (u n < u m)%RH1:n < m(u n < u m)%Ru:nat -> RH:forall n0 : nat, (u n0 < u (S n0))%Rn, m:natH0:n < S mIHm:n < m -> (u n < u m)%RH1:n < m(u m < u (S m))%Ru:nat -> RH:forall n0 : nat, (u n0 < u (S n0))%Rn, m:natH0:n < S mIHm:n < m -> (u n < u m)%RH1:n < mn < mu:nat -> RH:forall n0 : nat, (u n0 < u (S n0))%Rn, m:natH0:n < S mIHm:n < m -> (u n < u m)%RH1:n < m(u m < u (S m))%Rapply H.u:nat -> RH:forall n0 : nat, (u n0 < u (S n0))%Rn, m:natH0:n < S mIHm:n < m -> (u n < u m)%RH1:n < m(u m < u (S m))%Ru:nat -> RH:forall n0 : nat, (u n0 < u (S n0))%Rn, m:natH0:n < S mIHm:n < m -> (u n < u m)%RH1:n = m(u n < u (S m))%Rapply H. Qed.u:nat -> RH:forall n : nat, (u n < u (S n))%Rm:natIHm:m < m -> (u m < u m)%RH0:m < S m(u m < u (S m))%Ru:nat -> R(forall n : nat, (u (S n) < u n)%R) -> forall n m : nat, n < m -> (u m < u n)%Ru:nat -> R(forall n : nat, (u (S n) < u n)%R) -> forall n m : nat, n < m -> (u m < u n)%Ru:nat -> RH:forall n0 : nat, (u (S n0) < u n0)%Rn, m:natH0:n < m(u m < u n)%Ru:nat -> RH:forall n0 : nat, (u (S n0) < u n0)%Rn:natH0:n < 0(u 0%nat < u n)%Ru:nat -> RH:forall n0 : nat, (u (S n0) < u n0)%Rn, m:natH0:n < S mIHm:n < m -> (u m < u n)%R(u (S m) < u n)%Ru:nat -> RH:forall n0 : nat, (u (S n0) < u n0)%Rn:natH0:n < 0(u 0%nat < u n)%Rinversion H0.u:nat -> RH:forall n0 : nat, (u (S n0) < u n0)%Rn:natH0:n < 0(u 0%nat < u n)%Ru:nat -> RH:forall n0 : nat, (u (S n0) < u n0)%Rn, m:natH0:n < S mIHm:n < m -> (u m < u n)%R(u (S m) < u n)%Ru:nat -> RH:forall n0 : nat, (u (S n0) < u n0)%Rn, m:natH0:n < S mIHm:n < m -> (u m < u n)%R(u (S m) < u n)%Ru:nat -> RH:forall n0 : nat, (u (S n0) < u n0)%Rn, m:natH0:n < S mIHm:n < m -> (u m < u n)%RH1:n < m(u (S m) < u n)%Ru:nat -> RH:forall n0 : nat, (u (S n0) < u n0)%Rn, m:natH0:n < S mIHm:n < m -> (u m < u n)%RH1:n = m(u (S m) < u n)%Ru:nat -> RH:forall n0 : nat, (u (S n0) < u n0)%Rn, m:natH0:n < S mIHm:n < m -> (u m < u n)%RH1:n < m(u (S m) < u n)%Ru:nat -> RH:forall n0 : nat, (u (S n0) < u n0)%Rn, m:natH0:n < S mIHm:n < m -> (u m < u n)%RH1:n < m(u (S m) < u m)%Ru:nat -> RH:forall n0 : nat, (u (S n0) < u n0)%Rn, m:natH0:n < S mIHm:n < m -> (u m < u n)%RH1:n < m(u m < u n)%Ru:nat -> RH:forall n0 : nat, (u (S n0) < u n0)%Rn, m:natH0:n < S mIHm:n < m -> (u m < u n)%RH1:n < m(u m < u n)%Rassumption.u:nat -> RH:forall n0 : nat, (u (S n0) < u n0)%Rn, m:natH0:n < S mIHm:n < m -> (u m < u n)%RH1:n < mn < mu:nat -> RH:forall n0 : nat, (u (S n0) < u n0)%Rn, m:natH0:n < S mIHm:n < m -> (u m < u n)%RH1:n = m(u (S m) < u n)%Rapply H. Qed. (* Either increase the first sequence, or decrease the second sequence, until n = m and conclude by tearing_sequences_ordered *)u:nat -> RH:forall n : nat, (u (S n) < u n)%Rm:natIHm:m < m -> (u m < u m)%RH0:m < S m(u (S m) < u m)%Ru:nat -> Rv:R -> natpen:enumeration R u vforall n m : nat, let In := proj1_sig (tearing_sequences u v pen n) in let Im := proj1_sig (tearing_sequences u v pen m) in (fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vforall n m : nat, let In := proj1_sig (tearing_sequences u v pen n) in let Im := proj1_sig (tearing_sequences u v pen m) in (fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natIn:=proj1_sig (tearing_sequences u v pen n):(R * R)%typeIm:=proj1_sig (tearing_sequences u v pen m):(R * R)%type(fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) x r):(R * R)%typeIm:=proj1_sig (tearing_sequences u v pen m):(R * R)%type(fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typeIm:=proj1_sig (tearing_sequences u v pen m):(R * R)%type(fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0):(R * R)%type(fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%type(fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:(n ?= m) = Eq(fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:(n ?= m) = Lt(fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:(n ?= m) = Gt(fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:(n ?= m) = Eq(fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n = m(fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vm:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%type(fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vm:natx:(R * R)%typer:(fst x < snd x)%Rx0:(R * R)%typer0:(fst x0 < snd x0)%Rtn:exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0 = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typetm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%type(fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vm:natx:(R * R)%typer:(fst x < snd x)%Rx0:(R * R)%typer0:(fst x0 < snd x0)%Rtn:exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0 = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typetm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeH0:x0 = x(fst In < snd Im)%Rassumption.u:nat -> Rv:R -> natpen:enumeration R u vm:natx:(R * R)%typer, r0:(fst x < snd x)%Rtn:exist (fun ab : R * R => (fst ab < snd ab)%R) x r0 = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn, Im:=x:(R * R)%typetm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x r0(fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:(n ?= m) = Lt(fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < m(fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < m(fst In < fst Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < m(fst Im < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n0 : nat => fst (proj1_sig (tearing_sequences u v pen n0)))(fst In < fst Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < m(fst Im < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n0 : nat => fst (proj1_sig (tearing_sequences u v pen n0)))H:(forall n0 : nat, (fseq n0 < fseq (S n0))%R) -> forall n0 m0 : nat, n0 < m0 -> (fseq n0 < fseq m0)%R(fst In < fst Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < m(fst Im < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n0 : nat => fst (proj1_sig (tearing_sequences u v pen n0)))H:(forall n0 : nat, (fseq n0 < fseq (S n0))%R) -> forall n0 m0 : nat, n0 < m0 -> (fseq n0 < fseq m0)%Rforall n0 : nat, (fseq n0 < fseq (S n0))%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n0 : nat => fst (proj1_sig (tearing_sequences u v pen n0)))H:(forall n0 : nat, (fseq n0 < fseq (S n0))%R) -> forall n0 m0 : nat, n0 < m0 -> (fseq n0 < fseq m0)%RH0:forall n0 : nat, (fseq n0 < fseq (S n0))%R(fst In < fst Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < m(fst Im < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n0 : nat => fst (proj1_sig (tearing_sequences u v pen n0)))H:(forall n0 : nat, (fseq n0 < fseq (S n0))%R) -> forall n0 m0 : nat, n0 < m0 -> (fseq n0 < fseq m0)%Rforall n0 : nat, (fseq n0 < fseq (S n0))%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n1 : nat => fst (proj1_sig (tearing_sequences u v pen n1)))H:(forall n1 : nat, (fseq n1 < fseq (S n1))%R) -> forall n1 m0 : nat, n1 < m0 -> (fseq n1 < fseq m0)%Rn0:nat(fseq n0 < fseq (S n0))%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n1 : nat => fst (proj1_sig (tearing_sequences u v pen n1)))H:(forall n1 : nat, (fseq n1 < fseq (S n1))%R) -> forall n1 m0 : nat, n1 < m0 -> (fseq n1 < fseq m0)%Rn0:nat(fst (proj1_sig (tearing_sequences u v pen n0)) < fst (proj1_sig (tearing_sequences u v pen (S n0))))%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n1 : nat => fst (proj1_sig (tearing_sequences u v pen n1)))H:(forall n1 : nat, (fseq n1 < fseq (S n1))%R) -> forall n1 m0 : nat, n1 < m0 -> (fseq n1 < fseq m0)%Rn0:natH0:let I := proj1_sig (tearing_sequences u v pen n0) in let SI := proj1_sig (tearing_sequences u v pen (S n0)) in (fst I < fst SI)%R /\ (snd SI < snd I)%R(fst (proj1_sig (tearing_sequences u v pen n0)) < fst (proj1_sig (tearing_sequences u v pen (S n0))))%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n1 : nat => fst (proj1_sig (tearing_sequences u v pen n1)))H:(forall n1 : nat, (fseq n1 < fseq (S n1))%R) -> forall n1 m0 : nat, n1 < m0 -> (fseq n1 < fseq m0)%Rn0:natx1:(R * R)%typer1:(fst x1 < snd x1)%RH0:let I := proj1_sig (tearing_sequences u v pen n0) in let SI := proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) x1 r1) in (fst I < fst SI)%R /\ (snd SI < snd I)%R(fst (proj1_sig (tearing_sequences u v pen n0)) < fst (proj1_sig (exist (fun ab : R * R => fst ab < snd ab) x1 r1)))%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n1 : nat => fst (proj1_sig (tearing_sequences u v pen n1)))H:(forall n1 : nat, (fseq n1 < fseq (S n1))%R) -> forall n1 m0 : nat, n1 < m0 -> (fseq n1 < fseq m0)%Rn0:natx1:(R * R)%typer1:(fst x1 < snd x1)%RH0:let I := proj1_sig (tearing_sequences u v pen n0) in let SI := proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) x1 r1) in (fst I < fst SI)%R /\ (snd SI < snd I)%R(fst (proj1_sig (tearing_sequences u v pen n0)) < fst x1)%Rapply H0.u:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n1 : nat => fst (proj1_sig (tearing_sequences u v pen n1)))H:(forall n1 : nat, (fseq n1 < fseq (S n1))%R) -> forall n1 m0 : nat, n1 < m0 -> (fseq n1 < fseq m0)%Rn0:natx1:(R * R)%typer1:(fst x1 < snd x1)%Rx2:(R * R)%typer2:(fst x2 < snd x2)%RH0:let I := proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) x2 r2) in let SI := proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) x1 r1) in (fst I < fst SI)%R /\ (snd SI < snd I)%R(fst (proj1_sig (exist (fun ab : R * R => fst ab < snd ab) x2 r2)) < fst x1)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n0 : nat => fst (proj1_sig (tearing_sequences u v pen n0)))H:(forall n0 : nat, (fseq n0 < fseq (S n0))%R) -> forall n0 m0 : nat, n0 < m0 -> (fseq n0 < fseq m0)%RH0:forall n0 : nat, (fseq n0 < fseq (S n0))%R(fst In < fst Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < m(fst Im < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n0 : nat => fst (proj1_sig (tearing_sequences u v pen n0)))H:forall n0 m0 : nat, n0 < m0 -> (fseq n0 < fseq m0)%RH0:forall n0 : nat, (fseq n0 < fseq (S n0))%R(fst In < fst Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < m(fst Im < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n0 : nat => fst (proj1_sig (tearing_sequences u v pen n0)))H:forall n0 m0 : nat, n0 < m0 -> (fst (proj1_sig (tearing_sequences u v pen n0)) < fst (proj1_sig (tearing_sequences u v pen m0)))%RH0:forall n0 : nat, (fseq n0 < fseq (S n0))%R(fst In < fst Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < m(fst Im < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n0 : nat => fst (proj1_sig (tearing_sequences u v pen n0)))H:(fst (proj1_sig (tearing_sequences u v pen n)) < fst (proj1_sig (tearing_sequences u v pen m)))%RH0:forall n0 : nat, (fseq n0 < fseq (S n0))%R(fst In < fst Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < m(fst Im < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n0 : nat => fst (proj1_sig (tearing_sequences u v pen n0)))H:(fst (proj1_sig (exist (fun ab : R * R => fst ab < snd ab) x r)) < fst (proj1_sig (tearing_sequences u v pen m)))%RH0:forall n0 : nat, (fseq n0 < fseq (S n0))%R(fst In < fst Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < m(fst Im < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n0 : nat => fst (proj1_sig (tearing_sequences u v pen n0)))H:(fst (proj1_sig (exist (fun ab : R * R => fst ab < snd ab) x r)) < fst (proj1_sig (exist (fun ab : R * R => fst ab < snd ab) x0 r0)))%RH0:forall n0 : nat, (fseq n0 < fseq (S n0))%R(fst In < fst Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < m(fst Im < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < mfseq:nat -> RHeqfseq:fseq = (fun n0 : nat => fst (proj1_sig (tearing_sequences u v pen n0)))H:(fst x < fst x0)%RH0:forall n0 : nat, (fseq n0 < fseq (S n0))%R(fst In < fst Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < m(fst Im < snd Im)%Rassumption.u:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:n < m(fst Im < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:(n ?= m) = Gt(fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < n(fst In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < n(fst In < snd In)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < n(snd In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < n(snd In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < nsseq:nat -> RHeqsseq:sseq = (fun n0 : nat => snd (proj1_sig (tearing_sequences u v pen n0)))(snd In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < nsseq:nat -> RHeqsseq:sseq = (fun n0 : nat => snd (proj1_sig (tearing_sequences u v pen n0)))H:(forall n0 : nat, (sseq (S n0) < sseq n0)%R) -> forall n0 m0 : nat, n0 < m0 -> (sseq m0 < sseq n0)%R(snd In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < nsseq:nat -> RHeqsseq:sseq = (fun n0 : nat => snd (proj1_sig (tearing_sequences u v pen n0)))H:(forall n0 : nat, (sseq (S n0) < sseq n0)%R) -> forall n0 m0 : nat, n0 < m0 -> (sseq m0 < sseq n0)%Rforall n0 : nat, (sseq (S n0) < sseq n0)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < nsseq:nat -> RHeqsseq:sseq = (fun n0 : nat => snd (proj1_sig (tearing_sequences u v pen n0)))H:(forall n0 : nat, (sseq (S n0) < sseq n0)%R) -> forall n0 m0 : nat, n0 < m0 -> (sseq m0 < sseq n0)%RH0:forall n0 : nat, (sseq (S n0) < sseq n0)%R(snd In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < nsseq:nat -> RHeqsseq:sseq = (fun n0 : nat => snd (proj1_sig (tearing_sequences u v pen n0)))H:(forall n0 : nat, (sseq (S n0) < sseq n0)%R) -> forall n0 m0 : nat, n0 < m0 -> (sseq m0 < sseq n0)%Rforall n0 : nat, (sseq (S n0) < sseq n0)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < nsseq:nat -> RHeqsseq:sseq = (fun n1 : nat => snd (proj1_sig (tearing_sequences u v pen n1)))H:(forall n1 : nat, (sseq (S n1) < sseq n1)%R) -> forall n1 m0 : nat, n1 < m0 -> (sseq m0 < sseq n1)%Rn0:nat(sseq (S n0) < sseq n0)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < nsseq:nat -> RHeqsseq:sseq = (fun n1 : nat => snd (proj1_sig (tearing_sequences u v pen n1)))H:(forall n1 : nat, (sseq (S n1) < sseq n1)%R) -> forall n1 m0 : nat, n1 < m0 -> (sseq m0 < sseq n1)%Rn0:nat(snd (proj1_sig (tearing_sequences u v pen (S n0))) < snd (proj1_sig (tearing_sequences u v pen n0)))%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < nsseq:nat -> RHeqsseq:sseq = (fun n1 : nat => snd (proj1_sig (tearing_sequences u v pen n1)))H:(forall n1 : nat, (sseq (S n1) < sseq n1)%R) -> forall n1 m0 : nat, n1 < m0 -> (sseq m0 < sseq n1)%Rn0:natH0:let I := proj1_sig (tearing_sequences u v pen n0) in let SI := proj1_sig (tearing_sequences u v pen (S n0)) in (fst I < fst SI)%R /\ (snd SI < snd I)%R(snd (proj1_sig (tearing_sequences u v pen (S n0))) < snd (proj1_sig (tearing_sequences u v pen n0)))%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < nsseq:nat -> RHeqsseq:sseq = (fun n1 : nat => snd (proj1_sig (tearing_sequences u v pen n1)))H:(forall n1 : nat, (sseq (S n1) < sseq n1)%R) -> forall n1 m0 : nat, n1 < m0 -> (sseq m0 < sseq n1)%Rn0:natx1:(R * R)%typer1:(fst x1 < snd x1)%RH0:let I := proj1_sig (tearing_sequences u v pen n0) in let SI := proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) x1 r1) in (fst I < fst SI)%R /\ (snd SI < snd I)%R(snd (proj1_sig (exist (fun ab : R * R => fst ab < snd ab) x1 r1)) < snd (proj1_sig (tearing_sequences u v pen n0)))%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < nsseq:nat -> RHeqsseq:sseq = (fun n1 : nat => snd (proj1_sig (tearing_sequences u v pen n1)))H:(forall n1 : nat, (sseq (S n1) < sseq n1)%R) -> forall n1 m0 : nat, n1 < m0 -> (sseq m0 < sseq n1)%Rn0:natx1:(R * R)%typer1:(fst x1 < snd x1)%RH0:let I := proj1_sig (tearing_sequences u v pen n0) in let SI := proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) x1 r1) in (fst I < fst SI)%R /\ (snd SI < snd I)%R(snd x1 < snd (proj1_sig (tearing_sequences u v pen n0)))%Rapply H0.u:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < nsseq:nat -> RHeqsseq:sseq = (fun n1 : nat => snd (proj1_sig (tearing_sequences u v pen n1)))H:(forall n1 : nat, (sseq (S n1) < sseq n1)%R) -> forall n1 m0 : nat, n1 < m0 -> (sseq m0 < sseq n1)%Rn0:natx1:(R * R)%typer1:(fst x1 < snd x1)%Rx2:(R * R)%typer2:(fst x2 < snd x2)%RH0:let I := proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) x2 r2) in let SI := proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) x1 r1) in (fst I < fst SI)%R /\ (snd SI < snd I)%R(snd x1 < snd (proj1_sig (exist (fun ab : R * R => fst ab < snd ab) x2 r2)))%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < nsseq:nat -> RHeqsseq:sseq = (fun n0 : nat => snd (proj1_sig (tearing_sequences u v pen n0)))H:(forall n0 : nat, (sseq (S n0) < sseq n0)%R) -> forall n0 m0 : nat, n0 < m0 -> (sseq m0 < sseq n0)%RH0:forall n0 : nat, (sseq (S n0) < sseq n0)%R(snd In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < nsseq:nat -> RHeqsseq:sseq = (fun n0 : nat => snd (proj1_sig (tearing_sequences u v pen n0)))H:forall n0 m0 : nat, n0 < m0 -> (sseq m0 < sseq n0)%RH0:forall n0 : nat, (sseq (S n0) < sseq n0)%R(snd In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < nsseq:nat -> RHeqsseq:sseq = (fun n0 : nat => snd (proj1_sig (tearing_sequences u v pen n0)))H:forall n0 m0 : nat, n0 < m0 -> (snd (proj1_sig (tearing_sequences u v pen m0)) < snd (proj1_sig (tearing_sequences u v pen n0)))%RH0:forall n0 : nat, (sseq (S n0) < sseq n0)%R(snd In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < nsseq:nat -> RHeqsseq:sseq = (fun n0 : nat => snd (proj1_sig (tearing_sequences u v pen n0)))H:(snd (proj1_sig (tearing_sequences u v pen n)) < snd (proj1_sig (tearing_sequences u v pen m)))%RH0:forall n0 : nat, (sseq (S n0) < sseq n0)%R(snd In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < nsseq:nat -> RHeqsseq:sseq = (fun n0 : nat => snd (proj1_sig (tearing_sequences u v pen n0)))H:(snd (proj1_sig (exist (fun ab : R * R => fst ab < snd ab) x r)) < snd (proj1_sig (tearing_sequences u v pen m)))%RH0:forall n0 : nat, (sseq (S n0) < sseq n0)%R(snd In < snd Im)%Rapply H. Qed. Definition tearing_elem_fst (u : nat -> R) (v : R -> nat) (pen : enumeration R u v) (x : R) := exists n : nat, x = fst (proj1_sig (tearing_sequences u v pen n)). (* The limit of the first tearing sequence cannot be reached by u *)u:nat -> Rv:R -> natpen:enumeration R u vn, m:natx:(R * R)%typer:(fst x < snd x)%Rtn:tearing_sequences u v pen n = exist (fun ab : R * R => (fst ab < snd ab)%R) x rIn:=x:(R * R)%typex0:(R * R)%typer0:(fst x0 < snd x0)%Rtm:tearing_sequences u v pen m = exist (fun ab : R * R => (fst ab < snd ab)%R) x0 r0Im:=x0:(R * R)%typeorder:m < nsseq:nat -> RHeqsseq:sseq = (fun n0 : nat => snd (proj1_sig (tearing_sequences u v pen n0)))H:(snd (proj1_sig (exist (fun ab : R * R => fst ab < snd ab) x r)) < snd (proj1_sig (exist (fun ab : R * R => fst ab < snd ab) x0 r0)))%RH0:forall n0 : nat, (sseq (S n0) < sseq n0)%R(snd In < snd Im)%Ru:nat -> Rv:R -> natpen:enumeration R u v{m : R | is_lub (tearing_elem_fst u v pen) m}u:nat -> Rv:R -> natpen:enumeration R u v{m : R | is_lub (tearing_elem_fst u v pen) m}u:nat -> Rv:R -> natpen:enumeration R u v{m : R | is_lub (tearing_elem_fst u v pen) m}u:nat -> Rv:R -> natpen:enumeration R u vbound (tearing_elem_fst u v pen)u:nat -> Rv:R -> natpen:enumeration R u vH:bound (tearing_elem_fst u v pen){m : R | is_lub (tearing_elem_fst u v pen) m}u:nat -> Rv:R -> natpen:enumeration R u vbound (tearing_elem_fst u v pen)u:nat -> Rv:R -> natpen:enumeration R u vis_upper_bound (tearing_elem_fst u v pen) (INR 1)u:nat -> Rv:R -> natpen:enumeration R u vx:RH0:tearing_elem_fst u v pen x(x <= INR 1)%Ru:nat -> Rv:R -> natpen:enumeration R u vx:Rn:natH0:x = fst (proj1_sig (tearing_sequences u v pen n))(x <= INR 1)%Ru:nat -> Rv:R -> natpen:enumeration R u vn:nat(fst (proj1_sig (tearing_sequences u v pen n)) <= INR 1)%Rapply (tearing_sequences_ordered_forall u v pen n 0).u:nat -> Rv:R -> natpen:enumeration R u vn:nat(fst (proj1_sig (tearing_sequences u v pen n)) < INR 1)%Ru:nat -> Rv:R -> natpen:enumeration R u vH:bound (tearing_elem_fst u v pen){m : R | is_lub (tearing_elem_fst u v pen) m}u:nat -> Rv:R -> natpen:enumeration R u vH:bound (tearing_elem_fst u v pen)exists x : R, tearing_elem_fst u v pen xu:nat -> Rv:R -> natpen:enumeration R u vH:bound (tearing_elem_fst u v pen)tearing_elem_fst u v pen (INR 0)reflexivity. Defined.u:nat -> Rv:R -> natpen:enumeration R u vH:bound (tearing_elem_fst u v pen)INR 0 = fst (proj1_sig (tearing_sequences u v pen 0))u:nat -> Rv:R -> naten:enumeration R u vforall n : nat, (fst (proj1_sig (tearing_sequences u v en n)) < proj1_sig (torn_number u v en))%Ru:nat -> Rv:R -> naten:enumeration R u vforall n : nat, (fst (proj1_sig (tearing_sequences u v en n)) < proj1_sig (torn_number u v en))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nat(fst (proj1_sig (tearing_sequences u v en n)) < proj1_sig (torn_number u v en))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) torn(fst (proj1_sig (tearing_sequences u v en n)) < proj1_sig (exist (fun m : R => is_lub (tearing_elem_fst u v en) m) torn i))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) torn(fst (proj1_sig (tearing_sequences u v en n)) < torn)%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornr:(fst (proj1_sig (tearing_sequences u v en n)) < torn)%R(fst (proj1_sig (tearing_sequences u v en n)) < torn)%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornr:(torn <= fst (proj1_sig (tearing_sequences u v en n)))%R(fst (proj1_sig (tearing_sequences u v en n)) < torn)%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornr:(torn <= fst (proj1_sig (tearing_sequences u v en n)))%R(fst (proj1_sig (tearing_sequences u v en n)) < torn)%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornr:(torn <= fst (proj1_sig (tearing_sequences u v en n)))%RFalseu:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:is_upper_bound (tearing_elem_fst u v en) tornH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%Rr:(torn <= fst (proj1_sig (tearing_sequences u v en n)))%RFalseu:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:is_upper_bound (tearing_elem_fst u v en) tornH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%Rr:(torn <= fst (proj1_sig (tearing_sequences u v en n)))%R(torn < fst (proj1_sig (tearing_sequences u v en (S n))))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:is_upper_bound (tearing_elem_fst u v en) tornH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%Rr:(torn <= fst (proj1_sig (tearing_sequences u v en n)))%RH1:(torn < fst (proj1_sig (tearing_sequences u v en (S n))))%RFalseu:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:is_upper_bound (tearing_elem_fst u v en) tornH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%Rr:(torn <= fst (proj1_sig (tearing_sequences u v en n)))%R(torn < fst (proj1_sig (tearing_sequences u v en (S n))))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:is_upper_bound (tearing_elem_fst u v en) tornH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%Rr:(torn <= fst (proj1_sig (tearing_sequences u v en n)))%R(torn <= fst (proj1_sig (tearing_sequences u v en n)))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:is_upper_bound (tearing_elem_fst u v en) tornH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%Rr:(torn <= fst (proj1_sig (tearing_sequences u v en n)))%R(fst (proj1_sig (tearing_sequences u v en n)) < fst (proj1_sig (tearing_sequences u v en (S n))))%Rapply tearing_sequences_inc_dec.u:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:is_upper_bound (tearing_elem_fst u v en) tornH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%Rr:(torn <= fst (proj1_sig (tearing_sequences u v en n)))%R(fst (proj1_sig (tearing_sequences u v en n)) < fst (proj1_sig (tearing_sequences u v en (S n))))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:is_upper_bound (tearing_elem_fst u v en) tornH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%Rr:(torn <= fst (proj1_sig (tearing_sequences u v en n)))%RH1:(torn < fst (proj1_sig (tearing_sequences u v en (S n))))%RFalseu:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:is_upper_bound (tearing_elem_fst u v en) tornH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%RH1:(torn < fst (proj1_sig (tearing_sequences u v en (S n))))%RFalseu:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:tearing_elem_fst u v en (fst (proj1_sig (tearing_sequences u v en (S n)))) -> (fst (proj1_sig (tearing_sequences u v en (S n))) <= torn)%RH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%RH1:(torn < fst (proj1_sig (tearing_sequences u v en (S n))))%RFalseu:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:tearing_elem_fst u v en (fst (proj1_sig (tearing_sequences u v en (S n)))) -> (fst (proj1_sig (tearing_sequences u v en (S n))) <= torn)%RH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%RH1:(torn < fst (proj1_sig (tearing_sequences u v en (S n))))%Rtearing_elem_fst u v en (fst (proj1_sig (tearing_sequences u v en (S n))))u:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:tearing_elem_fst u v en (fst (proj1_sig (tearing_sequences u v en (S n)))) -> (fst (proj1_sig (tearing_sequences u v en (S n))) <= torn)%RH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%RH1:(torn < fst (proj1_sig (tearing_sequences u v en (S n))))%RH2:tearing_elem_fst u v en (fst (proj1_sig (tearing_sequences u v en (S n))))Falseu:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:tearing_elem_fst u v en (fst (proj1_sig (tearing_sequences u v en (S n)))) -> (fst (proj1_sig (tearing_sequences u v en (S n))) <= torn)%RH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%RH1:(torn < fst (proj1_sig (tearing_sequences u v en (S n))))%Rtearing_elem_fst u v en (fst (proj1_sig (tearing_sequences u v en (S n))))reflexivity.u:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:tearing_elem_fst u v en (fst (proj1_sig (tearing_sequences u v en (S n)))) -> (fst (proj1_sig (tearing_sequences u v en (S n))) <= torn)%RH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%RH1:(torn < fst (proj1_sig (tearing_sequences u v en (S n))))%Rfst (proj1_sig (tearing_sequences u v en (S n))) = fst (proj1_sig (tearing_sequences u v en (S n)))u:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:tearing_elem_fst u v en (fst (proj1_sig (tearing_sequences u v en (S n)))) -> (fst (proj1_sig (tearing_sequences u v en (S n))) <= torn)%RH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%RH1:(torn < fst (proj1_sig (tearing_sequences u v en (S n))))%RH2:tearing_elem_fst u v en (fst (proj1_sig (tearing_sequences u v en (S n))))Falseu:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:(fst (proj1_sig (tearing_sequences u v en (S n))) <= torn)%RH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%RH1:(torn < fst (proj1_sig (tearing_sequences u v en (S n))))%RH2:tearing_elem_fst u v en (fst (proj1_sig (tearing_sequences u v en (S n))))Falseu:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:(fst (proj1_sig (tearing_sequences u v en (S n))) <= torn)%RH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%RH1:(torn < fst (proj1_sig (tearing_sequences u v en (S n))))%RH2:tearing_elem_fst u v en (fst (proj1_sig (tearing_sequences u v en (S n))))(torn < torn)%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:(fst (proj1_sig (tearing_sequences u v en (S n))) <= torn)%RH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%RH1:(torn < fst (proj1_sig (tearing_sequences u v en (S n))))%RH2:tearing_elem_fst u v en (fst (proj1_sig (tearing_sequences u v en (S n))))H3:(torn < torn)%RFalseapply (Rlt_le_trans torn (fst (proj1_sig (tearing_sequences u v en (S n))))); assumption.u:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:(fst (proj1_sig (tearing_sequences u v en (S n))) <= torn)%RH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%RH1:(torn < fst (proj1_sig (tearing_sequences u v en (S n))))%RH2:tearing_elem_fst u v en (fst (proj1_sig (tearing_sequences u v en (S n))))(torn < torn)%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:(fst (proj1_sig (tearing_sequences u v en (S n))) <= torn)%RH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%RH1:(torn < fst (proj1_sig (tearing_sequences u v en (S n))))%RH2:tearing_elem_fst u v en (fst (proj1_sig (tearing_sequences u v en (S n))))H3:(torn < torn)%RFalsecontradiction. Qed. (* The torn number is between both tearing sequences, so it could have been chosen at each step. *)u:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH:(fst (proj1_sig (tearing_sequences u v en (S n))) <= torn)%RH0:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%RH1:(torn < fst (proj1_sig (tearing_sequences u v en (S n))))%RH2:tearing_elem_fst u v en (fst (proj1_sig (tearing_sequences u v en (S n))))H3:FalseFalseu:nat -> Rv:R -> naten:enumeration R u vforall n : nat, (proj1_sig (torn_number u v en) < snd (proj1_sig (tearing_sequences u v en n)))%Ru:nat -> Rv:R -> naten:enumeration R u vforall n : nat, (proj1_sig (torn_number u v en) < snd (proj1_sig (tearing_sequences u v en n)))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nat(proj1_sig (torn_number u v en) < snd (proj1_sig (tearing_sequences u v en n)))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) torn(proj1_sig (exist (fun m : R => is_lub (tearing_elem_fst u v en) m) torn i) < snd (proj1_sig (tearing_sequences u v en n)))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) torn(torn < snd (proj1_sig (tearing_sequences u v en n)))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornl:(torn < snd (proj1_sig (tearing_sequences u v en n)))%R(torn < snd (proj1_sig (tearing_sequences u v en n)))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornh:(snd (proj1_sig (tearing_sequences u v en n)) <= torn)%R(torn < snd (proj1_sig (tearing_sequences u v en n)))%Rassumption.u:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornl:(torn < snd (proj1_sig (tearing_sequences u v en n)))%R(torn < snd (proj1_sig (tearing_sequences u v en n)))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornh:(snd (proj1_sig (tearing_sequences u v en n)) <= torn)%R(torn < snd (proj1_sig (tearing_sequences u v en n)))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornh:(snd (proj1_sig (tearing_sequences u v en n)) <= torn)%RFalseu:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornh:(snd (proj1_sig (tearing_sequences u v en n)) <= torn)%R(snd (proj1_sig (tearing_sequences u v en (S n))) < torn)%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornh:(snd (proj1_sig (tearing_sequences u v en n)) <= torn)%RH:(snd (proj1_sig (tearing_sequences u v en (S n))) < torn)%RFalseu:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornh:(snd (proj1_sig (tearing_sequences u v en n)) <= torn)%R(snd (proj1_sig (tearing_sequences u v en (S n))) < torn)%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornh:(snd (proj1_sig (tearing_sequences u v en n)) <= torn)%R(snd (proj1_sig (tearing_sequences u v en (S n))) < snd (proj1_sig (tearing_sequences u v en n)))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornh:(snd (proj1_sig (tearing_sequences u v en n)) <= torn)%R(snd (proj1_sig (tearing_sequences u v en n)) <= torn)%Rassumption.u:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornh:(snd (proj1_sig (tearing_sequences u v en n)) <= torn)%R(snd (proj1_sig (tearing_sequences u v en n)) <= torn)%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornh:(snd (proj1_sig (tearing_sequences u v en n)) <= torn)%RH:(snd (proj1_sig (tearing_sequences u v en (S n))) < torn)%RFalse(* Then prove snd (tearing_sequences u v (S n)) is an upper bound of the first sequence. It will yield the contradiction torn < torn. *)u:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornH:(snd (proj1_sig (tearing_sequences u v en (S n))) < torn)%RFalseu:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornH:(snd (proj1_sig (tearing_sequences u v en (S n))) < torn)%Ris_upper_bound (tearing_elem_fst u v en) (snd (proj1_sig (tearing_sequences u v en (S n))))u:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornH:(snd (proj1_sig (tearing_sequences u v en (S n))) < torn)%RH0:is_upper_bound (tearing_elem_fst u v en) (snd (proj1_sig (tearing_sequences u v en (S n))))Falseu:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornH:(snd (proj1_sig (tearing_sequences u v en (S n))) < torn)%Ris_upper_bound (tearing_elem_fst u v en) (snd (proj1_sig (tearing_sequences u v en (S n))))u:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornH:(snd (proj1_sig (tearing_sequences u v en (S n))) < torn)%Rx:RH0:tearing_elem_fst u v en x(x <= snd (proj1_sig (tearing_sequences u v en (S n))))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornH:(snd (proj1_sig (tearing_sequences u v en (S n))) < torn)%Rx:Rx0:natH0:x = fst (proj1_sig (tearing_sequences u v en x0))(x <= snd (proj1_sig (tearing_sequences u v en (S n))))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornH:(snd (proj1_sig (tearing_sequences u v en (S n))) < torn)%Rx0:nat(fst (proj1_sig (tearing_sequences u v en x0)) <= snd (proj1_sig (tearing_sequences u v en (S n))))%Rapply tearing_sequences_ordered_forall.u:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornH:(snd (proj1_sig (tearing_sequences u v en (S n))) < torn)%Rx0:nat(fst (proj1_sig (tearing_sequences u v en x0)) < snd (proj1_sig (tearing_sequences u v en (S n))))%Ru:nat -> Rv:R -> naten:enumeration R u vn:nattorn:Ri:is_lub (tearing_elem_fst u v en) tornH:(snd (proj1_sig (tearing_sequences u v en (S n))) < torn)%RH0:is_upper_bound (tearing_elem_fst u v en) (snd (proj1_sig (tearing_sequences u v en (S n))))Falseu:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH1:is_upper_bound (tearing_elem_fst u v en) tornH2:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%RH:(snd (proj1_sig (tearing_sequences u v en (S n))) < torn)%RH0:is_upper_bound (tearing_elem_fst u v en) (snd (proj1_sig (tearing_sequences u v en (S n))))Falseu:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH1:is_upper_bound (tearing_elem_fst u v en) tornH2:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%RH:(snd (proj1_sig (tearing_sequences u v en (S n))) < torn)%RH0:(torn <= snd (proj1_sig (tearing_sequences u v en (S n))))%RFalseu:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH1:is_upper_bound (tearing_elem_fst u v en) tornH2:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%RH:(snd (proj1_sig (tearing_sequences u v en (S n))) < torn)%RH0:(torn <= snd (proj1_sig (tearing_sequences u v en (S n))))%RH3:(torn < torn)%RFalsecontradiction. Qed. (* Here is the contradiction : the torn number's index is above a sequence that tends to infinity *)u:nat -> Rv:R -> naten:enumeration R u vn:nattorn:RH1:is_upper_bound (tearing_elem_fst u v en) tornH2:forall b : R, is_upper_bound (tearing_elem_fst u v en) b -> (torn <= b)%RH:(snd (proj1_sig (tearing_sequences u v en (S n))) < torn)%RH0:(torn <= snd (proj1_sig (tearing_sequences u v en (S n))))%RH3:FalseFalseu:nat -> Rv:R -> naten:enumeration R u vforall n : nat, v (fst (proj1_sig (tearing_sequences u v en (S n)))) < v (proj1_sig (torn_number u v en))u:nat -> Rv:R -> naten:enumeration R u vforall n : nat, v (fst (proj1_sig (tearing_sequences u v en (S n)))) < v (proj1_sig (torn_number u v en))u:nat -> Rv:R -> naten:enumeration R u vn:natv (fst (proj1_sig (tearing_sequences u v en (S n)))) < v (proj1_sig (torn_number u v en))u:nat -> Rv:R -> naten:enumeration R u vn:natv (fst (proj1_sig (let (x, x0) := tearing_sequences u v en n in (let (a, b) as p return ((fst p < snd p)%R -> {ab : R * R | (fst ab < snd ab)%R}) := x in fun pr : (a < b)%R => exist (fun ab : R * R => (fst ab < snd ab)%R) (first_two_in_interval u v a b en pr) ((let (r, r0) as p return ((let (c, d) := p in (a < c)%R /\ (...)%R /\ ...%R /\ ...) -> (fst p < snd p)%R) := first_two_in_interval u v a b en pr in fun H : (a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (..., ...) => match match ... ... end with | conj _ H1 => H1 end with | conj H0 _ => H0 end) (first_two_in_interval_works u v a b en pr))) x0))) < v (proj1_sig (torn_number u v en))(* The torn number was not chosen, so its index is above *)u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hv (fst (proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) (first_two_in_interval u v r r0 en H) ((let (r1, r2) as p return ((let (c, d) := p in (r < c)%R /\ (c < r0)%R /\ (r < d)%R /\ (d < r0)%R /\ (c < d)%R /\ (forall ..., ...%R -> ...)) -> (fst p < snd p)%R) := first_two_in_interval u v r r0 en H in fun H0 : (r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> ... < ...) => match match match match ... with | ... H2 end with | conj _ H2 => H2 end with | conj _ H2 => H2 end with | conj H1 _ => H1 end) (first_two_in_interval_works u v r r0 en H))))) < v (proj1_sig (torn_number u v en))u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hv (fst (first_two_in_interval u v r r0 en H)) < v (proj1_sig (torn_number u v en))u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) HH0:let (c, d) := first_two_in_interval u v r r0 en H in (r < c)%R /\ (c < r0)%R /\ (r < d)%R /\ (d < r0)%R /\ (c < d)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> c -> x <> d -> v c < v x)v (fst (first_two_in_interval u v r r0 en H)) < v (proj1_sig (torn_number u v en))u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)v (fst (r1, r2)) < v (proj1_sig (torn_number u v en))u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)v r1 < v (proj1_sig (torn_number u v en))u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)v r1 < v (proj1_sig (torn_number u v en))u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)proj1_sig (let (x, x0) := tearing_sequences u v en n in (let (a, b) as p return ((fst p < snd p)%R -> {ab : R * R | (fst ab < snd ab)%R}) := x in fun pr : (a < b)%R => exist (fun ab : R * R => (fst ab < snd ab)%R) (first_two_in_interval u v a b en pr) ((let (r3, r4) as p return ((let (c, d) := p in (a < c)%R /\ (c < b)%R /\ (a < d)%R /\ (d < b)%R /\ (c < d)%R /\ (..., ...)) -> (fst p < snd p)%R) := first_two_in_interval u v a b en pr in fun H1 : (a < r3)%R /\ (r3 < b)%R /\ (a < r4)%R /\ (r4 < b)%R /\ (r3 < r4)%R /\ (forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> r3 -> ... -> ...) => match match match ... ... end with | conj _ H3 => H3 end with | conj _ H3 => H3 end with | conj H2 _ => H2 end) (first_two_in_interval_works u v a b en pr))) x0) = (r1, r2)assumption.u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) (first_two_in_interval u v r r0 en H) ((let (r3, r4) as p return ((let (c, d) := p in (r < c)%R /\ (c < r0)%R /\ (r < d)%R /\ (d < r0)%R /\ (c < d)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> c -> x <> d -> ... < ...)) -> (fst p < snd p)%R) := first_two_in_interval u v r r0 en H in fun H1 : (r < r3)%R /\ (r3 < r0)%R /\ (r < r4)%R /\ (r4 < r0)%R /\ (r3 < r4)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r3 -> x <> r4 -> v r3 < v x) => match match match match match ... with | ... H3 end with | conj _ H3 => H3 end with | conj _ H3 => H3 end with | conj _ H3 => H3 end with | conj H2 _ => H2 end) (first_two_in_interval_works u v r r0 en H))) = (r1, r2)u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)v r1 < v (proj1_sig (torn_number u v en))u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)(r < proj1_sig (torn_number u v en))%Ru:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)(proj1_sig (torn_number u v en) < r0)%Ru:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)proj1_sig (torn_number u v en) <> r1u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)proj1_sig (torn_number u v en) <> r2u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)(r < proj1_sig (torn_number u v en))%Ru:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)H2:(fst (proj1_sig (tearing_sequences u v en n)) < proj1_sig (torn_number u v en))%R(r < proj1_sig (torn_number u v en))%Rassumption.u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)H2:(fst (proj1_sig (exist (fun ab : R * R => fst ab < snd ab) (r, r0) H)) < proj1_sig (torn_number u v en))%R(r < proj1_sig (torn_number u v en))%Ru:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)(proj1_sig (torn_number u v en) < r0)%Ru:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)H2:(proj1_sig (torn_number u v en) < snd (proj1_sig (tearing_sequences u v en n)))%R(proj1_sig (torn_number u v en) < r0)%Rassumption.u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)H2:(proj1_sig (torn_number u v en) < snd (proj1_sig (exist (fun ab : R * R => fst ab < snd ab) (r, r0) H)))%R(proj1_sig (torn_number u v en) < r0)%Ru:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)proj1_sig (torn_number u v en) <> r1u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)H2:(fst (proj1_sig (tearing_sequences u v en (S n))) < proj1_sig (torn_number u v en))%Rproj1_sig (torn_number u v en) <> r1u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)H2:(fst (r1, r2) < proj1_sig (torn_number u v en))%Rproj1_sig (torn_number u v en) <> r1u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)H2:(r1 < proj1_sig (torn_number u v en))%Rproj1_sig (torn_number u v en) <> r1u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)H2:(r1 < proj1_sig (torn_number u v en))%RH5:proj1_sig (torn_number u v en) = r1Falseu:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr2:RH2:(proj1_sig (torn_number u v en) < proj1_sig (torn_number u v en))%RH1:proj1_sig (tearing_sequences u v en (S n)) = (proj1_sig (torn_number u v en), r2)H0:(r < proj1_sig (torn_number u v en))%R /\ (proj1_sig (torn_number u v en) < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (proj1_sig (torn_number u v en) < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> proj1_sig (torn_number u v en) -> x <> r2 -> v (proj1_sig (torn_number u v en)) < v x)ft:first_two_in_interval u v r r0 en H = (proj1_sig (torn_number u v en), r2)Falsecontradiction.u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr2:RH2:FalseH1:proj1_sig (tearing_sequences u v en (S n)) = (proj1_sig (torn_number u v en), r2)H0:(r < proj1_sig (torn_number u v en))%R /\ (proj1_sig (torn_number u v en) < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (proj1_sig (torn_number u v en) < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> proj1_sig (torn_number u v en) -> x <> r2 -> v (proj1_sig (torn_number u v en)) < v x)ft:first_two_in_interval u v r r0 en H = (proj1_sig (torn_number u v en), r2)Falseu:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)proj1_sig (torn_number u v en) <> r2u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)H2:(proj1_sig (torn_number u v en) < snd (proj1_sig (tearing_sequences u v en (S n))))%Rproj1_sig (torn_number u v en) <> r2u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)H2:(proj1_sig (torn_number u v en) < snd (r1, r2))%Rproj1_sig (torn_number u v en) <> r2u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)H2:(proj1_sig (torn_number u v en) < r2)%Rproj1_sig (torn_number u v en) <> r2u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1, r2:Rft:first_two_in_interval u v r r0 en H = (r1, r2)H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)H1:proj1_sig (tearing_sequences u v en (S n)) = (r1, r2)H2:(proj1_sig (torn_number u v en) < r2)%RH5:proj1_sig (torn_number u v en) = r2Falseu:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1:RH2:(proj1_sig (torn_number u v en) < proj1_sig (torn_number u v en))%RH1:proj1_sig (tearing_sequences u v en (S n)) = (r1, proj1_sig (torn_number u v en))H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < proj1_sig (torn_number u v en))%R /\ (proj1_sig (torn_number u v en) < r0)%R /\ (r1 < proj1_sig (torn_number u v en))%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> proj1_sig (torn_number u v en) -> v r1 < v x)ft:first_two_in_interval u v r r0 en H = (r1, proj1_sig (torn_number u v en))Falsecontradiction. Qed. (* The indices increase because each time the minimum index is chosen *)u:nat -> Rv:R -> naten:enumeration R u vn:natr, r0:RH:(fst (r, r0) < snd (r, r0))%Rtear:tearing_sequences u v en n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) Hr1:RH2:FalseH1:proj1_sig (tearing_sequences u v en (S n)) = (r1, proj1_sig (torn_number u v en))H0:(r < r1)%R /\ (r1 < r0)%R /\ (r < proj1_sig (torn_number u v en))%R /\ (proj1_sig (torn_number u v en) < r0)%R /\ (r1 < proj1_sig (torn_number u v en))%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> proj1_sig (torn_number u v en) -> v r1 < v x)ft:first_two_in_interval u v r r0 en H = (r1, proj1_sig (torn_number u v en))Falseu:nat -> Rv:R -> natH:enumeration R u vforall n : nat, n <> 0 -> v (fst (proj1_sig (tearing_sequences u v H n))) < v (fst (proj1_sig (tearing_sequences u v H (S n))))u:nat -> Rv:R -> natH:enumeration R u vforall n : nat, n <> 0 -> v (fst (proj1_sig (tearing_sequences u v H n))) < v (fst (proj1_sig (tearing_sequences u v H (S n))))u:nat -> Rv:R -> natH:enumeration R u vn:natH0:n <> 0v (fst (proj1_sig (tearing_sequences u v H n))) < v (fst (proj1_sig (tearing_sequences u v H (S n))))u:nat -> Rv:R -> natH:enumeration R u vH0:0 <> 0v (fst (proj1_sig (tearing_sequences u v H 0))) < v (fst (proj1_sig (tearing_sequences u v H 1)))u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0v (fst (proj1_sig (tearing_sequences u v H (S n)))) < v (fst (proj1_sig (tearing_sequences u v H (S (S n)))))(* The n+1 and n+2 intervals are drawn from the n-th interval, which we note r r0 *)u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0v (fst (proj1_sig (tearing_sequences u v H (S n)))) < v (fst (proj1_sig (tearing_sequences u v H (S (S n)))))u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(fst (r, r0) < snd (r, r0))%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1v (fst (proj1_sig (tearing_sequences u v H (S n)))) < v (fst (proj1_sig (tearing_sequences u v H (S (S n)))))(* Draw the n+1 interval *)u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1v (fst (proj1_sig (tearing_sequences u v H (S n)))) < v (fst (proj1_sig (tearing_sequences u v H (S (S n)))))u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(fst (r1, r2) < snd (r1, r2))%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2v (fst (proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2))) < v (fst (proj1_sig (tearing_sequences u v H (S (S n)))))(* Draw the n+2 interval *)u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2v (fst (proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2))) < v (fst (proj1_sig (tearing_sequences u v H (S (S n)))))u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(fst (r3, r4) < snd (r3, r4))%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3v (fst (proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2))) < v (fst (proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3)))u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3v (fst (proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2))) < v (fst (proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3)))u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3v r1 < v r3u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3(r1, r2) = first_two_in_interval u v r r0 H H1u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1v r1 < v r3u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3(r1, r2) = first_two_in_interval u v r r0 H H1u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:(let (x, x0) := tearing_sequences u v H n in (let (a, b) as p return ((fst p < snd p)%R -> {ab : R * R | (fst ab < snd ab)%R}) := x in fun pr : (a < b)%R => exist (fun ab : R * R => (fst ab < snd ab)%R) (first_two_in_interval u v a b H pr) ((let (r5, r6) as p return ((let (c, d) := p in (a < c)%R /\ (c < b)%R /\ (a < d)%R /\ (d < b)%R /\ (c < d)%R /\ (forall ..., ...%R -> ...)) -> (fst p < snd p)%R) := first_two_in_interval u v a b H pr in fun H4 : (a < r5)%R /\ (r5 < b)%R /\ (a < r6)%R /\ (r6 < b)%R /\ (r5 < r6)%R /\ (forall x0 : R, (a < x0)%R -> (x0 < b)%R -> x0 <> r5 -> x0 <> r6 -> ... < ...) => match match match match ... with | ... H6 end with | conj _ H6 => H6 end with | conj _ H6 => H6 end with | conj H5 _ => H5 end) (first_two_in_interval_works u v a b H pr))) x0) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3(r1, r2) = first_two_in_interval u v r r0 H H1u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:exist (fun ab : R * R => (fst ab < snd ab)%R) (first_two_in_interval u v r r0 H H1) ((let (r5, r6) as p return ((let (c, d) := p in (r < c)%R /\ (c < r0)%R /\ (r < d)%R /\ (d < r0)%R /\ (c < d)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> c -> x <> d -> v c < v x)) -> (fst p < snd p)%R) := first_two_in_interval u v r r0 H H1 in fun H4 : (r < r5)%R /\ (r5 < r0)%R /\ (r < r6)%R /\ (r6 < r0)%R /\ (r5 < r6)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r5 -> x <> r6 -> v r5 < v x) => match match match match match H4 with | conj _ H6 => H6 end with | conj _ H6 => H6 end with | conj _ H6 => H6 end with | conj _ H6 => H6 end with | conj H5 _ => H5 end) (first_two_in_interval_works u v r r0 H H1)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3(r1, r2) = first_two_in_interval u v r r0 H H1reflexivity.u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:exist (fun ab : R * R => (fst ab < snd ab)%R) (first_two_in_interval u v r r0 H H1) ((let (r5, r6) as p return ((let (c, d) := p in (r < c)%R /\ (c < r0)%R /\ (r < d)%R /\ (d < r0)%R /\ (c < d)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> c -> x <> d -> v c < v x)) -> (fst p < snd p)%R) := first_two_in_interval u v r r0 H H1 in fun H4 : (r < r5)%R /\ (r5 < r0)%R /\ (r < r6)%R /\ (r6 < r0)%R /\ (r5 < r6)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r5 -> x <> r6 -> v r5 < v x) => match match match match match H4 with | conj _ H7 => H7 end with | conj _ H7 => H7 end with | conj _ H7 => H7 end with | conj _ H7 => H7 end with | conj H6 _ => H6 end) (first_two_in_interval_works u v r r0 H H1)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H5:first_two_in_interval u v r r0 H H1 = (r1, r2)first_two_in_interval u v r r0 H H1 = first_two_in_interval u v r r0 H H1u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1v r1 < v r3u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1(r3, r4) = first_two_in_interval u v r1 r2 H H2u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2v r1 < v r3u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1(r3, r4) = first_two_in_interval u v r1 r2 H H2u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:let (I, pr) := tearing_sequences u v H (S n) in proj1_sig (tearing_sequences u v H (S (S n))) = first_two_in_interval u v (fst I) (snd I) H pr(r3, r4) = first_two_in_interval u v r1 r2 H H2u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:proj1_sig (tearing_sequences u v H (S (S n))) = first_two_in_interval u v (fst (r1, r2)) (snd (r1, r2)) H H2(r3, r4) = first_two_in_interval u v r1 r2 H H2apply H5.u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:proj1_sig (exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3) = first_two_in_interval u v (fst (r1, r2)) (snd (r1, r2)) H H2(r3, r4) = first_two_in_interval u v r1 r2 H H2u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2v r1 < v r3u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2firstChoiceWorks:let (c, d) := first_two_in_interval u v r r0 H H1 in (r < c)%R /\ (c < r0)%R /\ (r < d)%R /\ (d < r0)%R /\ (c < d)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> c -> x <> d -> v c < v x)v r1 < v r3u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2firstChoiceWorks:(r < r1)%R /\ (r1 < r0)%R /\ (r < r2)%R /\ (r2 < r0)%R /\ (r1 < r2)%R /\ (forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v x)v r1 < v r3(* to prove the n+2 left bound in between r1 and r2 *)u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xv r1 < v r3u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xH6:let (c, d) := first_two_in_interval u v r1 r2 H H2 in (r1 < c)%R /\ (c < r2)%R /\ (r1 < d)%R /\ (d < r2)%R /\ (c < d)%R /\ (forall x : R, (r1 < x)%R -> (x < r2)%R -> x <> c -> x <> d -> v c < v x)v r1 < v r3u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xH6:(r1 < r3)%R /\ (r3 < r2)%R /\ (r1 < r4)%R /\ (r4 < r2)%R /\ (r3 < r4)%R /\ (forall x : R, (r1 < x)%R -> (x < r2)%R -> x <> r3 -> x <> r4 -> v r3 < v x)v r1 < v r3u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xH6:(r1 < r3)%RH7:(r3 < r2)%RH8:(r1 < r4)%RH9:(r4 < r2)%RH10:(r3 < r4)%RH11:forall x : R, (r1 < x)%R -> (x < r2)%R -> x <> r3 -> x <> r4 -> v r3 < v xv r1 < v r3u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xH6:(r1 < r3)%RH7:(r3 < r2)%RH8:(r1 < r4)%RH9:(r4 < r2)%RH10:(r3 < r4)%RH11:forall x : R, (r1 < x)%R -> (x < r2)%R -> x <> r3 -> x <> r4 -> v r3 < v x(r < r3)%Ru:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xH6:(r1 < r3)%RH7:(r3 < r2)%RH8:(r1 < r4)%RH9:(r4 < r2)%RH10:(r3 < r4)%RH11:forall x : R, (r1 < x)%R -> (x < r2)%R -> x <> r3 -> x <> r4 -> v r3 < v x(r3 < r0)%Ru:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xH6:(r1 < r3)%RH7:(r3 < r2)%RH8:(r1 < r4)%RH9:(r4 < r2)%RH10:(r3 < r4)%RH11:forall x : R, (r1 < x)%R -> (x < r2)%R -> x <> r3 -> x <> r4 -> v r3 < v xr3 <> r1u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xH6:(r1 < r3)%RH7:(r3 < r2)%RH8:(r1 < r4)%RH9:(r4 < r2)%RH10:(r3 < r4)%RH11:forall x : R, (r1 < x)%R -> (x < r2)%R -> x <> r3 -> x <> r4 -> v r3 < v xr3 <> r2apply (Rlt_trans r r1); assumption.u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xH6:(r1 < r3)%RH7:(r3 < r2)%RH8:(r1 < r4)%RH9:(r4 < r2)%RH10:(r3 < r4)%RH11:forall x : R, (r1 < x)%R -> (x < r2)%R -> x <> r3 -> x <> r4 -> v r3 < v x(r < r3)%Rapply (Rlt_trans r3 r2); assumption.u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xH6:(r1 < r3)%RH7:(r3 < r2)%RH8:(r1 < r4)%RH9:(r4 < r2)%RH10:(r3 < r4)%RH11:forall x : R, (r1 < x)%R -> (x < r2)%R -> x <> r3 -> x <> r4 -> v r3 < v x(r3 < r0)%Ru:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xH6:(r1 < r3)%RH7:(r3 < r2)%RH8:(r1 < r4)%RH9:(r4 < r2)%RH10:(r3 < r4)%RH11:forall x : R, (r1 < x)%R -> (x < r2)%R -> x <> r3 -> x <> r4 -> v r3 < v xr3 <> r1u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xH6:(r1 < r3)%RH7:(r3 < r2)%RH8:(r1 < r4)%RH9:(r4 < r2)%RH10:(r3 < r4)%RH11:forall x : R, (r1 < x)%R -> (x < r2)%R -> x <> r3 -> x <> r4 -> v r3 < v xabs:r3 = r1Falseu:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r4:RH3:(r1 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r1, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xH7:(r1 < r2)%RH6:(r1 < r1)%RH8:(r1 < r4)%RH9:(r4 < r2)%RH11:forall x : R, (r1 < x)%R -> (x < r2)%R -> x <> r1 -> x <> r4 -> v r1 < v xH10:(r1 < r4)%RFalsecontradiction.u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r4:RH3:(r1 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r1, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xH7:(r1 < r2)%RH6:FalseH8:(r1 < r4)%RH9:(r4 < r2)%RH11:forall x : R, (r1 < x)%R -> (x < r2)%R -> x <> r1 -> x <> r4 -> v r1 < v xH10:(r1 < r4)%RFalseu:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xH6:(r1 < r3)%RH7:(r3 < r2)%RH8:(r1 < r4)%RH9:(r4 < r2)%RH10:(r3 < r4)%RH11:forall x : R, (r1 < x)%R -> (x < r2)%R -> x <> r3 -> x <> r4 -> v r3 < v xr3 <> r2u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r3, r4:RH3:(r3 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r3, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r3, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xH6:(r1 < r3)%RH7:(r3 < r2)%RH8:(r1 < r4)%RH9:(r4 < r2)%RH10:(r3 < r4)%RH11:forall x : R, (r1 < x)%R -> (x < r2)%R -> x <> r3 -> x <> r4 -> v r3 < v xabs:r3 = r2Falseu:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r4:RH3:(r2 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r2, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r2, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xH7:(r2 < r2)%RH6:(r1 < r2)%RH8:(r1 < r4)%RH9:(r4 < r2)%RH11:forall x : R, (r1 < x)%R -> (x < r2)%R -> x <> r2 -> x <> r4 -> v r2 < v xH10:(r2 < r4)%RFalsecontradiction. Qed.u:nat -> Rv:R -> natH:enumeration R u vn:natH0:S n <> 0r, r0:RH1:(r < r0)%RIn:tearing_sequences u v H n = exist (fun ab : R * R => (fst ab < snd ab)%R) (r, r0) H1r1, r2:RH2:(r1 < r2)%RISn:tearing_sequences u v H (S n) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r1, r2) H2r4:RH3:(r2 < r4)%RISSn:tearing_sequences u v H (S (S n)) = exist (fun ab : R * R => (fst ab < snd ab)%R) (r2, r4) H3H4:(r1, r2) = first_two_in_interval u v r r0 H H1H5:(r2, r4) = first_two_in_interval u v r1 r2 H H2fth:(r < r1)%Rfth0:(r1 < r0)%Rfth1:(r < r2)%Rfth2:(r2 < r0)%Rfth3:(r1 < r2)%Rfth4:forall x : R, (r < x)%R -> (x < r0)%R -> x <> r1 -> x <> r2 -> v r1 < v xH7:FalseH6:(r1 < r2)%RH8:(r1 < r4)%RH9:(r4 < r2)%RH11:forall x : R, (r1 < x)%R -> (x < r2)%R -> x <> r2 -> x <> r4 -> v r2 < v xH10:(r2 < r4)%RFalseforall u : nat -> R, ~ Bijective uforall u : nat -> R, ~ Bijective uu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yFalseu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)Falseu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)forall n : nat, n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n : nat, n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))Falseu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)forall n : nat, n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)0 + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H 1)))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)n:natIHn:n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))S n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S (S n)))))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)v (fst (first_two_in_interval u v 0 1 H Rlt_0_1)) <= v (fst (first_two_in_interval u v 0 1 H Rlt_0_1))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)n:natIHn:n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))S n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S (S n)))))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)n:natIHn:n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))S n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S (S n)))))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)n:natIHn:n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))S n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= S (v (fst (proj1_sig (tearing_sequences u v H (S n)))))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)n:natIHn:n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))S (v (fst (proj1_sig (tearing_sequences u v H (S n))))) <= v (fst (proj1_sig (tearing_sequences u v H (S (S n)))))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)n:natIHn:n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))S (n + v (fst (first_two_in_interval u v 0 1 H Rlt_0_1))) <= S (v (fst (proj1_sig (let (x, x0) := tearing_sequences u v H n in (let (a, b) as p return ((fst p < snd p)%R -> {ab : R * R | (fst ab < snd ab)%R}) := x in fun pr : (a < b)%R => exist (fun ab : R * R => (fst ab < snd ab)%R) (first_two_in_interval u v a b H pr) ((let (r, r0) as p return ((let ... p in ...%R /\ ...) -> (fst p < snd p)%R) := first_two_in_interval u v a b H pr in fun H0 : (a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (...)%R /\ ...%R /\ ... => match match ... with | conj _ H2 => H2 end with | conj H1 _ => H1 end) (first_two_in_interval_works u v a b H pr))) x0))))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)n:natIHn:n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))S (v (fst (proj1_sig (tearing_sequences u v H (S n))))) <= v (fst (proj1_sig (tearing_sequences u v H (S (S n)))))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)n:natIHn:n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))n + v (fst (first_two_in_interval u v 0 1 H Rlt_0_1)) <= v (fst (proj1_sig (let (x, x0) := tearing_sequences u v H n in (let (a, b) as p return ((fst p < snd p)%R -> {ab : R * R | (fst ab < snd ab)%R}) := x in fun pr : (a < b)%R => exist (fun ab : R * R => (fst ab < snd ab)%R) (first_two_in_interval u v a b H pr) ((let (r, r0) as p return ((let (c, d) := p in (a < c)%R /\ (...)%R /\ ...%R /\ ...) -> (fst p < snd p)%R) := first_two_in_interval u v a b H pr in fun H0 : (a < r)%R /\ (r < b)%R /\ (a < r0)%R /\ (r0 < b)%R /\ (r < r0)%R /\ (..., ...) => match match ... ... end with | conj _ H2 => H2 end with | conj H1 _ => H1 end) (first_two_in_interval_works u v a b H pr))) x0)))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)n:natIHn:n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))S (v (fst (proj1_sig (tearing_sequences u v H (S n))))) <= v (fst (proj1_sig (tearing_sequences u v H (S (S n)))))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)n:natIHn:n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))S (v (fst (proj1_sig (tearing_sequences u v H (S n))))) <= v (fst (proj1_sig (tearing_sequences u v H (S (S n)))))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)n:natIHn:n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))S n <> 0discriminate.u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)n:natIHn:n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))H1:S n = 0Falseu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n : nat, n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))Falseu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n : nat, n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n : nat, n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))Falseu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n : nat, n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n : nat, n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))H1:v (fst (proj1_sig (tearing_sequences u v H (S (v (proj1_sig (torn_number u v H))))))) < v (proj1_sig (torn_number u v H))v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S (v (proj1_sig (torn_number u v H)))))))H1:v (fst (proj1_sig (tearing_sequences u v H (S (v (proj1_sig (torn_number u v H))))))) < v (proj1_sig (torn_number u v H))v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S (v (proj1_sig (torn_number u v H)))))))H1:v (fst (proj1_sig (tearing_sequences u v H (S (v (proj1_sig (torn_number u v H))))))) < v (proj1_sig (torn_number u v H))v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S (v (proj1_sig (torn_number u v H)))))))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S (v (proj1_sig (torn_number u v H)))))))H1:v (fst (proj1_sig (tearing_sequences u v H (S (v (proj1_sig (torn_number u v H))))))) < v (proj1_sig (torn_number u v H))v (fst (proj1_sig (tearing_sequences u v H (S (v (proj1_sig (torn_number u v H))))))) < v (proj1_sig (torn_number u v H))assumption.u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S (v (proj1_sig (torn_number u v H)))))))H1:v (fst (proj1_sig (tearing_sequences u v H (S (v (proj1_sig (torn_number u v H))))))) < v (proj1_sig (torn_number u v H))v (fst (proj1_sig (tearing_sequences u v H (S (v (proj1_sig (torn_number u v H))))))) < v (proj1_sig (torn_number u v H))u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n : nat, n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))Falseu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n : nat, n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))forall n m : nat, ~ n + m < nu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n : nat, n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))H2:forall n m : nat, ~ n + m < nFalseu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n : nat, n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))forall n m : nat, ~ n + m < nu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n : nat, n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))forall m : nat, ~ 0 + m < 0u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n0 : nat, n0 + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n0))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))n:natIHn:forall m : nat, ~ n + m < nforall m : nat, ~ S n + m < S nu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n : nat, n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))m:nat~ 0 + m < 0u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n0 : nat, n0 + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n0))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))n:natIHn:forall m : nat, ~ n + m < nforall m : nat, ~ S n + m < S nu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n : nat, n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))m:natH2:0 + m < 0Falseu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n0 : nat, n0 + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n0))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))n:natIHn:forall m : nat, ~ n + m < nforall m : nat, ~ S n + m < S nu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n0 : nat, n0 + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n0))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))n:natIHn:forall m : nat, ~ n + m < nforall m : nat, ~ S n + m < S nu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n0 : nat, n0 + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n0))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))n:natIHn:forall m0 : nat, ~ n + m0 < nm:nat~ S n + m < S nu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n0 : nat, n0 + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n0))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))n:natIHn:forall m0 : nat, ~ n + m0 < nm:natH2:S n + m < S nFalseu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n0 : nat, n0 + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n0))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))n:natIHn:forall m0 : nat, ~ n + m0 < nm:natH2:S (n + m) < S nFalseu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n0 : nat, n0 + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n0))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))n:natIHn:forall m0 : nat, ~ n + m0 < nm:natH2:n + m < Init.Nat.pred (S n)Falseu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n0 : nat, n0 + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n0))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))n:natIHn:forall m0 : nat, ~ n + m0 < nm:natH2:n + m < nFalsecontradiction.u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n0 : nat, n0 + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n0))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))n:natIHn:forall m0 : nat, ~ n + m0 < nm:natH2:FalseFalseu:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n : nat, n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))H1:v (proj1_sig (torn_number u v H)) + v (fst (proj1_sig (tearing_sequences u v H 1))) < v (proj1_sig (torn_number u v H))H2:forall n m : nat, ~ n + m < nFalsecontradiction. Qed.u:nat -> Rv:R -> natH3:forall x : nat, v (u x) = xH4:forall y : R, u (v y) = yH:(forall y : R, u (v y) = y) /\ (forall x : nat, v (u x) = x)H0:forall n : nat, n + v (fst (proj1_sig (tearing_sequences u v H 1))) <= v (fst (proj1_sig (tearing_sequences u v H (S n))))H1:FalseH2:forall n m : nat, ~ n + m < nFalse