Built with Alectryon, running Coq+SerAPI v8.10.0+0.7.0. Coq sources are in this panel; goals and messages will appear in the other. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus.
(************************************************************************)
(* * The Coq Proof Assistant / The Coq Development Team *)
(* v * INRIA, CNRS and contributors - Copyright 1999-2018 *)
(* <O___,, * (see CREDITS file for the list of authors) *)
(* \VV/ **************************************************************)
(* // * This file is distributed under the terms of the *)
(* * GNU Lesser General Public License Version 2.1 *)
(* * (see LICENSE file for the text of the license) *)
(************************************************************************)
(*i Some properties about pow and sum have been made with John Harrison i*)
(*i Some Lemmas (about pow and powerRZ) have been done by Laurent Thery i*)
(********************************************************)
Definition of the sum functions
(* *) (********************************************************) Require Export ArithRing. Require Import Rbase. Require Export Rpow_def. Require Export R_Ifp. Require Export Rbasic_fun. Require Export R_sqr. Require Export SplitAbsolu. Require Export SplitRmult. Require Export ArithProp. Require Import Omega. Require Import Zpower. Local Open Scope nat_scope. Local Open Scope R_scope. (*******************************)
(*******************************) (*********)forall n : nat, INR (fact n) <> 0intro; red; intro; apply (not_O_INR (fact n) (fact_neq_0 n)); assumption. Qed. (*********)forall n : nat, INR (fact n) <> 0forall n : nat, fact (S n) = (S n * fact n)%natintro; reflexivity. Qed. (*********)forall n : nat, fact (S n) = (S n * fact n)%natforall n : nat, / INR (fact (S n)) * / / INR (fact n) = / INR (S n)forall n : nat, / INR (fact (S n)) * / / INR (fact n) = / INR (S n)n:nat/ INR (S n) * / INR (fact n) * INR (fact n) = / INR (S n)n:natINR (S n) <> 0n:natINR (fact n) <> 0n:natINR (S n) <> 0n:natINR (fact n) <> 0apply INR_fact_neq_0. Qed. (*******************************)n:natINR (fact n) <> 0
(*******************************) (*********) Infix "^" := pow : R_scope.forall x : R, x ^ 0 = 1reflexivity. Qed.forall x : R, x ^ 0 = 1forall x : R, x ^ 1 = xsimpl; auto with real. Qed.forall x : R, x ^ 1 = xforall (x : R) (n m : nat), x ^ (n + m) = x ^ n * x ^ mforall (x : R) (n m : nat), x ^ (n + m) = x ^ n * x ^ mintros n0 H' m; rewrite H'; auto with real. Qed.x:Rn:natforall n0 : nat, (forall m : nat, x ^ (n0 + m) = x ^ n0 * x ^ m) -> forall m : nat, x * x ^ (n0 + m) = x * x ^ n0 * x ^ mforall (x y : R) (n : nat), (x * y) ^ n = x ^ n * y ^ nforall (x y : R) (n : nat), (x * y) ^ n = x ^ n * y ^ nx, y:R(x * y) ^ 0 = x ^ 0 * y ^ 0x, y:Rn:natIHn:(x * y) ^ n = x ^ n * y ^ n(x * y) ^ S n = x ^ S n * y ^ S nx, y:Rn:natIHn:(x * y) ^ n = x ^ n * y ^ n(x * y) ^ S n = x ^ S n * y ^ S nx, y:Rn:natIHn:(x * y) ^ n = x ^ n * y ^ nx * y * (x * y) ^ n = x * x ^ n * (y * y ^ n)rewrite IHn ; field. Qed.x, y:Rn:natIHn:(x * y) ^ n = x ^ n * y ^ ny * (x * y) ^ n = x ^ n * (y * y ^ n)forall (x : R) (n : nat), x <> 0 -> x ^ n <> 0forall (x : R) (n : nat), x <> 0 -> x ^ n <> 0x:Rn:natx <> 0 -> 1 <> 0x:Rn:natforall n0 : nat, (x <> 0 -> x ^ n0 <> 0) -> x <> 0 -> x * x ^ n0 <> 0x:Rn:natforall n0 : nat, (x <> 0 -> x ^ n0 <> 0) -> x <> 0 -> x * x ^ n0 <> 0x:Rn, n0:natH:x <> 0 -> x ^ n0 <> 0H0:x <> 0H1:x * x ^ n0 = 0x = 0 -> Falsex:Rn, n0:natH:x <> 0 -> x ^ n0 <> 0H0:x <> 0H1:x * x ^ n0 = 0x ^ n0 = 0 -> Falseapply H; assumption. Qed. Hint Resolve pow_O pow_1 pow_add pow_nonzero: real.x:Rn, n0:natH:x <> 0 -> x ^ n0 <> 0H0:x <> 0H1:x * x ^ n0 = 0x ^ n0 = 0 -> Falseforall (x : R) (n m : nat), x <> 0 -> x ^ n = x ^ (n + m) * / x ^ mforall (x : R) (n m : nat), x <> 0 -> x ^ n = x ^ (n + m) * / x ^ mx:Rn:natforall n0 : nat, (forall m : nat, x <> 0 -> x ^ n0 = x ^ (n0 + m) * / x ^ m) -> forall m : nat, x <> 0 -> x * x ^ n0 = x * x ^ (n0 + m) * / x ^ mrewrite Rmult_assoc; rewrite <- H'; auto. Qed.x:Rn, n0:natH':forall m0 : nat, x <> 0 -> x ^ n0 = x ^ (n0 + m0) * / x ^ m0m:natH'0:x <> 0x * x ^ n0 = x * x ^ (n0 + m) * / x ^ mforall (x : R) (n : nat), 0 < x -> 0 < x ^ nforall (x : R) (n : nat), 0 < x -> 0 < x ^ nintros n0 H' H'0; replace 0 with (x * 0); auto with real. Qed. Hint Resolve pow_lt: real.x:Rn:natforall n0 : nat, (0 < x -> 0 < x ^ n0) -> 0 < x -> 0 < x * x ^ n0forall (x : R) (n : nat), 1 < x -> (0 < n)%nat -> 1 < x ^ nforall (x : R) (n : nat), 1 < x -> (0 < n)%nat -> 1 < x ^ nx:Rn:nat1 < x -> (0 < 0)%nat -> 1 < 1x:Rn:natforall n0 : nat, (1 < x -> (0 < n0)%nat -> 1 < x ^ n0) -> 1 < x -> (0 < S n0)%nat -> 1 < x * x ^ n0x:Rn:natforall n0 : nat, (1 < x -> (0 < n0)%nat -> 1 < x ^ n0) -> 1 < x -> (0 < S n0)%nat -> 1 < x * x ^ n0x:Rn, n0:nat(1 < x -> (0 < 0)%nat -> 1 < x ^ 0) -> 1 < x -> (0 < 1)%nat -> 1 < x * x ^ 0x:Rn, n0:natforall n1 : nat, (1 < x -> (0 < S n1)%nat -> 1 < x ^ S n1) -> 1 < x -> (0 < S (S n1))%nat -> 1 < x * x ^ S n1x:Rn, n0:natforall n1 : nat, (1 < x -> (0 < S n1)%nat -> 1 < x ^ S n1) -> 1 < x -> (0 < S (S n1))%nat -> 1 < x * x ^ S n1x:Rn, n0, n1:natH':1 < x -> (0 < S n1)%nat -> 1 < x ^ S n1H'0:1 < xH'1:(0 < S (S n1))%nat1 < x * x ^ S n1x:Rn, n0, n1:natH':1 < x -> (0 < S n1)%nat -> 1 < x ^ S n1H'0:1 < xH'1:(0 < S (S n1))%nat1 * 1 < x * x ^ S n1x:Rn, n0, n1:natH':1 < x -> (0 < S n1)%nat -> 1 < x ^ S n1H'0:1 < xH'1:(0 < S (S n1))%natx * 1 < x * x ^ S n1x:Rn, n0, n1:natH':1 < x -> (0 < S n1)%nat -> 1 < x ^ S n1H'0:1 < xH'1:(0 < S (S n1))%nat0 < xx:Rn, n0, n1:natH':1 < x -> (0 < S n1)%nat -> 1 < x ^ S n1H'0:1 < xH'1:(0 < S (S n1))%nat1 < x ^ S n1apply H'; auto with arith. Qed. Hint Resolve Rlt_pow_R1: real.x:Rn, n0, n1:natH':1 < x -> (0 < S n1)%nat -> 1 < x ^ S n1H'0:1 < xH'1:(0 < S (S n1))%nat1 < x ^ S n1forall (x : R) (n m : nat), 1 < x -> (n < m)%nat -> x ^ n < x ^ mforall (x : R) (n m : nat), 1 < x -> (n < m)%nat -> x ^ n < x ^ mx:Rn, m:natH':1 < xH'0:(n < m)%natx ^ n < x ^ (m - n + n)x:Rn, m:natH':1 < xH'0:(n < m)%nat(m - n + n)%nat = mx:Rn, m:natH':1 < xH'0:(n < m)%natx ^ n < x ^ (m - n) * x ^ nx:Rn, m:natH':1 < xH'0:(n < m)%nat(m - n + n)%nat = mx:Rn, m:natH':1 < xH'0:(n < m)%nat1 * x ^ n < x ^ (m - n) * x ^ nx:Rn, m:natH':1 < xH'0:(n < m)%nat(m - n + n)%nat = mx:Rn, m:natH':1 < xH'0:(n < m)%nat1 * x ^ n - x ^ (m - n) * x ^ n < 0x:Rn, m:natH':1 < xH'0:(n < m)%nat(m - n + n)%nat = mx:Rn, m:natH':1 < xH'0:(n < m)%natx ^ n * (1 - x ^ (m - n)) < 0x:Rn, m:natH':1 < xH'0:(n < m)%nat(m - n + n)%nat = mx:Rn, m:natH':1 < xH'0:(n < m)%natx ^ n * (1 - x ^ (m - n)) < x ^ n * 0x:Rn, m:natH':1 < xH'0:(n < m)%nat(m - n + n)%nat = mx:Rn, m:natH':1 < xH'0:(n < m)%nat0 < x ^ nx:Rn, m:natH':1 < xH'0:(n < m)%nat1 - x ^ (m - n) < 0x:Rn, m:natH':1 < xH'0:(n < m)%nat(m - n + n)%nat = mx:Rn, m:natH':1 < xH'0:(n < m)%nat0 < xx:Rn, m:natH':1 < xH'0:(n < m)%nat1 - x ^ (m - n) < 0x:Rn, m:natH':1 < xH'0:(n < m)%nat(m - n + n)%nat = mx:Rn, m:natH':1 < xH'0:(n < m)%nat1 - x ^ (m - n) < 0x:Rn, m:natH':1 < xH'0:(n < m)%nat(m - n + n)%nat = mx:Rn, m:natH':1 < xH'0:(n < m)%nat1 < x ^ (m - n)x:Rn, m:natH':1 < xH'0:(n < m)%nat(m - n + n)%nat = mx:Rn, m:natH':1 < xH'0:(n < m)%nat(0 < m - n)%natx:Rn, m:natH':1 < xH'0:(n < m)%nat(m - n + n)%nat = mx:Rn, m:natH':1 < xH'0:(n < m)%nat(n + 0 < n + (m - n))%natx:Rn, m:natH':1 < xH'0:(n < m)%nat(m - n + n)%nat = mrewrite plus_comm; auto with arith. Qed. Hint Resolve Rlt_pow: real. (*********)x:Rn, m:natH':1 < xH'0:(n < m)%nat(m - n + n)%nat = mforall (x : R) (n : nat), x * x ^ n = x ^ S nsimple induction n; simpl; trivial. Qed. (*********)forall (x : R) (n : nat), x * x ^ n = x ^ S nforall (x : R) (a n : nat), x ^ a + INR n * x ^ a = INR (S n) * x ^ aintros; pattern (x ^ a) at 1; rewrite <- (let (H1, H2) := Rmult_ne (x ^ a) in H1); rewrite (Rmult_comm (INR n) (x ^ a)); rewrite <- (Rmult_plus_distr_l (x ^ a) 1 (INR n)); rewrite (Rplus_comm 1 (INR n)); rewrite <- (S_INR n); apply Rmult_comm. Qed.forall (x : R) (a n : nat), x ^ a + INR n * x ^ a = INR (S n) * x ^ aforall (n : nat) (x : R), 0 < x -> 1 + INR n * x <= (1 + x) ^ nforall (n : nat) (x : R), 0 < x -> 1 + INR n * x <= (1 + x) ^ nn:natx:RH:0 < x1 + INR 0 * x <= (1 + x) ^ 0n:natx:RH:0 < xforall n0 : nat, 1 + INR n0 * x <= (1 + x) ^ n0 -> 1 + INR (S n0) * x <= (1 + x) ^ S n0n:natx:RH:0 < x1 + 0 * x = 1 -> 1 + 0 * x <= 1n:natx:RH:0 < x1 + 0 * x = 1n:natx:RH:0 < xforall n0 : nat, 1 + INR n0 * x <= (1 + x) ^ n0 -> 1 + INR (S n0) * x <= (1 + x) ^ S n0n:natx:RH:0 < x1 + 0 * x = 1n:natx:RH:0 < xforall n0 : nat, 1 + INR n0 * x <= (1 + x) ^ n0 -> 1 + INR (S n0) * x <= (1 + x) ^ S n0n:natx:RH:0 < xforall n0 : nat, 1 + INR n0 * x <= (1 + x) ^ n0 -> 1 + INR (S n0) * x <= (1 + x) ^ S n0n:natx:RH:0 < xn0:natH0:1 + INR n0 * x <= (1 + x) ^ n01 + INR (S n0) * x <= (1 + x) * (1 + INR n0 * x)n:natx:RH:0 < xn0:natH0:1 + INR n0 * x <= (1 + x) ^ n0(1 + x) * (1 + INR n0 * x) <= (1 + x) * (1 + x) ^ n0n:natx:RH:0 < xn0:natH0:1 + INR n0 * x <= (1 + x) ^ n0(1 + x) * (1 + INR n0 * x) = 1 + INR (S n0) * x + INR n0 * (x * x) -> 1 + INR (S n0) * x <= (1 + x) * (1 + INR n0 * x)n:natx:RH:0 < xn0:natH0:1 + INR n0 * x <= (1 + x) ^ n0(1 + x) * (1 + INR n0 * x) = 1 + INR (S n0) * x + INR n0 * (x * x)n:natx:RH:0 < xn0:natH0:1 + INR n0 * x <= (1 + x) ^ n0(1 + x) * (1 + INR n0 * x) <= (1 + x) * (1 + x) ^ n0n:natx:RH:0 < xn0:natH0:1 + INR n0 * x <= (1 + x) ^ n0H1:(1 + x) * (1 + INR n0 * x) = 1 + INR (S n0) * x + INR n0 * (x * x)0 <= INR 0 * (x * x)n:natx:RH:0 < xn0:natH0:1 + INR n0 * x <= (1 + x) ^ n0H1:(1 + x) * (1 + INR n0 * x) = 1 + INR (S n0) * x + INR n0 * (x * x)n1:natH2:0 <= INR n1 * (x * x)0 <= INR (S n1) * (x * x)n:natx:RH:0 < xn0:natH0:1 + INR n0 * x <= (1 + x) ^ n0(1 + x) * (1 + INR n0 * x) = 1 + INR (S n0) * x + INR n0 * (x * x)n:natx:RH:0 < xn0:natH0:1 + INR n0 * x <= (1 + x) ^ n0(1 + x) * (1 + INR n0 * x) <= (1 + x) * (1 + x) ^ n0n:natx:RH:0 < xn0:natH0:1 + INR n0 * x <= (1 + x) ^ n0H1:(1 + x) * (1 + INR n0 * x) = 1 + INR (S n0) * x + INR n0 * (x * x)n1:natH2:0 <= INR n1 * (x * x)0 <= INR (S n1) * (x * x)n:natx:RH:0 < xn0:natH0:1 + INR n0 * x <= (1 + x) ^ n0(1 + x) * (1 + INR n0 * x) = 1 + INR (S n0) * x + INR n0 * (x * x)n:natx:RH:0 < xn0:natH0:1 + INR n0 * x <= (1 + x) ^ n0(1 + x) * (1 + INR n0 * x) <= (1 + x) * (1 + x) ^ n0n:natx:RH:0 < xn0:natH0:1 + INR n0 * x <= (1 + x) ^ n0(1 + x) * (1 + INR n0 * x) = 1 + INR (S n0) * x + INR n0 * (x * x)n:natx:RH:0 < xn0:natH0:1 + INR n0 * x <= (1 + x) ^ n0(1 + x) * (1 + INR n0 * x) <= (1 + x) * (1 + x) ^ n0n:natx:RH:0 < xn0:natH0:1 + INR n0 * x <= (1 + x) ^ n0(1 + x) * (1 + INR n0 * x) <= (1 + x) * (1 + x) ^ n0n:natx:RH:0 < xn0:natH0:1 + INR n0 * x < (1 + x) ^ n0 \/ 1 + INR n0 * x = (1 + x) ^ n0H1:1 + INR n0 * x < (1 + x) ^ n0(1 + x) * (1 + INR n0 * x) <= (1 + x) * (1 + x) ^ n0n:natx:RH:0 < xn0:natH0:1 + INR n0 * x < (1 + x) ^ n0 \/ 1 + INR n0 * x = (1 + x) ^ n0H1:1 + INR n0 * x = (1 + x) ^ n0(1 + x) * (1 + INR n0 * x) <= (1 + x) * (1 + x) ^ n0n:natx:RH:0 < xn0:natH0:1 + INR n0 * x < (1 + x) ^ n0 \/ 1 + INR n0 * x = (1 + x) ^ n0H1:1 + INR n0 * x < (1 + x) ^ n00 < 1 + xn:natx:RH:0 < xn0:natH0:1 + INR n0 * x < (1 + x) ^ n0 \/ 1 + INR n0 * x = (1 + x) ^ n0H1:1 + INR n0 * x < (1 + x) ^ n01 + INR n0 * x < (1 + x) ^ n0n:natx:RH:0 < xn0:natH0:1 + INR n0 * x < (1 + x) ^ n0 \/ 1 + INR n0 * x = (1 + x) ^ n0H1:1 + INR n0 * x = (1 + x) ^ n0(1 + x) * (1 + INR n0 * x) <= (1 + x) * (1 + x) ^ n0n:natx:RH:0 < xn0:natH0:1 + INR n0 * x < (1 + x) ^ n0 \/ 1 + INR n0 * x = (1 + x) ^ n0H1:1 + INR n0 * x < (1 + x) ^ n01 + INR n0 * x < (1 + x) ^ n0n:natx:RH:0 < xn0:natH0:1 + INR n0 * x < (1 + x) ^ n0 \/ 1 + INR n0 * x = (1 + x) ^ n0H1:1 + INR n0 * x = (1 + x) ^ n0(1 + x) * (1 + INR n0 * x) <= (1 + x) * (1 + x) ^ n0rewrite H1; unfold Rle; right; trivial. Qed.n:natx:RH:0 < xn0:natH0:1 + INR n0 * x < (1 + x) ^ n0 \/ 1 + INR n0 * x = (1 + x) ^ n0H1:1 + INR n0 * x = (1 + x) ^ n0(1 + x) * (1 + INR n0 * x) <= (1 + x) * (1 + x) ^ n0forall (x : R) (m n : nat), Rabs x > 1 -> (m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)forall (x : R) (m n : nat), Rabs x > 1 -> (m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)x:Rm:natH:Rabs x > 1H0:(m <= 0)%natH1:m = 0%natRabs (x ^ 0) <= Rabs (x ^ 0)x:Rm, n:natH:Rabs x > 1Hrecn:(m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)H0:(m <= S n)%natH1:m = S nRabs (x ^ S n) <= Rabs (x ^ S n)x:Rm, n:natH:Rabs x > 1Hrecn:(m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)H0:(m <= S n)%natm0:natH2:(m <= n)%natH1:m0 = nRabs (x ^ m) <= Rabs (x ^ S n)x:Rm, n:natH:Rabs x > 1Hrecn:(m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)H0:(m <= S n)%natH1:m = S nRabs (x ^ S n) <= Rabs (x ^ S n)x:Rm, n:natH:Rabs x > 1Hrecn:(m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)H0:(m <= S n)%natm0:natH2:(m <= n)%natH1:m0 = nRabs (x ^ m) <= Rabs (x ^ S n)x:Rm, n:natH:Rabs x > 1Hrecn:(m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)H0:(m <= S n)%natm0:natH2:(m <= n)%natH1:m0 = nRabs (x ^ m) <= Rabs (x ^ S n)x:Rm, n:natH:Rabs x > 1Hrecn:(m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)H0:(m <= S n)%natm0:natH2:(m <= n)%natH1:m0 = nRabs (x ^ m) <= Rabs (x ^ n)x:Rm, n:natH:Rabs x > 1Hrecn:(m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)H0:(m <= S n)%natm0:natH2:(m <= n)%natH1:m0 = nRabs (x ^ n) <= Rabs (x ^ S n)x:Rm, n:natH:Rabs x > 1Hrecn:(m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)H0:(m <= S n)%natm0:natH2:(m <= n)%natH1:m0 = nRabs (x ^ n) <= Rabs (x ^ S n)x:Rm, n:natH:Rabs x > 1Hrecn:(m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)H0:(m <= S n)%natm0:natH2:(m <= n)%natH1:m0 = nRabs (x ^ n) <= Rabs x * Rabs (x ^ n)x:Rm, n:natH:Rabs x > 1Hrecn:(m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)H0:(m <= S n)%natm0:natH2:(m <= n)%natH1:m0 = n(fun r : R => r <= Rabs x * Rabs (x ^ n)) (Rabs (x ^ n))x:Rm, n:natH:Rabs x > 1Hrecn:(m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)H0:(m <= S n)%natm0:natH2:(m <= n)%natH1:m0 = nRabs (x ^ n) * 1 <= Rabs x * Rabs (x ^ n)x:Rm, n:natH:Rabs x > 1Hrecn:(m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)H0:(m <= S n)%natm0:natH2:(m <= n)%natH1:m0 = nRabs (x ^ n) * 1 <= Rabs (x ^ n) * Rabs xx:Rm, n:natH:Rabs x > 1Hrecn:(m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)H0:(m <= S n)%natm0:natH2:(m <= n)%natH1:m0 = n0 <= Rabs (x ^ n)x:Rm, n:natH:Rabs x > 1Hrecn:(m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)H0:(m <= S n)%natm0:natH2:(m <= n)%natH1:m0 = n1 <= Rabs xx:Rm, n:natH:Rabs x > 1Hrecn:(m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)H0:(m <= S n)%natm0:natH2:(m <= n)%natH1:m0 = n1 <= Rabs xapply Rlt_le; assumption. Qed.x:Rm, n:natH:1 < Rabs xHrecn:(m <= n)%nat -> Rabs (x ^ m) <= Rabs (x ^ n)H0:(m <= S n)%natm0:natH2:(m <= n)%natH1:m0 = n1 <= Rabs xforall (x : R) (n : nat), Rabs x ^ n = Rabs (x ^ n)forall (x : R) (n : nat), Rabs x ^ n = Rabs (x ^ n)x:Rn:nat1 = Rabs 1x:Rn:natforall n0 : nat, Rabs x ^ n0 = Rabs (x ^ n0) -> Rabs x * Rabs x ^ n0 = Rabs (x * x ^ n0)intros; rewrite H; symmetry; apply Rabs_mult. Qed.x:Rn:natforall n0 : nat, Rabs x ^ n0 = Rabs (x ^ n0) -> Rabs x * Rabs x ^ n0 = Rabs (x * x ^ n0)forall x : R, Rabs x > 1 -> forall b : R, exists N : nat, forall n : nat, (n >= N)%nat -> Rabs (x ^ n) >= bforall x : R, Rabs x > 1 -> forall b : R, exists N : nat, forall n : nat, (n >= N)%nat -> Rabs (x ^ n) >= bx:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)(exists N : nat, INR N >= b * / (Rabs x - 1)) -> exists N : nat, forall n : nat, (n >= N)%nat -> Rabs (x ^ n) >= bx:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)exists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natRabs (x ^ n) >= Rabs (x ^ x0)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natRabs (x ^ x0) >= bx:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)exists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natRabs (x ^ x0) >= bx:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)exists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natRabs x = 1 + (Rabs x - 1) -> Rabs x ^ x0 >= bx:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natRabs x = 1 + (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)exists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natH3:Rabs x = 1 + (Rabs x - 1)(1 + (Rabs x - 1)) ^ x0 >= 1 + INR x0 * (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natH3:Rabs x = 1 + (Rabs x - 1)1 + INR x0 * (Rabs x - 1) >= bx:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natRabs x = 1 + (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)exists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natH3:Rabs x = 1 + (Rabs x - 1)1 + INR x0 * (Rabs x - 1) >= bx:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natRabs x = 1 + (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)exists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natH3:Rabs x = 1 + (Rabs x - 1)1 + INR x0 * (Rabs x - 1) >= INR x0 * (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natH3:Rabs x = 1 + (Rabs x - 1)INR x0 * (Rabs x - 1) >= bx:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natRabs x = 1 + (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)exists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natH3:Rabs x = 1 + (Rabs x - 1)INR x0 * (Rabs x - 1) >= bx:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natRabs x = 1 + (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)exists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natH3:Rabs x = 1 + (Rabs x - 1)b = b * / (Rabs x - 1) * (Rabs x - 1) -> INR x0 * (Rabs x - 1) >= bx:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natH3:Rabs x = 1 + (Rabs x - 1)b = b * / (Rabs x - 1) * (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natRabs x = 1 + (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)exists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natH3:Rabs x = 1 + (Rabs x - 1)H4:b = b * / (Rabs x - 1) * (Rabs x - 1)Rabs x - 1 >= 0x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natH3:Rabs x = 1 + (Rabs x - 1)H4:b = b * / (Rabs x - 1) * (Rabs x - 1)INR x0 >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natH3:Rabs x = 1 + (Rabs x - 1)b = b * / (Rabs x - 1) * (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natRabs x = 1 + (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)exists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natH3:Rabs x = 1 + (Rabs x - 1)H4:b = b * / (Rabs x - 1) * (Rabs x - 1)INR x0 >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natH3:Rabs x = 1 + (Rabs x - 1)b = b * / (Rabs x - 1) * (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natRabs x = 1 + (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)exists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natH3:Rabs x = 1 + (Rabs x - 1)b = b * / (Rabs x - 1) * (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natRabs x = 1 + (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)exists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natH3:Rabs x = 1 + (Rabs x - 1)b = b * 1x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natH3:Rabs x = 1 + (Rabs x - 1)Rabs x - 1 <> 0x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natRabs x = 1 + (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)exists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natH3:Rabs x = 1 + (Rabs x - 1)Rabs x - 1 <> 0x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natRabs x = 1 + (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)exists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)x0:natH1:INR x0 >= b * / (Rabs x - 1)n:natH2:(n >= x0)%natRabs x = 1 + (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)exists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)exists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%Z -> exists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%Zx:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)H1:(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%ZH2:(0 <= up (b * / (Rabs x - 1)))%Zexists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)H1:(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%ZH2:(up (b * / (Rabs x - 1)) <= 0)%Zexists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%Zx:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)H1:(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%ZH2:(0 <= up (b * / (Rabs x - 1)))%Zx0:natH3:up (b * / (Rabs x - 1)) = Z.of_nat x0INR x0 >= IZR (up (b * / (Rabs x - 1)))x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)H1:(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%ZH2:(0 <= up (b * / (Rabs x - 1)))%Zx0:natH3:up (b * / (Rabs x - 1)) = Z.of_nat x0IZR (up (b * / (Rabs x - 1))) >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)H1:(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%ZH2:(up (b * / (Rabs x - 1)) <= 0)%Zexists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%Zx:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)H1:(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%ZH2:(0 <= up (b * / (Rabs x - 1)))%Zx0:natH3:up (b * / (Rabs x - 1)) = Z.of_nat x0IZR (up (b * / (Rabs x - 1))) >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)H1:(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%ZH2:(up (b * / (Rabs x - 1)) <= 0)%Zexists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%Zx:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)H1:(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%ZH2:(up (b * / (Rabs x - 1)) <= 0)%Zexists N : nat, INR N >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%Zx:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)H1:(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%ZH2:(up (b * / (Rabs x - 1)) <= 0)%ZINR 0 >= IZR (up (b * / (Rabs x - 1)))x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)H1:(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%ZH2:(up (b * / (Rabs x - 1)) <= 0)%ZIZR (up (b * / (Rabs x - 1))) >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%Zx:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)H1:(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%ZH2:(up (b * / (Rabs x - 1)) <= 0)%ZIZR (up (b * / (Rabs x - 1))) >= b * / (Rabs x - 1)x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%Zomega. Qed.x:RH:Rabs x > 1b:RH0:IZR (up (b * / (Rabs x - 1))) > b * / (Rabs x - 1)(0 <= up (b * / (Rabs x - 1)))%Z \/ (up (b * / (Rabs x - 1)) <= 0)%Zforall n : nat, n <> 0%nat -> 0 ^ n = 0forall n : nat, n <> 0%nat -> 0 ^ n = 0n:nat0%nat <> 0%nat -> 0 ^ 0 = 0n:natforall n0 : nat, (n0 <> 0%nat -> 0 ^ n0 = 0) -> S n0 <> 0%nat -> 0 ^ S n0 = 0n:nat0%nat <> 0%nat -> 1 = 0n:natforall n0 : nat, (n0 <> 0%nat -> 0 ^ n0 = 0) -> S n0 <> 0%nat -> 0 ^ S n0 = 0intros; simpl; apply Rmult_0_l. Qed.n:natforall n0 : nat, (n0 <> 0%nat -> 0 ^ n0 = 0) -> S n0 <> 0%nat -> 0 ^ S n0 = 0forall (x : R) (n : nat), x <> 0 -> / x ^ n = (/ x) ^ nforall (x : R) (n : nat), x <> 0 -> / x ^ n = (/ x) ^ nx:Rn:natH:x <> 0/ 1 = 1x:Rn:natH:x <> 0forall n0 : nat, / x ^ n0 = (/ x) ^ n0 -> / (x * x ^ n0) = / x * (/ x) ^ n0x:Rn:natH:x <> 0forall n0 : nat, / x ^ n0 = (/ x) ^ n0 -> / (x * x ^ n0) = / x * (/ x) ^ n0x:Rn:natH:x <> 0m:natH0:/ x ^ m = (/ x) ^ m/ x * / x ^ m = / x * (/ x) ^ mx:Rn:natH:x <> 0m:natH0:/ x ^ m = (/ x) ^ mx <> 0x:Rn:natH:x <> 0m:natH0:/ x ^ m = (/ x) ^ mx ^ m <> 0x:Rn:natH:x <> 0m:natH0:/ x ^ m = (/ x) ^ mx <> 0x:Rn:natH:x <> 0m:natH0:/ x ^ m = (/ x) ^ mx ^ m <> 0apply pow_nonzero; assumption. Qed.x:Rn:natH:x <> 0m:natH0:/ x ^ m = (/ x) ^ mx ^ m <> 0forall x : R, Rabs x < 1 -> forall y : R, 0 < y -> exists N : nat, forall n : nat, (n >= N)%nat -> Rabs (x ^ n) < yforall x : R, Rabs x < 1 -> forall y : R, 0 < y -> exists N : nat, forall n : nat, (n >= N)%nat -> Rabs (x ^ n) < yx:RH:Rabs x < 1y:RH0:0 < yH1:x = 0exists N : nat, forall n : nat, (n >= N)%nat -> Rabs (x ^ n) < yx:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0exists N : nat, forall n : nat, (n >= N)%nat -> Rabs (x ^ n) < yx:RH:Rabs x < 1y:RH0:0 < yH1:x = 0n:natGE:(n >= 1)%natRabs 0 < yx:RH:Rabs x < 1y:RH0:0 < yH1:x = 0n:natGE:(n >= 1)%natn <> 0%natx:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0exists N : nat, forall n : nat, (n >= N)%nat -> Rabs (x ^ n) < yx:RH:Rabs x < 1y:RH0:0 < yH1:x = 0n:natGE:(n >= 1)%natn <> 0%natx:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0exists N : nat, forall n : nat, (n >= N)%nat -> Rabs (x ^ n) < yx:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0exists N : nat, forall n : nat, (n >= N)%nat -> Rabs (x ^ n) < yx:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1 -> exists N : nat, forall n : nat, (n >= N)%nat -> Rabs (x ^ n) < yx:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:nat(forall n : nat, (n >= N)%nat -> Rabs ((/ x) ^ n) >= / y + 1) -> exists N0 : nat, forall n : nat, (n >= N0)%nat -> Rabs (x ^ n) < yx:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) < / / yx:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ / Rabs (x ^ n) < / / yx:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat0 < / y * / Rabs (x ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ y < / Rabs (x ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat0 < / yx:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat0 < / Rabs (x ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ y < / Rabs (x ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat0 < yx:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat0 < / Rabs (x ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ y < / Rabs (x ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat0 < / Rabs (x ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ y < / Rabs (x ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat0 < Rabs (x ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ y < / Rabs (x ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx ^ n <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ y < / Rabs (x ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ y < / Rabs (x ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ y < / Rabs (x ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ y < Rabs (/ x ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx ^ n <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ y < Rabs ((/ x) ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx ^ n <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ y < / y + 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ y + 1 <= Rabs ((/ x) ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx ^ n <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat(fun r : R => r < / y + 1) (/ y)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ y + 1 <= Rabs ((/ x) ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx ^ n <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ y + 0 < / y + 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ y + 1 <= Rabs ((/ x) ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx ^ n <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat0 < 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ y + 1 <= Rabs ((/ x) ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx ^ n <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat/ y + 1 <= Rabs ((/ x) ^ n)x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx ^ n <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs ((/ x) ^ n) >= / y + 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx ^ n <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%nat(n >= N)%natx:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx ^ n <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx ^ n <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx ^ n <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natRabs (x ^ n) <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx ^ n <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%natx <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0H2:Rabs (/ x) > 1N:natH3:forall n0 : nat, (n0 >= N)%nat -> Rabs ((/ x) ^ n0) >= / y + 1n:natH4:(n >= N)%naty < 0 \/ y > 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs (/ x) > / / 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 01 <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0/ Rabs x > / / 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0x <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 01 <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 00 < Rabs x * / 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs x < / 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0x <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 01 <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 00 < Rabs xx:RH:Rabs x < 1y:RH0:0 < yH1:x <> 00 < / 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs x < / 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0x <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 01 <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0x <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 00 < / 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs x < / 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0x <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 01 <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 00 < / 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs x < / 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0x <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 01 <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0Rabs x < / 1x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0x <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 01 <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 0x <> 0x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 01 <> 0red; intro; apply R1_neq_R0; assumption. Qed.x:RH:Rabs x < 1y:RH0:0 < yH1:x <> 01 <> 0forall (r : R) (n : nat), r ^ n = 1 -> Rabs r = 1 \/ n = 0%natforall (r : R) (n : nat), r ^ n = 1 -> Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1forall n0 : nat, r ^ S n0 = 1 -> Rabs r = 1 \/ S n0 = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Rabs r = 1 \/ S n0 = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Rabs r = 1 \/ S n0 = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 0Rabs r = 1 \/ S n0 = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 0~ Rabs (/ r) ^ 0 < Rabs (/ r) ^ S n0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 0Rabs (/ r) ^ 0 < Rabs (/ r) ^ S n0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 0~ Rabs (/ r) ^ 0 < 1r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 01 = Rabs (/ r) ^ S n0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 0Rabs (/ r) ^ 0 < Rabs (/ r) ^ S n0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 01 = Rabs (/ r) ^ S n0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 0Rabs (/ r) ^ 0 < Rabs (/ r) ^ S n0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 01 = (/ Rabs r) ^ S n0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 0Rabs (/ r) ^ 0 < Rabs (/ r) ^ S n0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 01 = / Rabs r ^ S n0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 0Rabs (/ r) ^ 0 < Rabs (/ r) ^ S n0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 01 = / Rabs (r ^ S n0)r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 0Rabs (/ r) ^ 0 < Rabs (/ r) ^ S n0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 0Rabs (/ r) ^ 0 < Rabs (/ r) ^ S n0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 01 < Rabs (/ r)r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 01 < / Rabs rr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 00 < Rabs rr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 0Rabs r * 1 < Rabs r * / Rabs rr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 00 = Rabs r -> 0 < Rabs rr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 0Rabs r * 1 < Rabs r * / Rabs rr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 0Rabs r * 1 < Rabs r * / Rabs rr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r < 1n0:natH'0:r ^ S n0 = 1H:r = 0r ^ S n0 <> 1r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1Rabs r = 1 \/ n = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1forall n0 : nat, r ^ S n0 = 1 -> Rabs r = 1 \/ S n0 = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1n0:natH'0:r ^ S n0 = 1Rabs r = 1 \/ S n0 = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Rabs r = 1 \/ S n0 = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 0Rabs r = 1 \/ S n0 = 0%natr:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1n0:natH'0:r ^ S n0 = 1Eq1:r <> 0Eq2:Rabs r <> 0~ Rabs r ^ 0 < Rabs r ^ S n0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1n0:natH'0:r ^ S n0 = 1r <> 0r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1n0:natH'0:r ^ S n0 = 1r <> 0simpl; rewrite H; rewrite Rmult_0_l; auto with real. Qed.r:Rn:natH':r ^ n = 1H'1:Rabs r <> 1H'2:Rabs r > 1n0:natH'0:r ^ S n0 = 1H:r = 0r ^ S n0 <> 1forall (x : R) (n : nat), x ^ (2 * n) = x² ^ nforall (x : R) (n : nat), x ^ (2 * n) = x² ^ nx:Rx ^ (2 * 0) = x² ^ 0x:Rn:natHrecn:x ^ (2 * n) = x² ^ nx ^ (2 * S n) = x² ^ S nx:Rn:natHrecn:x ^ (2 * n) = x² ^ nx ^ (2 * S n) = x² ^ S nx:Rn:natHrecn:x ^ (2 * n) = x² ^ nx ^ S (S (2 * n)) = x² ^ S nx:Rn:natHrecn:x ^ (2 * n) = x² ^ nS (S (2 * n)) = (2 * S n)%natx:Rn:natHrecn:x ^ (2 * n) = x² ^ nx * x * x ^ (2 * n) = x² ^ S nx:Rn:natHrecn:x ^ (2 * n) = x² ^ nx * x * x ^ (2 * n) = x ^ S (S (2 * n))x:Rn:natHrecn:x ^ (2 * n) = x² ^ nS (S (2 * n)) = (2 * S n)%natx:Rn:natHrecn:x ^ (2 * n) = x² ^ nx * x * x ^ (2 * n) = x ^ S (S (2 * n))x:Rn:natHrecn:x ^ (2 * n) = x² ^ nS (S (2 * n)) = (2 * S n)%natring. Qed.x:Rn:natHrecn:x ^ (2 * n) = x² ^ nS (S (2 * n)) = (2 * S n)%natforall (a : R) (n : nat), 0 <= a -> 0 <= a ^ nforall (a : R) (n : nat), 0 <= a -> 0 <= a ^ na:RH:0 <= a0 <= a ^ 0a:Rn:natH:0 <= aHrecn:0 <= a ^ n0 <= a ^ S nsimpl; apply Rmult_le_pos; assumption. Qed. (**********)a:Rn:natH:0 <= aHrecn:0 <= a ^ n0 <= a ^ S nforall n : nat, (-1) ^ (2 * n) = 1forall n : nat, (-1) ^ (2 * n) = 1(-1) ^ (2 * 0) = 1n:natHrecn:(-1) ^ (2 * n) = 1(-1) ^ (2 * S n) = 1n:natHrecn:(-1) ^ (2 * n) = 1(-1) ^ (2 * S n) = 1rewrite pow_add; rewrite Hrecn; simpl; ring. Qed. (**********)n:natHrecn:(-1) ^ (2 * n) = 1(-1) ^ (2 + 2 * n) = 1forall n : nat, (-1) ^ S (2 * n) = -1forall n : nat, (-1) ^ S (2 * n) = -1rewrite pow_add; rewrite pow_1_even; simpl; ring. Qed. (**********)n:nat(-1) ^ (2 * n + 1) = -1forall n : nat, Rabs ((-1) ^ n) = 1forall n : nat, Rabs ((-1) ^ n) = 1Rabs ((-1) ^ 0) = 1n:natHrecn:Rabs ((-1) ^ n) = 1Rabs ((-1) ^ S n) = 1n:natHrecn:Rabs ((-1) ^ n) = 1Rabs ((-1) ^ S n) = 1n:natHrecn:Rabs ((-1) ^ n) = 1Rabs ((-1) ^ n * (-1) ^ 1) = 1n:natHrecn:Rabs ((-1) ^ n) = 1Rabs ((-1) ^ n) * Rabs ((-1) ^ 1) = 1n:natHrecn:Rabs ((-1) ^ n) = 1Rabs (-1) = 1rewrite Rabs_Ropp; apply Rabs_R1. Qed.n:natHrecn:Rabs ((-1) ^ n) = 1Rabs (- (1)) = 1forall (x : R) (n1 n2 : nat), x ^ (n1 * n2) = (x ^ n1) ^ n2forall (x : R) (n1 n2 : nat), x ^ (n1 * n2) = (x ^ n1) ^ n2x:Rn1:natx ^ (n1 * 0) = (x ^ n1) ^ 0x:Rn1, n2:natHrecn2:x ^ (n1 * n2) = (x ^ n1) ^ n2x ^ (n1 * S n2) = (x ^ n1) ^ S n2x:Rn1, n2:natHrecn2:x ^ (n1 * n2) = (x ^ n1) ^ n2x ^ (n1 * S n2) = (x ^ n1) ^ S n2x:Rn1, n2:natHrecn2:x ^ (n1 * n2) = (x ^ n1) ^ n2x ^ (n1 * n2 + n1) = (x ^ n1) ^ S n2x:Rn1, n2:natHrecn2:x ^ (n1 * n2) = (x ^ n1) ^ n2(n1 * n2 + n1)%nat = (n1 * S n2)%natx:Rn1, n2:natHrecn2:x ^ (n1 * n2) = (x ^ n1) ^ n2x ^ (n1 * n2 + n1) = (x ^ n1) ^ (n2 + 1)x:Rn1, n2:natHrecn2:x ^ (n1 * n2) = (x ^ n1) ^ n2(n1 * n2 + n1)%nat = (n1 * S n2)%natx:Rn1, n2:natHrecn2:x ^ (n1 * n2) = (x ^ n1) ^ n2x ^ (n1 * n2) * x ^ n1 = (x ^ n1) ^ n2 * (x ^ n1) ^ 1x:Rn1, n2:natHrecn2:x ^ (n1 * n2) = (x ^ n1) ^ n2(n1 * n2 + n1)%nat = (n1 * S n2)%natx:Rn1, n2:natHrecn2:x ^ (n1 * n2) = (x ^ n1) ^ n2(x ^ n1) ^ n2 * x ^ n1 = (x ^ n1) ^ n2 * (x ^ n1) ^ 1x:Rn1, n2:natHrecn2:x ^ (n1 * n2) = (x ^ n1) ^ n2(n1 * n2 + n1)%nat = (n1 * S n2)%natx:Rn1, n2:natHrecn2:x ^ (n1 * n2) = (x ^ n1) ^ n2(x ^ n1) ^ n2 * x ^ n1 = (x ^ n1) ^ n2 * (x ^ n1 * 1)x:Rn1, n2:natHrecn2:x ^ (n1 * n2) = (x ^ n1) ^ n2(n1 * n2 + n1)%nat = (n1 * S n2)%natring. Qed.x:Rn1, n2:natHrecn2:x ^ (n1 * n2) = (x ^ n1) ^ n2(n1 * n2 + n1)%nat = (n1 * S n2)%natforall (x y : R) (n : nat), 0 <= x <= y -> x ^ n <= y ^ nforall (x y : R) (n : nat), 0 <= x <= y -> x ^ n <= y ^ nx, y:Rn:natH:0 <= x <= yx ^ n <= y ^ nx, y:RH:0 <= x <= yx ^ 0 <= y ^ 0x, y:Rn:natH:0 <= x <= yHrecn:x ^ n <= y ^ nx ^ S n <= y ^ S nx, y:Rn:natH:0 <= x <= yHrecn:x ^ n <= y ^ nx ^ S n <= y ^ S nx, y:Rn:natH:0 <= x <= yHrecn:x ^ n <= y ^ nx * x ^ n <= y * y ^ nx, y:Rn:natH:0 <= x <= yHrecn:x ^ n <= y ^ nH0:0 <= xH1:x <= yx * x ^ n <= y * y ^ nx, y:Rn:natH:0 <= x <= yHrecn:x ^ n <= y ^ nH0:0 <= xH1:x <= yx * x ^ n <= y * x ^ nx, y:Rn:natH:0 <= x <= yHrecn:x ^ n <= y ^ nH0:0 <= xH1:x <= yy * x ^ n <= y * y ^ nx, y:Rn:natH:0 <= x <= yHrecn:x ^ n <= y ^ nH0:0 <= xH1:x <= yx ^ n * x <= x ^ n * yx, y:Rn:natH:0 <= x <= yHrecn:x ^ n <= y ^ nH0:0 <= xH1:x <= yy * x ^ n <= y * y ^ nx, y:Rn:natH:0 <= x <= yHrecn:x ^ n <= y ^ nH0:0 <= xH1:x <= y0 <= x ^ nx, y:Rn:natH:0 <= x <= yHrecn:x ^ n <= y ^ nH0:0 <= xH1:x <= yx <= yx, y:Rn:natH:0 <= x <= yHrecn:x ^ n <= y ^ nH0:0 <= xH1:x <= yy * x ^ n <= y * y ^ nx, y:Rn:natH:0 <= x <= yHrecn:x ^ n <= y ^ nH0:0 <= xH1:x <= yx <= yx, y:Rn:natH:0 <= x <= yHrecn:x ^ n <= y ^ nH0:0 <= xH1:x <= yy * x ^ n <= y * y ^ nx, y:Rn:natH:0 <= x <= yHrecn:x ^ n <= y ^ nH0:0 <= xH1:x <= yy * x ^ n <= y * y ^ nx, y:Rn:natH:0 <= x <= yHrecn:x ^ n <= y ^ nH0:0 <= xH1:x <= y0 <= yx, y:Rn:natH:0 <= x <= yHrecn:x ^ n <= y ^ nH0:0 <= xH1:x <= yx ^ n <= y ^ napply Hrecn. Qed.x, y:Rn:natH:0 <= x <= yHrecn:x ^ n <= y ^ nH0:0 <= xH1:x <= yx ^ n <= y ^ nforall (x : R) (k : nat), 1 <= x -> 1 <= x ^ kforall (x : R) (k : nat), 1 <= x -> 1 <= x ^ kx:Rk:natH:1 <= x1 <= x ^ kx:RH:1 <= x1 <= x ^ 0x:Rk:natH:1 <= xHreck:1 <= x ^ k1 <= x ^ S kx:Rk:natH:1 <= xHreck:1 <= x ^ k1 <= x ^ S kx:Rk:natH:1 <= xHreck:1 <= x ^ k1 <= x * x ^ kx:Rk:natH:1 <= xHreck:1 <= x ^ k1 <= x * 1x:Rk:natH:1 <= xHreck:1 <= x ^ kx * 1 <= x * x ^ kx:Rk:natH:1 <= xHreck:1 <= x ^ kx * 1 <= x * x ^ kx:Rk:natH:1 <= xHreck:1 <= x ^ k0 <= xx:Rk:natH:1 <= xHreck:1 <= x ^ k1 <= x ^ kexact Hreck. Qed.x:Rk:natH:1 <= xHreck:1 <= x ^ k1 <= x ^ kforall (x : R) (m n : nat), 1 <= x -> (m <= n)%nat -> x ^ m <= x ^ nforall (x : R) (m n : nat), 1 <= x -> (m <= n)%nat -> x ^ m <= x ^ nx:Rm, n:natH:1 <= xH0:(m <= n)%natx ^ m <= x ^ nx:Rm, n:natH:1 <= xH0:(m <= n)%natx ^ m <= x ^ (n - m + m)x:Rm, n:natH:1 <= xH0:(m <= n)%nat(n - m + m)%nat = nx:Rm, n:natH:1 <= xH0:(m <= n)%natx ^ m <= x ^ (n - m) * x ^ mx:Rm, n:natH:1 <= xH0:(m <= n)%nat(n - m + m)%nat = nx:Rm, n:natH:1 <= xH0:(m <= n)%natx ^ m <= x ^ m * x ^ (n - m)x:Rm, n:natH:1 <= xH0:(m <= n)%nat(n - m + m)%nat = nx:Rm, n:natH:1 <= xH0:(m <= n)%natx ^ m * 1 <= x ^ m * x ^ (n - m)x:Rm, n:natH:1 <= xH0:(m <= n)%nat(n - m + m)%nat = nx:Rm, n:natH:1 <= xH0:(m <= n)%nat0 <= x ^ mx:Rm, n:natH:1 <= xH0:(m <= n)%nat1 <= x ^ (n - m)x:Rm, n:natH:1 <= xH0:(m <= n)%nat(n - m + m)%nat = nx:Rm, n:natH:1 <= xH0:(m <= n)%nat1 <= x ^ (n - m)x:Rm, n:natH:1 <= xH0:(m <= n)%nat(n - m + m)%nat = nx:Rm, n:natH:1 <= xH0:(m <= n)%nat(n - m + m)%nat = nsymmetry ; apply le_plus_minus; assumption. Qed.x:Rm, n:natH:1 <= xH0:(m <= n)%nat(m + (n - m))%nat = nforall n : nat, 1 ^ n = 1forall n : nat, 1 ^ n = 11 ^ 0 = 1n:natHrecn:1 ^ n = 11 ^ S n = 1simpl; rewrite Hrecn; rewrite Rmult_1_r; reflexivity. Qed.n:natHrecn:1 ^ n = 11 ^ S n = 1forall (x : R) (n : nat), x ^ n <= Rabs x ^ nforall (x : R) (n : nat), x ^ n <= Rabs x ^ nx:Rx ^ 0 <= Rabs x ^ 0x:Rn:natHrecn:x ^ n <= Rabs x ^ nx ^ S n <= Rabs x ^ S nx:Rn:natHrecn:x ^ n <= Rabs x ^ nx ^ S n <= Rabs x ^ S nx:Rn:natHrecn:x ^ n <= Rabs x ^ nHlt:x < 0x * x ^ n <= Rabs x * Rabs x ^ nx:Rn:natHrecn:x ^ n <= Rabs x ^ nHle:x >= 0x * x ^ n <= Rabs x * Rabs x ^ nx:Rn:natHrecn:x ^ n <= Rabs x ^ nHlt:x < 0x * x ^ n <= Rabs (x * x ^ n)x:Rn:natHrecn:x ^ n <= Rabs x ^ nHlt:x < 0Rabs (x * x ^ n) <= Rabs x * Rabs x ^ nx:Rn:natHrecn:x ^ n <= Rabs x ^ nHle:x >= 0x * x ^ n <= Rabs x * Rabs x ^ nx:Rn:natHrecn:x ^ n <= Rabs x ^ nHlt:x < 0Rabs (x * x ^ n) <= Rabs x * Rabs x ^ nx:Rn:natHrecn:x ^ n <= Rabs x ^ nHle:x >= 0x * x ^ n <= Rabs x * Rabs x ^ nx:Rn:natHrecn:x ^ n <= Rabs x ^ nHlt:x < 0Rabs x * Rabs (x ^ n) <= Rabs x * Rabs x ^ nx:Rn:natHrecn:x ^ n <= Rabs x ^ nHle:x >= 0x * x ^ n <= Rabs x * Rabs x ^ nx:Rn:natHrecn:x ^ n <= Rabs x ^ nHlt:x < 00 <= Rabs xx:Rn:natHrecn:x ^ n <= Rabs x ^ nHlt:x < 0Rabs (x ^ n) <= Rabs x ^ nx:Rn:natHrecn:x ^ n <= Rabs x ^ nHle:x >= 0x * x ^ n <= Rabs x * Rabs x ^ nx:Rn:natHrecn:x ^ n <= Rabs x ^ nHlt:x < 0Rabs (x ^ n) <= Rabs x ^ nx:Rn:natHrecn:x ^ n <= Rabs x ^ nHle:x >= 0x * x ^ n <= Rabs x * Rabs x ^ nx:Rn:natHrecn:x ^ n <= Rabs x ^ nHle:x >= 0x * x ^ n <= Rabs x * Rabs x ^ nx:Rn:natHrecn:x ^ n <= Rabs x ^ nHle:x >= 00 <= xx:Rn:natHrecn:x ^ n <= Rabs x ^ nHle:x >= 0x ^ n <= Rabs x ^ napply Hrecn. Qed.x:Rn:natHrecn:x ^ n <= Rabs x ^ nHle:x >= 0x ^ n <= Rabs x ^ nforall (x y : R) (n : nat), Rabs y <= x -> y ^ n <= x ^ nforall (x y : R) (n : nat), Rabs y <= x -> y ^ n <= x ^ nx, y:Rn:natH:Rabs y <= x0 <= x -> y ^ n <= x ^ nx, y:Rn:natH:Rabs y <= x0 <= xx, y:Rn:natH:Rabs y <= xH0:0 <= xy ^ n <= Rabs y ^ nx, y:Rn:natH:Rabs y <= xH0:0 <= xRabs y ^ n <= x ^ nx, y:Rn:natH:Rabs y <= x0 <= xx, y:Rn:natH:Rabs y <= xH0:0 <= xRabs y ^ n <= x ^ nx, y:Rn:natH:Rabs y <= x0 <= xx, y:RH:Rabs y <= xH0:0 <= xRabs y ^ 0 <= x ^ 0x, y:Rn:natH:Rabs y <= xH0:0 <= xHrecn:Rabs y ^ n <= x ^ nRabs y ^ S n <= x ^ S nx, y:Rn:natH:Rabs y <= x0 <= xx, y:Rn:natH:Rabs y <= xH0:0 <= xHrecn:Rabs y ^ n <= x ^ nRabs y ^ S n <= x ^ S nx, y:Rn:natH:Rabs y <= x0 <= xx, y:Rn:natH:Rabs y <= xH0:0 <= xHrecn:Rabs y ^ n <= x ^ nRabs y * Rabs y ^ n <= x * Rabs y ^ nx, y:Rn:natH:Rabs y <= xH0:0 <= xHrecn:Rabs y ^ n <= x ^ nx * Rabs y ^ n <= x * x ^ nx, y:Rn:natH:Rabs y <= x0 <= xx, y:Rn:natH:Rabs y <= xH0:0 <= xHrecn:Rabs y ^ n <= x ^ nRabs y ^ n * Rabs y <= Rabs y ^ n * xx, y:Rn:natH:Rabs y <= xH0:0 <= xHrecn:Rabs y ^ n <= x ^ nx * Rabs y ^ n <= x * x ^ nx, y:Rn:natH:Rabs y <= x0 <= xx, y:Rn:natH:Rabs y <= xH0:0 <= xHrecn:Rabs y ^ n <= x ^ n0 <= Rabs y ^ nx, y:Rn:natH:Rabs y <= xH0:0 <= xHrecn:Rabs y ^ n <= x ^ nRabs y <= xx, y:Rn:natH:Rabs y <= xH0:0 <= xHrecn:Rabs y ^ n <= x ^ nx * Rabs y ^ n <= x * x ^ nx, y:Rn:natH:Rabs y <= x0 <= xx, y:Rn:natH:Rabs y <= xH0:0 <= xHrecn:Rabs y ^ n <= x ^ nRabs y <= xx, y:Rn:natH:Rabs y <= xH0:0 <= xHrecn:Rabs y ^ n <= x ^ nx * Rabs y ^ n <= x * x ^ nx, y:Rn:natH:Rabs y <= x0 <= xx, y:Rn:natH:Rabs y <= xH0:0 <= xHrecn:Rabs y ^ n <= x ^ nx * Rabs y ^ n <= x * x ^ nx, y:Rn:natH:Rabs y <= x0 <= xx, y:Rn:natH:Rabs y <= xH0:0 <= xHrecn:Rabs y ^ n <= x ^ n0 <= xx, y:Rn:natH:Rabs y <= xH0:0 <= xHrecn:Rabs y ^ n <= x ^ nRabs y ^ n <= x ^ nx, y:Rn:natH:Rabs y <= x0 <= xx, y:Rn:natH:Rabs y <= xH0:0 <= xHrecn:Rabs y ^ n <= x ^ nRabs y ^ n <= x ^ nx, y:Rn:natH:Rabs y <= x0 <= xapply Rle_trans with (Rabs y); [ apply Rabs_pos | exact H ]. Qed.x, y:Rn:natH:Rabs y <= x0 <= xforall x : R, x² = x ^ 2intros; unfold Rsqr; simpl; rewrite Rmult_1_r; reflexivity. Qed. (*******************************)forall x : R, x² = x ^ 2
(*******************************) (*i Due to L.Thery i*) Section PowerRZ. Coercion Z_of_nat : nat >-> Z. (* the following section should probably be somewhere else, but not sure where *) Section Z_compl. Local Open Scope Z_scope. (* Provides a way to reason directly on Z in terms of nats instead of positive *) Inductive Z_spec (x : Z) : Z -> Type := | ZintNull : x = 0 -> Z_spec x 0 | ZintPos (n : nat) : x = n -> Z_spec x n | ZintNeg (n : nat) : x = - n -> Z_spec x (- n).x:ZZ_spec x xx:ZZ_spec x xZ_spec 0 0p:positiveZ_spec (Z.pos p) (Z.pos p)p:positiveZ_spec (Z.neg p) (Z.neg p)now apply ZintNull.Z_spec 0 0p:positiveZ_spec (Z.pos p) (Z.pos p)p:positiveZ_spec (Z.pos p) (Pos.to_nat p)now rewrite positive_nat_Z.p:positiveZ.pos p = Pos.to_nat pp:positiveZ_spec (Z.neg p) (Z.neg p)p:positiveZ_spec (- Z.pos p) (- Z.pos p)p:positiveZ_spec (- Z.pos p) (- Pos.to_nat p)now rewrite positive_nat_Z. Qed. End Z_compl. Definition powerRZ (x:R) (n:Z) := match n with | Z0 => 1 | Zpos p => x ^ Pos.to_nat p | Zneg p => / x ^ Pos.to_nat p end. Local Infix "^Z" := powerRZ (at level 30, right associativity) : R_scope.p:positive- Z.pos p = - Pos.to_nat pforall (x : Z) (n : nat), (0 <= x)%Z -> (0 <= Zpower_nat x n)%Zinduction n; unfold Zpower_nat; simpl; auto with zarith. Qed.forall (x : Z) (n : nat), (0 <= x)%Z -> (0 <= Zpower_nat x n)%Zforall x : R, x ^Z 0 = 1reflexivity. Qed.forall x : R, x ^Z 0 = 1forall x : R, x ^Z Z.succ 0 = xsimpl; auto with real. Qed.forall x : R, x ^Z Z.succ 0 = xforall (x : R) (z : Z), x <> 0 -> x ^Z z <> 0destruct z; simpl; auto with real. Qed.forall (x : R) (z : Z), x <> 0 -> x ^Z z <> 0x:Rn, m:positivex <> 0 -> x ^Z Z.pos_sub n m = x ^ Pos.to_nat n * / x ^ Pos.to_nat mx:Rn, m:positivex <> 0 -> x ^Z Z.pos_sub n m = x ^ Pos.to_nat n * / x ^ Pos.to_nat mx:Rn, m:positiveHx:x <> 0x ^Z Z.pos_sub n m = x ^ Pos.to_nat n * / x ^ Pos.to_nat mx:Rn, m:positiveHx:x <> 0x ^Z match (n ?= m)%positive with | Eq => 0 | Lt => Z.neg (m - n) | Gt => Z.pos (n - m) end = x ^ Pos.to_nat n * / x ^ Pos.to_nat mx:Rn, m:positiveHx:x <> 0H:n = m1 = x ^ Pos.to_nat n * / x ^ Pos.to_nat mx:Rn, m:positiveHx:x <> 0H:(n < m)%positive/ x ^ Pos.to_nat (m - n) = x ^ Pos.to_nat n * / x ^ Pos.to_nat mx:Rn, m:positiveHx:x <> 0H:(m < n)%positivex ^ Pos.to_nat (n - m) = x ^ Pos.to_nat n * / x ^ Pos.to_nat msubst; auto with real.x:Rn, m:positiveHx:x <> 0H:n = m1 = x ^ Pos.to_nat n * / x ^ Pos.to_nat mx:Rn, m:positiveHx:x <> 0H:(n < m)%positive/ x ^ Pos.to_nat (m - n) = x ^ Pos.to_nat n * / x ^ Pos.to_nat mx:Rn, m:positiveHx:x <> 0H:(n < m)%positive/ x ^ (Pos.to_nat m - Pos.to_nat n) = x ^ Pos.to_nat n * / x ^ Pos.to_nat mx:Rn, m:positiveHx:x <> 0H:(Pos.to_nat n < Pos.to_nat m)%nat/ x ^ (Pos.to_nat m - Pos.to_nat n) = x ^ Pos.to_nat n * / x ^ Pos.to_nat mx:Rn, m:positiveHx:x <> 0H:(Pos.to_nat n < Pos.to_nat m)%nat/ (x ^ (Pos.to_nat m - Pos.to_nat n + Pos.to_nat n) * / x ^ Pos.to_nat n) = x ^ Pos.to_nat n * / x ^ Pos.to_nat mrewrite Rinv_mult_distr, Rinv_involutive; auto with real.x:Rn, m:positiveHx:x <> 0H:(Pos.to_nat n < Pos.to_nat m)%nat/ (x ^ Pos.to_nat m * / x ^ Pos.to_nat n) = x ^ Pos.to_nat n * / x ^ Pos.to_nat mx:Rn, m:positiveHx:x <> 0H:(m < n)%positivex ^ Pos.to_nat (n - m) = x ^ Pos.to_nat n * / x ^ Pos.to_nat mx:Rn, m:positiveHx:x <> 0H:(m < n)%positivex ^ (Pos.to_nat n - Pos.to_nat m) = x ^ Pos.to_nat n * / x ^ Pos.to_nat mx:Rn, m:positiveHx:x <> 0H:(Pos.to_nat m < Pos.to_nat n)%natx ^ (Pos.to_nat n - Pos.to_nat m) = x ^ Pos.to_nat n * / x ^ Pos.to_nat mx:Rn, m:positiveHx:x <> 0H:(Pos.to_nat m < Pos.to_nat n)%natx ^ (Pos.to_nat n - Pos.to_nat m + Pos.to_nat m) * / x ^ Pos.to_nat m = x ^ Pos.to_nat n * / x ^ Pos.to_nat mreflexivity. Qed.x:Rn, m:positiveHx:x <> 0H:(Pos.to_nat m < Pos.to_nat n)%natx ^ Pos.to_nat n * / x ^ Pos.to_nat m = x ^ Pos.to_nat n * / x ^ Pos.to_nat mforall (x : R) (n m : Z), x <> 0 -> x ^Z (n + m) = x ^Z n * x ^Z mforall (x : R) (n m : Z), x <> 0 -> x ^Z (n + m) = x ^Z n * x ^Z mx:Rn, m:positiveH:x <> 0x ^ Pos.to_nat (n + m) = x ^ Pos.to_nat n * x ^ Pos.to_nat mx:Rn, m:positiveH:x <> 0x ^Z Z.pos_sub n m = x ^ Pos.to_nat n * / x ^ Pos.to_nat mx:Rn, m:positiveH:x <> 0x ^Z Z.pos_sub m n = / x ^ Pos.to_nat n * x ^ Pos.to_nat mx:Rn, m:positiveH:x <> 0/ x ^ Pos.to_nat (n + m) = / x ^ Pos.to_nat n * / x ^ Pos.to_nat mrewrite Pos2Nat.inj_add; auto with real.x:Rn, m:positiveH:x <> 0x ^ Pos.to_nat (n + m) = x ^ Pos.to_nat n * x ^ Pos.to_nat mnow apply powerRZ_pos_sub.x:Rn, m:positiveH:x <> 0x ^Z Z.pos_sub n m = x ^ Pos.to_nat n * / x ^ Pos.to_nat mx:Rn, m:positiveH:x <> 0x ^Z Z.pos_sub m n = / x ^ Pos.to_nat n * x ^ Pos.to_nat mnow apply powerRZ_pos_sub.x:Rn, m:positiveH:x <> 0x ^Z Z.pos_sub m n = x ^ Pos.to_nat m * / x ^ Pos.to_nat nx:Rn, m:positiveH:x <> 0/ x ^ Pos.to_nat (n + m) = / x ^ Pos.to_nat n * / x ^ Pos.to_nat mx:Rn, m:positiveH:x <> 0/ x ^ (Pos.to_nat n + Pos.to_nat m) = / x ^ Pos.to_nat n * / x ^ Pos.to_nat mapply Rinv_mult_distr; apply pow_nonzero; auto. Qed. Hint Resolve powerRZ_O powerRZ_1 powerRZ_NOR powerRZ_add: real.x:Rn, m:positiveH:x <> 0/ (x ^ Pos.to_nat n * x ^ Pos.to_nat m) = / x ^ Pos.to_nat n * / x ^ Pos.to_nat mforall n m : nat, IZR (Zpower_nat n m) = INR n ^Z mforall n m : nat, IZR (Zpower_nat n m) = INR n ^Z mn, m:natforall n0 : nat, IZR (Zpower_nat n n0) = INR n ^Z n0 -> IZR (n * Zpower_nat n n0) = INR n ^ Pos.to_nat (Pos.of_succ_nat n0)n, m, m1:natH':IZR (Zpower_nat n m1) = INR n ^Z m1IZR (n * Zpower_nat n m1) = INR n * INR n ^ m1n, m, m1:natH':IZR (Zpower_nat n m1) = INR n ^Z m1IZR (n * Zpower_nat n m1) = INR n * INR n ^ m1n, m, m1:natH':IZR (Zpower_nat n m1) = INR n ^Z m1(n * Zpower_nat n m1)%Z = Zpower_nat n (S m1)n, m, m1:natH':IZR (Zpower_nat n m1) = INR n ^Z m1IZR n * IZR (Zpower_nat n m1) = INR n * INR n ^ m1n, m, m1:natH':IZR (Zpower_nat n m1) = INR n ^Z m1(n * Zpower_nat n m1)%Z = Zpower_nat n (S m1)n, m, m1:natH':IZR (Zpower_nat n m1) = INR n ^Z m1INR n * IZR (Zpower_nat n m1) = INR n * INR n ^ m1n, m, m1:natH':IZR (Zpower_nat n m1) = INR n ^Z m1(n * Zpower_nat n m1)%Z = Zpower_nat n (S m1)n, m, m1:natH':IZR (Zpower_nat n m1) = INR n ^Z m1INR n * INR n ^Z m1 = INR n * INR n ^ m1n, m, m1:natH':IZR (Zpower_nat n m1) = INR n ^Z m1(n * Zpower_nat n m1)%Z = Zpower_nat n (S m1)n, m, m1:natH':IZR (Zpower_nat n m1) = INR n ^Z m1forall n0 : nat, INR n * INR n ^ Pos.to_nat (Pos.of_succ_nat n0) = INR n * (INR n * INR n ^ n0)n, m, m1:natH':IZR (Zpower_nat n m1) = INR n ^Z m1(n * Zpower_nat n m1)%Z = Zpower_nat n (S m1)unfold Zpower_nat; auto. Qed.n, m, m1:natH':IZR (Zpower_nat n m1) = INR n ^Z m1(n * Zpower_nat n m1)%Z = Zpower_nat n (S m1)forall (n : Z) (m : positive), IZR (Z.pow_pos n m) = IZR n ^Z Z.pos mforall (n : Z) (m : positive), IZR (Z.pow_pos n m) = IZR n ^Z Z.pos mn:Zm:positiveIZR (Z.pow_pos n m) = IZR n ^Z Z.pos mn:Zm:positiveIZR (Zpower_nat n (Pos.to_nat m)) = IZR n ^ Pos.to_nat mn:Zm:positiveIZR (Zpower_nat n 0) = IZR n ^ 0n:Zm:positiven0:natIHn0:IZR (Zpower_nat n n0) = IZR n ^ n0IZR (Zpower_nat n (S n0)) = IZR n ^ S n0n:Zm:positiven0:natIHn0:IZR (Zpower_nat n n0) = IZR n ^ n0IZR (Zpower_nat n (S n0)) = IZR n ^ S n0n:Zm:positiven0:natIHn0:IZR (Zpower_nat n n0) = IZR n ^ n0IZR (n * nat_rect (fun _ : nat => Z) 1%Z (fun _ : nat => Z.mul n) n0) = IZR n * IZR n ^ n0now rewrite <- IHn0. Qed.n:Zm:positiven0:natIHn0:IZR (Zpower_nat n n0) = IZR n ^ n0IZR n * IZR (nat_rect (fun _ : nat => Z) 1%Z (fun _ : nat => Z.mul n) n0) = IZR n * IZR n ^ n0forall (x : R) (z : Z), 0 < x -> 0 < x ^Z zintros x z; case z; simpl; auto with real. Qed. Hint Resolve powerRZ_lt: real.forall (x : R) (z : Z), 0 < x -> 0 < x ^Z zforall (x : R) (z : Z), 0 < x -> 0 <= x ^Z zintros x z H'; apply Rlt_le; auto with real. Qed. Hint Resolve powerRZ_le: real.forall (x : R) (z : Z), 0 < x -> 0 <= x ^Z zforall n m : Z, (0 <= m)%Z -> IZR (Zpower_nat n (Z.abs_nat m)) = IZR n ^Z mforall n m : Z, (0 <= m)%Z -> IZR (Zpower_nat n (Z.abs_nat m)) = IZR n ^Z mn, m:Zforall p : positive, (0 <= Z.pos p)%Z -> IZR (Zpower_nat n (Pos.to_nat p)) = IZR n ^ Pos.to_nat pn, m:Zforall p : positive, (0 <= Z.neg p)%Z -> IZR (Zpower_nat n (Pos.to_nat p)) = / IZR n ^ Pos.to_nat pn, m:Zp:positiveH':(0 <= Z.pos p)%Zforall n0 : nat, IZR (Zpower_nat n n0) = IZR n ^ n0 -> IZR (n * Zpower_nat n n0) = IZR n * IZR n ^ n0n, m:Zforall p : positive, (0 <= Z.neg p)%Z -> IZR (Zpower_nat n (Pos.to_nat p)) = / IZR n ^ Pos.to_nat pn, m:Zp:positiveH':(0 <= Z.pos p)%Zn0:natH'0:IZR (Zpower_nat n n0) = IZR n ^ n0IZR (n * Zpower_nat n n0) = IZR n * IZR (Zpower_nat n n0)n, m:Zforall p : positive, (0 <= Z.neg p)%Z -> IZR (Zpower_nat n (Pos.to_nat p)) = / IZR n ^ Pos.to_nat pintros p H'; absurd (0 <= Zneg p)%Z; auto with zarith. Qed.n, m:Zforall p : positive, (0 <= Z.neg p)%Z -> IZR (Zpower_nat n (Pos.to_nat p)) = / IZR n ^ Pos.to_nat pforall n : Z, 1 ^Z n = 1forall n : Z, 1 ^Z n = 1n:Zforall p : positive, 1 ^ Pos.to_nat p = 1n:Zforall p : positive, / 1 ^ Pos.to_nat p = 1n:Zforall p : positive, / 1 ^ Pos.to_nat p = 1n:Zp:positive/ 1 = 1n:Zp:positiveforall n0 : nat, / 1 ^ n0 = 1 -> / (1 * 1 ^ n0) = 1intros n1 H'; rewrite Rinv_mult_distr; try rewrite Rinv_1; try rewrite H'; auto with real. Qed. Local Open Scope Z_scope.n:Zp:positiveforall n0 : nat, / 1 ^ n0 = 1 -> / (1 * 1 ^ n0) = 1r:Rn:nat(r ^ n)%R = r ^Z nr:Rn:nat(r ^ n)%R = r ^Z nnow rewrite SuccNat2Pos.id_succ. Qed.r:Rn:natIHn:(r ^ n)%R = r ^Z n(r * r ^ n)%R = (r ^ Pos.to_nat (Pos.of_succ_nat n))%RP:Z -> R -> R -> Prop(forall x : R, P 0 x 1%R) -> (forall (x : R) (n : nat), P n x (x ^ n)%R) -> (forall (x : R) (n : nat), P (- n) x (/ x ^ n)) -> forall (x : R) (m : Z), P m x (x ^Z m)P:Z -> R -> R -> Prop(forall x : R, P 0 x 1%R) -> (forall (x : R) (n : nat), P n x (x ^ n)%R) -> (forall (x : R) (n : nat), P (- n) x (/ x ^ n)) -> forall (x : R) (m : Z), P m x (x ^Z m)P:Z -> R -> R -> PropH:forall x0 : R, P 0 x0 1%RH0:forall (x0 : R) (n : nat), P n x0 (x0 ^ n)%RH1:forall (x0 : R) (n : nat), P (- n) x0 (/ x0 ^ n)x:Rm:ZP m x (x ^Z m)P:Z -> R -> R -> PropH:forall x0 : R, P 0 x0 1%RH0:forall (x0 : R) (n : nat), P n x0 (x0 ^ n)%RH1:forall (x0 : R) (n : nat), P (- n) x0 (/ x0 ^ n)x:Rm:ZHm:m = 0P 0 x (x ^Z 0)P:Z -> R -> R -> PropH:forall x0 : R, P 0 x0 1%RH0:forall (x0 : R) (n0 : nat), P n0 x0 (x0 ^ n0)%RH1:forall (x0 : R) (n0 : nat), P (- n0) x0 (/ x0 ^ n0)x:Rm:Zn:natHm:m = nP n x (x ^Z n)P:Z -> R -> R -> PropH:forall x0 : R, P 0 x0 1%RH0:forall (x0 : R) (n0 : nat), P n0 x0 (x0 ^ n0)%RH1:forall (x0 : R) (n0 : nat), P (- n0) x0 (/ x0 ^ n0)x:Rm:Zn:natHm:m = - nP (- n) x (x ^Z (- n))easy.P:Z -> R -> R -> PropH:forall x0 : R, P 0 x0 1%RH0:forall (x0 : R) (n : nat), P n x0 (x0 ^ n)%RH1:forall (x0 : R) (n : nat), P (- n) x0 (/ x0 ^ n)x:Rm:ZHm:m = 0P 0 x (x ^Z 0)now rewrite <- pow_powerRZ.P:Z -> R -> R -> PropH:forall x0 : R, P 0 x0 1%RH0:forall (x0 : R) (n0 : nat), P n0 x0 (x0 ^ n0)%RH1:forall (x0 : R) (n0 : nat), P (- n0) x0 (/ x0 ^ n0)x:Rm:Zn:natHm:m = nP n x (x ^Z n)P:Z -> R -> R -> PropH:forall x0 : R, P 0 x0 1%RH0:forall (x0 : R) (n0 : nat), P n0 x0 (x0 ^ n0)%RH1:forall (x0 : R) (n0 : nat), P (- n0) x0 (/ x0 ^ n0)x:Rm:Zn:natHm:m = - nP (- n) x (x ^Z (- n))P:Z -> R -> R -> PropH:forall x0 : R, P 0 x0 1%RH0:forall (x0 : R) (n0 : nat), P n0 x0 (x0 ^ n0)%RH1:forall (x0 : R) (n0 : nat), P (- n0) x0 (/ x0 ^ n0)x:Rm:Zn:natHm:m = - nP (- n) x match - n with | 0 => 1%R | Z.pos p => (x ^ Pos.to_nat p)%R | Z.neg p => / x ^ Pos.to_nat p endP:Z -> R -> R -> PropH:forall x0 : R, P 0 x0 1%RH0:forall (x0 : R) (n0 : nat), P n0 x0 (x0 ^ n0)%RH1:forall (x0 : R) (n0 : nat), P (- n0) x0 (/ x0 ^ n0)x:Rm:Zn:natHm:m = - S nP (- S n) x match - S n with | 0 => 1%R | Z.pos p => (x ^ Pos.to_nat p)%R | Z.neg p => / x ^ Pos.to_nat p endnow rewrite <- Pos2Z.opp_pos, <- positive_nat_Z. Qed.P:Z -> R -> R -> PropH:forall x0 : R, P 0 x0 1%RH0:forall (x0 : R) (n0 : nat), P n0 x0 (x0 ^ n0)%RH1:forall (x0 : R) (n0 : nat), P (- n0) x0 (/ x0 ^ n0)x:Rm:Zn:natHm:m = - S nP (Z.neg (Pos.of_succ_nat n)) x (/ x ^ Pos.to_nat (Pos.of_succ_nat n))x:Ralpha:Zx <> 0%R -> (/ x) ^Z alpha = / x ^Z alphax:Ralpha:Zx <> 0%R -> (/ x) ^Z alpha = / x ^Z alphax:Ralpha:ZH:x <> 0%Re:alpha = 0(/ x) ^Z 0 = / x ^Z 0x:Ralpha:ZH:x <> 0%Rn:nate:alpha = n(/ x) ^Z n = / x ^Z nx:Ralpha:ZH:x <> 0%Rn:nate:alpha = - n(/ x) ^Z (- n) = / x ^Z (- n)now simpl; rewrite Rinv_1.x:Ralpha:ZH:x <> 0%Re:alpha = 0(/ x) ^Z 0 = / x ^Z 0now rewrite <-!pow_powerRZ, ?Rinv_pow, ?pow_powerRZ.x:Ralpha:ZH:x <> 0%Rn:nate:alpha = n(/ x) ^Z n = / x ^Z nx:Ralpha:ZH:x <> 0%Rn:nate:alpha = - n(/ x) ^Z (- n) = / x ^Z (- n)x:Ralpha:ZH:x <> 0%Rn:nate:alpha = - nmatch - n with | 0 => 1%R | Z.pos p => ((/ x) ^ Pos.to_nat p)%R | Z.neg p => / (/ x) ^ Pos.to_nat p end = / match - n with | 0%Z => 1 | Z.pos p => x ^ Pos.to_nat p | Z.neg p => / x ^ Pos.to_nat p endx:Ralpha:ZH:x <> 0%Rn:nate:alpha = 01%R = / 1x:Ralpha:ZH:x <> 0%Rn:natp:positivee:alpha = Z.pos p((/ x) ^ Pos.to_nat p)%R = / x ^ Pos.to_nat px:Ralpha:ZH:x <> 0%Rn:natp:positivee:alpha = Z.neg p/ (/ x) ^ Pos.to_nat p = / / x ^ Pos.to_nat pnow rewrite Rinv_1.x:Ralpha:ZH:x <> 0%Rn:nate:alpha = 01%R = / 1now rewrite Rinv_pow.x:Ralpha:ZH:x <> 0%Rn:natp:positivee:alpha = Z.pos p((/ x) ^ Pos.to_nat p)%R = / x ^ Pos.to_nat pnow rewrite <-Rinv_pow. Qed.x:Ralpha:ZH:x <> 0%Rn:natp:positivee:alpha = Z.neg p/ (/ x) ^ Pos.to_nat p = / / x ^ Pos.to_nat px:Rforall alpha : Z, x <> R0 -> x ^Z (- alpha) = (/ x) ^Z alphax:Rforall alpha : Z, x <> R0 -> x ^Z (- alpha) = (/ x) ^Z alphax:RH:x <> R01%R = 1%Rx:Rn:positiveH:x <> R0/ x ^ Pos.to_nat n = ((/ x) ^ Pos.to_nat n)%Rx:Rn:positiveH:x <> R0(x ^ Pos.to_nat n)%R = / (/ x) ^ Pos.to_nat neasy.x:RH:x <> R01%R = 1%Rnow rewrite Rinv_pow.x:Rn:positiveH:x <> R0/ x ^ Pos.to_nat n = ((/ x) ^ Pos.to_nat n)%Rx:Rn:positiveH:x <> R0(x ^ Pos.to_nat n)%R = / (/ x) ^ Pos.to_nat nnow rewrite Rinv_involutive. Qed.x:Rn:positiveH:x <> R0(x ^ Pos.to_nat n)%R = ((/ / x) ^ Pos.to_nat n)%Rforall (m : Z) (x y : R), 0 <= m \/ (x * y)%R <> 0%R -> (x * y) ^Z m = (x ^Z m * y ^Z m)%Rforall (m : Z) (x y : R), 0 <= m \/ (x * y)%R <> 0%R -> (x * y) ^Z m = (x ^Z m * y ^Z m)%Rm:Zx0, y0:RHmxy:0 <= m \/ (x0 * y0)%R <> 0%R(x0 * y0) ^Z m = (x0 ^Z m * y0 ^Z m)%Rm:Zx0, y0:RHmxy:0 <= m \/ (x0 * y0)%R <> 0%Re:m = 0(x0 * y0) ^Z 0 = (x0 ^Z 0 * y0 ^Z 0)%Rm:Zx0, y0:RHmxy:0 <= m \/ (x0 * y0)%R <> 0%Rn:nate:m = n(x0 * y0) ^Z n = (x0 ^Z n * y0 ^Z n)%Rm:Zx0, y0:RHmxy:0 <= m \/ (x0 * y0)%R <> 0%Rn:natHm:m = - n(x0 * y0) ^Z (- n) = (x0 ^Z (- n) * y0 ^Z (- n))%Rnow simpl; rewrite Rmult_1_l.m:Zx0, y0:RHmxy:0 <= m \/ (x0 * y0)%R <> 0%Re:m = 0(x0 * y0) ^Z 0 = (x0 ^Z 0 * y0 ^Z 0)%Rnow rewrite <- !pow_powerRZ, Rpow_mult_distr.m:Zx0, y0:RHmxy:0 <= m \/ (x0 * y0)%R <> 0%Rn:nate:m = n(x0 * y0) ^Z n = (x0 ^Z n * y0 ^Z n)%Rm:Zx0, y0:RHmxy:0 <= m \/ (x0 * y0)%R <> 0%Rn:natHm:m = - n(x0 * y0) ^Z (- n) = (x0 ^Z (- n) * y0 ^Z (- n))%Rm:Zx0, y0:RH:0 <= mn:natHm:m = - n(x0 * y0) ^Z (- n) = (x0 ^Z (- n) * y0 ^Z (- n))%Rm:Zx0, y0:RH:(x0 * y0)%R <> 0%Rn:natHm:m = - n(x0 * y0) ^Z (- n) = (x0 ^Z (- n) * y0 ^Z (- n))%Rm:Zx0, y0:RH:0 <= mn:natHm:m = - n(x0 * y0) ^Z (- n) = (x0 ^Z (- n) * y0 ^Z (- n))%Rnow rewrite <- Hm, Rmult_1_l.x0, y0:RH:0 <= 0n:natHm:0 = - n(x0 * y0) ^Z (- n) = (x0 ^Z (- n) * y0 ^Z (- n))%Rm:Zx0, y0:RH:(x0 * y0)%R <> 0%Rn:natHm:m = - n(x0 * y0) ^Z (- n) = (x0 ^Z (- n) * y0 ^Z (- n))%Rm:Zx0, y0:RH:(x0 * y0)%R <> 0%Rn:natHm:m = - nH0:x0 <> 0%R(x0 * y0) ^Z (- n) = (x0 ^Z (- n) * y0 ^Z (- n))%Rm:Zx0, y0:RH:(x0 * y0)%R <> 0%Rn:natHm:m = - nH0:x0 <> 0%RH1:y0 <> 0%R(x0 * y0) ^Z (- n) = (x0 ^Z (- n) * y0 ^Z (- n))%Rm:Zx0, y0:RH:(x0 * y0)%R <> 0%Rn:natHm:m = - nH0:x0 <> 0%RH1:y0 <> 0%R(/ (x0 * y0)) ^Z n = ((/ x0) ^Z n * (/ y0) ^Z n)%Rnow rewrite <- !pow_powerRZ, Rpow_mult_distr. Qed. End PowerRZ. Local Infix "^Z" := powerRZ (at level 30, right associativity) : R_scope. (*******************************) (* For easy interface *) (*******************************) (* decimal_exp r z is defined as r 10^z *) Definition decimal_exp (r:R) (z:Z) : R := (r * 10 ^Z z). (*******************************)m:Zx0, y0:RH:(x0 * y0)%R <> 0%Rn:natHm:m = - nH0:x0 <> 0%RH1:y0 <> 0%R(/ x0 * / y0) ^Z n = ((/ x0) ^Z n * (/ y0) ^Z n)%R
(*******************************) (*********) Fixpoint sum_nat_f_O (f:nat -> nat) (n:nat) : nat := match n with | O => f 0%nat | S n' => (sum_nat_f_O f n' + f (S n'))%nat end. (*********) Definition sum_nat_f (s n:nat) (f:nat -> nat) : nat := sum_nat_f_O (fun x:nat => f (x + s)%nat) (n - s). (*********) Definition sum_nat_O (n:nat) : nat := sum_nat_f_O (fun x:nat => x) n. (*********) Definition sum_nat (s n:nat) : nat := sum_nat_f s n (fun x:nat => x). (*******************************)
(*******************************) (*********) Fixpoint sum_f_R0 (f:nat -> R) (N:nat) : R := match N with | O => f 0%nat | S i => sum_f_R0 f i + f (S i) end. (*********) Definition sum_f (s n:nat) (f:nat -> R) : R := sum_f_R0 (fun x:nat => f (x + s)%nat) (n - s).forall (x : R) (n : nat), sum_f_R0 (fun n0 : nat => x ^ n0) n * (x - 1) = x ^ (n + 1) - 1forall (x : R) (n : nat), sum_f_R0 (fun n0 : nat => x ^ n0) n * (x - 1) = x ^ (n + 1) - 1x:R1 * (x - 1) = x * 1 - 1x:Rn:natHrecn:sum_f_R0 (fun n0 : nat => x ^ n0) n * (x - 1) = x ^ (n + 1) - 1(sum_f_R0 (fun n0 : nat => x ^ n0) n + x * x ^ n) * (x - 1) = x * x ^ (n + 1) - 1x:Rn:natHrecn:sum_f_R0 (fun n0 : nat => x ^ n0) n * (x - 1) = x ^ (n + 1) - 1(sum_f_R0 (fun n0 : nat => x ^ n0) n + x * x ^ n) * (x - 1) = x * x ^ (n + 1) - 1x:Rn:natHrecn:sum_f_R0 (fun n0 : nat => x ^ n0) n * (x - 1) = x ^ (n + 1) - 1(n + 1)%nat = S n -> x ^ (n + 1) - 1 + x * x ^ n * (x - 1) = x * x ^ (n + 1) - 1x:Rn:natHrecn:sum_f_R0 (fun n0 : nat => x ^ n0) n * (x - 1) = x ^ (n + 1) - 1(n + 1)%nat = S nomega. Qed.x:Rn:natHrecn:sum_f_R0 (fun n0 : nat => x ^ n0) n * (x - 1) = x ^ (n + 1) - 1(n + 1)%nat = S nforall (x : nat -> R) (n : nat), Rabs (sum_f_R0 x n) <= sum_f_R0 (fun i : nat => Rabs (x i)) nforall (x : nat -> R) (n : nat), Rabs (sum_f_R0 x n) <= sum_f_R0 (fun i : nat => Rabs (x i)) nx:nat -> Rn:natRabs (x 0%nat) <= Rabs (x 0%nat)x:nat -> Rn:natforall n0 : nat, Rabs (sum_f_R0 x n0) <= sum_f_R0 (fun i : nat => Rabs (x i)) n0 -> Rabs (sum_f_R0 x n0 + x (S n0)) <= sum_f_R0 (fun i : nat => Rabs (x i)) n0 + Rabs (x (S n0))x:nat -> Rn:natforall n0 : nat, Rabs (sum_f_R0 x n0) <= sum_f_R0 (fun i : nat => Rabs (x i)) n0 -> Rabs (sum_f_R0 x n0 + x (S n0)) <= sum_f_R0 (fun i : nat => Rabs (x i)) n0 + Rabs (x (S n0))x:nat -> Rn, m:natH:Rabs (sum_f_R0 x m) <= sum_f_R0 (fun i : nat => Rabs (x i)) mRabs (sum_f_R0 x m + x (S m)) <= Rabs (sum_f_R0 x m) + Rabs (x (S m))x:nat -> Rn, m:natH:Rabs (sum_f_R0 x m) <= sum_f_R0 (fun i : nat => Rabs (x i)) mRabs (sum_f_R0 x m) + Rabs (x (S m)) <= sum_f_R0 (fun i : nat => Rabs (x i)) m + Rabs (x (S m))rewrite Rplus_comm; rewrite (Rplus_comm (sum_f_R0 (fun i:nat => Rabs (x i)) m) (Rabs (x (S m)))); apply Rplus_le_compat_l; assumption. Qed. (*******************************)x:nat -> Rn, m:natH:Rabs (sum_f_R0 x m) <= sum_f_R0 (fun i : nat => Rabs (x i)) mRabs (sum_f_R0 x m) + Rabs (x (S m)) <= sum_f_R0 (fun i : nat => Rabs (x i)) m + Rabs (x (S m))
(*******************************) (*********) Definition R_dist (x y:R) : R := Rabs (x - y). (*********)forall x y : R, R_dist x y >= 0forall x y : R, R_dist x y >= 0x, y:Rl:x - y < 0- (x - y) >= 0x, y:Rl:x - y >= 0x - y >= 0trivial. Qed. (*********)x, y:Rl:x - y >= 0x - y >= 0forall x y : R, R_dist x y = R_dist y xforall x y : R, R_dist x y = R_dist y xx, y:RHlt:x - y < 0Hlt0:y - x < 0- (x - y) = - (y - x)x, y:RHge:x - y >= 0Hge0:y - x >= 0x - y = y - xgeneralize (minus_Rge y x Hge0); intro; generalize (minus_Rge x y Hge); intro; generalize (Rge_antisym x y H0 H); intro; rewrite H1; ring. Qed. (*********)x, y:RHge:x - y >= 0Hge0:y - x >= 0x - y = y - xforall x y : R, R_dist x y = 0 <-> x = yforall x y : R, R_dist x y = 0 <-> x = yx, y:RHlt:x - y < 0H:- (x - y) = 0x = yx, y:RHlt:x - y < 0H:x = y- (x - y) = 0x, y:RHge:x - y >= 0H:x - y = 0x = yx, y:RHge:x - y >= 0H:x = yx - y = 0x, y:RHlt:x - y < 0H:x = y- (x - y) = 0x, y:RHge:x - y >= 0H:x - y = 0x = yx, y:RHge:x - y >= 0H:x = yx - y = 0x, y:RHge:x - y >= 0H:x - y = 0x = yx, y:RHge:x - y >= 0H:x = yx - y = 0apply (Rminus_diag_eq x y H). Qed.x, y:RHge:x - y >= 0H:x = yx - y = 0forall x : R, R_dist x x = 0unfold R_dist; intros; split_Rabs; intros; ring. Qed. (***********)forall x : R, R_dist x x = 0forall x y z : R, R_dist x y <= R_dist x z + R_dist z yintros; unfold R_dist; replace (x - y) with (x - z + (z - y)); [ apply (Rabs_triang (x - z) (z - y)) | ring ]. Qed. (*********)forall x y z : R, R_dist x y <= R_dist x z + R_dist z yforall a b c d : R, R_dist (a + c) (b + d) <= R_dist a b + R_dist c dforall a b c d : R, R_dist (a + c) (b + d) <= R_dist a b + R_dist c da, b, c, d:RRabs (a - b + (c - d)) <= Rabs (a - b) + Rabs (c - d)a, b, c, d:Ra - b + (c - d) = a + c - (b + d)ring. Qed.a, b, c, d:Ra - b + (c - d) = a + c - (b + d)forall a b c : R, R_dist (a * b) (a * c) = Rabs a * R_dist b cforall a b c : R, R_dist (a * b) (a * c) = Rabs a * R_dist b cintros a b c; rewrite <- Rmult_minus_distr_l, Rabs_mult; reflexivity. Qed. (*******************************)forall a b c : R, Rabs (a * b - a * c) = Rabs a * Rabs (b - c)
(*******************************) (*********) Definition infinite_sum (s:nat -> R) (l:R) : Prop := forall eps:R, eps > 0 -> exists N : nat, (forall n:nat, (n >= N)%nat -> R_dist (sum_f_R0 s n) l < eps).
Compatibility with previous versions
Notation infinit_sum := infinite_sum (only parsing).