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.
This file is part of the Flocq formalization of floating-point
arithmetic in Coq: http://flocq.gforge.inria.fr/
Copyright (C) 2009-2018 Sylvie Boldo
Copyright (C) 2009-2018 Guillaume Melquiond
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
COPYING file for more details.
Copyright (C) 2009-2018 Guillaume Melquiond
Require Import Psatz. Require Export Reals ZArith. Require Export Zaux. Section Rmissing.
About R
forall x y : R, (x <= y)%R -> (0 <= y - x)%Rforall x y : R, (x <= y)%R -> (0 <= y - x)%Rx, y:RH:(x <= y)%R(0 <= y - x)%Rx, y:RH:(x <= y)%R(y - x >= 0)%Rnow apply Rle_ge. Qed.x, y:RH:(x <= y)%R(y >= x)%Rforall x y : R, Rabs x = Rabs y -> x = y \/ x = (- y)%Rforall x y : R, Rabs x = Rabs y -> x = y \/ x = (- y)%Rx, y:RH:Rabs x = Rabs yx = y \/ x = (- y)%Rx, y:RH:(if Rcase_abs x then (- x)%R else x) = (if Rcase_abs y then (- y)%R else y)x = y \/ x = (- y)%Rx, y:RH:(- x)%R = (if Rcase_abs y then (- y)%R else y)x = y \/ x = (- y)%Rx, y:RH:x = (if Rcase_abs y then (- y)%R else y)x = y \/ x = (- y)%Rx, y:RH:(- x)%R = (if Rcase_abs y then (- y)%R else y)H':(- - x)%R = (- (if Rcase_abs y then - y else y))%Rx = y \/ x = (- y)%Rx, y:RH:x = (if Rcase_abs y then (- y)%R else y)x = y \/ x = (- y)%Rx, y:RH:(- x)%R = (if Rcase_abs y then (- y)%R else y)H':x = (- (if Rcase_abs y then - y else y))%Rx = y \/ x = (- y)%Rx, y:RH:x = (if Rcase_abs y then (- y)%R else y)x = y \/ x = (- y)%Rx, y:RH:(- x)%R = (if Rcase_abs y then (- y)%R else y)H':x = (- (if Rcase_abs y then - y else y))%R(- (if Rcase_abs y then - y else y))%R = y \/ (- (if Rcase_abs y then - y else y))%R = (- y)%Rx, y:RH:x = (if Rcase_abs y then (- y)%R else y)x = y \/ x = (- y)%Rx, y:RH:(- x)%R = (- y)%RH':x = (- - y)%R(- - y)%R = y \/ (- - y)%R = (- y)%Rx, y:RH:(- x)%R = yH':x = (- y)%R(- y)%R = y \/ (- y)%R = (- y)%Rx, y:RH:x = (if Rcase_abs y then (- y)%R else y)x = y \/ x = (- y)%Rx, y:RH:(- x)%R = (- y)%RH':x = (- - y)%R(- - y)%R = yx, y:RH:(- x)%R = yH':x = (- y)%R(- y)%R = y \/ (- y)%R = (- y)%Rx, y:RH:x = (if Rcase_abs y then (- y)%R else y)x = y \/ x = (- y)%Rx, y:RH:(- x)%R = yH':x = (- y)%R(- y)%R = y \/ (- y)%R = (- y)%Rx, y:RH:x = (if Rcase_abs y then (- y)%R else y)x = y \/ x = (- y)%Rx, y:RH:x = (if Rcase_abs y then (- y)%R else y)x = y \/ x = (- y)%Rnow destruct (Rcase_abs y) as [_|_] ; [right|left]. Qed.x, y:RH:x = (if Rcase_abs y then (- y)%R else y)(if Rcase_abs y then (- y)%R else y) = y \/ (if Rcase_abs y then (- y)%R else y) = (- y)%Rforall x y : R, (0 <= y)%R -> (y <= 2 * x)%R -> (Rabs (x - y) <= x)%Rforall x y : R, (0 <= y)%R -> (y <= 2 * x)%R -> (Rabs (x - y) <= x)%Rx, y:RHx:(0 <= y)%RHy:(y <= 2 * x)%R(Rabs (x - y) <= x)%Rlra. Qed.x, y:RHx:(0 <= y)%RHy:(y <= 2 * x)%R(- x <= x - y <= x)%Rx:RRabs x = 0%R -> x = 0%Rsplit_Rabs; lra. Qed.x:RRabs x = 0%R -> x = 0%Rforall r r1 r2 : R, (r1 + r)%R = (r2 + r)%R -> r1 = r2forall r r1 r2 : R, (r1 + r)%R = (r2 + r)%R -> r1 = r2r, r1, r2:RH:(r1 + r)%R = (r2 + r)%Rr1 = r2now rewrite 2!(Rplus_comm r). Qed.r, r1, r2:RH:(r1 + r)%R = (r2 + r)%R(r + r1)%R = (r + r2)%Rforall r1 r2 r3 r4 : R, (0 <= r1)%R -> (0 <= r3)%R -> (r1 < r2)%R -> (r3 < r4)%R -> (r1 * r3 < r2 * r4)%Rforall r1 r2 r3 r4 : R, (0 <= r1)%R -> (0 <= r3)%R -> (r1 < r2)%R -> (r3 < r4)%R -> (r1 * r3 < r2 * r4)%Rr1, r2, r3, r4:RPr1:(0 <= r1)%RPr3:(0 <= r3)%RH12:(r1 < r2)%RH34:(r3 < r4)%R(r1 * r3 < r2 * r4)%Rr1, r2, r3, r4:RPr1:(0 <= r1)%RPr3:(0 <= r3)%RH12:(r1 < r2)%RH34:(r3 < r4)%R(r1 * r3 <= r1 * r4)%Rr1, r2, r3, r4:RPr1:(0 <= r1)%RPr3:(0 <= r3)%RH12:(r1 < r2)%RH34:(r3 < r4)%R(r1 * r4 < r2 * r4)%Rr1, r2, r3, r4:RPr1:(0 <= r1)%RPr3:(0 <= r3)%RH12:(r1 < r2)%RH34:(r3 < r4)%R(r1 * r3 <= r1 * r4)%Rr1, r2, r3, r4:RPr1:(0 <= r1)%RPr3:(0 <= r3)%RH12:(r1 < r2)%RH34:(r3 < r4)%R(0 <= r1)%Rr1, r2, r3, r4:RPr1:(0 <= r1)%RPr3:(0 <= r3)%RH12:(r1 < r2)%RH34:(r3 < r4)%R(r3 <= r4)%Rexact Pr1.r1, r2, r3, r4:RPr1:(0 <= r1)%RPr3:(0 <= r3)%RH12:(r1 < r2)%RH34:(r3 < r4)%R(0 <= r1)%Rnow apply Rlt_le.r1, r2, r3, r4:RPr1:(0 <= r1)%RPr3:(0 <= r3)%RH12:(r1 < r2)%RH34:(r3 < r4)%R(r3 <= r4)%Rr1, r2, r3, r4:RPr1:(0 <= r1)%RPr3:(0 <= r3)%RH12:(r1 < r2)%RH34:(r3 < r4)%R(r1 * r4 < r2 * r4)%Rr1, r2, r3, r4:RPr1:(0 <= r1)%RPr3:(0 <= r3)%RH12:(r1 < r2)%RH34:(r3 < r4)%R(0 < r4)%Rr1, r2, r3, r4:RPr1:(0 <= r1)%RPr3:(0 <= r3)%RH12:(r1 < r2)%RH34:(r3 < r4)%R(r1 < r2)%Rnow apply Rle_lt_trans with r3.r1, r2, r3, r4:RPr1:(0 <= r1)%RPr3:(0 <= r3)%RH12:(r1 < r2)%RH34:(r3 < r4)%R(0 < r4)%Rexact H12. Qed.r1, r2, r3, r4:RPr1:(0 <= r1)%RPr3:(0 <= r3)%RH12:(r1 < r2)%RH34:(r3 < r4)%R(r1 < r2)%Rforall r r1 r2 : R, ((r1 - r2) * r)%R = (r1 * r - r2 * r)%Rforall r r1 r2 : R, ((r1 - r2) * r)%R = (r1 * r - r2 * r)%Rr, r1, r2:R((r1 - r2) * r)%R = (r1 * r - r2 * r)%Rapply Rmult_minus_distr_l. Qed.r, r1, r2:R(r * (r1 - r2))%R = (r * r1 - r * r2)%Rforall r1 r2 r3 : R, (r2 * r1)%R <> (r3 * r1)%R -> r2 <> r3forall r1 r2 r3 : R, (r2 * r1)%R <> (r3 * r1)%R -> r2 <> r3apply H1; rewrite H2; ring. Qed.r1, r2, r3:RH1:(r2 * r1)%R <> (r3 * r1)%RH2:r2 = r3Falseforall r1 r2 r3 : R, r1 <> 0%R -> r2 <> r3 -> (r2 * r1)%R <> (r3 * r1)%Rforall r1 r2 r3 : R, r1 <> 0%R -> r2 <> r3 -> (r2 * r1)%R <> (r3 * r1)%Rnow apply H1, Rmult_eq_reg_r with r1. Qed.r1, r2, r3:RH:r1 <> 0%RH1:r2 <> r3H2:(r2 * r1)%R = (r3 * r1)%RFalseforall r r1 r2 : R, (0 <= r)%R -> (Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)forall r r1 r2 : R, (0 <= r)%R -> (Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)r, r1, r2:RHr:(0 < r)%R(Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)r, r1, r2:RHr:0%R = r(Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)r, r1, r2:RHr:(0 < r)%R((if Rle_dec r1 r2 then r1 else r2) * r)%R = (if Rle_dec (r1 * r) (r2 * r) then (r1 * r)%R else (r2 * r)%R)r, r1, r2:RHr:0%R = r(Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)r, r1, r2:RHr:(0 < r)%RH1:(r1 <= r2)%RH2:~ (r1 * r <= r2 * r)%R(r1 * r)%R = (r2 * r)%Rr, r1, r2:RHr:(0 < r)%RH1:~ (r1 <= r2)%RH2:(r1 * r <= r2 * r)%R(r2 * r)%R = (r1 * r)%Rr, r1, r2:RHr:0%R = r(Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)r, r1, r2:RHr:(0 < r)%RH1:(r1 <= r2)%RH2:~ (r1 * r <= r2 * r)%Rr1 = r2r, r1, r2:RHr:(0 < r)%RH1:~ (r1 <= r2)%RH2:(r1 * r <= r2 * r)%R(r2 * r)%R = (r1 * r)%Rr, r1, r2:RHr:0%R = r(Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)r, r1, r2:RHr:(0 < r)%RH1:(r1 <= r2)%RH2:~ (r1 * r <= r2 * r)%R(r1 <= r2)%Rr, r1, r2:RHr:(0 < r)%RH1:(r1 <= r2)%RH2:~ (r1 * r <= r2 * r)%R(r2 <= r1)%Rr, r1, r2:RHr:(0 < r)%RH1:~ (r1 <= r2)%RH2:(r1 * r <= r2 * r)%R(r2 * r)%R = (r1 * r)%Rr, r1, r2:RHr:0%R = r(Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)r, r1, r2:RHr:(0 < r)%RH1:(r1 <= r2)%RH2:~ (r1 * r <= r2 * r)%R(r2 <= r1)%Rr, r1, r2:RHr:(0 < r)%RH1:~ (r1 <= r2)%RH2:(r1 * r <= r2 * r)%R(r2 * r)%R = (r1 * r)%Rr, r1, r2:RHr:0%R = r(Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)r, r1, r2:RHr:(0 < r)%RH1:(r1 <= r2)%RH2:~ (r1 * r <= r2 * r)%R(r2 * r <= r1 * r)%Rr, r1, r2:RHr:(0 < r)%RH1:~ (r1 <= r2)%RH2:(r1 * r <= r2 * r)%R(r2 * r)%R = (r1 * r)%Rr, r1, r2:RHr:0%R = r(Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)r, r1, r2:RHr:(0 < r)%RH1:(r1 <= r2)%RH2:~ (r1 * r <= r2 * r)%R(r2 * r < r1 * r)%Rr, r1, r2:RHr:(0 < r)%RH1:~ (r1 <= r2)%RH2:(r1 * r <= r2 * r)%R(r2 * r)%R = (r1 * r)%Rr, r1, r2:RHr:0%R = r(Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)r, r1, r2:RHr:(0 < r)%RH1:~ (r1 <= r2)%RH2:(r1 * r <= r2 * r)%R(r2 * r)%R = (r1 * r)%Rr, r1, r2:RHr:0%R = r(Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)r, r1, r2:RHr:(0 < r)%RH1:~ (r1 <= r2)%RH2:(r1 * r <= r2 * r)%R(r2 * r <= r1 * r)%Rr, r1, r2:RHr:(0 < r)%RH1:~ (r1 <= r2)%RH2:(r1 * r <= r2 * r)%R(r1 * r <= r2 * r)%Rr, r1, r2:RHr:0%R = r(Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)r, r1, r2:RHr:(0 < r)%RH1:~ (r1 <= r2)%RH2:(r1 * r <= r2 * r)%R(0 <= r)%Rr, r1, r2:RHr:(0 < r)%RH1:~ (r1 <= r2)%RH2:(r1 * r <= r2 * r)%R(r2 <= r1)%Rr, r1, r2:RHr:(0 < r)%RH1:~ (r1 <= r2)%RH2:(r1 * r <= r2 * r)%R(r1 * r <= r2 * r)%Rr, r1, r2:RHr:0%R = r(Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)r, r1, r2:RHr:(0 < r)%RH1:~ (r1 <= r2)%RH2:(r1 * r <= r2 * r)%R(r2 <= r1)%Rr, r1, r2:RHr:(0 < r)%RH1:~ (r1 <= r2)%RH2:(r1 * r <= r2 * r)%R(r1 * r <= r2 * r)%Rr, r1, r2:RHr:0%R = r(Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)r, r1, r2:RHr:(0 < r)%RH1:~ (r1 <= r2)%RH2:(r1 * r <= r2 * r)%R(r2 < r1)%Rr, r1, r2:RHr:(0 < r)%RH1:~ (r1 <= r2)%RH2:(r1 * r <= r2 * r)%R(r1 * r <= r2 * r)%Rr, r1, r2:RHr:0%R = r(Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)r, r1, r2:RHr:(0 < r)%RH1:~ (r1 <= r2)%RH2:(r1 * r <= r2 * r)%R(r1 * r <= r2 * r)%Rr, r1, r2:RHr:0%R = r(Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)r, r1, r2:RHr:0%R = r(Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)r, r1, r2:RHr:0%R = r(Rmin r1 r2 * 0)%R = Rmin (r1 * 0) (r2 * 0)r, r1, r2:RHr:0%R = r0%R = Rmin 0 0r, r1, r2:RHr:0%R = r0%R = (if Rle_dec 0 0 then 0%R else 0%R)r, r1, r2:RHr:0%R = rH0:(0 <= 0)%R0%R = 0%Rr, r1, r2:RHr:0%R = rH0:~ (0 <= 0)%R0%R = 0%Rr, r1, r2:RHr:0%R = rH0:~ (0 <= 0)%R0%R = 0%Rapply Rle_refl. Qed.r, r1, r2:RHr:0%R = rH0:~ (0 <= 0)%R(0 <= 0)%Rforall r r1 r2 : R, (0 <= r)%R -> (r * Rmin r1 r2)%R = Rmin (r * r1) (r * r2)forall r r1 r2 : R, (0 <= r)%R -> (r * Rmin r1 r2)%R = Rmin (r * r1) (r * r2)r, r1, r2:RHr:(0 <= r)%R(r * Rmin r1 r2)%R = Rmin (r * r1) (r * r2)now apply Rmult_min_distr_r. Qed.r, r1, r2:RHr:(0 <= r)%R(Rmin r1 r2 * r)%R = Rmin (r1 * r) (r2 * r)forall x y : R, Rmin (- x) (- y) = (- Rmax x y)%Rforall x y : R, Rmin (- x) (- y) = (- Rmax x y)%Rx, y:RRmin (- x) (- y) = (- Rmax x y)%Rx, y:RH:(y <= x)%RRmin (- x) (- y) = (- x)%Rx, y:RH:(x <= y)%RRmin (- x) (- y) = (- y)%Rx, y:RH:(y <= x)%R(- x <= - y)%Rx, y:RH:(x <= y)%RRmin (- x) (- y) = (- y)%Rx, y:RH:(x <= y)%RRmin (- x) (- y) = (- y)%Rnow apply Ropp_le_contravar. Qed.x, y:RH:(x <= y)%R(- y <= - x)%Rforall x y : R, Rmax (- x) (- y) = (- Rmin x y)%Rforall x y : R, Rmax (- x) (- y) = (- Rmin x y)%Rx, y:RRmax (- x) (- y) = (- Rmin x y)%Rx, y:RH:(x <= y)%RRmax (- x) (- y) = (- x)%Rx, y:RH:(y <= x)%RRmax (- x) (- y) = (- y)%Rx, y:RH:(x <= y)%R(- y <= - x)%Rx, y:RH:(y <= x)%RRmax (- x) (- y) = (- y)%Rx, y:RH:(y <= x)%RRmax (- x) (- y) = (- y)%Rnow apply Ropp_le_contravar. Qed.x, y:RH:(y <= x)%R(- x <= - y)%Rforall x y : R, (x <= y)%R -> (exp x <= exp y)%Rforall x y : R, (x <= y)%R -> (exp x <= exp y)%Rx, y:RH:(x < y)%R(exp x <= exp y)%Rx, y:RH:x = y(exp x <= exp y)%Rx, y:RH:(x < y)%R(exp x < exp y)%Rx, y:RH:x = y(exp x <= exp y)%Rx, y:RH:x = y(exp x <= exp y)%Rapply Rle_refl. Qed.x, y:RH:x = y(exp y <= exp y)%Rforall x y : R, (0 < x)%R -> (x < y)%R -> (/ y < / x)%Rforall x y : R, (0 < x)%R -> (x < y)%R -> (/ y < / x)%Rx, y:RHx:(0 < x)%RHxy:(x < y)%R(/ y < / x)%Rx, y:RHx:(0 < x)%RHxy:(x < y)%R(0 < x * y)%Rx, y:RHx:(0 < x)%RHxy:(x < y)%R(x < y)%Rx, y:RHx:(0 < x)%RHxy:(x < y)%R(0 < x)%Rx, y:RHx:(0 < x)%RHxy:(x < y)%R(0 < y)%Rx, y:RHx:(0 < x)%RHxy:(x < y)%R(x < y)%Rx, y:RHx:(0 < x)%RHxy:(x < y)%R(0 < y)%Rx, y:RHx:(0 < x)%RHxy:(x < y)%R(x < y)%Rexact Hxy. Qed.x, y:RHx:(0 < x)%RHxy:(x < y)%R(x < y)%Rforall x y : R, (0 < x)%R -> (x <= y)%R -> (/ y <= / x)%Rforall x y : R, (0 < x)%R -> (x <= y)%R -> (/ y <= / x)%Rx, y:RHx:(0 < x)%RHxy:(x <= y)%R(/ y <= / x)%Rx, y:RHx:(0 < x)%RHxy:(x <= y)%R(0 < x)%Rx, y:RHx:(0 < x)%RHxy:(x <= y)%R(0 < y)%Rx, y:RHx:(0 < x)%RHxy:(x <= y)%R(x <= y)%Rx, y:RHx:(0 < x)%RHxy:(x <= y)%R(0 < y)%Rx, y:RHx:(0 < x)%RHxy:(x <= y)%R(x <= y)%Rexact Hxy. Qed.x, y:RHx:(0 < x)%RHxy:(x <= y)%R(x <= y)%Rforall x : R, (0 <= sqrt x)%Rforall x : R, (0 <= sqrt x)%Rx:R(0 <= sqrt x)%Rx:R(0 <= match Rcase_abs x with | left _ => 0 | right a => Rsqrt {| nonneg := x; cond_nonneg := Rge_le x 0 a |} end)%Rx:R(0 <= 0)%Rx:RH:(x >= 0)%R(0 <= Rsqrt {| nonneg := x; cond_nonneg := Rge_le x 0 H |})%Rapply Rsqrt_positivity. Qed.x:RH:(x >= 0)%R(0 <= Rsqrt {| nonneg := x; cond_nonneg := Rge_le x 0 H |})%Rforall x : R, (x <= 0)%R -> sqrt x = 0%Rforall x : R, (x <= 0)%R -> sqrt x = 0%Rx:RNpx:(x <= 0)%Rsqrt x = 0%Rx:RNpx:(x <= 0)%RZx:x = 0%Rsqrt x = 0%Rx:RNpx:(x <= 0)%RNzx:x <> 0%Rsqrt x = 0%Rx:RNpx:(x <= 0)%RZx:x = 0%Rsqrt x = 0%Rexact sqrt_0.x:RNpx:(x <= 0)%RZx:x = 0%Rsqrt 0 = 0%Rx:RNpx:(x <= 0)%RNzx:x <> 0%Rsqrt x = 0%Rx:RNpx:(x <= 0)%RNzx:x <> 0%Rmatch Rcase_abs x with | left _ => 0%R | right a => Rsqrt {| nonneg := x; cond_nonneg := Rge_le x 0 a |} end = 0%Rx:RNpx:(x <= 0)%RNzx:x <> 0%Rr:(x < 0)%R0%R = 0%Rx:RNpx:(x <= 0)%RNzx:x <> 0%Rr:(x >= 0)%RRsqrt {| nonneg := x; cond_nonneg := Rge_le x 0 r |} = 0%Rreflexivity.x:RNpx:(x <= 0)%RNzx:x <> 0%Rr:(x < 0)%R0%R = 0%Rx:RNpx:(x <= 0)%RNzx:x <> 0%Rr:(x >= 0)%RRsqrt {| nonneg := x; cond_nonneg := Rge_le x 0 r |} = 0%Rnow apply Nzx, Rle_antisym; [|apply Rge_le]. Qed.x:RNpx:(x <= 0)%RNzx:x <> 0%Rr:(x >= 0)%RFalseforall x y : R, (x² <= y²)%R -> (x <= Rabs y)%Rforall x y : R, (x² <= y²)%R -> (x <= Rabs y)%Rapply (Rle_trans _ (Rabs x)); [apply Rle_abs|apply (Rsqr_le_abs_0 _ _ H)]. Qed.x, y:RH:(x² <= y²)%R(x <= Rabs y)%Rforall x y : R, (- y <= x <= y)%R -> (Rabs x <= y)%Rforall x y : R, (- y <= x <= y)%R -> (Rabs x <= y)%Rx, y:RHyx:(- y <= x)%RHxy:(x <= y)%R(Rabs x <= y)%Rx, y:RHyx:(- y <= x)%RHxy:(x <= y)%R((if Rcase_abs x then - x else x) <= y)%Rx, y:RHyx:(- y <= x)%RHxy:(x <= y)%RHx:(x < 0)%R(- x <= y)%Rx, y:RHyx:(- y <= x)%RHxy:(x <= y)%RHx:(x >= 0)%R(x <= y)%Rx, y:RHyx:(- y <= x)%RHxy:(x <= y)%RHx:(x < 0)%R(- y <= - - x)%Rx, y:RHyx:(- y <= x)%RHxy:(x <= y)%RHx:(x >= 0)%R(x <= y)%Rexact Hxy. Qed.x, y:RHyx:(- y <= x)%RHxy:(x <= y)%RHx:(x >= 0)%R(x <= y)%Rforall x y : R, (Rabs x <= y)%R -> (- y <= x <= y)%Rforall x y : R, (Rabs x <= y)%R -> (- y <= x <= y)%Rx, y:RHxy:(Rabs x <= y)%R(- y <= x <= y)%Rx, y:RHxy:(Rabs x <= y)%R(- y <= x)%Rx, y:RHxy:(Rabs x <= y)%R(x <= y)%Rx, y:RHxy:(Rabs x <= y)%R(- y <= - Rabs x)%Rx, y:RHxy:(Rabs x <= y)%R(- Rabs x <= x)%Rx, y:RHxy:(Rabs x <= y)%R(x <= y)%Rx, y:RHxy:(Rabs x <= y)%R(- Rabs x <= x)%Rx, y:RHxy:(Rabs x <= y)%R(x <= y)%Rx, y:RHxy:(Rabs x <= y)%R(- x <= - - Rabs x)%Rx, y:RHxy:(Rabs x <= y)%R(x <= y)%Rx, y:RHxy:(Rabs x <= y)%R(- x <= Rabs (- x))%Rx, y:RHxy:(Rabs x <= y)%R(x <= y)%Rx, y:RHxy:(Rabs x <= y)%R(x <= y)%Rapply RRle_abs. Qed.x, y:RHxy:(Rabs x <= y)%R(x <= Rabs x)%Rforall x y : R, (y <= - x)%R \/ (x <= y)%R -> (x <= Rabs y)%Rforall x y : R, (y <= - x)%R \/ (x <= y)%R -> (x <= Rabs y)%Rx, y:RHyx:(y <= - x)%R(x <= Rabs y)%Rx, y:RHxy:(x <= y)%R(x <= Rabs y)%Rx, y:RHyx:(y <= - x)%R(x <= - y)%Rx, y:RHyx:(y <= - x)%R(- y <= Rabs y)%Rx, y:RHxy:(x <= y)%R(x <= Rabs y)%Rx, y:RHyx:(y <= - x)%R(- - y <= - x)%Rx, y:RHyx:(y <= - x)%R(- y <= Rabs y)%Rx, y:RHxy:(x <= y)%R(x <= Rabs y)%Rx, y:RHyx:(y <= - x)%R(- y <= Rabs y)%Rx, y:RHxy:(x <= y)%R(x <= Rabs y)%Rx, y:RHyx:(y <= - x)%R(- y <= Rabs (- y))%Rx, y:RHxy:(x <= y)%R(x <= Rabs y)%Rx, y:RHxy:(x <= y)%R(x <= Rabs y)%Rapply RRle_abs. Qed.x, y:RHxy:(x <= y)%R(y <= Rabs y)%Rforall x y : R, (x <= Rabs y)%R -> (y <= - x)%R \/ (x <= y)%Rforall x y : R, (x <= Rabs y)%R -> (y <= - x)%R \/ (x <= y)%Rx, y:R(x <= Rabs y)%R -> (y <= - x)%R \/ (x <= y)%Rx, y:R(x <= (if Rcase_abs y then - y else y))%R -> (y <= - x)%R \/ (x <= y)%Rx, y:RHy:(y < 0)%RHxy:(x <= - y)%R(y <= - x)%R \/ (x <= y)%Rx, y:RHy:(y >= 0)%RHxy:(x <= y)%R(y <= - x)%R \/ (x <= y)%Rx, y:RHy:(y < 0)%RHxy:(x <= - y)%R(y <= - x)%Rx, y:RHy:(y >= 0)%RHxy:(x <= y)%R(y <= - x)%R \/ (x <= y)%Rx, y:RHy:(y < 0)%RHxy:(x <= - y)%R(- - x <= - y)%Rx, y:RHy:(y >= 0)%RHxy:(x <= y)%R(y <= - x)%R \/ (x <= y)%Rnow right. Qed.x, y:RHy:(y >= 0)%RHxy:(x <= y)%R(y <= - x)%R \/ (x <= y)%Rforall x y : R, (- y < x < y)%R -> (Rabs x < y)%Rforall x y : R, (- y < x < y)%R -> (Rabs x < y)%Rnow apply Rabs_def1. Qed.x, y:RHyx:(- y < x)%RHxy:(x < y)%R(Rabs x < y)%Rforall x y : R, (Rabs x < y)%R -> (- y < x < y)%Rforall x y : R, (Rabs x < y)%R -> (- y < x < y)%Rnow split ; eapply Rabs_def2. Qed.x, y:RH:(Rabs x < y)%R(- y < x < y)%Rforall x y : R, (y < - x)%R \/ (x < y)%R -> (x < Rabs y)%Rforall x y : R, (y < - x)%R \/ (x < y)%R -> (x < Rabs y)%Rx, y:RHyx:(y < - x)%R(x < Rabs y)%Rx, y:RHxy:(x < y)%R(x < Rabs y)%Rx, y:RHyx:(y < - x)%R(x < Rabs (- y))%Rx, y:RHxy:(x < y)%R(x < Rabs y)%Rx, y:RHyx:(y < - x)%R(x < - y)%Rx, y:RHyx:(y < - x)%R(- y <= Rabs (- y))%Rx, y:RHxy:(x < y)%R(x < Rabs y)%Rx, y:RHyx:(y < - x)%R(- - y < - x)%Rx, y:RHyx:(y < - x)%R(- y <= Rabs (- y))%Rx, y:RHxy:(x < y)%R(x < Rabs y)%Rx, y:RHyx:(y < - x)%R(- y <= Rabs (- y))%Rx, y:RHxy:(x < y)%R(x < Rabs y)%Rx, y:RHxy:(x < y)%R(x < Rabs y)%Rapply RRle_abs. Qed.x, y:RHxy:(x < y)%R(y <= Rabs y)%Rforall x y : R, (x < Rabs y)%R -> (y < - x)%R \/ (x < y)%Rforall x y : R, (x < Rabs y)%R -> (y < - x)%R \/ (x < y)%Rx, y:R(x < Rabs y)%R -> (y < - x)%R \/ (x < y)%Rx, y:R(x < (if Rcase_abs y then - y else y))%R -> (y < - x)%R \/ (x < y)%Rx, y:RHy:(y < 0)%RHxy:(x < - y)%R(y < - x)%R \/ (x < y)%Rx, y:RHy:(y >= 0)%RHxy:(x < y)%R(y < - x)%R \/ (x < y)%Rx, y:RHy:(y < 0)%RHxy:(x < - y)%R(y < - x)%Rx, y:RHy:(y >= 0)%RHxy:(x < y)%R(y < - x)%R \/ (x < y)%Rx, y:RHy:(y < 0)%RHxy:(x < - y)%R(- - x < - y)%Rx, y:RHy:(y >= 0)%RHxy:(x < y)%R(y < - x)%R \/ (x < y)%Rnow right. Qed. End Rmissing. Section IZR.x, y:RHy:(y >= 0)%RHxy:(x < y)%R(y < - x)%R \/ (x < y)%Rforall m n p : Z, (m <= n < p)%Z -> (IZR m <= IZR n < IZR p)%Rforall m n p : Z, (m <= n < p)%Z -> (IZR m <= IZR n < IZR p)%Rm, n, p:ZH1:(m <= n)%ZH2:(n < p)%Z(IZR m <= IZR n < IZR p)%Rm, n, p:ZH1:(m <= n)%ZH2:(n < p)%Z(IZR m <= IZR n)%Rm, n, p:ZH1:(m <= n)%ZH2:(n < p)%Z(IZR n < IZR p)%Rnow apply IZR_lt. Qed.m, n, p:ZH1:(m <= n)%ZH2:(n < p)%Z(IZR n < IZR p)%Rforall m n p : Z, (IZR m <= IZR n < IZR p)%R -> (m <= n < p)%Zforall m n p : Z, (IZR m <= IZR n < IZR p)%R -> (m <= n < p)%Zm, n, p:ZH1:(IZR m <= IZR n)%RH2:(IZR n < IZR p)%R(m <= n < p)%Zm, n, p:ZH1:(IZR m <= IZR n)%RH2:(IZR n < IZR p)%R(m <= n)%Zm, n, p:ZH1:(IZR m <= IZR n)%RH2:(IZR n < IZR p)%R(n < p)%Znow apply lt_IZR. Qed.m, n, p:ZH1:(IZR m <= IZR n)%RH2:(IZR n < IZR p)%R(n < p)%Zforall m n : Z, IZR m <> IZR n -> m <> nforall m n : Z, IZR m <> IZR n -> m <> nm, n:ZH:IZR m <> IZR nH':m = nFalsenow apply f_equal. Qed. End IZR.m, n:ZH:IZR m <> IZR nH':m = nIZR m = IZR n
Decidable comparison on reals
Section Rcompare. Definition Rcompare x y := match total_order_T x y with | inleft (left _) => Lt | inleft (right _) => Eq | inright _ => Gt end. Inductive Rcompare_prop (x y : R) : comparison -> Prop := | Rcompare_Lt_ : (x < y)%R -> Rcompare_prop x y Lt | Rcompare_Eq_ : x = y -> Rcompare_prop x y Eq | Rcompare_Gt_ : (y < x)%R -> Rcompare_prop x y Gt.forall x y : R, Rcompare_prop x y (Rcompare x y)forall x y : R, Rcompare_prop x y (Rcompare x y)x, y:RRcompare_prop x y (Rcompare x y)now destruct (total_order_T x y) as [[H|H]|H] ; constructor. Qed. Global Opaque Rcompare.x, y:RRcompare_prop x y match total_order_T x y with | inleft (left _) => Lt | inleft (right _) => Eq | inright _ => Gt endforall x y : R, (x < y)%R -> Rcompare x y = Ltforall x y : R, (x < y)%R -> Rcompare x y = Ltx, y:RH:(x < y)%RRcompare x y = Ltx, y:RH, H':(x < y)%RLt = Ltx, y:RH:(x < y)%RH':x = yEq = Ltx, y:RH:(x < y)%RH':(y < x)%RGt = Ltx, y:RH:(x < y)%RH':x = yEq = Ltx, y:RH:(x < y)%RH':(y < x)%RGt = Ltx, y:RH:(y < y)%RH':x = yEq = Ltx, y:RH:(x < y)%RH':(y < x)%RGt = Ltx, y:RH:(x < y)%RH':(y < x)%RGt = Ltnow apply Rlt_trans with y. Qed.x, y:RH:(x < y)%RH':(y < x)%R(x < x)%Rforall x y : R, Rcompare x y = Lt -> (x < y)%Rforall x y : R, Rcompare x y = Lt -> (x < y)%Rnow case Rcompare_spec. Qed.x, y:RRcompare x y = Lt -> (x < y)%Rforall x y : R, (y <= x)%R -> Rcompare x y <> Ltforall x y : R, (y <= x)%R -> Rcompare x y <> Ltx, y:RH1:(y <= x)%RH2:Rcompare x y = LtFalsenow apply Rcompare_Lt_inv. Qed.x, y:RH1:(y <= x)%RH2:Rcompare x y = Lt(x < y)%Rforall x y : R, Rcompare x y <> Lt -> (y <= x)%Rforall x y : R, Rcompare x y <> Lt -> (y <= x)%Rx, y:RH:Rcompare x y <> Lt(y <= x)%Rx, y:RH:Rcompare x y <> Lt~ (x < y)%Rnow apply Rcompare_Lt. Qed.x, y:RH:(x < y)%RRcompare x y = Ltforall x y : R, x = y -> Rcompare x y = Eqforall x y : R, x = y -> Rcompare x y = Eqx, y:RH:x = yRcompare x y = Eqnow case Rcompare_spec ; intro H' ; try elim (Rlt_irrefl _ H'). Qed.x, y:RH:x = yRcompare y y = Eqforall x y : R, Rcompare x y = Eq -> x = yforall x y : R, Rcompare x y = Eq -> x = ynow case Rcompare_spec. Qed.x, y:RRcompare x y = Eq -> x = yforall x y : R, (y < x)%R -> Rcompare x y = Gtforall x y : R, (y < x)%R -> Rcompare x y = Gtx, y:RH:(y < x)%RRcompare x y = Gtx, y:RH:(y < x)%RH':(x < y)%RLt = Gtx, y:RH:(y < x)%RH':x = yEq = Gtx, y:RH, H':(y < x)%RGt = Gtx, y:RH:(y < x)%RH':(x < y)%R(x < x)%Rx, y:RH:(y < x)%RH':x = yEq = Gtx, y:RH, H':(y < x)%RGt = Gtx, y:RH:(y < x)%RH':x = yEq = Gtx, y:RH, H':(y < x)%RGt = Gtx, y:RH:(y < y)%RH':x = yEq = Gtx, y:RH, H':(y < x)%RGt = Gteasy. Qed.x, y:RH, H':(y < x)%RGt = Gtforall x y : R, Rcompare x y = Gt -> (y < x)%Rforall x y : R, Rcompare x y = Gt -> (y < x)%Rnow case Rcompare_spec. Qed.x, y:RRcompare x y = Gt -> (y < x)%Rforall x y : R, (x <= y)%R -> Rcompare x y <> Gtforall x y : R, (x <= y)%R -> Rcompare x y <> Gtx, y:RH1:(x <= y)%RH2:Rcompare x y = GtFalsenow apply Rcompare_Gt_inv. Qed.x, y:RH1:(x <= y)%RH2:Rcompare x y = Gt(y < x)%Rforall x y : R, Rcompare x y <> Gt -> (x <= y)%Rforall x y : R, Rcompare x y <> Gt -> (x <= y)%Rx, y:RH:Rcompare x y <> Gt(x <= y)%Rx, y:RH:Rcompare x y <> Gt~ (y < x)%Rnow apply Rcompare_Gt. Qed.x, y:RH:(y < x)%RRcompare x y = Gtforall x y : Z, Rcompare (IZR x) (IZR y) = (x ?= y)%Zforall x y : Z, Rcompare (IZR x) (IZR y) = (x ?= y)%Zx, y:ZRcompare (IZR x) (IZR y) = (x ?= y)%Zx, y:ZH:(IZR x < IZR y)%R(x ?= y)%Z = Ltx, y:ZH:IZR x = IZR y(x ?= y)%Z = Eqx, y:ZH:(IZR y < IZR x)%R(x ?= y)%Z = Gtx, y:ZH:(IZR x < IZR y)%R(x < y)%Zx, y:ZH:IZR x = IZR y(x ?= y)%Z = Eqx, y:ZH:(IZR y < IZR x)%R(x ?= y)%Z = Gtx, y:ZH:IZR x = IZR y(x ?= y)%Z = Eqx, y:ZH:(IZR y < IZR x)%R(x ?= y)%Z = Gtx, y:ZH:IZR x = IZR yx = yx, y:ZH:(IZR y < IZR x)%R(x ?= y)%Z = Gtx, y:ZH:(IZR y < IZR x)%R(x ?= y)%Z = Gtnow apply lt_IZR. Qed.x, y:ZH:(IZR y < IZR x)%R(y < x)%Zforall x y : R, Rcompare x y = CompOpp (Rcompare y x)forall x y : R, Rcompare x y = CompOpp (Rcompare y x)x, y:RRcompare x y = CompOpp (Rcompare y x)x, y:RH:(y < x)%RRcompare x y = CompOpp Ltx, y:RH:y = xRcompare x y = CompOpp Eqx, y:RH:(x < y)%RRcompare x y = CompOpp Gtx, y:RH:y = xRcompare x y = CompOpp Eqx, y:RH:(x < y)%RRcompare x y = CompOpp Gtnow apply Rcompare_Lt. Qed.x, y:RH:(x < y)%RRcompare x y = CompOpp Gtforall x y : R, Rcompare (- x) (- y) = Rcompare y xforall x y : R, Rcompare (- x) (- y) = Rcompare y xdestruct (Rcompare_spec y x); destruct (Rcompare_spec (- x) (- y)); try reflexivity; exfalso; lra. Qed.x, y:RRcompare (- x) (- y) = Rcompare y xforall z x y : R, Rcompare (x + z) (y + z) = Rcompare x yforall z x y : R, Rcompare (x + z) (y + z) = Rcompare x yz, x, y:RRcompare (x + z) (y + z) = Rcompare x yz, x, y:RH:(x < y)%RRcompare (x + z) (y + z) = Ltz, x, y:RH:x = yRcompare (x + z) (y + z) = Eqz, x, y:RH:(y < x)%RRcompare (x + z) (y + z) = Gtz, x, y:RH:(x < y)%R(x + z < y + z)%Rz, x, y:RH:x = yRcompare (x + z) (y + z) = Eqz, x, y:RH:(y < x)%RRcompare (x + z) (y + z) = Gtz, x, y:RH:x = yRcompare (x + z) (y + z) = Eqz, x, y:RH:(y < x)%RRcompare (x + z) (y + z) = Gtz, x, y:RH:x = y(x + z)%R = (y + z)%Rz, x, y:RH:(y < x)%RRcompare (x + z) (y + z) = Gtz, x, y:RH:(y < x)%RRcompare (x + z) (y + z) = Gtnow apply Rplus_lt_compat_r. Qed.z, x, y:RH:(y < x)%R(y + z < x + z)%Rforall z x y : R, Rcompare (z + x) (z + y) = Rcompare x yforall z x y : R, Rcompare (z + x) (z + y) = Rcompare x yz, x, y:RRcompare (z + x) (z + y) = Rcompare x yapply Rcompare_plus_r. Qed.z, x, y:RRcompare (x + z) (y + z) = Rcompare x yforall z x y : R, (0 < z)%R -> Rcompare (x * z) (y * z) = Rcompare x yforall z x y : R, (0 < z)%R -> Rcompare (x * z) (y * z) = Rcompare x yz, x, y:RHz:(0 < z)%RRcompare (x * z) (y * z) = Rcompare x yz, x, y:RHz:(0 < z)%RH:(x < y)%RRcompare (x * z) (y * z) = Ltz, x, y:RHz:(0 < z)%RH:x = yRcompare (x * z) (y * z) = Eqz, x, y:RHz:(0 < z)%RH:(y < x)%RRcompare (x * z) (y * z) = Gtz, x, y:RHz:(0 < z)%RH:(x < y)%R(x * z < y * z)%Rz, x, y:RHz:(0 < z)%RH:x = yRcompare (x * z) (y * z) = Eqz, x, y:RHz:(0 < z)%RH:(y < x)%RRcompare (x * z) (y * z) = Gtz, x, y:RHz:(0 < z)%RH:x = yRcompare (x * z) (y * z) = Eqz, x, y:RHz:(0 < z)%RH:(y < x)%RRcompare (x * z) (y * z) = Gtz, x, y:RHz:(0 < z)%RH:x = y(x * z)%R = (y * z)%Rz, x, y:RHz:(0 < z)%RH:(y < x)%RRcompare (x * z) (y * z) = Gtz, x, y:RHz:(0 < z)%RH:(y < x)%RRcompare (x * z) (y * z) = Gtnow apply Rmult_lt_compat_r. Qed.z, x, y:RHz:(0 < z)%RH:(y < x)%R(y * z < x * z)%Rforall z x y : R, (0 < z)%R -> Rcompare (z * x) (z * y) = Rcompare x yforall z x y : R, (0 < z)%R -> Rcompare (z * x) (z * y) = Rcompare x yz, x, y:R(0 < z)%R -> Rcompare (z * x) (z * y) = Rcompare x yapply Rcompare_mult_r. Qed.z, x, y:R(0 < z)%R -> Rcompare (x * z) (y * z) = Rcompare x yforall x d u : R, Rcompare (x - d) (u - x) = Rcompare x ((d + u) / 2)forall x d u : R, Rcompare (x - d) (u - x) = Rcompare x ((d + u) / 2)x, d, u:RRcompare (x - d) (u - x) = Rcompare x ((d + u) / 2)x, d, u:RRcompare (x - d) (u - x) = Rcompare (x + (- x / 2 - d / 2)) ((d + u) / 2 + (- x / 2 - d / 2))x, d, u:RRcompare ((x - d) * / 2) ((u - x) * / 2) = Rcompare (x + (- x / 2 - d / 2)) ((d + u) / 2 + (- x / 2 - d / 2))x, d, u:R(0 < / 2)%Rx, d, u:RRcompare ((x - d) * / 2) ((u - x) * / 2) = Rcompare ((x - d) / 2) ((d + u) / 2 + (- x / 2 - d / 2))x, d, u:R(0 < / 2)%Rx, d, u:R(0 < / 2)%Rnow apply IZR_lt. Qed.x, d, u:R(0 < 2)%Rforall x y : R, Rcompare (x / 2) y = Rcompare x (2 * y)forall x y : R, Rcompare (x / 2) y = Rcompare x (2 * y)x, y:RRcompare (x / 2) y = Rcompare x (2 * y)x, y:RRcompare (x / 2 * 2) (y * 2) = Rcompare x (2 * y)x, y:R(0 < 2)%Rx, y:RRcompare (x * / 2 * 2) (y * 2) = Rcompare x (2 * y)x, y:R(0 < 2)%Rx, y:RRcompare x (y * 2) = Rcompare x (2 * y)x, y:R2%R <> 0%Rx, y:R(0 < 2)%Rx, y:R2%R <> 0%Rx, y:R(0 < 2)%Rnow apply IZR_lt. Qed.x, y:R(0 < 2)%Rforall x y : R, Rcompare x (y / 2) = Rcompare (2 * x) yforall x y : R, Rcompare x (y / 2) = Rcompare (2 * x) yx, y:RRcompare x (y / 2) = Rcompare (2 * x) yx, y:RRcompare (x * 2) (y / 2 * 2) = Rcompare (2 * x) yx, y:R(0 < 2)%Rx, y:RRcompare (x * 2) (y * / 2 * 2) = Rcompare (2 * x) yx, y:R(0 < 2)%Rx, y:RRcompare (x * 2) y = Rcompare (2 * x) yx, y:R2%R <> 0%Rx, y:R(0 < 2)%Rx, y:R2%R <> 0%Rx, y:R(0 < 2)%Rnow apply IZR_lt. Qed.x, y:R(0 < 2)%Rforall x y : R, Rcompare (x * x) (y * y) = Rcompare (Rabs x) (Rabs y)forall x y : R, Rcompare (x * x) (y * y) = Rcompare (Rabs x) (Rabs y)x, y:RRcompare (x * x) (y * y) = Rcompare (Rabs x) (Rabs y)x, y:RH:(Rabs x < Rabs y)%RRcompare (x * x) (y * y) = Ltx, y:RH:Rabs x = Rabs yRcompare (x * x) (y * y) = Eqx, y:RH:(Rabs y < Rabs x)%RRcompare (x * x) (y * y) = Gtx, y:RH:(Rabs x < Rabs y)%R(x * x < y * y)%Rx, y:RH:Rabs x = Rabs yRcompare (x * x) (y * y) = Eqx, y:RH:(Rabs y < Rabs x)%RRcompare (x * x) (y * y) = Gtx, y:RH:Rabs x = Rabs yRcompare (x * x) (y * y) = Eqx, y:RH:(Rabs y < Rabs x)%RRcompare (x * x) (y * y) = Gtx, y:RH:Rabs x = Rabs yRcompare x² y² = Eqx, y:RH:(Rabs y < Rabs x)%RRcompare (x * x) (y * y) = Gtx, y:RH:Rabs x = Rabs yRcompare (Rabs y)² (Rabs y)² = Eqx, y:RH:(Rabs y < Rabs x)%RRcompare (x * x) (y * y) = Gtx, y:RH:(Rabs y < Rabs x)%RRcompare (x * x) (y * y) = Gtnow apply Rsqr_lt_abs_1. Qed.x, y:RH:(Rabs y < Rabs x)%R(y * y < x * x)%Rforall x y : R, Rmin x y = match Rcompare x y with | Gt => y | _ => x endforall x y : R, Rmin x y = match Rcompare x y with | Gt => y | _ => x endx, y:RRmin x y = match Rcompare x y with | Gt => y | _ => x endx, y:R(if Rle_dec x y then x else y) = match Rcompare x y with | Gt => y | _ => x endx, y:RHx:(x < y)%Rx = match Rcompare x y with | Gt => y | _ => x endx, y:RHx:x = yx = match Rcompare x y with | Gt => y | _ => x endx, y:RHx:~ (x <= y)%Ry = match Rcompare x y with | Gt => y | _ => x endx, y:RHx:x = yx = match Rcompare x y with | Gt => y | _ => x endx, y:RHx:~ (x <= y)%Ry = match Rcompare x y with | Gt => y | _ => x endx, y:RHx:~ (x <= y)%Ry = match Rcompare x y with | Gt => y | _ => x endx, y:RHx:~ (x <= y)%Ry = yx, y:RHx:~ (x <= y)%R(y < x)%Rnow apply Rnot_le_lt. Qed. End Rcompare. Section Rle_bool. Definition Rle_bool x y := match Rcompare x y with | Gt => false | _ => true end. Inductive Rle_bool_prop (x y : R) : bool -> Prop := | Rle_bool_true_ : (x <= y)%R -> Rle_bool_prop x y true | Rle_bool_false_ : (y < x)%R -> Rle_bool_prop x y false.x, y:RHx:~ (x <= y)%R(y < x)%Rforall x y : R, Rle_bool_prop x y (Rle_bool x y)forall x y : R, Rle_bool_prop x y (Rle_bool x y)x, y:RRle_bool_prop x y (Rle_bool x y)x, y:RRle_bool_prop x y match Rcompare x y with | Gt => false | _ => true endx, y:RH:(x < y)%R(x <= y)%Rx, y:RH:x = y(x <= y)%Rx, y:RH:(y < x)%R(y < x)%Rx, y:RH:x = y(x <= y)%Rx, y:RH:(y < x)%R(y < x)%Rx, y:RH:x = y(y <= y)%Rx, y:RH:(y < x)%R(y < x)%Rexact H. Qed.x, y:RH:(y < x)%R(y < x)%Rforall x y : R, (x <= y)%R -> Rle_bool x y = trueforall x y : R, (x <= y)%R -> Rle_bool x y = truex, y:RHxy:(x <= y)%RRle_bool x y = truex, y:RHxy, H:(x <= y)%Rtrue = truex, y:RHxy:(x <= y)%RH:(y < x)%Rfalse = truex, y:RHxy:(x <= y)%RH:(y < x)%Rfalse = truenow apply Rle_lt_trans with y. Qed.x, y:RHxy:(x <= y)%RH:(y < x)%R(x < x)%Rforall x y : R, (y < x)%R -> Rle_bool x y = falseforall x y : R, (y < x)%R -> Rle_bool x y = falsex, y:RHxy:(y < x)%RRle_bool x y = falsex, y:RHxy:(y < x)%RH:(x <= y)%Rtrue = falsex, y:RHxy, H:(y < x)%Rfalse = falsex, y:RHxy:(y < x)%RH:(x <= y)%R(x < x)%Rx, y:RHxy, H:(y < x)%Rfalse = falseapply refl_equal. Qed. End Rle_bool. Section Rlt_bool. Definition Rlt_bool x y := match Rcompare x y with | Lt => true | _ => false end. Inductive Rlt_bool_prop (x y : R) : bool -> Prop := | Rlt_bool_true_ : (x < y)%R -> Rlt_bool_prop x y true | Rlt_bool_false_ : (y <= x)%R -> Rlt_bool_prop x y false.x, y:RHxy, H:(y < x)%Rfalse = falseforall x y : R, Rlt_bool_prop x y (Rlt_bool x y)forall x y : R, Rlt_bool_prop x y (Rlt_bool x y)x, y:RRlt_bool_prop x y (Rlt_bool x y)x, y:RRlt_bool_prop x y match Rcompare x y with | Lt => true | _ => false endx, y:RH:(x < y)%R(x < y)%Rx, y:RH:x = y(y <= x)%Rx, y:RH:(y < x)%R(y <= x)%Rx, y:RH:x = y(y <= x)%Rx, y:RH:(y < x)%R(y <= x)%Rx, y:RH:x = y(y <= y)%Rx, y:RH:(y < x)%R(y <= x)%Rnow apply Rlt_le. Qed.x, y:RH:(y < x)%R(y <= x)%Rforall x y : R, negb (Rle_bool x y) = Rlt_bool y xforall x y : R, negb (Rle_bool x y) = Rlt_bool y xx, y:Rnegb (Rle_bool x y) = Rlt_bool y xx, y:Rnegb match Rcompare x y with | Gt => false | _ => true end = match Rcompare y x with | Lt => true | _ => false endnow case Rcompare. Qed.x, y:Rnegb match CompOpp (Rcompare y x) with | Gt => false | _ => true end = match Rcompare y x with | Lt => true | _ => false endforall x y : R, negb (Rlt_bool x y) = Rle_bool y xforall x y : R, negb (Rlt_bool x y) = Rle_bool y xx, y:Rnegb (Rlt_bool x y) = Rle_bool y xx, y:Rnegb match Rcompare x y with | Lt => true | _ => false end = match Rcompare y x with | Gt => false | _ => true endnow case Rcompare. Qed.x, y:Rnegb match CompOpp (Rcompare y x) with | Lt => true | _ => false end = match Rcompare y x with | Gt => false | _ => true endforall x y : R, (x < y)%R -> Rlt_bool x y = trueforall x y : R, (x < y)%R -> Rlt_bool x y = truex, y:RHxy:(x < y)%RRlt_bool x y = truenow rewrite Rle_bool_false. Qed.x, y:RHxy:(x < y)%Rnegb (Rle_bool y x) = trueforall x y : R, (y <= x)%R -> Rlt_bool x y = falseforall x y : R, (y <= x)%R -> Rlt_bool x y = falsex, y:RHxy:(y <= x)%RRlt_bool x y = falsenow rewrite Rle_bool_true. Qed.x, y:RHxy:(y <= x)%Rnegb (Rle_bool y x) = falseforall x y : R, Rlt_bool (- x) (- y) = Rlt_bool y xforall x y : R, Rlt_bool (- x) (- y) = Rlt_bool y xnow unfold Rlt_bool; rewrite Rcompare_opp. Qed. End Rlt_bool. Section Req_bool. Definition Req_bool x y := match Rcompare x y with | Eq => true | _ => false end. Inductive Req_bool_prop (x y : R) : bool -> Prop := | Req_bool_true_ : (x = y)%R -> Req_bool_prop x y true | Req_bool_false_ : (x <> y)%R -> Req_bool_prop x y false.x, y:RRlt_bool (- x) (- y) = Rlt_bool y xforall x y : R, Req_bool_prop x y (Req_bool x y)forall x y : R, Req_bool_prop x y (Req_bool x y)x, y:RReq_bool_prop x y (Req_bool x y)x, y:RReq_bool_prop x y match Rcompare x y with | Eq => true | _ => false endx, y:RH:(x < y)%Rx <> yx, y:RH:x = yx = yx, y:RH:(y < x)%Rx <> yx, y:RH:x = yx = yx, y:RH:(y < x)%Rx <> ynow apply Rgt_not_eq. Qed.x, y:RH:(y < x)%Rx <> yforall x y : R, x = y -> Req_bool x y = trueforall x y : R, x = y -> Req_bool x y = truex, y:RHxy:x = yReq_bool x y = truex, y:RHxy, H:x = ytrue = truex, y:RHxy:x = yH:x <> yfalse = truex, y:RHxy:x = yH:x <> yfalse = trueexact Hxy. Qed.x, y:RHxy:x = yx = yforall x y : R, x <> y -> Req_bool x y = falseforall x y : R, x <> y -> Req_bool x y = falsex, y:RHxy:x <> yReq_bool x y = falsex, y:RHxy:x <> yH:x = ytrue = falsex, y:RHxy, H:x <> yfalse = falsex, y:RH:x = yx = yx, y:RHxy, H:x <> yfalse = falseapply refl_equal. Qed. End Req_bool. Section Floor_Ceil.x, y:RHxy, H:x <> yfalse = false
Zfloor and Zceil
Definition Zfloor (x : R) := (up x - 1)%Z.forall x : R, (IZR (Zfloor x) <= x)%Rforall x : R, (IZR (Zfloor x) <= x)%Rx:R(IZR (Zfloor x) <= x)%Rx:R(IZR (up x - 1) <= x)%Rx:R(IZR (up x) - 1 <= x)%Rx:R(IZR (up x) - 1 <= x)%Rx:R(IZR (up x) - 1 + (1 - x) <= x + (1 - x))%Rexact (proj2 (archimed x)). Qed.x:R(IZR (up x) - x <= 1)%Rforall x : R, (x < IZR (Zfloor x) + 1)%Rforall x : R, (x < IZR (Zfloor x) + 1)%Rx:R(x < IZR (Zfloor x) + 1)%Rx:R(x < IZR (up x - 1) + 1)%Rx:R(x < IZR (up x) - 1 + 1)%Rx:R(x < IZR (up x) + - (1) + 1)%Rx:R(x < IZR (up x) + (- (1) + 1))%Rexact (proj1 (archimed x)). Qed.x:R(x < IZR (up x))%Rforall (n : Z) (x : R), (IZR n <= x)%R -> (n <= Zfloor x)%Zforall (n : Z) (x : R), (IZR n <= x)%R -> (n <= Zfloor x)%Zn:Zx:RHnx:(IZR n <= x)%R(n <= Zfloor x)%Zn:Zx:RHnx:(IZR n <= x)%R(n < Z.succ (Zfloor x))%Zn:Zx:RHnx:(IZR n <= x)%R(IZR n < IZR (Z.succ (Zfloor x)))%Rn:Zx:RHnx:(IZR n <= x)%R(x < IZR (Z.succ (Zfloor x)))%Rn:Zx:RHnx:(IZR n <= x)%R(x < IZR (Zfloor x + 1))%Rapply Zfloor_ub. Qed.n:Zx:RHnx:(IZR n <= x)%R(x < IZR (Zfloor x) + 1)%Rforall (n : Z) (x : R), (IZR n <= x < IZR (n + 1))%R -> Zfloor x = nforall (n : Z) (x : R), (IZR n <= x < IZR (n + 1))%R -> Zfloor x = nn:Zx:RHnx:(IZR n <= x < IZR (n + 1))%RZfloor x = nn:Zx:RHnx:(IZR n <= x < IZR (n + 1))%R(Zfloor x <= n)%Zn:Zx:RHnx:(IZR n <= x < IZR (n + 1))%R(n <= Zfloor x)%Zn:Zx:RHnx:(IZR n <= x < IZR (n + 1))%R(Zfloor x < Z.succ n)%Zn:Zx:RHnx:(IZR n <= x < IZR (n + 1))%R(n <= Zfloor x)%Zn:Zx:RHnx:(IZR n <= x < IZR (n + 1))%R(IZR (Zfloor x) < IZR (Z.succ n))%Rn:Zx:RHnx:(IZR n <= x < IZR (n + 1))%R(n <= Zfloor x)%Zn:Zx:RHnx:(IZR n <= x < IZR (n + 1))%R(IZR (Zfloor x) <= x)%Rn:Zx:RHnx:(IZR n <= x < IZR (n + 1))%R(n <= Zfloor x)%Znow apply Zfloor_lub. Qed.n:Zx:RHnx:(IZR n <= x < IZR (n + 1))%R(n <= Zfloor x)%Zforall n : Z, Zfloor (IZR n) = nforall n : Z, Zfloor (IZR n) = nn:ZZfloor (IZR n) = nn:Z(IZR n <= IZR n < IZR (n + 1))%Rn:Z(IZR n <= IZR n)%Rn:Z(IZR n < IZR (n + 1))%Rn:Z(IZR n < IZR (n + 1))%Rapply Zlt_succ. Qed.n:Z(n < n + 1)%Zforall x y : R, (x <= y)%R -> (Zfloor x <= Zfloor y)%Zforall x y : R, (x <= y)%R -> (Zfloor x <= Zfloor y)%Zx, y:RHxy:(x <= y)%R(Zfloor x <= Zfloor y)%Zx, y:RHxy:(x <= y)%R(IZR (Zfloor x) <= y)%Rapply Zfloor_lb. Qed. Definition Zceil (x : R) := (- Zfloor (- x))%Z.x, y:RHxy:(x <= y)%R(IZR (Zfloor x) <= x)%Rforall x : R, (x <= IZR (Zceil x))%Rforall x : R, (x <= IZR (Zceil x))%Rx:R(x <= IZR (Zceil x))%Rx:R(x <= IZR (- Zfloor (- x)))%Rx:R(x <= - IZR (Zfloor (- x)))%Rx:R(- - IZR (Zfloor (- x)) <= - x)%Rapply Zfloor_lb. Qed.x:R(IZR (Zfloor (- x)) <= - x)%Rforall x : R, (IZR (Zceil x) < x + 1)%Rforall x : R, (IZR (Zceil x) < x + 1)%Rx:R(IZR (Zceil x) < x + 1)%Rx:R(IZR (- Zfloor (- x)) < x + 1)%Rx:R(- IZR (Zfloor (- x)) < x + 1)%Rx:R(- IZR (Zfloor (- x)) < - (- x + - (1)))%Rapply Zfloor_ub. Qed.x:R(- x < IZR (Zfloor (- x)) + 1)%Rforall (n : Z) (x : R), (x <= IZR n)%R -> (Zceil x <= n)%Zforall (n : Z) (x : R), (x <= IZR n)%R -> (Zceil x <= n)%Zn:Zx:RHnx:(x <= IZR n)%R(Zceil x <= n)%Zn:Zx:RHnx:(x <= IZR n)%R(- Zfloor (- x) <= n)%Zn:Zx:RHnx:(x <= IZR n)%R(- n <= - - Zfloor (- x))%Zn:Zx:RHnx:(x <= IZR n)%R(- n <= Zfloor (- x))%Zn:Zx:RHnx:(x <= IZR n)%R(IZR (- n) <= - x)%Rnow apply Ropp_le_contravar. Qed.n:Zx:RHnx:(x <= IZR n)%R(- IZR n <= - x)%Rforall (n : Z) (x : R), (IZR (n - 1) < x <= IZR n)%R -> Zceil x = nforall (n : Z) (x : R), (IZR (n - 1) < x <= IZR n)%R -> Zceil x = nn:Zx:RHnx:(IZR (n - 1) < x <= IZR n)%RZceil x = nn:Zx:RHnx:(IZR (n - 1) < x <= IZR n)%R(- Zfloor (- x))%Z = nn:Zx:RHnx:(IZR (n - 1) < x <= IZR n)%R(- Zfloor (- x))%Z = (- - n)%Zn:Zx:RHnx:(IZR (n - 1) < x <= IZR n)%RZfloor (- x) = (- n)%Zn:Zx:RHnx:(IZR (n - 1) < x <= IZR n)%R(IZR (- n) <= - x < IZR (- n + 1))%Rn:Zx:RHnx:(IZR (n - 1) < x <= IZR n)%R(IZR (- n) <= - x)%Rn:Zx:RHnx:(IZR (n - 1) < x <= IZR n)%R(- x < IZR (- n + 1))%Rn:Zx:RHnx:(IZR (n - 1) < x <= IZR n)%R(- IZR n <= - x)%Rn:Zx:RHnx:(IZR (n - 1) < x <= IZR n)%R(- x < IZR (- n + 1))%Rn:Zx:RHnx:(IZR (n - 1) < x <= IZR n)%R(- x < IZR (- n + 1))%Rn:Zx:RHnx:(IZR (n - 1) < x <= IZR n)%R(- x < IZR (- n + - - (1)))%Rn:Zx:RHnx:(IZR (n - 1) < x <= IZR n)%R(- x < IZR (- (n + - (1))))%Rnow apply Ropp_lt_contravar. Qed.n:Zx:RHnx:(IZR (n - 1) < x <= IZR n)%R(- x < - IZR (n + - (1)))%Rforall n : Z, Zceil (IZR n) = nforall n : Z, Zceil (IZR n) = nn:ZZceil (IZR n) = nn:Z(- Zfloor (- IZR n))%Z = napply Z.opp_involutive. Qed.n:Z(- - n)%Z = nforall x y : R, (x <= y)%R -> (Zceil x <= Zceil y)%Zforall x y : R, (x <= y)%R -> (Zceil x <= Zceil y)%Zx, y:RHxy:(x <= y)%R(Zceil x <= Zceil y)%Zx, y:RHxy:(x <= y)%R(x <= IZR (Zceil y))%Rapply Zceil_ub. Qed.x, y:RHxy:(x <= y)%R(y <= IZR (Zceil y))%Rforall x : R, IZR (Zfloor x) <> x -> Zceil x = (Zfloor x + 1)%Zforall x : R, IZR (Zfloor x) <> x -> Zceil x = (Zfloor x + 1)%Zx:RHx:IZR (Zfloor x) <> xZceil x = (Zfloor x + 1)%Zx:RHx:IZR (Zfloor x) <> x(IZR (Zfloor x + 1 - 1) < x <= IZR (Zfloor x + 1))%Rx:RHx:IZR (Zfloor x) <> x(IZR (Zfloor x + 1 - 1) < x)%Rx:RHx:IZR (Zfloor x) <> x(x <= IZR (Zfloor x + 1))%Rx:RHx:IZR (Zfloor x) <> x(IZR (Zfloor x) < x)%Rx:RHx:IZR (Zfloor x) <> x(x <= IZR (Zfloor x + 1))%Rx:RHx:IZR (Zfloor x) <> x~ (x <= IZR (Zfloor x))%Rx:RHx:IZR (Zfloor x) <> x(x <= IZR (Zfloor x + 1))%Rx:RHx:IZR (Zfloor x) <> xH:(x <= IZR (Zfloor x))%RFalsex:RHx:IZR (Zfloor x) <> x(x <= IZR (Zfloor x + 1))%Rx:RHx:IZR (Zfloor x) <> xH:(x <= IZR (Zfloor x))%RIZR (Zfloor x) = xx:RHx:IZR (Zfloor x) <> x(x <= IZR (Zfloor x + 1))%Rx:RHx:IZR (Zfloor x) <> xH:(x <= IZR (Zfloor x))%R(IZR (Zfloor x) <= x)%Rx:RHx:IZR (Zfloor x) <> xH:(x <= IZR (Zfloor x))%R(x <= IZR (Zfloor x))%Rx:RHx:IZR (Zfloor x) <> x(x <= IZR (Zfloor x + 1))%Rx:RHx:IZR (Zfloor x) <> xH:(x <= IZR (Zfloor x))%R(x <= IZR (Zfloor x))%Rx:RHx:IZR (Zfloor x) <> x(x <= IZR (Zfloor x + 1))%Rx:RHx:IZR (Zfloor x) <> x(x <= IZR (Zfloor x + 1))%Rx:RHx:IZR (Zfloor x) <> x(x < IZR (Zfloor x + 1))%Rapply Zfloor_ub. Qed. Definition Ztrunc x := if Rlt_bool x 0 then Zceil x else Zfloor x.x:RHx:IZR (Zfloor x) <> x(x < IZR (Zfloor x) + 1)%Rforall n : Z, Ztrunc (IZR n) = nforall n : Z, Ztrunc (IZR n) = nn:ZZtrunc (IZR n) = nn:Z(if Rlt_bool (IZR n) 0 then Zceil (IZR n) else Zfloor (IZR n)) = nn:ZH:(IZR n < 0)%RZceil (IZR n) = nn:ZH:(0 <= IZR n)%RZfloor (IZR n) = napply Zfloor_IZR. Qed.n:ZH:(0 <= IZR n)%RZfloor (IZR n) = nforall x : R, (0 <= x)%R -> Ztrunc x = Zfloor xforall x : R, (0 <= x)%R -> Ztrunc x = Zfloor xx:RHx:(0 <= x)%RZtrunc x = Zfloor xx:RHx:(0 <= x)%R(if Rlt_bool x 0 then Zceil x else Zfloor x) = Zfloor xx:RHx:(0 <= x)%RH:(x < 0)%RZceil x = Zfloor xx:RHx, H:(0 <= x)%RZfloor x = Zfloor xx:RHx:(0 <= x)%RH:(x < 0)%R(x < x)%Rx:RHx, H:(0 <= x)%RZfloor x = Zfloor xapply refl_equal. Qed.x:RHx, H:(0 <= x)%RZfloor x = Zfloor xforall x : R, (x <= 0)%R -> Ztrunc x = Zceil xforall x : R, (x <= 0)%R -> Ztrunc x = Zceil xx:RHx:(x <= 0)%RZtrunc x = Zceil xx:RHx:(x <= 0)%R(if Rlt_bool x 0 then Zceil x else Zfloor x) = Zceil xx:RHx:(x <= 0)%RH:(x < 0)%RZceil x = Zceil xx:RHx:(x <= 0)%RH:(0 <= x)%RZfloor x = Zceil xx:RHx:(x <= 0)%RH:(0 <= x)%RZfloor x = Zceil xx:RHx:(x <= 0)%RH:(0 <= x)%RZfloor 0 = Zceil 0apply Zfloor_IZR. Qed.x:RHx:(x <= 0)%RH:(0 <= x)%RZfloor 0 = 0%Zforall x y : R, (x <= y)%R -> (Ztrunc x <= Ztrunc y)%Zforall x y : R, (x <= y)%R -> (Ztrunc x <= Ztrunc y)%Zx, y:RHxy:(x <= y)%R(Ztrunc x <= Ztrunc y)%Zx, y:RHxy:(x <= y)%R((if Rlt_bool x 0 then Zceil x else Zfloor x) <= Ztrunc y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%R(Zceil x <= Ztrunc y)%Zx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zfloor x <= Ztrunc y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%R(Zceil x <= (if Rlt_bool y 0 then Zceil y else Zfloor y))%Zx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zfloor x <= Ztrunc y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(y < 0)%R(Zceil x <= Zceil y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(Zceil x <= Zfloor y)%Zx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zfloor x <= Ztrunc y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(Zceil x <= Zfloor y)%Zx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zfloor x <= Ztrunc y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(Zceil x <= 0)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(0 <= Zfloor y)%Zx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zfloor x <= Ztrunc y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(x <= 0)%Rx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(0 <= Zfloor y)%Zx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zfloor x <= Ztrunc y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(0 <= Zfloor y)%Zx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zfloor x <= Ztrunc y)%Zx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zfloor x <= Ztrunc y)%Zx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zfloor x <= Zfloor y)%Zx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(0 <= y)%Rnow apply Rle_trans with x. Qed.x, y:RHxy:(x <= y)%RHx:(0 <= x)%R(0 <= y)%Rforall x : R, Ztrunc (- x) = (- Ztrunc x)%Zforall x : R, Ztrunc (- x) = (- Ztrunc x)%Zx:RZtrunc (- x) = (- Ztrunc x)%Zx:RZtrunc (- x) = (- (if Rlt_bool x 0 then Zceil x else Zfloor x))%Zx:RHx:(x < 0)%RZtrunc (- x) = (- Zceil x)%Zx:RHx:(0 <= x)%RZtrunc (- x) = (- Zfloor x)%Zx:RHx:(x < 0)%RZfloor (- x) = (- Zceil x)%Zx:RHx:(x < 0)%R(0 <= - x)%Rx:RHx:(0 <= x)%RZtrunc (- x) = (- Zfloor x)%Zx:RHx:(x < 0)%R(- Zceil x)%Z = Zfloor (- x)x:RHx:(x < 0)%R(0 <= - x)%Rx:RHx:(0 <= x)%RZtrunc (- x) = (- Zfloor x)%Zx:RHx:(x < 0)%R(0 <= - x)%Rx:RHx:(0 <= x)%RZtrunc (- x) = (- Zfloor x)%Zx:RHx:(x < 0)%R(- 0 <= - x)%Rx:RHx:(0 <= x)%RZtrunc (- x) = (- Zfloor x)%Zx:RHx:(x < 0)%R(x <= 0)%Rx:RHx:(0 <= x)%RZtrunc (- x) = (- Zfloor x)%Zx:RHx:(0 <= x)%RZtrunc (- x) = (- Zfloor x)%Zx:RHx:(0 <= x)%RZceil (- x) = (- Zfloor x)%Zx:RHx:(0 <= x)%R(- x <= 0)%Rx:RHx:(0 <= x)%R(- Zfloor (- - x))%Z = (- Zfloor x)%Zx:RHx:(0 <= x)%R(- x <= 0)%Rx:RHx:(0 <= x)%R(- x <= 0)%Rnow apply Ropp_le_contravar. Qed.x:RHx:(0 <= x)%R(- x <= - 0)%Rforall x : R, Ztrunc (Rabs x) = Z.abs (Ztrunc x)forall x : R, Ztrunc (Rabs x) = Z.abs (Ztrunc x)x:RZtrunc (Rabs x) = Z.abs (Ztrunc x)x:RZfloor (Rabs x) = Z.abs (Ztrunc x)x:R(0 <= Rabs x)%Rx:RZfloor (Rabs x) = Z.abs (Ztrunc x)x:RZfloor (Rabs x) = Z.abs (if Rlt_bool x 0 then Zceil x else Zfloor x)x:RH:(x < 0)%RZfloor (Rabs x) = Z.abs (Zceil x)x:RH:(0 <= x)%RZfloor (Rabs x) = Z.abs (Zfloor x)x:RH:(x < 0)%RZfloor (- x) = Z.abs (Zceil x)x:RH:(0 <= x)%RZfloor (Rabs x) = Z.abs (Zfloor x)x:RH:(x < 0)%RZfloor (- x) = (- Zceil x)%Zx:RH:(x < 0)%R(Zceil x <= 0)%Zx:RH:(0 <= x)%RZfloor (Rabs x) = Z.abs (Zfloor x)x:RH:(x < 0)%R(- Zceil x)%Z = Zfloor (- x)x:RH:(x < 0)%R(Zceil x <= 0)%Zx:RH:(0 <= x)%RZfloor (Rabs x) = Z.abs (Zfloor x)x:RH:(x < 0)%R(Zceil x <= 0)%Zx:RH:(0 <= x)%RZfloor (Rabs x) = Z.abs (Zfloor x)x:RH:(x < 0)%R(x <= 0)%Rx:RH:(0 <= x)%RZfloor (Rabs x) = Z.abs (Zfloor x)x:RH:(0 <= x)%RZfloor (Rabs x) = Z.abs (Zfloor x)x:RH:(0 <= x)%RZfloor x = Z.abs (Zfloor x)x:RH:(0 <= x)%RZ.abs (Zfloor x) = Zfloor xnow apply Zfloor_lub. Qed.x:RH:(0 <= x)%R(0 <= Zfloor x)%Zforall (n : Z) (x : R), (IZR n <= Rabs x)%R -> (n <= Z.abs (Ztrunc x))%Zforall (n : Z) (x : R), (IZR n <= Rabs x)%R -> (n <= Z.abs (Ztrunc x))%Zn:Zx:RH:(IZR n <= Rabs x)%R(n <= Z.abs (Ztrunc x))%Zn:Zx:RH:(IZR n <= Rabs x)%R(n <= Ztrunc (Rabs x))%Zn:Zx:RH:(IZR n <= Rabs x)%R(n <= Zfloor (Rabs x))%Zn:Zx:RH:(IZR n <= Rabs x)%R(0 <= Rabs x)%Rnow apply Zfloor_lub. Qed. Definition Zaway x := if Rlt_bool x 0 then Zfloor x else Zceil x.n:Zx:RH:(IZR n <= Rabs x)%R(n <= Zfloor (Rabs x))%Zforall n : Z, Zaway (IZR n) = nforall n : Z, Zaway (IZR n) = nn:ZZaway (IZR n) = nn:Z(if Rlt_bool (IZR n) 0 then Zfloor (IZR n) else Zceil (IZR n)) = nn:ZH:(IZR n < 0)%RZfloor (IZR n) = nn:ZH:(0 <= IZR n)%RZceil (IZR n) = napply Zceil_IZR. Qed.n:ZH:(0 <= IZR n)%RZceil (IZR n) = nforall x : R, (0 <= x)%R -> Zaway x = Zceil xforall x : R, (0 <= x)%R -> Zaway x = Zceil xx:RHx:(0 <= x)%RZaway x = Zceil xx:RHx:(0 <= x)%R(if Rlt_bool x 0 then Zfloor x else Zceil x) = Zceil xx:RHx:(0 <= x)%RH:(x < 0)%RZfloor x = Zceil xx:RHx, H:(0 <= x)%RZceil x = Zceil xx:RHx:(0 <= x)%RH:(x < 0)%R(x < x)%Rx:RHx, H:(0 <= x)%RZceil x = Zceil xapply refl_equal. Qed.x:RHx, H:(0 <= x)%RZceil x = Zceil xforall x : R, (x <= 0)%R -> Zaway x = Zfloor xforall x : R, (x <= 0)%R -> Zaway x = Zfloor xx:RHx:(x <= 0)%RZaway x = Zfloor xx:RHx:(x <= 0)%R(if Rlt_bool x 0 then Zfloor x else Zceil x) = Zfloor xx:RHx:(x <= 0)%RH:(x < 0)%RZfloor x = Zfloor xx:RHx:(x <= 0)%RH:(0 <= x)%RZceil x = Zfloor xx:RHx:(x <= 0)%RH:(0 <= x)%RZceil x = Zfloor xx:RHx:(x <= 0)%RH:(0 <= x)%RZceil 0 = Zfloor 0apply Zceil_IZR. Qed.x:RHx:(x <= 0)%RH:(0 <= x)%RZceil 0 = 0%Zforall x y : R, (x <= y)%R -> (Zaway x <= Zaway y)%Zforall x y : R, (x <= y)%R -> (Zaway x <= Zaway y)%Zx, y:RHxy:(x <= y)%R(Zaway x <= Zaway y)%Zx, y:RHxy:(x <= y)%R((if Rlt_bool x 0 then Zfloor x else Zceil x) <= Zaway y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%R(Zfloor x <= Zaway y)%Zx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zceil x <= Zaway y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%R(Zfloor x <= (if Rlt_bool y 0 then Zfloor y else Zceil y))%Zx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zceil x <= Zaway y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(y < 0)%R(Zfloor x <= Zfloor y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(Zfloor x <= Zceil y)%Zx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zceil x <= Zaway y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(Zfloor x <= Zceil y)%Zx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zceil x <= Zaway y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(IZR (Zfloor x) <= IZR (Zceil y))%Rx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zceil x <= Zaway y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(IZR (Zfloor x) <= 0)%Rx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(0 <= IZR (Zceil y))%Rx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zceil x <= Zaway y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(IZR (Zfloor x) < 0)%Rx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(0 <= IZR (Zceil y))%Rx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zceil x <= Zaway y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(IZR (Zfloor x) <= x)%Rx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(0 <= IZR (Zceil y))%Rx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zceil x <= Zaway y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(0 <= IZR (Zceil y))%Rx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zceil x <= Zaway y)%Zx, y:RHxy:(x <= y)%RHx:(x < 0)%RHy:(0 <= y)%R(y <= IZR (Zceil y))%Rx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zceil x <= Zaway y)%Zx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zceil x <= Zaway y)%Zx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(Zceil x <= Zceil y)%Zx, y:RHxy:(x <= y)%RHx:(0 <= x)%R(0 <= y)%Rnow apply Rle_trans with x. Qed.x, y:RHxy:(x <= y)%RHx:(0 <= x)%R(0 <= y)%Rforall x : R, Zaway (- x) = (- Zaway x)%Zforall x : R, Zaway (- x) = (- Zaway x)%Zx:RZaway (- x) = (- Zaway x)%Zx:RZaway (- x) = (- (if Rlt_bool x 0 then Zfloor x else Zceil x))%Zx:RH:(x < 0)%RZaway (- x) = (- Zfloor x)%Zx:RH:(0 <= x)%RZaway (- x) = (- Zceil x)%Zx:RH:(x < 0)%RZceil (- x) = (- Zfloor x)%Zx:RH:(x < 0)%R(0 <= - x)%Rx:RH:(0 <= x)%RZaway (- x) = (- Zceil x)%Zx:RH:(x < 0)%R(- Zfloor (- - x))%Z = (- Zfloor x)%Zx:RH:(x < 0)%R(0 <= - x)%Rx:RH:(0 <= x)%RZaway (- x) = (- Zceil x)%Zx:RH:(x < 0)%R(0 <= - x)%Rx:RH:(0 <= x)%RZaway (- x) = (- Zceil x)%Zx:RH:(x < 0)%R(0 < - x)%Rx:RH:(0 <= x)%RZaway (- x) = (- Zceil x)%Zx:RH:(0 <= x)%RZaway (- x) = (- Zceil x)%Zx:RH:(0 <= x)%RZfloor (- x) = (- Zceil x)%Zx:RH:(0 <= x)%R(- x <= 0)%Rx:RH:(0 <= x)%R(- Zceil x)%Z = Zfloor (- x)x:RH:(0 <= x)%R(- x <= 0)%Rx:RH:(0 <= x)%R(- x <= 0)%Rnow apply Ropp_le_contravar. Qed.x:RH:(0 <= x)%R(- x <= - 0)%Rforall x : R, Zaway (Rabs x) = Z.abs (Zaway x)forall x : R, Zaway (Rabs x) = Z.abs (Zaway x)x:RZaway (Rabs x) = Z.abs (Zaway x)x:RZceil (Rabs x) = Z.abs (Zaway x)x:R(0 <= Rabs x)%Rx:RZceil (Rabs x) = Z.abs (Zaway x)x:RZceil (Rabs x) = Z.abs (if Rlt_bool x 0 then Zfloor x else Zceil x)x:RH:(x < 0)%RZceil (Rabs x) = Z.abs (Zfloor x)x:RH:(0 <= x)%RZceil (Rabs x) = Z.abs (Zceil x)x:RH:(x < 0)%RZceil (- x) = Z.abs (Zfloor x)x:RH:(0 <= x)%RZceil (Rabs x) = Z.abs (Zceil x)x:RH:(x < 0)%RZceil (- x) = (- Zfloor x)%Zx:RH:(x < 0)%R(Zfloor x <= 0)%Zx:RH:(0 <= x)%RZceil (Rabs x) = Z.abs (Zceil x)x:RH:(x < 0)%R(- - x)%R = xx:RH:(x < 0)%R(Zfloor x <= 0)%Zx:RH:(0 <= x)%RZceil (Rabs x) = Z.abs (Zceil x)x:RH:(x < 0)%R(Zfloor x <= 0)%Zx:RH:(0 <= x)%RZceil (Rabs x) = Z.abs (Zceil x)x:RH:(x < 0)%R(IZR (Zfloor x) <= 0)%Rx:RH:(0 <= x)%RZceil (Rabs x) = Z.abs (Zceil x)x:RH:(x < 0)%R(IZR (Zfloor x) < 0)%Rx:RH:(0 <= x)%RZceil (Rabs x) = Z.abs (Zceil x)x:RH:(x < 0)%R(IZR (Zfloor x) <= x)%Rx:RH:(0 <= x)%RZceil (Rabs x) = Z.abs (Zceil x)x:RH:(0 <= x)%RZceil (Rabs x) = Z.abs (Zceil x)x:RH:(0 <= x)%RZceil x = Z.abs (Zceil x)x:RH:(0 <= x)%RZ.abs (Zceil x) = Zceil xx:RH:(0 <= x)%R(0 <= Zceil x)%Zx:RH:(0 <= x)%R(0 <= IZR (Zceil x))%Rapply Zceil_ub. Qed. End Floor_Ceil.x:RH:(0 <= x)%R(x <= IZR (Zceil x))%Rforall x : R, IZR (Zfloor x) <> x -> Rcompare (x - IZR (Zfloor x)) (/ 2) = Rcompare (x - IZR (Zfloor x)) (IZR (Zceil x) - x)forall x : R, IZR (Zfloor x) <> x -> Rcompare (x - IZR (Zfloor x)) (/ 2) = Rcompare (x - IZR (Zfloor x)) (IZR (Zceil x) - x)x:RHx:IZR (Zfloor x) <> xRcompare (x - IZR (Zfloor x)) (/ 2) = Rcompare (x - IZR (Zfloor x)) (IZR (Zceil x) - x)x:RHx:IZR (Zfloor x) <> xRcompare (x - IZR (Zfloor x)) (/ 2) = Rcompare (x - IZR (Zfloor x)) (IZR (Zfloor x + 1) - x)x:RHx:IZR (Zfloor x) <> xRcompare (x - IZR (Zfloor x)) (/ 2) = Rcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x)(* . *)x:RHx:IZR (Zfloor x) <> xH1:(x - IZR (Zfloor x) < / 2)%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Ltx:RHx:IZR (Zfloor x) <> xH1:(x - IZR (Zfloor x))%R = (/ 2)%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Eqx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < x - IZR (Zfloor x))%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Gtx:RHx:IZR (Zfloor x) <> xH1:(x - IZR (Zfloor x) < / 2)%R(x - IZR (Zfloor x) < IZR (Zfloor x) + 1 - x)%Rx:RHx:IZR (Zfloor x) <> xH1:(x - IZR (Zfloor x))%R = (/ 2)%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Eqx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < x - IZR (Zfloor x))%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Gtx:RHx:IZR (Zfloor x) <> xH1:(x - IZR (Zfloor x) < / 2)%R(x - IZR (Zfloor x) + (x - IZR (Zfloor x)) < x - IZR (Zfloor x) + (IZR (Zfloor x) + 1 - x))%Rx:RHx:IZR (Zfloor x) <> xH1:(x - IZR (Zfloor x))%R = (/ 2)%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Eqx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < x - IZR (Zfloor x))%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Gtx:RHx:IZR (Zfloor x) <> xH1:(x - IZR (Zfloor x) < / 2)%R((x - IZR (Zfloor x)) * 2 < x - IZR (Zfloor x) + (IZR (Zfloor x) + 1 - x))%Rx:RHx:IZR (Zfloor x) <> xH1:(x - IZR (Zfloor x))%R = (/ 2)%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Eqx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < x - IZR (Zfloor x))%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Gtx:RHx:IZR (Zfloor x) <> xH1:(x - IZR (Zfloor x) < / 2)%R((x - IZR (Zfloor x)) * 2 < / 2 * 2)%Rx:RHx:IZR (Zfloor x) <> xH1:(x - IZR (Zfloor x))%R = (/ 2)%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Eqx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < x - IZR (Zfloor x))%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Gtx:RHx:IZR (Zfloor x) <> xH1:(x - IZR (Zfloor x) < / 2)%R(0 < 2)%Rx:RHx:IZR (Zfloor x) <> xH1:(x - IZR (Zfloor x))%R = (/ 2)%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Eqx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < x - IZR (Zfloor x))%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Gt(* . *)x:RHx:IZR (Zfloor x) <> xH1:(x - IZR (Zfloor x))%R = (/ 2)%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Eqx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < x - IZR (Zfloor x))%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Gtx:RHx:IZR (Zfloor x) <> xH1:(x - IZR (Zfloor x))%R = (/ 2)%R(x - IZR (Zfloor x))%R = (IZR (Zfloor x) + 1 - x)%Rx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < x - IZR (Zfloor x))%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Gtx:RHx:IZR (Zfloor x) <> xH1:(x - IZR (Zfloor x))%R = (/ 2)%R(x - IZR (Zfloor x))%R = (1 - (x - IZR (Zfloor x)))%Rx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < x - IZR (Zfloor x))%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Gtx:RHx:IZR (Zfloor x) <> xH1:(x - IZR (Zfloor x))%R = (/ 2)%R(/ 2)%R = (1 - / 2)%Rx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < x - IZR (Zfloor x))%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Gt(* . *)x:RHx:IZR (Zfloor x) <> xH1:(/ 2 < x - IZR (Zfloor x))%RRcompare (x - IZR (Zfloor x)) (IZR (Zfloor x) + 1 - x) = Gtx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < x - IZR (Zfloor x))%R(IZR (Zfloor x) + 1 - x < x - IZR (Zfloor x))%Rx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < x - IZR (Zfloor x))%R(x - IZR (Zfloor x) + (IZR (Zfloor x) + 1 - x) < x - IZR (Zfloor x) + (x - IZR (Zfloor x)))%Rx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < x - IZR (Zfloor x))%R(x - IZR (Zfloor x) + (IZR (Zfloor x) + 1 - x) < (x - IZR (Zfloor x)) * 2)%Rx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < x - IZR (Zfloor x))%R(/ 2 * 2 < (x - IZR (Zfloor x)) * 2)%Rnow apply IZR_lt. Qed.x:RHx:IZR (Zfloor x) <> xH1:(/ 2 < x - IZR (Zfloor x))%R(0 < 2)%Rforall x : R, IZR (Zfloor x) <> x -> Rcompare (IZR (Zceil x) - x) (/ 2) = Rcompare (IZR (Zceil x) - x) (x - IZR (Zfloor x))forall x : R, IZR (Zfloor x) <> x -> Rcompare (IZR (Zceil x) - x) (/ 2) = Rcompare (IZR (Zceil x) - x) (x - IZR (Zfloor x))x:RHx:IZR (Zfloor x) <> xRcompare (IZR (Zceil x) - x) (/ 2) = Rcompare (IZR (Zceil x) - x) (x - IZR (Zfloor x))x:RHx:IZR (Zfloor x) <> xRcompare (IZR (Zfloor x + 1) - x) (/ 2) = Rcompare (IZR (Zfloor x + 1) - x) (x - IZR (Zfloor x))x:RHx:IZR (Zfloor x) <> xRcompare (IZR (Zfloor x) + 1 - x) (/ 2) = Rcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x))(* . *)x:RHx:IZR (Zfloor x) <> xH1:(IZR (Zfloor x) + 1 - x < / 2)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Ltx:RHx:IZR (Zfloor x) <> xH1:(IZR (Zfloor x) + 1 - x)%R = (/ 2)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Eqx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < IZR (Zfloor x) + 1 - x)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Gtx:RHx:IZR (Zfloor x) <> xH1:(IZR (Zfloor x) + 1 - x < / 2)%R(IZR (Zfloor x) + 1 - x < x - IZR (Zfloor x))%Rx:RHx:IZR (Zfloor x) <> xH1:(IZR (Zfloor x) + 1 - x)%R = (/ 2)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Eqx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < IZR (Zfloor x) + 1 - x)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Gtx:RHx:IZR (Zfloor x) <> xH1:(IZR (Zfloor x) + 1 - x < / 2)%R(IZR (Zfloor x) + 1 - x + (IZR (Zfloor x) + 1 - x) < IZR (Zfloor x) + 1 - x + (x - IZR (Zfloor x)))%Rx:RHx:IZR (Zfloor x) <> xH1:(IZR (Zfloor x) + 1 - x)%R = (/ 2)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Eqx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < IZR (Zfloor x) + 1 - x)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Gtx:RHx:IZR (Zfloor x) <> xH1:(IZR (Zfloor x) + 1 - x < / 2)%R((IZR (Zfloor x) + 1 - x) * 2 < IZR (Zfloor x) + 1 - x + (x - IZR (Zfloor x)))%Rx:RHx:IZR (Zfloor x) <> xH1:(IZR (Zfloor x) + 1 - x)%R = (/ 2)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Eqx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < IZR (Zfloor x) + 1 - x)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Gtx:RHx:IZR (Zfloor x) <> xH1:(IZR (Zfloor x) + 1 - x < / 2)%R((IZR (Zfloor x) + 1 - x) * 2 < / 2 * 2)%Rx:RHx:IZR (Zfloor x) <> xH1:(IZR (Zfloor x) + 1 - x)%R = (/ 2)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Eqx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < IZR (Zfloor x) + 1 - x)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Gtx:RHx:IZR (Zfloor x) <> xH1:(IZR (Zfloor x) + 1 - x < / 2)%R(0 < 2)%Rx:RHx:IZR (Zfloor x) <> xH1:(IZR (Zfloor x) + 1 - x)%R = (/ 2)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Eqx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < IZR (Zfloor x) + 1 - x)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Gt(* . *)x:RHx:IZR (Zfloor x) <> xH1:(IZR (Zfloor x) + 1 - x)%R = (/ 2)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Eqx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < IZR (Zfloor x) + 1 - x)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Gtx:RHx:IZR (Zfloor x) <> xH1:(IZR (Zfloor x) + 1 - x)%R = (/ 2)%R(IZR (Zfloor x) + 1 - x)%R = (x - IZR (Zfloor x))%Rx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < IZR (Zfloor x) + 1 - x)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Gtx:RHx:IZR (Zfloor x) <> xH1:(IZR (Zfloor x) + 1 - x)%R = (/ 2)%R(IZR (Zfloor x) + 1 - x)%R = (1 - (IZR (Zfloor x) + 1 - x))%Rx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < IZR (Zfloor x) + 1 - x)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Gtx:RHx:IZR (Zfloor x) <> xH1:(IZR (Zfloor x) + 1 - x)%R = (/ 2)%R(/ 2)%R = (1 - / 2)%Rx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < IZR (Zfloor x) + 1 - x)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Gt(* . *)x:RHx:IZR (Zfloor x) <> xH1:(/ 2 < IZR (Zfloor x) + 1 - x)%RRcompare (IZR (Zfloor x) + 1 - x) (x - IZR (Zfloor x)) = Gtx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < IZR (Zfloor x) + 1 - x)%R(x - IZR (Zfloor x) < IZR (Zfloor x) + 1 - x)%Rx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < IZR (Zfloor x) + 1 - x)%R(IZR (Zfloor x) + 1 - x + (x - IZR (Zfloor x)) < IZR (Zfloor x) + 1 - x + (IZR (Zfloor x) + 1 - x))%Rx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < IZR (Zfloor x) + 1 - x)%R(IZR (Zfloor x) + 1 - x + (x - IZR (Zfloor x)) < (IZR (Zfloor x) + 1 - x) * 2)%Rx:RHx:IZR (Zfloor x) <> xH1:(/ 2 < IZR (Zfloor x) + 1 - x)%R(/ 2 * 2 < (IZR (Zfloor x) + 1 - x) * 2)%Rnow apply IZR_lt. Qed. Section Zdiv_Rdiv.x:RHx:IZR (Zfloor x) <> xH1:(/ 2 < IZR (Zfloor x) + 1 - x)%R(0 < 2)%Rforall x y : Z, y <> 0%Z -> Zfloor (IZR x / IZR y) = (x / y)%Zforall x y : Z, y <> 0%Z -> Zfloor (IZR x / IZR y) = (x / y)%Zx, y:ZZy:y <> 0%ZZfloor (IZR x / IZR y) = (x / y)%Zx, y:ZZy:y <> 0%Zx = (y * (x / y) + x mod y)%Z -> Zfloor (IZR x / IZR y) = (x / y)%Zx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZfloor (IZR x / IZR y) = (x / y)%Zx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZfloor (IZR (y * (x / y) + x mod y) / IZR y) = (x / y)%Zx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZIZR y <> 0%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RZfloor (IZR (y * (x / y) + x mod y) / IZR y) = (x / y)%Zx, y:ZHx:x = (y * (x / y) + x mod y)%ZZy:IZR y = 0%Ry = 0%Zx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RZfloor (IZR (y * (x / y) + x mod y) / IZR y) = (x / y)%Zx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RZfloor (IZR (y * (x / y) + x mod y) / IZR y) = (x / y)%Zx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RZfloor (IZR (y * (x / y) + x mod y) * / IZR y) = (x / y)%Zx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RZfloor (IZR y * IZR (x / y) * / IZR y + IZR (x mod y) * / IZR y) = (x / y)%Zx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RZfloor (IZR (x / y) + IZR (x mod y) * / IZR y) = (x / y)%Zx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y + 1))%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%R(* *)x, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%R(* . *)x, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%Rforall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rforall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZHy:(0 < y)%Z(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZHy:(0 < y)%Z(0 <= IZR (x mod y) * / IZR y)%Rx, y:ZHy:(0 < y)%Z(IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZHy:(0 < y)%Z(0 <= IZR (x mod y))%Rx, y:ZHy:(0 < y)%Z(0 <= / IZR y)%Rx, y:ZHy:(0 < y)%Z(IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZHy:(0 < y)%Z(0 <= x mod y)%Zx, y:ZHy:(0 < y)%Z(0 <= / IZR y)%Rx, y:ZHy:(0 < y)%Z(IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZHy:(0 < y)%Z(y > 0)%Zx, y:ZHy:(0 < y)%Z(0 <= / IZR y)%Rx, y:ZHy:(0 < y)%Z(IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZHy:(0 < y)%Z(0 <= / IZR y)%Rx, y:ZHy:(0 < y)%Z(IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZHy:(0 < y)%Z(0 < / IZR y)%Rx, y:ZHy:(0 < y)%Z(IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZHy:(0 < y)%Z(0 < IZR y)%Rx, y:ZHy:(0 < y)%Z(IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZHy:(0 < y)%Z(IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZHy:(0 < y)%Z(0 < IZR y)%Rx, y:ZHy:(0 < y)%Z(IZR (x mod y) * / IZR y * IZR y < 1 * IZR y)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZHy:(0 < y)%Z(IZR (x mod y) * / IZR y * IZR y < 1 * IZR y)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZHy:(0 < y)%Z(IZR (x mod y) < IZR y)%Rx, y:ZHy:(0 < y)%ZIZR y <> 0%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZHy:(0 < y)%Z(x mod y < y)%Zx, y:ZHy:(0 < y)%ZIZR y <> 0%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZHy:(0 < y)%Z(y > 0)%Zx, y:ZHy:(0 < y)%ZIZR y <> 0%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZHy:(0 < y)%ZIZR y <> 0%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZHy:(0 < y)%Z(IZR y > 0)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%R(* . *)x, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%R(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%RHy:(y < 0)%Z(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%RHy:(0 <= y)%Z(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%RHy:(y < 0)%Z(0 <= - IZR (x mod y) * - / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%RHy:(0 <= y)%Z(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%RHy:(y < 0)%Z(0 <= - IZR (x mod y) * / - IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%RHy:(0 <= y)%Z(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%RHy:(y < 0)%Z(0 <= IZR (- (x mod y)) * / IZR (- y) < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%RHy:(0 <= y)%Z(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%RHy:(y < 0)%Z(0 <= IZR (- x mod - y) * / IZR (- y) < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%RHy:(0 <= y)%Z(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%RHy:(y < 0)%Z(0 < - y)%Zx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%RHy:(0 <= y)%Z(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Ry:ZHy:(y < 0)%Z(0 < - y)%Zx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%RHy:(0 <= y)%Z(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%RHy:(0 <= y)%Z(0 <= IZR (x mod y) * / IZR y < 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:forall x' y' : Z, (0 < y')%Z -> (0 <= IZR (x' mod y') * / IZR y' < 1)%RHy:(0 <= y)%Z(0 < y)%Zx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Ry:ZZy:y <> 0%ZHy:(0 <= y)%Z(0 < y)%Zx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%R(* *)x, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) <= IZR (x / y) + IZR (x mod y) * / IZR y)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) + 0 <= IZR (x / y) + IZR (x mod y) * / IZR y)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(0 <= IZR (x mod y) * / IZR y)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rx, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x / y) + IZR (x mod y) * / IZR y < IZR (x / y) + 1)%Rapply H. Qed. End Zdiv_Rdiv. Section pow. Variable r : radix.x, y:ZZy:y <> 0%ZHx:x = (y * (x / y) + x mod y)%ZZy':IZR y <> 0%RH:(0 <= IZR (x mod y) * / IZR y < 1)%R(IZR (x mod y) * / IZR y < 1)%Rr:radix(0 < IZR r)%Rr:radix(0 < IZR r)%Rr:radixv:ZHr:(2 <=? v)%Z = true(0 < IZR {| radix_val := v; radix_prop := Hr |})%Rr:radixv:ZHr:(2 <=? v)%Z = true(0 < IZR v)%Rr:radixv:ZHr:(2 <=? v)%Z = true(0 < v)%Zr:radixv:ZHr:(2 <=? v)%Z = true(0 < 2)%Zr:radixv:ZHr:(2 <=? v)%Z = true(2 <= v)%Znow apply Zle_bool_imp_le. Qed.r:radixv:ZHr:(2 <=? v)%Z = true(2 <= v)%Z
Well-used function called bpow for computing the power function β^e
Definition bpow e := match e with | Zpos p => IZR (Zpower_pos r p) | Zneg p => Rinv (IZR (Zpower_pos r p)) | Z0 => 1%R end.r:radixforall (n : Z) (m : positive), IZR (Z.pow_pos n m) = powerRZ (IZR n) (Z.pos m)r:radixforall (n : Z) (m : positive), IZR (Z.pow_pos n m) = powerRZ (IZR n) (Z.pos m)r:radixn:Zm:positiveIZR (Z.pow_pos n m) = powerRZ (IZR n) (Z.pos m)r:radixn:Zm:positiveIZR (Zpower_nat n (Pos.to_nat m)) = powerRZ (IZR n) (Z.pos m)r:radixn:Zm:positiveIZR (Zpower_nat n (Pos.to_nat m)) = (IZR n ^ Pos.to_nat m)%Rr:radixn:Zm:positiveIZR (Zpower_nat n 0) = (IZR n ^ 0)%Rr:radixn:Zm:positiven0:natIHn0:IZR (Zpower_nat n n0) = (IZR n ^ n0)%RIZR (Zpower_nat n (S n0)) = (IZR n ^ S n0)%Rr:radixn:Zm:positiven0:natIHn0:IZR (Zpower_nat n n0) = (IZR n ^ n0)%RIZR (Zpower_nat n (S n0)) = (IZR n ^ S n0)%Rr:radixn:Zm:positiven0:natIHn0:IZR (Zpower_nat n n0) = (IZR n ^ n0)%RIZR (nat_rect (fun _ : nat => Z) 1%Z (fun _ : nat => Z.mul n) (S n0)) = (IZR n ^ S n0)%Rr:radixn:Zm:positiven0:natIHn0:IZR (Zpower_nat n n0) = (IZR n ^ n0)%RIZR (n * nat_rect (fun _ : nat => Z) 1%Z (fun _ : nat => Z.mul n) n0) = (IZR n * IZR n ^ n0)%Rr:radixn:Zm:positiven0:natIHn0:IZR (Zpower_nat n n0) = (IZR n ^ n0)%R(IZR n * IZR (nat_rect (fun _ : nat => Z) 1%Z (fun _ : nat => Z.mul n) n0))%R = (IZR n * IZR n ^ n0)%Rexact IHn0. Qed.r:radixn:Zm:positiven0:natIHn0:IZR (Zpower_nat n n0) = (IZR n ^ n0)%RIZR (nat_rect (fun _ : nat => Z) 1%Z (fun _ : nat => Z.mul n) n0) = (IZR n ^ n0)%Rr:radixforall e : Z, bpow e = powerRZ (IZR r) er:radixforall e : Z, bpow e = powerRZ (IZR r) er:radix1%R = powerRZ (IZR r) 0r:radixp:positiveIZR (Z.pow_pos r p) = powerRZ (IZR r) (Z.pos p)r:radixp:positive(/ IZR (Z.pow_pos r p))%R = powerRZ (IZR r) (Z.neg p)r:radixp:positiveIZR (Z.pow_pos r p) = powerRZ (IZR r) (Z.pos p)r:radixp:positive(/ IZR (Z.pow_pos r p))%R = powerRZ (IZR r) (Z.neg p)now rewrite IZR_Zpower_pos. Qed.r:radixp:positive(/ IZR (Z.pow_pos r p))%R = powerRZ (IZR r) (Z.neg p)r:radixforall e : Z, (0 <= bpow e)%Rr:radixforall e : Z, (0 <= bpow e)%Rr:radixe:Z(0 <= bpow e)%Rr:radixe:Z(0 <= powerRZ (IZR r) e)%Rapply radix_pos. Qed.r:radixe:Z(0 < IZR r)%Rr:radixforall e : Z, (0 < bpow e)%Rr:radixforall e : Z, (0 < bpow e)%Rr:radixe:Z(0 < bpow e)%Rr:radixe:Z(0 < powerRZ (IZR r) e)%Rapply radix_pos. Qed.r:radixe:Z(0 < IZR r)%Rr:radixforall e1 e2 : Z, bpow (e1 + e2) = (bpow e1 * bpow e2)%Rr:radixforall e1 e2 : Z, bpow (e1 + e2) = (bpow e1 * bpow e2)%Rr:radixe1, e2:Zbpow (e1 + e2) = (bpow e1 * bpow e2)%Rr:radixe1, e2:ZpowerRZ (IZR r) (e1 + e2) = (powerRZ (IZR r) e1 * powerRZ (IZR r) e2)%Rr:radixe1, e2:ZIZR r <> 0%Rapply radix_pos. Qed.r:radixe1, e2:Z(IZR r > 0)%Rr:radixbpow 1 = IZR rr:radixbpow 1 = IZR rr:radixIZR (Pos.iter (Z.mul r) 1%Z 1) = IZR rnow rewrite Zmult_1_r. Qed.r:radixIZR (r * 1) = IZR rr:radixforall e : Z, bpow (e + 1) = (IZR r * bpow e)%Rr:radixforall e : Z, bpow (e + 1) = (IZR r * bpow e)%Rr:radixe:Zbpow (e + 1) = (IZR r * bpow e)%Rr:radixe:Zbpow (e + 1) = (bpow 1 * bpow e)%Rnow rewrite Zplus_comm. Qed.r:radixe:Zbpow (e + 1) = bpow (1 + e)r:radixforall e : Z, bpow (- e) = (/ bpow e)%Rr:radixforall e : Z, bpow (- e) = (/ bpow e)%Rr:radixbpow (- 0) = (/ bpow 0)%Rr:radixp:positivebpow (- Z.pos p) = (/ bpow (Z.pos p))%Rr:radixp:positivebpow (- Z.neg p) = (/ bpow (Z.neg p))%Rr:radixp:positivebpow (- Z.pos p) = (/ bpow (Z.pos p))%Rr:radixp:positivebpow (- Z.neg p) = (/ bpow (Z.neg p))%Rr:radixp:positivebpow (- Z.neg p) = (/ bpow (Z.neg p))%Rr:radixp:positivebpow (Z.pos p) = (/ bpow (Z.neg p))%Rr:radixp:positiveIZR (Z.pow_pos r p) <> 0%Rapply (bpow_gt_0 (Zpos p)). Qed.r:radixp:positive(IZR (Z.pow_pos r p) > 0)%Rr:radixforall e : nat, IZR (Zpower_nat r e) = bpow (Z.of_nat e)r:radixforall e : nat, IZR (Zpower_nat r e) = bpow (Z.of_nat e)r:radixIZR (Zpower_nat r 0) = bpow (Z.of_nat 0)r:radixe:natIZR (Zpower_nat r (S e)) = bpow (Z.of_nat (S e))r:radixe:natIZR (Zpower_nat r (S e)) = bpow (Z.of_nat (S e))r:radixe:natIZR (Zpower_nat r (Pos.to_nat (Pos.of_succ_nat e))) = bpow (Z.of_nat (Pos.to_nat (Pos.of_succ_nat e)))now rewrite <- Zpos_eq_Z_of_nat_o_nat_of_P. Qed.r:radixe:natIZR (Z.pow_pos r (Pos.of_succ_nat e)) = bpow (Z.of_nat (Pos.to_nat (Pos.of_succ_nat e)))r:radixforall e : Z, (0 <= e)%Z -> IZR (r ^ e) = bpow er:radixforall e : Z, (0 <= e)%Z -> IZR (r ^ e) = bpow er:radixH:(0 <= 0)%ZIZR (r ^ 0) = bpow 0r:radixe:positiveH:(0 <= Z.pos e)%ZIZR (r ^ Z.pos e) = bpow (Z.pos e)r:radixe:positiveH:(0 <= Z.neg e)%ZIZR (r ^ Z.neg e) = bpow (Z.neg e)r:radixe:positiveH:(0 <= Z.pos e)%ZIZR (r ^ Z.pos e) = bpow (Z.pos e)r:radixe:positiveH:(0 <= Z.neg e)%ZIZR (r ^ Z.neg e) = bpow (Z.neg e)now elim H. Qed.r:radixe:positiveH:(0 <= Z.neg e)%ZIZR (r ^ Z.neg e) = bpow (Z.neg e)r:radixforall e1 e2 : Z, (e1 < e2)%Z -> (bpow e1 < bpow e2)%Rr:radixforall e1 e2 : Z, (e1 < e2)%Z -> (bpow e1 < bpow e2)%Rr:radixe1, e2:ZH:(e1 < e2)%Z(bpow e1 < bpow e2)%Rr:radixe1, e2:ZH:(e1 < e2)%Z(bpow e1 < bpow (e1 + (e2 - e1)))%Rr:radixe1, e2:ZH:(e1 < e2)%Z(bpow e1 * 1 < bpow (e1 + (e2 - e1)))%Rr:radixe1, e2:ZH:(e1 < e2)%Z(bpow e1 * 1 < bpow e1 * bpow (e2 - e1))%Rr:radixe1, e2:ZH:(e1 < e2)%Z(0 < bpow e1)%Rr:radixe1, e2:ZH:(e1 < e2)%Z(1 < bpow (e2 - e1))%Rr:radixe1, e2:ZH:(e1 < e2)%Z(1 < bpow (e2 - e1))%Rr:radixe1, e2:ZH:(e1 < e2)%ZH0:(0 < e2 - e1)%Z(1 < bpow (e2 - e1))%Rr:radixe1, e2:ZH:(e1 < e2)%Zp:positiveH0:(0 < Z.pos p)%Z(1 < bpow (Z.pos p))%Rr:radixp:positive(1 < bpow (Z.pos p))%Rr:radixp:positive(1 < IZR (r ^ Z.pos p))%Rnow apply Zpower_gt_1. Qed.r:radixp:positive(1 < r ^ Z.pos p)%Zr:radixforall e1 e2 : Z, (bpow e1 < bpow e2)%R -> (e1 < e2)%Zr:radixforall e1 e2 : Z, (bpow e1 < bpow e2)%R -> (e1 < e2)%Zr:radixe1, e2:ZH:(bpow e1 < bpow e2)%R(e1 < e2)%Zr:radixe1, e2:ZH:(bpow e1 < bpow e2)%R(e2 > e1)%Zr:radixe1, e2:ZH:(bpow e1 < bpow e2)%R~ (e2 <= e1)%Zr:radixe1, e2:ZH:(bpow e1 < bpow e2)%RH':(e2 <= e1)%ZFalser:radixe1, e2:ZH:(bpow e1 < bpow e2)%RH':(e2 <= e1)%Z(bpow e2 <= bpow e1)%Rr:radixe1, e2:ZH:(bpow e1 < bpow e2)%RH':(e2 <= e1)%ZH0:(e2 < e1)%Z(bpow e2 <= bpow e1)%Rr:radixe1, e2:ZH:(bpow e1 < bpow e2)%RH':(e2 <= e1)%ZH0:e2 = e1(bpow e2 <= bpow e1)%Rr:radixe1, e2:ZH:(bpow e1 < bpow e2)%RH':(e2 <= e1)%ZH0:(e2 < e1)%Z(bpow e2 < bpow e1)%Rr:radixe1, e2:ZH:(bpow e1 < bpow e2)%RH':(e2 <= e1)%ZH0:e2 = e1(bpow e2 <= bpow e1)%Rr:radixe1, e2:ZH:(bpow e1 < bpow e2)%RH':(e2 <= e1)%ZH0:e2 = e1(bpow e2 <= bpow e1)%Rapply Rle_refl. Qed.r:radixe1, e2:ZH:(bpow e1 < bpow e2)%RH':(e2 <= e1)%ZH0:e2 = e1(bpow e1 <= bpow e1)%Rr:radixforall e1 e2 : Z, (e1 <= e2)%Z -> (bpow e1 <= bpow e2)%Rr:radixforall e1 e2 : Z, (e1 <= e2)%Z -> (bpow e1 <= bpow e2)%Rr:radixe1, e2:ZH:(e1 <= e2)%Z(bpow e1 <= bpow e2)%Rr:radixe1, e2:ZH:(e1 <= e2)%Z~ (bpow e2 < bpow e1)%Rr:radixe1, e2:ZH:(e1 <= e2)%ZH':(bpow e2 < bpow e1)%RFalser:radixe1, e2:ZH:(e1 <= e2)%ZH':(bpow e2 < bpow e1)%R(e1 > e2)%Znow apply lt_bpow. Qed.r:radixe1, e2:ZH:(e1 <= e2)%ZH':(bpow e2 < bpow e1)%R(e2 < e1)%Zr:radixforall e1 e2 : Z, (bpow e1 <= bpow e2)%R -> (e1 <= e2)%Zr:radixforall e1 e2 : Z, (bpow e1 <= bpow e2)%R -> (e1 <= e2)%Zr:radixe1, e2:ZH:(bpow e1 <= bpow e2)%R(e1 <= e2)%Zr:radixe1, e2:ZH:(bpow e1 <= bpow e2)%R~ (e1 > e2)%Zr:radixe1, e2:ZH:(bpow e1 <= bpow e2)%RH':(e1 > e2)%ZFalser:radixe1, e2:ZH:(bpow e1 <= bpow e2)%RH':(e1 > e2)%Z(bpow e2 < bpow e1)%Rnow apply Z.gt_lt. Qed.r:radixe1, e2:ZH:(bpow e1 <= bpow e2)%RH':(e1 > e2)%Z(e2 < e1)%Zr:radixforall e1 e2 : Z, bpow e1 = bpow e2 -> e1 = e2r:radixforall e1 e2 : Z, bpow e1 = bpow e2 -> e1 = e2r:radixe1, e2:ZH:bpow e1 = bpow e2e1 = e2r:radixe1, e2:ZH:bpow e1 = bpow e2(e1 <= e2)%Zr:radixe1, e2:ZH:bpow e1 = bpow e2(e2 <= e1)%Zr:radixe1, e2:ZH:bpow e1 = bpow e2(bpow e1 <= bpow e2)%Rr:radixe1, e2:ZH:bpow e1 = bpow e2(e2 <= e1)%Zr:radixe1, e2:ZH:bpow e1 = bpow e2(e2 <= e1)%Znow apply Req_le. Qed.r:radixe1, e2:ZH:bpow e1 = bpow e2(bpow e2 <= bpow e1)%Rr:radixforall e : Z, bpow e = exp (IZR e * ln (IZR r))(* positive case *)r:radixforall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixforall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))r:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixe:positivebpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))r:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixe:positiveIZR (Z.pow_pos r e) = exp (IZR (Z.pos e) * ln (IZR r))r:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixe:positiveIZR (Zpower_nat r (Pos.to_nat e)) = exp (IZR (Z.pos e) * ln (IZR r))r:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixe:positiveIZR (Zpower_nat r (Pos.to_nat e)) = exp (IZR (Z.of_nat (Pos.to_nat e)) * ln (IZR r))r:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixe:positiveIZR (Zpower_nat r (Pos.to_nat e)) = exp (INR (Pos.to_nat e) * ln (IZR r))r:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixe:positiveIZR (Zpower_nat r 0) = exp (INR 0 * ln (IZR r))r:radixe:positiven:natIHn:IZR (Zpower_nat r n) = exp (INR n * ln (IZR r))IZR (Zpower_nat r (S n)) = exp (INR (S n) * ln (IZR r))r:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixe:positiveIZR (Zpower_nat r 0) = exp 0r:radixe:positiven:natIHn:IZR (Zpower_nat r n) = exp (INR n * ln (IZR r))IZR (Zpower_nat r (S n)) = exp (INR (S n) * ln (IZR r))r:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixe:positiven:natIHn:IZR (Zpower_nat r n) = exp (INR n * ln (IZR r))IZR (Zpower_nat r (S n)) = exp (INR (S n) * ln (IZR r))r:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixe:positiven:natIHn:IZR (Zpower_nat r n) = exp (INR n * ln (IZR r))IZR (r * Zpower_nat r n) = exp (INR (S n) * ln (IZR r))r:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixe:positiven:natIHn:IZR (Zpower_nat r n) = exp (INR n * ln (IZR r))IZR (r * Zpower_nat r n) = exp ((INR n + 1) * ln (IZR r))r:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixe:positiven:natIHn:IZR (Zpower_nat r n) = exp (INR n * ln (IZR r))IZR (r * Zpower_nat r n) = exp (INR n * ln (IZR r) + 1 * ln (IZR r))r:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixe:positiven:natIHn:IZR (Zpower_nat r n) = exp (INR n * ln (IZR r))IZR (r * Zpower_nat r n) = (exp (INR n * ln (IZR r)) * exp (1 * ln (IZR r)))%Rr:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixe:positiven:natIHn:IZR (Zpower_nat r n) = exp (INR n * ln (IZR r))IZR (r * Zpower_nat r n) = (exp (INR n * ln (IZR r)) * exp (ln (IZR r)))%Rr:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixe:positiven:natIHn:IZR (Zpower_nat r n) = exp (INR n * ln (IZR r))IZR (r * Zpower_nat r n) = (exp (INR n * ln (IZR r)) * IZR r)%Rr:radixe:positiven:natIHn:IZR (Zpower_nat r n) = exp (INR n * ln (IZR r))(0 < IZR r)%Rr:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixe:positiven:natIHn:IZR (Zpower_nat r n) = exp (INR n * ln (IZR r))IZR (r * Zpower_nat r n) = (IZR (Zpower_nat r n) * IZR r)%Rr:radixe:positiven:natIHn:IZR (Zpower_nat r n) = exp (INR n * ln (IZR r))(0 < IZR r)%Rr:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixe:positiven:natIHn:IZR (Zpower_nat r n) = exp (INR n * ln (IZR r))IZR (r * Zpower_nat r n) = IZR (Zpower_nat r n * r)r:radixe:positiven:natIHn:IZR (Zpower_nat r n) = exp (INR n * ln (IZR r))(0 < IZR r)%Rr:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixe:positiven:natIHn:IZR (Zpower_nat r n) = exp (INR n * ln (IZR r))(0 < IZR r)%Rr:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))(* general case *)r:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))forall e : Z, bpow e = exp (IZR e * ln (IZR r))r:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))bpow 0 = exp (0 * ln (IZR r))r:radixH:forall e0 : positive, bpow (Z.pos e0) = exp (IZR (Z.pos e0) * ln (IZR r))e:positivebpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))r:radixH:forall e0 : positive, bpow (Z.pos e0) = exp (IZR (Z.pos e0) * ln (IZR r))e:positivebpow (Z.neg e) = exp (IZR (Z.neg e) * ln (IZR r))r:radixH:forall e : positive, bpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))bpow 0 = exp 0r:radixH:forall e0 : positive, bpow (Z.pos e0) = exp (IZR (Z.pos e0) * ln (IZR r))e:positivebpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))r:radixH:forall e0 : positive, bpow (Z.pos e0) = exp (IZR (Z.pos e0) * ln (IZR r))e:positivebpow (Z.neg e) = exp (IZR (Z.neg e) * ln (IZR r))r:radixH:forall e0 : positive, bpow (Z.pos e0) = exp (IZR (Z.pos e0) * ln (IZR r))e:positivebpow (Z.pos e) = exp (IZR (Z.pos e) * ln (IZR r))r:radixH:forall e0 : positive, bpow (Z.pos e0) = exp (IZR (Z.pos e0) * ln (IZR r))e:positivebpow (Z.neg e) = exp (IZR (Z.neg e) * ln (IZR r))r:radixH:forall e0 : positive, bpow (Z.pos e0) = exp (IZR (Z.pos e0) * ln (IZR r))e:positivebpow (Z.neg e) = exp (IZR (Z.neg e) * ln (IZR r))r:radixH:forall e0 : positive, bpow (Z.pos e0) = exp (IZR (Z.pos e0) * ln (IZR r))e:positive(/ IZR (Z.pow_pos r e))%R = exp (IZR (Z.neg e) * ln (IZR r))r:radixH:forall e0 : positive, bpow (Z.pos e0) = exp (IZR (Z.pos e0) * ln (IZR r))e:positive(/ bpow (Z.pos e))%R = exp (IZR (Z.neg e) * ln (IZR r))r:radixH:forall e0 : positive, bpow (Z.pos e0) = exp (IZR (Z.pos e0) * ln (IZR r))e:positive(/ exp (IZR (Z.pos e) * ln (IZR r)))%R = exp (IZR (Z.neg e) * ln (IZR r))r:radixH:forall e0 : positive, bpow (Z.pos e0) = exp (IZR (Z.pos e0) * ln (IZR r))e:positiveexp (- (IZR (Z.pos e) * ln (IZR r))) = exp (IZR (Z.neg e) * ln (IZR r))now rewrite <- opp_IZR. Qed.r:radixH:forall e0 : positive, bpow (Z.pos e0) = exp (IZR (Z.pos e0) * ln (IZR r))e:positiveexp (- IZR (Z.pos e) * ln (IZR r)) = exp (IZR (Z.neg e) * ln (IZR r))r:radixforall e : Z, sqrt (bpow (2 * e)) = bpow er:radixforall e : Z, sqrt (bpow (2 * e)) = bpow er:radixe:Zsqrt (bpow (2 * e)) = bpow eapply sqrt_square, bpow_ge_0. Qed.r:radixe:Zsqrt (bpow e * bpow e) = bpow er:radixforall e : Z, (bpow (e / 2) <= sqrt (bpow e))%Rr:radixforall e : Z, (bpow (e / 2) <= sqrt (bpow e))%Rr:radixe:Z(bpow (e / 2) <= sqrt (bpow e))%Rr:radixe:Z(sqrt (bpow (e / 2) * bpow (e / 2)) <= sqrt (bpow e))%Rnow replace (_ + _)%Z with (2 * (e / 2))%Z by ring; apply Z_mult_div_ge. Qed.r:radixe:Z(e / 2 + e / 2 <= e)%Z
Another well-used function for having the magnitude of a real number x to the base β
Record mag_prop x := { mag_val :> Z ; _ : (x <> 0)%R -> (bpow (mag_val - 1)%Z <= Rabs x < bpow mag_val)%R }.r:radixforall x : R, mag_prop xr:radixforall x : R, mag_prop xr:radixx:Rmag_prop x(* . *)r:radixx:Rfact:=ln (IZR r):Rmag_prop xr:radixx:Rfact:=ln (IZR r):R(0 < fact)%Rr:radixx:Rfact:=ln (IZR r):RH:(0 < fact)%Rmag_prop xr:radixx:Rfact:=ln (IZR r):R(exp 0 < exp fact)%Rr:radixx:Rfact:=ln (IZR r):RH:(0 < fact)%Rmag_prop xr:radixx:Rfact:=ln (IZR r):R(1 < exp fact)%Rr:radixx:Rfact:=ln (IZR r):RH:(0 < fact)%Rmag_prop xr:radixx:Rfact:=ln (IZR r):R(1 < exp (ln (IZR r)))%Rr:radixx:Rfact:=ln (IZR r):RH:(0 < fact)%Rmag_prop xr:radixx:Rfact:=ln (IZR r):R(1 < IZR r)%Rr:radixx:Rfact:=ln (IZR r):R(0 < IZR r)%Rr:radixx:Rfact:=ln (IZR r):RH:(0 < fact)%Rmag_prop xr:radixx:Rfact:=ln (IZR r):R(1 < r)%Zr:radixx:Rfact:=ln (IZR r):R(0 < IZR r)%Rr:radixx:Rfact:=ln (IZR r):RH:(0 < fact)%Rmag_prop xr:radixx:Rfact:=ln (IZR r):R(0 < IZR r)%Rr:radixx:Rfact:=ln (IZR r):RH:(0 < fact)%Rmag_prop x(* . *)r:radixx:Rfact:=ln (IZR r):RH:(0 < fact)%Rmag_prop xr:radixx:Rfact:=ln (IZR r):RH:(0 < fact)%Rx <> 0%R -> (bpow (Zfloor (ln (Rabs x) / fact) + 1 - 1) <= Rabs x < bpow (Zfloor (ln (Rabs x) / fact) + 1))%Rr:radixx:Rfact:=ln (IZR r):RH:(0 < fact)%RHx':x <> 0%R(bpow (Zfloor (ln (Rabs x) / fact) + 1 - 1) <= Rabs x < bpow (Zfloor (ln (Rabs x) / fact) + 1))%Rr:radixx:Rfact:=ln (IZR r):RH:(0 < fact)%RHx':x <> 0%R(0 < Rabs x)%R -> (bpow (Zfloor (ln (Rabs x) / fact) + 1 - 1) <= Rabs x < bpow (Zfloor (ln (Rabs x) / fact) + 1))%Rr:radixx:Rfact:=ln (IZR r):RH:(0 < fact)%R(0 < Rabs x)%R -> (bpow (Zfloor (ln (Rabs x) / fact) + 1 - 1) <= Rabs x < bpow (Zfloor (ln (Rabs x) / fact) + 1))%Rr:radixx:Rfact:=ln (IZR r):RH:(0 < fact)%Rforall r0 : R, (0 < r0)%R -> (bpow (Zfloor (ln r0 / fact) + 1 - 1) <= r0 < bpow (Zfloor (ln r0 / fact) + 1))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rforall r0 : R, (0 < r0)%R -> (bpow (Zfloor (ln r0 / fact) + 1 - 1) <= r0 < bpow (Zfloor (ln r0 / fact) + 1))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(bpow (Zfloor (ln x / fact) + 1 - 1) <= x < bpow (Zfloor (ln x / fact) + 1))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(exp (IZR (Zfloor (ln x / fact) + 1 - 1) * ln (IZR r)) <= x < exp (IZR (Zfloor (ln x / fact) + 1) * ln (IZR r)))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(exp (IZR (Zfloor (ln x / fact) + 1 - 1) * fact) <= x < exp (IZR (Zfloor (ln x / fact) + 1) * fact))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(exp (IZR (Zfloor (ln x / fact) + 1 - 1) * fact) <= exp (ln x * / fact * fact) < exp (IZR (Zfloor (ln x / fact) + 1) * fact))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * / fact * fact) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(exp (IZR (Zfloor (ln x / fact) + 1 - 1) * fact) <= exp (ln x * / fact * fact))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(exp (ln x * / fact * fact) < exp (IZR (Zfloor (ln x / fact) + 1) * fact))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * / fact * fact) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(exp ((IZR (Zfloor (ln x / fact) + 1) - 1) * fact) <= exp (ln x * / fact * fact))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(exp (ln x * / fact * fact) < exp (IZR (Zfloor (ln x / fact) + 1) * fact))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * / fact * fact) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R((IZR (Zfloor (ln x / fact) + 1) - 1) * fact <= ln x * / fact * fact)%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(exp (ln x * / fact * fact) < exp (IZR (Zfloor (ln x / fact) + 1) * fact))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * / fact * fact) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(0 <= fact)%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(IZR (Zfloor (ln x / fact) + 1) - 1 <= ln x * / fact)%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(exp (ln x * / fact * fact) < exp (IZR (Zfloor (ln x / fact) + 1) * fact))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * / fact * fact) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(IZR (Zfloor (ln x / fact) + 1) - 1 <= ln x * / fact)%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(exp (ln x * / fact * fact) < exp (IZR (Zfloor (ln x / fact) + 1) * fact))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * / fact * fact) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(IZR (Zfloor (ln x / fact) + 1) + - (1) <= ln x * / fact)%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(exp (ln x * / fact * fact) < exp (IZR (Zfloor (ln x / fact) + 1) * fact))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * / fact * fact) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(IZR (Zfloor (ln x / fact)) + 1 + - (1) <= ln x * / fact)%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(exp (ln x * / fact * fact) < exp (IZR (Zfloor (ln x / fact) + 1) * fact))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * / fact * fact) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(IZR (Zfloor (ln x / fact)) + (1 + - (1)) <= ln x * / fact)%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(exp (ln x * / fact * fact) < exp (IZR (Zfloor (ln x / fact) + 1) * fact))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * / fact * fact) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(IZR (Zfloor (ln x / fact)) <= ln x * / fact)%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(exp (ln x * / fact * fact) < exp (IZR (Zfloor (ln x / fact) + 1) * fact))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * / fact * fact) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(exp (ln x * / fact * fact) < exp (IZR (Zfloor (ln x / fact) + 1) * fact))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * / fact * fact) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(ln x * / fact * fact < IZR (Zfloor (ln x / fact) + 1) * fact)%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * / fact * fact) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(0 < fact)%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(ln x * / fact < IZR (Zfloor (ln x / fact) + 1))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * / fact * fact) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(ln x * / fact < IZR (Zfloor (ln x / fact) + 1))%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * / fact * fact) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%R(ln x * / fact < IZR (Zfloor (ln x / fact)) + 1)%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * / fact * fact) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * / fact * fact) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * (/ fact * fact)) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x * 1) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rfact <> 0%Rr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rexp (ln x) = xr:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rfact <> 0%Rnow apply Rgt_not_eq. Qed.r:radixfact:=ln (IZR r):RH:(0 < fact)%Rx:RHx:(0 < x)%Rfact <> 0%Rr:radixforall e1 e2 : Z, (bpow (e1 - 1) < bpow e2)%R -> (e1 <= e2)%Zr:radixforall e1 e2 : Z, (bpow (e1 - 1) < bpow e2)%R -> (e1 <= e2)%Zr:radixe1, e2:ZHe:(bpow (e1 - 1) < bpow e2)%R(e1 <= e2)%Zr:radixe1, e2:ZHe:(bpow (e1 - 1) < bpow e2)%R(Z.succ (Z.pred e1) <= e2)%Znow apply lt_bpow. Qed.r:radixe1, e2:ZHe:(bpow (e1 - 1) < bpow e2)%R(Z.pred e1 < e2)%Zr:radixforall (x : R) (e1 e2 : Z), (bpow (e1 - 1) <= x < bpow e1)%R -> (bpow (e2 - 1) <= x < bpow e2)%R -> e1 = e2r:radixforall (x : R) (e1 e2 : Z), (bpow (e1 - 1) <= x < bpow e1)%R -> (bpow (e2 - 1) <= x < bpow e2)%R -> e1 = e2apply Zle_antisym ; apply bpow_lt_bpow ; apply Rle_lt_trans with x ; assumption. Qed.r:radixx:Re1, e2:ZH1a:(bpow (e1 - 1) <= x)%RH1b:(x < bpow e1)%RH2a:(bpow (e2 - 1) <= x)%RH2b:(x < bpow e2)%Re1 = e2r:radixforall (x : R) (e : Z), (bpow (e - 1) <= Rabs x < bpow e)%R -> mag x = er:radixforall (x : R) (e : Z), (bpow (e - 1) <= Rabs x < bpow e)%R -> mag x = er:radixx:Re1:ZHe:(bpow (e1 - 1) <= Rabs x < bpow e1)%Rmag x = e1r:radixx:Re1:ZHe:(bpow (e1 - 1) <= Rabs x < bpow e1)%RHx:x = 0%Rmag x = e1r:radixx:Re1:ZHe:(bpow (e1 - 1) <= Rabs x < bpow e1)%RHx:x <> 0%Rmag x = e1r:radixx:Re1:ZHe:(bpow (e1 - 1) <= Rabs x < bpow e1)%RHx:x = 0%R(Rabs x < bpow (e1 - 1))%Rr:radixx:Re1:ZHe:(bpow (e1 - 1) <= Rabs x < bpow e1)%RHx:x <> 0%Rmag x = e1r:radixx:Re1:ZHe:(bpow (e1 - 1) <= Rabs x < bpow e1)%RHx:x = 0%R(0 < bpow (e1 - 1))%Rr:radixx:Re1:ZHe:(bpow (e1 - 1) <= Rabs x < bpow e1)%RHx:x <> 0%Rmag x = e1r:radixx:Re1:ZHe:(bpow (e1 - 1) <= Rabs x < bpow e1)%RHx:x <> 0%Rmag x = e1r:radixx:Re1:ZHe:(bpow (e1 - 1) <= Rabs x < bpow e1)%RHx:x <> 0%Re2:ZHx2:x <> 0%R -> (bpow (e2 - 1) <= Rabs x < bpow e2)%RBuild_mag_prop x e2 Hx2 = e1r:radixx:Re1:ZHe:(bpow (e1 - 1) <= Rabs x < bpow e1)%RHx:x <> 0%Re2:ZHx2:x <> 0%R -> (bpow (e2 - 1) <= Rabs x < bpow e2)%Re2 = e1now apply Hx2. Qed.r:radixx:Re1:ZHe:(bpow (e1 - 1) <= Rabs x < bpow e1)%RHx:x <> 0%Re2:ZHx2:x <> 0%R -> (bpow (e2 - 1) <= Rabs x < bpow e2)%R(bpow (e2 - 1) <= Rabs x < bpow e2)%Rr:radixforall x : R, mag (- x) = mag xr:radixforall x : R, mag (- x) = mag xr:radixx:Rmag (- x) = mag xr:radixx:RHx:x = 0%Rmag (- x) = mag xr:radixx:RHx:x <> 0%Rmag (- x) = mag xr:radixx:RHx:x <> 0%Rmag (- x) = mag xr:radixx:RHx:x <> 0%Re:ZHe:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%Rmag (- x) = Build_mag_prop x e Her:radixx:RHx:x <> 0%Re:ZHe:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%Rmag (- x) = er:radixx:RHx:x <> 0%Re:ZHe:(bpow (e - 1) <= Rabs x < bpow e)%Rmag (- x) = enow rewrite Rabs_Ropp. Qed.r:radixx:RHx:x <> 0%Re:ZHe:(bpow (e - 1) <= Rabs x < bpow e)%R(bpow (e - 1) <= Rabs (- x) < bpow e)%Rr:radixforall x : R, mag (Rabs x) = mag xr:radixforall x : R, mag (Rabs x) = mag xr:radixx:Rmag (Rabs x) = mag xr:radixx:Rmag (if Rcase_abs x then (- x)%R else x) = mag xr:radixx:Rmag (- x) = mag xr:radixx:Rmag x = mag xapply refl_equal. Qed.r:radixx:Rmag x = mag xr:radixforall (x : R) (e : Z), (bpow (e - 1) <= x < bpow e)%R -> mag x = er:radixforall (x : R) (e : Z), (bpow (e - 1) <= x < bpow e)%R -> mag x = er:radixx:Re1:ZHe1:(bpow (e1 - 1) <= x < bpow e1)%Rmag x = e1r:radixx:Re1:ZHe1:(bpow (e1 - 1) <= x < bpow e1)%Rmag (Rabs x) = e1r:radixx:Re1:ZHe1:(bpow (e1 - 1) <= x < bpow e1)%R(bpow (e1 - 1) <= Rabs (Rabs x) < bpow e1)%Rr:radixx:Re1:ZHe1:(bpow (e1 - 1) <= x < bpow e1)%R(bpow (e1 - 1) <= x < bpow e1)%Rr:radixx:Re1:ZHe1:(bpow (e1 - 1) <= x < bpow e1)%R(0 <= x)%Rr:radixx:Re1:ZHe1:(bpow (e1 - 1) <= x < bpow e1)%R(0 <= Rabs x)%Rr:radixx:Re1:ZHe1:(bpow (e1 - 1) <= x < bpow e1)%R(0 <= x)%Rr:radixx:Re1:ZHe1:(bpow (e1 - 1) <= x < bpow e1)%R(0 <= Rabs x)%Rr:radixx:Re1:ZHe1:(bpow (e1 - 1) <= x < bpow e1)%R(0 <= bpow (e1 - 1))%Rr:radixx:Re1:ZHe1:(bpow (e1 - 1) <= x < bpow e1)%R(0 <= Rabs x)%Rapply Rabs_pos. Qed.r:radixx:Re1:ZHe1:(bpow (e1 - 1) <= x < bpow e1)%R(0 <= Rabs x)%Rr:radixforall x y : R, x <> 0%R -> (Rabs x <= Rabs y)%R -> (mag x <= mag y)%Zr:radixforall x y : R, x <> 0%R -> (Rabs x <= Rabs y)%R -> (mag x <= mag y)%Zr:radixx, y:RH0x:x <> 0%RHxy:(Rabs x <= Rabs y)%R(mag x <= mag y)%Zr:radixx, y:RH0x:x <> 0%RHxy:(Rabs x <= Rabs y)%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R(Build_mag_prop x ex Hx <= mag y)%Zr:radixx, y:RH0x:x <> 0%RHxy:(Rabs x <= Rabs y)%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Build_mag_prop x ex Hx <= Build_mag_prop y ey Hy)%Zr:radixx, y:RH0x:x <> 0%RHxy:(Rabs x <= Rabs y)%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(ex <= ey)%Zr:radixx, y:RH0x:x <> 0%RHxy:(Rabs x <= Rabs y)%Rex:ZHx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(bpow (ex - 1) < bpow ey)%Rr:radixx, y:RH0x:x <> 0%RHxy:(Rabs x <= Rabs y)%Rex:ZHx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(bpow (ex - 1) < bpow ey)%Rr:radixx, y:RH0x:x <> 0%RHxy:(Rabs x <= Rabs y)%Rex:ZHx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs x < bpow ey)%Rr:radixx, y:RH0x:x <> 0%RHxy:(Rabs x <= Rabs y)%Rex:ZHx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs y < bpow ey)%Rr:radixx, y:RH0x:x <> 0%RHxy:(Rabs x <= Rabs y)%Rex:ZHx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%Ry <> 0%Rr:radixx, y:RH0x:x <> 0%RHxy:(Rabs x <= Rabs y)%Rex:ZHx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHy':y = 0%RFalser:radixx, y:RH0x:x <> 0%RHxy:(Rabs x <= Rabs y)%Rex:ZHx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHy':y = 0%R(Rabs x <= 0)%Rr:radixx, y:RH0x:x <> 0%RHxy:(Rabs x <= Rabs y)%Rex:ZHx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHy':y = 0%R(Rabs y <= 0)%Rapply Rle_refl. Qed.r:radixx, y:RH0x:x <> 0%RHxy:(Rabs x <= Rabs y)%Rex:ZHx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHy':y = 0%R(0 <= 0)%Rr:radixforall x y : R, (0 < x)%R -> (x <= y)%R -> (mag x <= mag y)%Zr:radixforall x y : R, (0 < x)%R -> (x <= y)%R -> (mag x <= mag y)%Zr:radixx, y:RH0x:(0 < x)%RHxy:(x <= y)%R(mag x <= mag y)%Zr:radixx, y:RH0x:(0 < x)%RHxy:(x <= y)%Rx <> 0%Rr:radixx, y:RH0x:(0 < x)%RHxy:(x <= y)%R(Rabs x <= Rabs y)%Rr:radixx, y:RH0x:(0 < x)%RHxy:(x <= y)%R(Rabs x <= Rabs y)%Rr:radixx, y:RH0x:(0 < x)%RHxy:(x <= y)%R(x <= y)%Rr:radixx, y:RH0x:(0 < x)%RHxy:(x <= y)%R(0 <= y)%Rr:radixx, y:RH0x:(0 < x)%RHxy:(x <= y)%R(0 <= x)%Rr:radixx, y:RH0x:(0 < x)%RHxy:(x <= y)%R(0 <= y)%Rr:radixx, y:RH0x:(0 < x)%RHxy:(x <= y)%R(0 <= x)%Rr:radixx, y:RH0x:(0 < x)%RHxy:(x <= y)%R(0 <= x)%Rr:radixx, y:RH0x:(0 < x)%RHxy:(x <= y)%R(0 <= x)%Rnow apply Rlt_le. Qed.r:radixx, y:RH0x:(0 < x)%RHxy:(x <= y)%R(0 <= x)%Rr:radixforall x y : R, (0 < y)%R -> (mag x < mag y)%Z -> (x < y)%Rr:radixforall x y : R, (0 < y)%R -> (mag x < mag y)%Z -> (x < y)%Rr:radixx, y:RPy:(0 < y)%R(mag x < mag y)%Z -> (x < y)%Rr:radixx, y:RPy:(0 < y)%RPx:(x <= 0)%R(mag x < mag y)%Z -> (x < y)%Rr:radixx, y:RPy:(0 < y)%RPx:(0 < x)%R(mag x < mag y)%Z -> (x < y)%Rr:radixx, y:RPy:(0 < y)%RPx:(x <= 0)%RH:(mag x < mag y)%Z(x < y)%Rr:radixx, y:RPy:(0 < y)%RPx:(0 < x)%R(mag x < mag y)%Z -> (x < y)%Rr:radixx, y:RPy:(0 < y)%RPx:(0 < x)%R(mag x < mag y)%Z -> (x < y)%Rr:radixx, y:RPy:(0 < y)%RPx:(0 < x)%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R(Build_mag_prop x ex Hex < mag y)%Z -> (x < y)%Rr:radixx, y:RPy:(0 < y)%RPx:(0 < x)%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Build_mag_prop x ex Hex < Build_mag_prop y ey Hey)%Z -> (x < y)%Rr:radixx, y:RPy:(0 < y)%RPx:(0 < x)%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(ex < ey)%Z -> (x < y)%Rr:radixx, y:RPy:(0 < y)%RPx:(0 < x)%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RH:(ex < ey)%Z(x < y)%Rr:radixx, y:RPy:(0 < y)%RPx:(0 < x)%Rex, ey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RH:(ex < ey)%ZHex:(Rabs x < bpow ex)%R(x < y)%Rr:radixx, y:RPy:(0 < y)%RPx:(0 < x)%Rex, ey:ZH:(ex < ey)%ZHex:(Rabs x < bpow ex)%RHey:(bpow (ey - 1) <= Rabs y)%R(x < y)%Rr:radixx, y:RPy:(0 < y)%RPx:(0 < x)%Rex, ey:ZH:(ex < ey)%ZHex:(x < bpow ex)%RHey:(bpow (ey - 1) <= Rabs y)%R(x < y)%Rr:radixx, y:RPy:(0 < y)%RPx:(0 < x)%Rex, ey:ZH:(ex < ey)%ZHex:(x < bpow ex)%RHey:(bpow (ey - 1) <= y)%R(x < y)%Rr:radixx, y:RPy:(0 < y)%RPx:(0 < x)%Rex, ey:ZH:(ex < ey)%ZHex:(x < bpow ex)%RHey:(bpow (ey - 1) <= y)%R(bpow ex <= y)%Rnow apply bpow_le; omega. Qed.r:radixx, y:RPy:(0 < y)%RPx:(0 < x)%Rex, ey:ZH:(ex < ey)%ZHex:(x < bpow ex)%RHey:(bpow (ey - 1) <= y)%R(bpow ex <= bpow (ey - 1))%Rr:radixforall e : Z, mag (bpow e) = (e + 1)%Zr:radixforall e : Z, mag (bpow e) = (e + 1)%Zr:radixe:Zmag (bpow e) = (e + 1)%Zr:radixe:Z(bpow (e + 1 - 1) <= Rabs (bpow e) < bpow (e + 1))%Rr:radixe:Z(bpow (e + 1 - 1) <= bpow e < bpow (e + 1))%Rr:radixe:Z(bpow e >= 0)%Rr:radixe:Z(bpow e <= bpow e < bpow (e + 1))%Rr:radixe:Z(bpow e >= 0)%Rr:radixe:Z(bpow e <= bpow e)%Rr:radixe:Z(bpow e < bpow (e + 1))%Rr:radixe:Z(bpow e >= 0)%Rr:radixe:Z(bpow e < bpow (e + 1))%Rr:radixe:Z(bpow e >= 0)%Rr:radixe:Z(e < e + 1)%Zr:radixe:Z(bpow e >= 0)%Rr:radixe:Z(bpow e >= 0)%Rapply bpow_ge_0. Qed.r:radixe:Z(0 <= bpow e)%Rr:radixforall (x : R) (e : Z), x <> 0%R -> mag (x * bpow e) = (mag x + e)%Zr:radixforall (x : R) (e : Z), x <> 0%R -> mag (x * bpow e) = (mag x + e)%Zr:radixx:Re:ZZx:x <> 0%Rmag (x * bpow e) = (mag x + e)%Zr:radixx:Re:ZZx:x <> 0%Rex:ZEx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rmag (x * bpow e) = (ex + e)%Zr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%Rmag (x * bpow e) = (ex + e)%Zr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex + e - 1) <= Rabs (x * bpow e) < bpow (ex + e))%Rr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex + e - 1) <= Rabs x * Rabs (bpow e) < bpow (ex + e))%Rr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex + e - 1) <= Rabs x * bpow e < bpow (ex + e))%Rr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex + e - 1) <= Rabs x * bpow e)%Rr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(Rabs x * bpow e < bpow (ex + e))%Rr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1 + e) <= Rabs x * bpow e)%Rr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(Rabs x * bpow e < bpow (ex + e))%Rr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) * bpow e <= Rabs x * bpow e)%Rr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(Rabs x * bpow e < bpow (ex + e))%Rr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(0 <= bpow e)%Rr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) <= Rabs x)%Rr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(Rabs x * bpow e < bpow (ex + e))%Rr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) <= Rabs x)%Rr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(Rabs x * bpow e < bpow (ex + e))%Rr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(Rabs x * bpow e < bpow (ex + e))%Rr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(Rabs x * bpow e < bpow ex * bpow e)%Rr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(0 < bpow e)%Rr:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(Rabs x < bpow ex)%Rapply Ex. Qed.r:radixx:Re:ZZx:x <> 0%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(Rabs x < bpow ex)%Rr:radixforall (x : R) (e : Z), x <> 0%R -> (Rabs x < bpow e)%R -> (mag x <= e)%Zr:radixforall (x : R) (e : Z), x <> 0%R -> (Rabs x < bpow e)%R -> (mag x <= e)%Zr:radixx:Re:ZZx:x <> 0%RHx:(Rabs x < bpow e)%R(mag x <= e)%Zr:radixx:Re:ZZx:x <> 0%RHx:(Rabs x < bpow e)%Rex:ZEx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R(ex <= e)%Zr:radixx:Re:ZZx:x <> 0%RHx:(Rabs x < bpow e)%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(ex <= e)%Znow apply Rle_lt_trans with (Rabs x). Qed.r:radixx:Re:ZZx:x <> 0%RHx:(Rabs x < bpow e)%Rex:ZEx:(bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) < bpow e)%Rr:radixforall (x : R) (e : Z), (bpow e <= Rabs x)%R -> (e < mag x)%Zr:radixforall (x : R) (e : Z), (bpow e <= Rabs x)%R -> (e < mag x)%Zr:radixx:Re:ZHx:(bpow e <= Rabs x)%R(e < mag x)%Zr:radixx:Re:ZHx:(bpow e <= Rabs x)%Rex:ZEx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R(e < ex)%Zr:radixx:Re:ZHx:(bpow e <= Rabs x)%Rex:ZEx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow e < bpow ex)%Rr:radixx:Re:ZHx:(bpow e <= Rabs x)%Rex:ZEx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R(Rabs x < bpow ex)%Rr:radixx:Re:ZHx:(bpow e <= Rabs x)%Rex:ZEx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rx <> 0%Rr:radixx:Re:ZHx:(bpow e <= Rabs x)%Rex:ZEx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%RZx:x = 0%RFalser:radixx:Re:ZHx:(bpow e <= Rabs x)%Rex:ZEx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%RZx:x = 0%R(Rabs x < bpow e)%Rapply bpow_gt_0. Qed.r:radixx:Re:ZHx:(bpow e <= Rabs x)%Rex:ZEx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%RZx:x = 0%R(0 < bpow e)%Rr:radixforall (x : R) (e : Z), (bpow (e - 1) <= Rabs x)%R -> (e <= mag x)%Zr:radixforall (x : R) (e : Z), (bpow (e - 1) <= Rabs x)%R -> (e <= mag x)%Zr:radixx:Re:ZH:(bpow (e - 1) <= Rabs x)%R(e <= mag x)%Zr:radixx:Re:ZH:(bpow (e - 1) <= Rabs x)%RHxe:(Rabs x < bpow e)%R(e <= mag x)%Zr:radixx:Re:ZH:(bpow (e - 1) <= Rabs x)%RHxe:(bpow e <= Rabs x)%R(e <= mag x)%Zr:radixx:Re:ZH:(bpow (e - 1) <= Rabs x)%RHxe:(Rabs x < bpow e)%R(e <= mag x)%Zr:radixx:Re:ZH:(bpow (e - 1) <= Rabs x)%RHxe:(Rabs x < bpow e)%Rmag x = er:radixx:Re:ZH:(bpow (e - 1) <= Rabs x)%RHxe:(Rabs x < bpow e)%RHln:mag x = e(e <= mag x)%Zr:radixx:Re:ZH:(bpow (e - 1) <= Rabs x)%RHxe:(Rabs x < bpow e)%RHln:mag x = e(e <= mag x)%Znow apply Z.le_refl.r:radixx:Re:ZH:(bpow (e - 1) <= Rabs x)%RHxe:(Rabs x < bpow e)%RHln:mag x = e(e <= e)%Zr:radixx:Re:ZH:(bpow (e - 1) <= Rabs x)%RHxe:(bpow e <= Rabs x)%R(e <= mag x)%Znow apply mag_gt_bpow. Qed.r:radixx:Re:ZH:(bpow (e - 1) <= Rabs x)%RHxe:(bpow e <= Rabs x)%R(e < mag x)%Zr:radixforall x : R, (Rabs x < bpow (mag x))%Rr:radixforall x : R, (Rabs x < bpow (mag x))%Rr:radixx:R(Rabs x < bpow (mag x))%Rr:radixx:RZx:x = 0%R(Rabs x < bpow (mag x))%Rr:radixx:RZx:x <> 0%R(Rabs x < bpow (mag x))%Rr:radixx:RZx:x = 0%R(0 < bpow (mag 0))%Rr:radixx:RZx:x <> 0%R(Rabs x < bpow (mag x))%Rr:radixx:RZx:x <> 0%R(Rabs x < bpow (mag x))%Rnow apply Ex. Qed.r:radixx:RZx:x <> 0%Rex:ZEx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R(Rabs x < bpow ex)%Rr:radixforall x : R, x <> 0%R -> (bpow (mag x - 1) <= Rabs x)%Rr:radixforall x : R, x <> 0%R -> (bpow (mag x - 1) <= Rabs x)%Rr:radixx:RHx:x <> 0%R(bpow (mag x - 1) <= Rabs x)%Rnow apply Ex. Qed.r:radixx:RHx:x <> 0%Rex:ZEx:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R(bpow (ex - 1) <= Rabs x)%Rr:radixforall m e : Z, m <> 0%Z -> (Z.abs m < r ^ e)%Z -> (mag (IZR m) <= e)%Zr:radixforall m e : Z, m <> 0%Z -> (Z.abs m < r ^ e)%Z -> (mag (IZR m) <= e)%Zr:radixm, e:ZZm:m <> 0%ZHm:(Z.abs m < r ^ e)%Z(mag (IZR m) <= e)%Zr:radixm, e:ZZm:m <> 0%ZHm:(Z.abs m < r ^ e)%ZIZR m <> 0%Rr:radixm, e:ZZm:m <> 0%ZHm:(Z.abs m < r ^ e)%Z(Rabs (IZR m) < bpow e)%Rr:radixm, e:ZZm:m <> 0%ZHm:(Z.abs m < r ^ e)%Z(Rabs (IZR m) < bpow e)%Rr:radixm, e:ZZm:m <> 0%ZHm:(Z.abs m < r ^ e)%ZH:(0 <= e)%Z(Rabs (IZR m) < bpow e)%Rr:radixm, e:ZZm:m <> 0%ZHm:(Z.abs m < r ^ e)%ZH:(e < 0)%Z(Rabs (IZR m) < bpow e)%Rr:radixm, e:ZZm:m <> 0%ZHm:(Z.abs m < r ^ e)%ZH:(0 <= e)%Z(IZR (Z.abs m) < IZR (r ^ e))%Rr:radixm, e:ZZm:m <> 0%ZHm:(Z.abs m < r ^ e)%ZH:(e < 0)%Z(Rabs (IZR m) < bpow e)%Rr:radixm, e:ZZm:m <> 0%ZHm:(Z.abs m < r ^ e)%ZH:(e < 0)%Z(Rabs (IZR m) < bpow e)%Rr:radixm, e:ZZm:m <> 0%ZHm:(Z.abs m < r ^ e)%ZH:(e < 0)%Zm = 0%Zr:radixm, e:ZZm:m <> 0%ZHm:(Z.abs m < r ^ e)%ZH:(e < 0)%Z(Z.abs m < 0)%Z -> m = 0%Zr:radixm, e:ZZm:m <> 0%ZHm:(Z.abs m < r ^ e)%ZH:(e < 0)%Z(Z.abs m < 0)%Zr:radixm, e:ZZm:m <> 0%ZHm:(Z.abs m < r ^ e)%ZH:(e < 0)%Z(Z.abs m < 0)%Znow destruct e. Qed.r:radixm, e:ZHm:(Z.abs m < r ^ e)%ZH:(e < 0)%Z(Z.abs m < 0)%Zr:radixforall m e : Z, m <> 0%Z -> (r ^ e <= Z.abs m)%Z -> (e < mag (IZR m))%Zr:radixforall m e : Z, m <> 0%Z -> (r ^ e <= Z.abs m)%Z -> (e < mag (IZR m))%Zr:radixm, e:ZZm:m <> 0%ZHm:(r ^ e <= Z.abs m)%Z(e < mag (IZR m))%Zr:radixm, e:ZZm:m <> 0%ZHm:(r ^ e <= Z.abs m)%Z(bpow e <= Rabs (IZR m))%Rr:radixm, e:ZZm:m <> 0%ZHm:(r ^ e <= Z.abs m)%Z(bpow e <= IZR (Z.abs m))%Rr:radixm, e:ZZm:m <> 0%ZHm:(r ^ e <= Z.abs m)%ZH:(0 <= e)%Z(bpow e <= IZR (Z.abs m))%Rr:radixm, e:ZZm:m <> 0%ZHm:(r ^ e <= Z.abs m)%ZH:(e < 0)%Z(bpow e <= IZR (Z.abs m))%Rr:radixm, e:ZZm:m <> 0%ZHm:(r ^ e <= Z.abs m)%ZH:(0 <= e)%Z(IZR (r ^ e) <= IZR (Z.abs m))%Rr:radixm, e:ZZm:m <> 0%ZHm:(r ^ e <= Z.abs m)%ZH:(e < 0)%Z(bpow e <= IZR (Z.abs m))%Rr:radixm, e:ZZm:m <> 0%ZHm:(r ^ e <= Z.abs m)%ZH:(e < 0)%Z(bpow e <= IZR (Z.abs m))%Rr:radixm, e:ZZm:m <> 0%ZHm:(r ^ e <= Z.abs m)%ZH:(e < 0)%Z(bpow e <= bpow 0)%Rr:radixm, e:ZZm:m <> 0%ZHm:(r ^ e <= Z.abs m)%ZH:(e < 0)%Z(bpow 0 <= IZR (Z.abs m))%Rr:radixm, e:ZZm:m <> 0%ZHm:(r ^ e <= Z.abs m)%ZH:(e < 0)%Z(e <= 0)%Zr:radixm, e:ZZm:m <> 0%ZHm:(r ^ e <= Z.abs m)%ZH:(e < 0)%Z(bpow 0 <= IZR (Z.abs m))%Rr:radixm, e:ZZm:m <> 0%ZHm:(r ^ e <= Z.abs m)%ZH:(e < 0)%Z(bpow 0 <= IZR (Z.abs m))%Rr:radixm, e:ZZm:m <> 0%ZHm:(r ^ e <= Z.abs m)%ZH:(e < 0)%Z(1 <= Z.abs m)%Zzify ; omega. Qed.m:ZZm:m <> 0%Z(1 <= Z.abs m)%Zr:radixforall x y : R, x <> 0%R -> y <> 0%R -> (mag x + mag y - 1 <= mag (x * y) <= mag x + mag y)%Zr:radixforall x y : R, x <> 0%R -> y <> 0%R -> (mag x + mag y - 1 <= mag (x * y) <= mag x + mag y)%Zr:radixx, y:RHx:x <> 0%RHy:y <> 0%R(mag x + mag y - 1 <= mag (x * y) <= mag x + mag y)%Zr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex:ZHx2:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R(Build_mag_prop x ex Hx2 + mag y - 1 <= mag (x * y) <= Build_mag_prop x ex Hx2 + mag y)%Zr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex:ZHx2:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy2:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Build_mag_prop x ex Hx2 + Build_mag_prop y ey Hy2 - 1 <= mag (x * y) <= Build_mag_prop x ex Hx2 + Build_mag_prop y ey Hy2)%Zr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex:ZHx2:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHy2:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(ex + ey - 1 <= mag (x * y) <= ex + ey)%Zr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHy2:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%R(ex + ey - 1 <= mag (x * y) <= ex + ey)%Zr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%R(ex + ey - 1 <= mag (x * y) <= ex + ey)%Zr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%R(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%Rr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%R(ex + ey - 1 <= mag (x * y) <= ex + ey)%Zr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%R(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%Rr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%R(bpow (ex - 1 + (ey - 1)) <= Rabs (x * y))%Rr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%R(bpow (ex - 1) * bpow (ey - 1) <= Rabs (x * y))%Rnow apply Rmult_le_compat; try apply bpow_ge_0.r:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%R(bpow (ex - 1) * bpow (ey - 1) <= Rabs x * Rabs y)%Rr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%R(ex + ey - 1 <= mag (x * y) <= ex + ey)%Zr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%R(Rabs (x * y) < bpow (ex + ey))%Rr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%RHxy2:(Rabs (x * y) < bpow (ex + ey))%R(ex + ey - 1 <= mag (x * y) <= ex + ey)%Zr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%R(Rabs (x * y) < bpow (ex + ey))%Rr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%R(Rabs x * Rabs y < bpow (ex + ey))%Rr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%R(Rabs x * Rabs y < bpow ex * bpow ey)%Rr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%R(0 <= Rabs x)%Rr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%R(0 <= Rabs y)%Rnow apply Rle_trans with (bpow (ey - 1)); try apply bpow_ge_0.r:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%R(0 <= Rabs y)%Rr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%RHxy2:(Rabs (x * y) < bpow (ex + ey))%R(ex + ey - 1 <= mag (x * y) <= ex + ey)%Zr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%RHxy2:(Rabs (x * y) < bpow (ex + ey))%R(ex + ey - 1 <= mag (x * y))%Zr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%RHxy2:(Rabs (x * y) < bpow (ex + ey))%R(mag (x * y) <= ex + ey)%Znow apply mag_ge_bpow.r:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%RHxy2:(Rabs (x * y) < bpow (ex + ey))%R(ex + ey - 1 <= mag (x * y))%Zr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%RHxy2:(Rabs (x * y) < bpow (ex + ey))%R(mag (x * y) <= ex + ey)%Zr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%RHxy2:(Rabs (x * y) < bpow (ex + ey))%R(x * y)%R <> 0%Rr:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%RHxy2:(Rabs (x * y) < bpow (ex + ey))%R(Rabs (x * y) < bpow (ex + ey))%Rnow apply Rmult_integral_contrapositive_currified.r:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%RHxy2:(Rabs (x * y) < bpow (ex + ey))%R(x * y)%R <> 0%Rassumption. Qed.r:radixx, y:RHx:x <> 0%RHy:y <> 0%Rex, ey:ZHx21:(bpow (ex - 1) <= Rabs x)%RHx22:(Rabs x < bpow ex)%RHy21:(bpow (ey - 1) <= Rabs y)%RHy22:(Rabs y < bpow ey)%RHxy:(bpow (ex + ey - 1 - 1) <= Rabs (x * y))%RHxy2:(Rabs (x * y) < bpow (ex + ey))%R(Rabs (x * y) < bpow (ex + ey))%Rr:radixforall x y : R, (0 < y)%R -> (y <= x)%R -> (mag x <= mag (x + y) <= mag x + 1)%Zr:radixforall x y : R, (0 < y)%R -> (y <= x)%R -> (mag x <= mag (x + y) <= mag x + 1)%Zr:radix(2 <= r)%Zr:radixHr:(2 <= r)%Zforall x y : R, (0 < y)%R -> (y <= x)%R -> (mag x <= mag (x + y) <= mag x + 1)%Zr:radix(2 <= r)%Znow apply Zle_bool_imp_le.r:radixbeta_val:Zbeta_prop:(2 <=? beta_val)%Z = true(2 <= {| radix_val := beta_val; radix_prop := beta_prop |})%Zr:radixHr:(2 <= r)%Zforall x y : R, (0 < y)%R -> (y <= x)%R -> (mag x <= mag (x + y) <= mag x + 1)%Zr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%R(mag x <= mag (x + y) <= mag x + 1)%Zr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%R(mag x <= mag (x + y) <= mag x + 1)%Zr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R(ex <= mag (x + y) <= ex + 1)%Zr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(ex <= mag (x + y) <= ex + 1)%Zr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(Rabs (x + y) < bpow (ex + 1))%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%R(ex <= mag (x + y) <= ex + 1)%Zr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(Rabs (x + y) < bpow (ex + 1))%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(Rabs (x + y) < IZR r * bpow ex)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(Rabs (x + y) < 2 * bpow ex)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(2 * bpow ex <= IZR r * bpow ex)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(Rabs (x + y) < 2 * bpow ex)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(x + y < 2 * bpow ex)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(0 <= x + y)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(x + y <= 2 * Rabs x)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(2 * Rabs x < 2 * bpow ex)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(0 <= x + y)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(x + y <= 2 * Rabs x)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(x + y <= 2 * x)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(0 <= x)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(x + y <= x + x)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(0 <= x)%Rnow apply Rlt_le.r:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(0 <= x)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(2 * Rabs x < 2 * bpow ex)%Rexact Rlt_0_2.r:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(0 < 2)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(0 <= x + y)%Rnow apply Rlt_le, Rplus_lt_compat.r:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(0 + 0 <= x + y)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(2 * bpow ex <= IZR r * bpow ex)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(0 <= bpow ex)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(2 <= IZR r)%Rnow apply IZR_le.r:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%R(2 <= IZR r)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%R(ex <= mag (x + y) <= ex + 1)%Zr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%R(bpow (ex - 1) <= Rabs (x + y))%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%RHaxy2:(bpow (ex - 1) <= Rabs (x + y))%R(ex <= mag (x + y) <= ex + 1)%Zr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%R(bpow (ex - 1) <= Rabs (x + y))%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%R(Rabs x <= Rabs (x + y))%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%R(x <= Rabs (x + y))%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%R(x <= x + y)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%R(x + 0 <= x + y)%Rnow apply Rlt_le.r:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%R(0 <= y)%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%RHaxy2:(bpow (ex - 1) <= Rabs (x + y))%R(ex <= mag (x + y) <= ex + 1)%Zr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%RHaxy2:(bpow (ex - 1) <= Rabs (x + y))%R(ex <= mag (x + y))%Zr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%RHaxy2:(bpow (ex - 1) <= Rabs (x + y))%R(mag (x + y) <= ex + 1)%Znow apply mag_ge_bpow.r:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%RHaxy2:(bpow (ex - 1) <= Rabs (x + y))%R(ex <= mag (x + y))%Zr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%RHaxy2:(bpow (ex - 1) <= Rabs (x + y))%R(mag (x + y) <= ex + 1)%Zr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%RHaxy2:(bpow (ex - 1) <= Rabs (x + y))%R(x + y)%R <> 0%Rr:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%RHaxy2:(bpow (ex - 1) <= Rabs (x + y))%R(Rabs (x + y) < bpow (ex + 1))%Rnow apply tech_Rplus; [apply Rlt_le|].r:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%RHaxy2:(bpow (ex - 1) <= Rabs (x + y))%R(x + y)%R <> 0%Rexact Haxy. Qed.r:radixHr:(2 <= r)%Zx, y:RHy:(0 < y)%RHxy:(y <= x)%RHx:(0 < x)%Rex:ZHex0:(bpow (ex - 1) <= Rabs x)%RHex1:(Rabs x < bpow ex)%RHaxy:(Rabs (x + y) < bpow (ex + 1))%RHaxy2:(bpow (ex - 1) <= Rabs (x + y))%R(Rabs (x + y) < bpow (ex + 1))%Rr:radixforall x y : R, (0 < y)%R -> (y < x)%R -> (mag (x - y) <= mag x)%Zr:radixforall x y : R, (0 < y)%R -> (y < x)%R -> (mag (x - y) <= mag x)%Zr:radixx, y:RPy:(0 < y)%RHxy:(y < x)%R(mag (x - y) <= mag x)%Zr:radixx, y:RPy:(0 < y)%RHxy:(y < x)%RPx:(0 < x)%R(mag (x - y) <= mag x)%Zr:radixx, y:RPy:(0 < y)%RHxy:(y < x)%RPx:(0 < x)%R(0 < x - y)%Rr:radixx, y:RPy:(0 < y)%RHxy:(y < x)%RPx:(0 < x)%R(x - y <= x)%Rnow apply Rlt_Rminus.r:radixx, y:RPy:(0 < y)%RHxy:(y < x)%RPx:(0 < x)%R(0 < x - y)%Rr:radixx, y:RPy:(0 < y)%RHxy:(y < x)%RPx:(0 < x)%R(x - y <= x)%Rr:radixx, y:RPy:(0 < y)%RHxy:(y < x)%RPx:(0 < x)%R(x - y <= x + 0)%Rr:radixx, y:RPy:(0 < y)%RHxy:(y < x)%RPx:(0 < x)%R(- y <= 0)%Rnow apply Ropp_le_contravar; apply Rlt_le. Qed.r:radixx, y:RPy:(0 < y)%RHxy:(y < x)%RPx:(0 < x)%R(- y <= - 0)%Rr:radixforall x y : R, (0 < x)%R -> (0 < y)%R -> (mag y <= mag x - 2)%Z -> (mag x - 1 <= mag (x - y))%Zr:radixforall x y : R, (0 < x)%R -> (0 < y)%R -> (mag y <= mag x - 2)%Z -> (mag x - 1 <= mag (x - y))%Zr:radix(2 <= r)%Zr:radixHbeta:(2 <= r)%Zforall x y : R, (0 < x)%R -> (0 < y)%R -> (mag y <= mag x - 2)%Z -> (mag x - 1 <= mag (x - y))%Zr:radix(2 <= r)%Znow apply Zle_bool_imp_le.r:radixbeta_val:Zbeta_prop:(2 <=? beta_val)%Z = true(2 <= {| radix_val := beta_val; radix_prop := beta_prop |})%Zr:radixHbeta:(2 <= r)%Zforall x y : R, (0 < x)%R -> (0 < y)%R -> (mag y <= mag x - 2)%Z -> (mag x - 1 <= mag (x - y))%Zr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%RHln:(mag y <= mag x - 2)%Z(mag x - 1 <= mag (x - y))%Zr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%RHln:(mag y <= mag x - 2)%ZOxy:(y < x)%R(mag x - 1 <= mag (x - y))%Zr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%RHln:(mag y <= Build_mag_prop x ex Hex - 2)%ZOxy:(y < x)%R(Build_mag_prop x ex Hex - 1 <= mag (x - y))%Zr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHln:(Build_mag_prop y ey Hey <= Build_mag_prop x ex Hex - 2)%ZOxy:(y < x)%R(Build_mag_prop x ex Hex - 1 <= mag (x - y))%Zr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHln:(ey <= ex - 2)%ZOxy:(y < x)%R(ex - 1 <= mag (x - y))%Zr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%R(ex - 1 <= mag (x - y))%Zr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%R(ex - 1 <= mag (x - y))%Zr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%R(bpow (ex - 2) + bpow (ex - 2) <= x)%Rr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%R(ex - 1 <= mag (x - y))%Zr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%R(bpow (ex - 2) + bpow (ex - 2) <= x)%Rr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%R(2 * bpow (ex - 2) <= x)%Rr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%R(2 * bpow (ex - 2) <= bpow (ex - 1))%Rr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%R(bpow (ex - 1) <= x)%Rr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%R(2 * bpow (ex - 2) <= bpow (ex - 1))%Rr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%R(2 * bpow (ex - 2) <= bpow (ex - 2 + 1))%Rr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%R(2 * bpow (ex - 2) <= IZR r * bpow (ex - 2))%Rnow apply IZR_le.r:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%R(2 <= IZR r)%Rnow rewrite Rabs_right in Hex; [|apply Rle_ge; apply Rlt_le].r:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%R(bpow (ex - 1) <= x)%Rr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%R(ex - 1 <= mag (x - y))%Zr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%R(y < bpow (ex - 2))%Rr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%RHby:(y < bpow (ex - 2))%R(ex - 1 <= mag (x - y))%Zr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%R(y < bpow (ex - 2))%Rr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%R(y < bpow ey)%Rr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%R(bpow ey <= bpow (ex - 2))%Rnow apply bpow_le.r:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%R(bpow ey <= bpow (ex - 2))%Rr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%RHby:(y < bpow (ex - 2))%R(ex - 1 <= mag (x - y))%Zr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%RHby:(y < bpow (ex - 2))%R(bpow (ex - 2) <= x - y)%Rr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%RHby:(y < bpow (ex - 2))%RHbxy:(bpow (ex - 2) <= x - y)%R(ex - 1 <= mag (x - y))%Zr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%RHby:(y < bpow (ex - 2))%R(bpow (ex - 2) <= x - y)%Rr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%RHby:(- bpow (ex - 2) < - y)%R(bpow (ex - 2) <= x - y)%Rr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%RHby:(- bpow (ex - 2) <= - y)%R(bpow (ex - 2) <= x - y)%Rnow apply Rplus_le_compat.r:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%RHby:(- bpow (ex - 2) <= - y)%R(bpow (ex - 2) + bpow (ex - 2) - bpow (ex - 2) <= x - y)%Rr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%RHby:(y < bpow (ex - 2))%RHbxy:(bpow (ex - 2) <= x - y)%R(ex - 1 <= mag (x - y))%Zr:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%RHby:(y < bpow (ex - 2))%RHbxy:(bpow (ex - 2) <= x - y)%R(bpow (ex - 1 - 1) <= Rabs (x - y))%Rnow apply Rabs_ge; right. Qed.r:radixHbeta:(2 <= r)%Zx, y:RPx:(0 < x)%RPy:(0 < y)%Rex, ey:ZHln:(ey <= ex - 2)%ZOxy:(y < x)%RHex:(bpow (ex - 1) <= Rabs x)%RHey:(Rabs y < bpow ey)%RHbx:(bpow (ex - 2) + bpow (ex - 2) <= x)%RHby:(y < bpow (ex - 2))%RHbxy:(bpow (ex - 2) <= x - y)%R(bpow (ex - 2) <= Rabs (x - y))%Rr:radixforall x y : R, x <> 0%R -> y <> 0%R -> (mag x - mag y <= mag (x / y) <= mag x - mag y + 1)%Zr:radixforall x y : R, x <> 0%R -> y <> 0%R -> (mag x - mag y <= mag (x / y) <= mag x - mag y + 1)%Zr:radixx, y:RPx:x <> 0%RPy:y <> 0%R(mag x - mag y <= mag (x / y) <= mag x - mag y + 1)%Zr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%R(Build_mag_prop x ex Hex - mag y <= mag (x / y) <= Build_mag_prop x ex Hex - mag y + 1)%Zr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Build_mag_prop x ex Hex - Build_mag_prop y ey Hey <= mag (x / y) <= Build_mag_prop x ex Hex - Build_mag_prop y ey Hey + 1)%Zr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(ex - ey <= mag (x / y) <= ex - ey + 1)%Zr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(ex - ey <= mag (x * / y) <= ex - ey + 1)%Zr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(ex - ey <= mag (x * / y) <= ex - ey + 1)%Zr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(bpow (- ey) < / Rabs y <= bpow (- ey + 1))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(bpow (- ey) < / Rabs y)%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(/ Rabs y <= bpow (- ey + 1))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(bpow (- ey) < / Rabs y)%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(/ bpow ey < / Rabs y)%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(0 < Rabs y * bpow ey)%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs y < bpow ey)%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(0 < Rabs y * bpow ey)%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(0 < Rabs y)%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(0 < bpow ey)%Rnow apply bpow_gt_0.r:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(0 < bpow ey)%Rnow apply Hey.r:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(Rabs y < bpow ey)%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(/ Rabs y <= bpow (- ey + 1))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(/ Rabs y <= bpow (- (ey - 1)))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(/ Rabs y <= / bpow (ey - 1))%Rnow apply Hey.r:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%R(bpow (ey - 1) <= Rabs y)%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(ex - ey <= mag (x * / y) <= ex - ey + 1)%Zr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(ex - ey <= mag (x * / y))%Zr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(mag (x * / y) <= ex - ey + 1)%Zr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(ex - ey <= mag (x * / y))%Zr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(bpow (ex - ey - 1) <= Rabs (x * / y))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(bpow (ex - 1 - ey) <= Rabs (x * / y))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(bpow (ex - 1) * bpow (- ey) <= Rabs (x * / y))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(bpow (ex - 1) * bpow (- ey) <= Rabs x * Rabs (/ y))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(0 <= bpow (ex - 1))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(0 <= bpow (- ey))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(bpow (ex - 1) <= Rabs x)%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(bpow (- ey) <= Rabs (/ y))%Rnow apply bpow_ge_0.r:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(0 <= bpow (ex - 1))%Rnow apply bpow_ge_0.r:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(0 <= bpow (- ey))%Rnow apply Hex.r:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(bpow (ex - 1) <= Rabs x)%Rnow apply Rlt_le; apply Heiy.r:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(bpow (- ey) <= Rabs (/ y))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(mag (x * / y) <= ex - ey + 1)%Zr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(x * / y)%R <> 0%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(Rabs (x * / y) < bpow (ex - ey + 1))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(x * / y)%R <> 0%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%Rx <> 0%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(/ y)%R <> 0%Rnow apply Rinv_neq_0_compat.r:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(/ y)%R <> 0%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(Rabs (x * / y) < bpow (ex - ey + 1))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(Rabs (x * / y) < bpow (ex + (- ey + 1)))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(Rabs (x * / y) < bpow ex * bpow (- ey + 1))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(Rabs (x * / y) < bpow ex * Rabs (/ y))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(bpow ex * Rabs (/ y) <= bpow ex * bpow (- ey + 1))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(Rabs (x * / y) < bpow ex * Rabs (/ y))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(Rabs x * Rabs (/ y) < bpow ex * Rabs (/ y))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(0 < Rabs (/ y))%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(Rabs x < bpow ex)%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(/ y)%R <> 0%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(Rabs x < bpow ex)%Rnow apply Hex.r:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(Rabs x < bpow ex)%Rr:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(bpow ex * Rabs (/ y) <= bpow ex * bpow (- ey + 1))%Rapply Heiy. Qed.r:radixx, y:RPx:x <> 0%RPy:y <> 0%Rex:ZHex:x <> 0%R -> (bpow (ex - 1) <= Rabs x < bpow ex)%Rey:ZHey:y <> 0%R -> (bpow (ey - 1) <= Rabs y < bpow ey)%RHeiy:(bpow (- ey) < Rabs (/ y) <= bpow (- ey + 1))%R(Rabs (/ y) <= bpow (- ey + 1))%Rr:radixforall x : R, (0 < x)%R -> mag (sqrt x) = Z.div2 (mag x + 1)r:radixforall x : R, (0 < x)%R -> mag (sqrt x) = Z.div2 (mag x + 1)r:radixx:RPx:(0 < x)%Rmag (sqrt x) = Z.div2 (mag x + 1)r:radixx:RPx:(0 < x)%R(bpow (Z.div2 (mag x + 1) - 1) <= Rabs (sqrt x) < bpow (Z.div2 (mag x + 1)))%Rr:radixx:RPx:(0 < x)%Re:ZHe:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%R(bpow (Z.div2 (Build_mag_prop x e He + 1) - 1) <= Rabs (sqrt x) < bpow (Z.div2 (Build_mag_prop x e He + 1)))%Rr:radixx:RPx:(0 < x)%Re:ZHe:x <> 0%R -> (bpow (e - 1) <= Rabs x < bpow e)%R(bpow (Z.div2 (e + 1) - 1) <= Rabs (sqrt x) < bpow (Z.div2 (e + 1)))%Rr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= Rabs x < bpow e)%R(bpow (Z.div2 (e + 1) - 1) <= Rabs (sqrt x) < bpow (Z.div2 (e + 1)))%Rr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R(bpow (Z.div2 (e + 1) - 1) <= Rabs (sqrt x) < bpow (Z.div2 (e + 1)))%Rr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R(bpow (Z.div2 (e + 1) - 1) <= Rabs (sqrt x))%Rr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R(Rabs (sqrt x) < bpow (Z.div2 (e + 1)))%Rr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R(bpow (Z.div2 (e + 1) - 1) <= Rabs (sqrt x))%Rr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R(Rabs (bpow (Z.div2 (e + 1) - 1)) <= Rabs (sqrt x))%Rr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R((bpow (Z.div2 (e + 1) - 1))² <= (sqrt x)²)%Rr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R((bpow (Z.div2 (e + 1) - 1))² <= x)%Rr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R((bpow (Z.div2 (e + 1) - 1))² <= bpow (e - 1))%Rr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R(bpow (Z.div2 (e + 1) - 1 + (Z.div2 (e + 1) - 1)) <= bpow (e - 1))%Rr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R(Z.div2 (e + 1) - 1 + (Z.div2 (e + 1) - 1) <= e - 1)%Zdestruct Z.odd ; intros ; omega.r:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R(e + 1)%Z = (2 * Z.div2 (e + 1) + (if Z.odd (e + 1) then 1 else 0))%Z -> (Z.div2 (e + 1) - 1 + (Z.div2 (e + 1) - 1) <= e - 1)%Zr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R(Rabs (sqrt x) < bpow (Z.div2 (e + 1)))%Rr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R(Rabs (sqrt x) < Rabs (bpow (Z.div2 (e + 1))))%Rr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R((sqrt x)² < (bpow (Z.div2 (e + 1)))²)%Rr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R(x < (bpow (Z.div2 (e + 1)))²)%Rr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R(bpow e <= (bpow (Z.div2 (e + 1)))²)%Rr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R(bpow e <= bpow (Z.div2 (e + 1) + Z.div2 (e + 1)))%Rr:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R(e <= Z.div2 (e + 1) + Z.div2 (e + 1))%Zdestruct Z.odd ; intros ; omega. Qed.r:radixx:RPx:(0 < x)%Re:ZHe:(bpow (e - 1) <= x < bpow e)%R(e + 1)%Z = (2 * Z.div2 (e + 1) + (if Z.odd (e + 1) then 1 else 0))%Z -> (e <= Z.div2 (e + 1) + Z.div2 (e + 1))%Zr:radixmag 1 = 1%Zr:radixmag 1 = 1%Zr:radix(1 < r)%Znow apply Z.lt_le_trans. Qed. End pow. Section Bool.r:radix(2 <= r)%Z -> (1 < r)%Zforall x y : bool, Bool.eqb x y = Bool.eqb y xnow intros [|] [|]. Qed.forall x y : bool, Bool.eqb x y = Bool.eqb y xforall x y : bool, x = negb y -> Bool.eqb x y = falsenow intros [|] [|]. Qed.forall x y : bool, x = negb y -> Bool.eqb x y = falseforall x y : bool, x = y -> Bool.eqb x y = truenow intros [|] [|]. Qed. End Bool. Section cond_Ropp. Definition cond_Ropp (b : bool) m := if b then Ropp m else m.forall x y : bool, x = y -> Bool.eqb x y = trueforall (b : bool) (m : Z), IZR (SpecFloatCopy.cond_Zopp b m) = cond_Ropp b (IZR m)forall (b : bool) (m : Z), IZR (SpecFloatCopy.cond_Zopp b m) = cond_Ropp b (IZR m)m:ZIZR (SpecFloatCopy.cond_Zopp true m) = cond_Ropp true (IZR m)m:ZIZR (SpecFloatCopy.cond_Zopp false m) = cond_Ropp false (IZR m)apply refl_equal. Qed.m:ZIZR (SpecFloatCopy.cond_Zopp false m) = cond_Ropp false (IZR m)forall (b : bool) (m : R), Rabs (cond_Ropp b m) = Rabs mforall (b : bool) (m : R), Rabs (cond_Ropp b m) = Rabs mm:RRabs (cond_Ropp true m) = Rabs mm:RRabs (cond_Ropp false m) = Rabs mapply refl_equal. Qed.m:RRabs (cond_Ropp false m) = Rabs mforall m : R, cond_Ropp (Rlt_bool m 0) m = Rabs mforall m : R, cond_Ropp (Rlt_bool m 0) m = Rabs mm:Rcond_Ropp (Rlt_bool m 0) m = Rabs mm:RRabs m = cond_Ropp (Rlt_bool m 0) mm:RHm:(m < 0)%RRabs m = cond_Ropp true mm:RHm:(0 <= m)%RRabs m = cond_Ropp false mnow apply Rabs_pos_eq. Qed.m:RHm:(0 <= m)%RRabs m = cond_Ropp false mforall (b : bool) (x : R), cond_Ropp b (cond_Ropp b x) = xforall (b : bool) (x : R), cond_Ropp b (cond_Ropp b x) = xx:Rcond_Ropp true (cond_Ropp true x) = xx:Rcond_Ropp false (cond_Ropp false x) = xapply refl_equal. Qed.x:Rcond_Ropp false (cond_Ropp false x) = xforall (b : bool) (x y : R), cond_Ropp b x = cond_Ropp b y -> x = yforall (b : bool) (x y : R), cond_Ropp b x = cond_Ropp b y -> x = yb:boolx, y:RH:cond_Ropp b x = cond_Ropp b yx = yapply cond_Ropp_involutive. Qed.b:boolx, y:RH:cond_Ropp b x = cond_Ropp b ycond_Ropp b (cond_Ropp b y) = yforall (b : bool) (x y : R), cond_Ropp b (x * y) = (cond_Ropp b x * y)%Rforall (b : bool) (x y : R), cond_Ropp b (x * y) = (cond_Ropp b x * y)%Rx, y:Rcond_Ropp true (x * y) = (cond_Ropp true x * y)%Rx, y:Rcond_Ropp false (x * y) = (cond_Ropp false x * y)%Rx, y:R(cond_Ropp true x * y)%R = cond_Ropp true (x * y)x, y:Rcond_Ropp false (x * y) = (cond_Ropp false x * y)%Rapply refl_equal. Qed.x, y:Rcond_Ropp false (x * y) = (cond_Ropp false x * y)%Rforall (b : bool) (x y : R), cond_Ropp b (x * y) = (x * cond_Ropp b y)%Rforall (b : bool) (x y : R), cond_Ropp b (x * y) = (x * cond_Ropp b y)%Rx, y:Rcond_Ropp true (x * y) = (x * cond_Ropp true y)%Rx, y:Rcond_Ropp false (x * y) = (x * cond_Ropp false y)%Rx, y:R(x * cond_Ropp true y)%R = cond_Ropp true (x * y)x, y:Rcond_Ropp false (x * y) = (x * cond_Ropp false y)%Rapply refl_equal. Qed.x, y:Rcond_Ropp false (x * y) = (x * cond_Ropp false y)%Rforall (b : bool) (x y : R), cond_Ropp b (x + y) = (cond_Ropp b x + cond_Ropp b y)%Rforall (b : bool) (x y : R), cond_Ropp b (x + y) = (cond_Ropp b x + cond_Ropp b y)%Rx, y:Rcond_Ropp true (x + y) = (cond_Ropp true x + cond_Ropp true y)%Rx, y:Rcond_Ropp false (x + y) = (cond_Ropp false x + cond_Ropp false y)%Rapply refl_equal. Qed. End cond_Ropp.x, y:Rcond_Ropp false (x + y) = (cond_Ropp false x + cond_Ropp false y)%R
LPO taken from Coquelicot
forall P : nat -> Prop, (forall n : nat, P n \/ ~ P n) -> {n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}forall P : nat -> Prop, (forall n : nat, P n \/ ~ P n) -> {n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}forall n : nat, (0 < INR n + 1)%RHi:forall n : nat, (0 < INR n + 1)%Rforall P : nat -> Prop, (forall n : nat, P n \/ ~ P n) -> {n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}N:nat(0 < INR N + 1)%RHi:forall n : nat, (0 < INR n + 1)%Rforall P : nat -> Prop, (forall n : nat, P n \/ ~ P n) -> {n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}N:nat(0 < INR (S N))%RHi:forall n : nat, (0 < INR n + 1)%Rforall P : nat -> Prop, (forall n : nat, P n \/ ~ P n) -> {n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}N:nat0 < S NHi:forall n : nat, (0 < INR n + 1)%Rforall P : nat -> Prop, (forall n : nat, P n \/ ~ P n) -> {n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%Rforall P : nat -> Prop, (forall n : nat, P n \/ ~ P n) -> {n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P n{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> Prop{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> Propforall n : nat, P n -> E (/ (INR n + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n0 : nat, (0 < INR n0 + 1)%RP:nat -> PropHP:forall n0 : nat, P n0 \/ ~ P n0E:=fun y : R => exists n0 : nat, P n0 /\ y = (/ (INR n0 + 1))%R \/ ~ P n0 /\ y = 0%R:R -> Propn:natPn:P nE (/ (INR n + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n0 : nat, (0 < INR n0 + 1)%RP:nat -> PropHP:forall n0 : nat, P n0 \/ ~ P n0E:=fun y : R => exists n0 : nat, P n0 /\ y = (/ (INR n0 + 1))%R \/ ~ P n0 /\ y = 0%R:R -> Propn:natPn:P nP n /\ (/ (INR n + 1))%R = (/ (INR n + 1))%R \/ ~ P n /\ (/ (INR n + 1))%R = 0%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n0 : nat, (0 < INR n0 + 1)%RP:nat -> PropHP:forall n0 : nat, P n0 \/ ~ P n0E:=fun y : R => exists n0 : nat, P n0 /\ y = (/ (INR n0 + 1))%R \/ ~ P n0 /\ y = 0%R:R -> Propn:natPn:P nP n /\ (/ (INR n + 1))%R = (/ (INR n + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%Ris_upper_bound E 1Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%Ry:nat(/ (INR y + 1) <= 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%Ry:nat(0 <= 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%Ry:nat(/ (INR y + 1) <= / 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%Ry:nat(0 <= 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%Ry:nat(0 < 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%Ry:nat(1 <= INR y + 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%Ry:nat(0 <= 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%Ry:nat(1 <= INR y + 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%Ry:nat(0 <= 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%Ry:nat(1 <= INR (S y))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%Ry:nat(0 <= 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%Ry:nat(0 <= 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1bound EHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1exists x : R, E xHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1exists x : R, E xHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1H0:P 0exists x : R, E xHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1H0:~ P 0exists x : R, E xHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1H0:P 0E 1%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1H0:~ P 0exists x : R, E xHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1H0:P 0P 0 /\ 1%R = (/ (INR 0 + 1))%R \/ ~ P 0 /\ 1%R = 0%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1H0:~ P 0exists x : R, E xHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1H0:P 0P 0 /\ 1%R = (/ (INR 0 + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1H0:~ P 0exists x : R, E xHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1H0:P 01%R = (/ (INR 0 + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1H0:~ P 0exists x : R, E xHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1H0:P 01%R = (/ 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1H0:~ P 0exists x : R, E xHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1H0:~ P 0exists x : R, E xHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1H0:~ P 0E 0%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1H0:~ P 0P 0 /\ 0%R = (/ (INR 0 + 1))%R \/ ~ P 0 /\ 0%R = 0%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1H0:~ P 0~ P 0 /\ 0%R = 0%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(l <= 0)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(l <= 0)%Rforall n : nat, ~ P nHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n0 : nat, (0 < INR n0 + 1)%RP:nat -> PropHP:forall n0 : nat, P n0 \/ ~ P n0E:=fun y : R => exists n0 : nat, P n0 /\ y = (/ (INR n0 + 1))%R \/ ~ P n0 /\ y = 0%R:R -> PropHE:forall n0 : nat, P n0 -> E (/ (INR n0 + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(l <= 0)%Rn:natPn:P nFalseHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n0 : nat, (0 < INR n0 + 1)%RP:nat -> PropHP:forall n0 : nat, P n0 \/ ~ P n0E:=fun y : R => exists n0 : nat, P n0 /\ y = (/ (INR n0 + 1))%R \/ ~ P n0 /\ y = 0%R:R -> PropHE:forall n0 : nat, P n0 -> E (/ (INR n0 + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(l <= 0)%Rn:natPn:P n(0 < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n0 : nat, (0 < INR n0 + 1)%RP:nat -> PropHP:forall n0 : nat, P n0 \/ ~ P n0E:=fun y : R => exists n0 : nat, P n0 /\ y = (/ (INR n0 + 1))%R \/ ~ P n0 /\ y = 0%R:R -> PropHE:forall n0 : nat, P n0 -> E (/ (INR n0 + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(l <= 0)%Rn:natPn:P n(0 < / (INR n + 1))%RHi:forall n0 : nat, (0 < INR n0 + 1)%RP:nat -> PropHP:forall n0 : nat, P n0 \/ ~ P n0E:=fun y : R => exists n0 : nat, P n0 /\ y = (/ (INR n0 + 1))%R \/ ~ P n0 /\ y = 0%R:R -> PropHE:forall n0 : nat, P n0 -> E (/ (INR n0 + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(l <= 0)%Rn:natPn:P n(/ (INR n + 1) <= l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n0 : nat, (0 < INR n0 + 1)%RP:nat -> PropHP:forall n0 : nat, P n0 \/ ~ P n0E:=fun y : R => exists n0 : nat, P n0 /\ y = (/ (INR n0 + 1))%R \/ ~ P n0 /\ y = 0%R:R -> PropHE:forall n0 : nat, P n0 -> E (/ (INR n0 + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(l <= 0)%Rn:natPn:P n(/ (INR n + 1) <= l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n0 : nat, (0 < INR n0 + 1)%RP:nat -> PropHP:forall n0 : nat, P n0 \/ ~ P n0E:=fun y : R => exists n0 : nat, P n0 /\ y = (/ (INR n0 + 1))%R \/ ~ P n0 /\ y = 0%R:R -> PropHE:forall n0 : nat, P n0 -> E (/ (INR n0 + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(l <= 0)%Rn:natPn:P nE (/ (INR n + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)} + {forall n : nat, ~ P n}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%R{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat{n : nat | P n /\ (forall i : nat, i < n -> ~ P i)}Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(INR N + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(INR (Z.abs_nat (up (/ l) - 2)) + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(IZR (Z.of_nat (Z.abs_nat (up (/ l) - 2))) + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(IZR (Z.abs (up (/ l) - 2)) + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(IZR (Z.abs (up (/ l) - 2)) + 1)%R = (IZR (up (/ l) - 2) + 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(IZR (up (/ l) - 2) + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natZ.abs (up (/ l) - 2) = (up (/ l) - 2)%ZHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(IZR (up (/ l) - 2) + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(0 <= up (/ l) - 2)%ZHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(IZR (up (/ l) - 2) + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(2 <= up (/ l))%ZHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(IZR (up (/ l) - 2) + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(1 < up (/ l))%ZHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(IZR (up (/ l) - 2) + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(1 < IZR (up (/ l)))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(IZR (up (/ l) - 2) + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(1 <= / l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(/ l < IZR (up (/ l)))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(IZR (up (/ l) - 2) + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(1 * l <= / l * l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(/ l < IZR (up (/ l)))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(IZR (up (/ l) - 2) + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(l <= 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(/ l < IZR (up (/ l)))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(IZR (up (/ l) - 2) + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natis_upper_bound E 1Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(/ l < IZR (up (/ l)))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(IZR (up (/ l) - 2) + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(/ l < IZR (up (/ l)))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(IZR (up (/ l) - 2) + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(IZR (up (/ l) - 2) + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(IZR (up (/ l)) - 2 + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):nat(IZR (up (/ l)) - 2 + 1)%R = (IZR (up (/ l)) - 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Rforall i : nat, i < N -> ~ P iHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P iFalseHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P iFalseHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P iE (/ (INR i + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(l < / (INR i + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(l < / (INR i + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(/ / l < / (INR i + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(1 <= INR i + 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(INR i + 1 < / l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(1 <= INR (S i))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(INR i + 1 < / l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i1 <= S iHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(INR i + 1 < / l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i0 <= iHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(INR i + 1 < / l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(INR i + 1 < / l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(INR i + 1 < INR N + 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(INR N + 1 <= / l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(INR i < INR N)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(INR N + 1 <= / l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(INR N + 1 <= / l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(IZR (up (/ l)) - 1 <= / l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(IZR (up (/ l)) - 1 + (- / l + 1) <= / l + (- / l + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:forall x : R, E x -> (x <= l)%Rlub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%Ri:natHiN:i < NPi:P i(IZR (up (/ l)) - / l <= 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:P NP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P NP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P NP N /\ (forall i : nat, i < N -> ~ P i)Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P NFalseHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Nis_upper_bound E (/ (INR (S N) + 1))Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ (INR (S N) + 1) < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:natPy:P y(/ (INR y + 1) <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:nat(0 <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ (INR (S N) + 1) < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:natPy:P yHyN:y = N(/ (INR y + 1) <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:natPy:P yHyN:y <> N(/ (INR y + 1) <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:nat(0 <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ (INR (S N) + 1) < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:natPy:P yHyN:y = NP NHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:natPy:P yHyN:y <> N(/ (INR y + 1) <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:nat(0 <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ (INR (S N) + 1) < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:natPy:P yHyN:y <> N(/ (INR y + 1) <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:nat(0 <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ (INR (S N) + 1) < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:natPy:P yHyN:y <> N(0 < INR (S N) + 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:natPy:P yHyN:y <> N(INR (S N) + 1 <= INR y + 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:nat(0 <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ (INR (S N) + 1) < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:natPy:P yHyN:y <> N(INR (S N) + 1 <= INR y + 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:nat(0 <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ (INR (S N) + 1) < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:natPy:P yHyN:y <> N(INR (S N) <= INR y)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:nat(0 <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ (INR (S N) + 1) < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:natPy:P yHyN:y <> N~ (INR y < INR (S N))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:nat(0 <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ (INR (S N) + 1) < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:natPy:P yHyN:y <> NHy:(INR y < INR (S N))%RFalseHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:nat(0 <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ (INR (S N) + 1) < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:natPy:P yHyN:y <> NHy:(INR y < INR (S N))%Ry < NHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:nat(0 <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ (INR (S N) + 1) < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:natPy:P yHyN:y <> NHy:y < S Ny < NHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:nat(0 <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ (INR (S N) + 1) < l)%Rl:RN:=Z.abs_nat (up (/ l) - 2):naty:natHyN:y <> NHy:y < S Ny < NHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:nat(0 <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ (INR (S N) + 1) < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y0 : R => exists n : nat, P n /\ y0 = (/ (INR n + 1))%R \/ ~ P n /\ y0 = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P Ny:nat(0 <= / (INR (S N) + 1))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ (INR (S N) + 1) < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ (INR (S N) + 1) < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ (IZR (up (/ l)) - 1 + 1) < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ IZR (up (/ l)) < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ IZR (up (/ l)) < / / l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(1 <= / l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ l < IZR (up (/ l)))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ 1 <= / l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ l < IZR (up (/ l)))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(0 < l)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(l <= 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ l < IZR (up (/ l)))%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(l <= 1)%RHi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ l < IZR (up (/ l)))%Rapply archimed. Qed.Hi:forall n : nat, (0 < INR n + 1)%RP:nat -> PropHP:forall n : nat, P n \/ ~ P nE:=fun y : R => exists n : nat, P n /\ y = (/ (INR n + 1))%R \/ ~ P n /\ y = 0%R:R -> PropHE:forall n : nat, P n -> E (/ (INR n + 1))%RBE:is_upper_bound E 1l:Rub:is_upper_bound E llub:forall b : R, is_upper_bound E b -> (l <= b)%RHl:(0 < l)%RN:=Z.abs_nat (up (/ l) - 2):natHN:(INR N + 1)%R = (IZR (up (/ l)) - 1)%RH:forall i : nat, i < N -> ~ P iPN:~ P N(/ l < IZR (up (/ l)))%Rforall P : nat -> Prop, (forall n : nat, P n \/ ~ P n) -> {n : nat | P n} + {forall n : nat, ~ P n}forall P : nat -> Prop, (forall n : nat, P n \/ ~ P n) -> {n : nat | P n} + {forall n : nat, ~ P n}P:nat -> PropHP:forall n : nat, P n \/ ~ P n{n : nat | P n} + {forall n : nat, ~ P n}P:nat -> PropHP:forall n0 : nat, P n0 \/ ~ P n0n:natPn:P n{n0 : nat | P n0} + {forall n0 : nat, ~ P n0}P:nat -> PropHP:forall n : nat, P n \/ ~ P nPn:forall n : nat, ~ P n{n : nat | P n} + {forall n : nat, ~ P n}P:nat -> PropHP:forall n0 : nat, P n0 \/ ~ P n0n:natPn:P n{n0 : nat | P n0}P:nat -> PropHP:forall n : nat, P n \/ ~ P nPn:forall n : nat, ~ P n{n : nat | P n} + {forall n : nat, ~ P n}now right. Qed.P:nat -> PropHP:forall n : nat, P n \/ ~ P nPn:forall n : nat, ~ P n{n : nat | P n} + {forall n : nat, ~ P n}forall P : Z -> Prop, (forall n : Z, P n \/ ~ P n) -> {n : Z | P n} + {forall n : Z, ~ P n}forall P : Z -> Prop, (forall n : Z, P n \/ ~ P n) -> {n : Z | P n} + {forall n : Z, ~ P n}P:Z -> PropH:forall n : Z, P n \/ ~ P n{n : Z | P n} + {forall n : Z, ~ P n}P:Z -> PropH:forall n : Z, P n \/ ~ P nforall n : nat, P (Z.of_nat n) \/ ~ P (Z.of_nat n)P:Z -> PropH:forall n : Z, P n \/ ~ P nJ:{n : nat | P (Z.of_nat n)}{n : Z | P n} + {forall n : Z, ~ P n}P:Z -> PropH:forall n : Z, P n \/ ~ P nJ:forall n : nat, ~ P (Z.of_nat n){n : Z | P n} + {forall n : Z, ~ P n}P:Z -> PropH:forall n : Z, P n \/ ~ P nJ:{n : nat | P (Z.of_nat n)}{n : Z | P n} + {forall n : Z, ~ P n}P:Z -> PropH:forall n : Z, P n \/ ~ P nJ:forall n : nat, ~ P (Z.of_nat n){n : Z | P n} + {forall n : Z, ~ P n}P:Z -> PropH:forall n0 : Z, P n0 \/ ~ P n0n:natHn:P (Z.of_nat n){n0 : Z | P n0} + {forall n0 : Z, ~ P n0}P:Z -> PropH:forall n : Z, P n \/ ~ P nJ:forall n : nat, ~ P (Z.of_nat n){n : Z | P n} + {forall n : Z, ~ P n}P:Z -> PropH:forall n : Z, P n \/ ~ P nJ:forall n : nat, ~ P (Z.of_nat n){n : Z | P n} + {forall n : Z, ~ P n}P:Z -> PropH:forall n : Z, P n \/ ~ P nJ:forall n : nat, ~ P (Z.of_nat n)forall n : nat, P (- Z.of_nat n)%Z \/ ~ P (- Z.of_nat n)%ZP:Z -> PropH:forall n : Z, P n \/ ~ P nJ:forall n : nat, ~ P (Z.of_nat n)K:{n : nat | P (- Z.of_nat n)%Z}{n : Z | P n} + {forall n : Z, ~ P n}P:Z -> PropH:forall n : Z, P n \/ ~ P nJ:forall n : nat, ~ P (Z.of_nat n)K:forall n : nat, ~ P (- Z.of_nat n)%Z{n : Z | P n} + {forall n : Z, ~ P n}P:Z -> PropH:forall n : Z, P n \/ ~ P nJ:forall n : nat, ~ P (Z.of_nat n)K:{n : nat | P (- Z.of_nat n)%Z}{n : Z | P n} + {forall n : Z, ~ P n}P:Z -> PropH:forall n : Z, P n \/ ~ P nJ:forall n : nat, ~ P (Z.of_nat n)K:forall n : nat, ~ P (- Z.of_nat n)%Z{n : Z | P n} + {forall n : Z, ~ P n}P:Z -> PropH:forall n0 : Z, P n0 \/ ~ P n0J:forall n0 : nat, ~ P (Z.of_nat n0)n:natHn:P (- Z.of_nat n)%Z{n0 : Z | P n0} + {forall n0 : Z, ~ P n0}P:Z -> PropH:forall n : Z, P n \/ ~ P nJ:forall n : nat, ~ P (Z.of_nat n)K:forall n : nat, ~ P (- Z.of_nat n)%Z{n : Z | P n} + {forall n : Z, ~ P n}P:Z -> PropH:forall n : Z, P n \/ ~ P nJ:forall n : nat, ~ P (Z.of_nat n)K:forall n : nat, ~ P (- Z.of_nat n)%Z{n : Z | P n} + {forall n : Z, ~ P n}P:Z -> PropH:forall n0 : Z, P n0 \/ ~ P n0J:forall n0 : nat, ~ P (Z.of_nat n0)K:forall n0 : nat, ~ P (- Z.of_nat n0)%Zn:ZM:(0 <= n)%Z~ P nP:Z -> PropH:forall n0 : Z, P n0 \/ ~ P n0J:forall n0 : nat, ~ P (Z.of_nat n0)K:forall n0 : nat, ~ P (- Z.of_nat n0)%Zn:ZM:(n < 0)%Z~ P nP:Z -> PropH:forall n0 : Z, P n0 \/ ~ P n0J:forall n0 : nat, ~ P (Z.of_nat n0)K:forall n0 : nat, ~ P (- Z.of_nat n0)%Zn:ZM:(0 <= n)%Z~ P (Z.abs n)P:Z -> PropH:forall n0 : Z, P n0 \/ ~ P n0J:forall n0 : nat, ~ P (Z.of_nat n0)K:forall n0 : nat, ~ P (- Z.of_nat n0)%Zn:ZM:(n < 0)%Z~ P nP:Z -> PropH:forall n0 : Z, P n0 \/ ~ P n0J:forall n0 : nat, ~ P (Z.of_nat n0)K:forall n0 : nat, ~ P (- Z.of_nat n0)%Zn:ZM:(0 <= n)%Z~ P (Z.of_nat (Z.abs_nat n))P:Z -> PropH:forall n0 : Z, P n0 \/ ~ P n0J:forall n0 : nat, ~ P (Z.of_nat n0)K:forall n0 : nat, ~ P (- Z.of_nat n0)%Zn:ZM:(n < 0)%Z~ P nP:Z -> PropH:forall n0 : Z, P n0 \/ ~ P n0J:forall n0 : nat, ~ P (Z.of_nat n0)K:forall n0 : nat, ~ P (- Z.of_nat n0)%Zn:ZM:(n < 0)%Z~ P nP:Z -> PropH:forall n0 : Z, P n0 \/ ~ P n0J:forall n0 : nat, ~ P (Z.of_nat n0)K:forall n0 : nat, ~ P (- Z.of_nat n0)%Zn:ZM:(n < 0)%Z~ P (- - n)%ZP:Z -> PropH:forall n0 : Z, P n0 \/ ~ P n0J:forall n0 : nat, ~ P (Z.of_nat n0)K:forall n0 : nat, ~ P (- Z.of_nat n0)%Zn:ZM:(n < 0)%Z~ P (- Z.abs n)%ZP:Z -> PropH:forall n0 : Z, P n0 \/ ~ P n0J:forall n0 : nat, ~ P (Z.of_nat n0)K:forall n0 : nat, ~ P (- Z.of_nat n0)%Zn:ZM:(n < 0)%Z(n <= 0)%ZP:Z -> PropH:forall n0 : Z, P n0 \/ ~ P n0J:forall n0 : nat, ~ P (Z.of_nat n0)K:forall n0 : nat, ~ P (- Z.of_nat n0)%Zn:ZM:(n < 0)%Z~ P (- Z.of_nat (Z.abs_nat n))%ZP:Z -> PropH:forall n0 : Z, P n0 \/ ~ P n0J:forall n0 : nat, ~ P (Z.of_nat n0)K:forall n0 : nat, ~ P (- Z.of_nat n0)%Zn:ZM:(n < 0)%Z(n <= 0)%Zomega. Qed.P:Z -> PropH:forall n0 : Z, P n0 \/ ~ P n0J:forall n0 : nat, ~ P (Z.of_nat n0)K:forall n0 : nat, ~ P (- Z.of_nat n0)%Zn:ZM:(n < 0)%Z(n <= 0)%Z
A little tactic to simplify terms of the form bpow a × bpow b.
Ltac bpow_simplify :=
(* bpow ex * bpow ey ~~> bpow (ex + ey) *)
repeat
match goal with
| |- context [(bpow _ _ * bpow _ _)] =>
rewrite <- bpow_plus
| |- context [(?X1 * bpow _ _ * bpow _ _)] =>
rewrite (Rmult_assoc X1); rewrite <- bpow_plus
| |- context [(?X1 * (?X2 * bpow _ _) * bpow _ _)] =>
rewrite <- (Rmult_assoc X1 X2); rewrite (Rmult_assoc (X1 * X2));
rewrite <- bpow_plus
end;
(* ring_simplify arguments of bpow *)
repeat
match goal with
| |- context [(bpow _ ?X)] =>
progress ring_simplify X
end;
(* bpow 0 ~~> 1 *)
change (bpow _ 0) with 1;
repeat
match goal with
| |- context [(_ * 1)] =>
rewrite Rmult_1_r
end.