Built with Alectryon, running Coq+SerAPI v8.10.0+0.7.0. Coq sources are in this panel; goals and messages will appear in the other. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus.
(************************************************************************) (* * The Coq Proof Assistant / The Coq Development Team *) (* v * INRIA, CNRS and contributors - Copyright 1999-2018 *) (* <O___,, * (see CREDITS file for the list of authors) *) (* \VV/ **************************************************************) (* // * This file is distributed under the terms of the *) (* * GNU Lesser General Public License Version 2.1 *) (* * (see LICENSE file for the text of the license) *) (************************************************************************) Require Import Lra. Require Import Rbase. Require Import Rtrigo1. Require Import Ranalysis_reg. Require Import Rfunctions. Require Import AltSeries. Require Import Rseries. Require Import SeqProp. Require Import PartSum. Require Import Ratan. Require Import Omega. Local Open Scope R_scope. (* Proving a few formulas in the style of John Machin to compute Pi *) Definition atan_sub u v := (u - v)/(1 + u * v).forall u v : R, 1 + u * v <> 0 -> - PI / 2 < atan u - atan v < PI / 2 -> - PI / 2 < atan (atan_sub u v) < PI / 2 -> atan u = atan v + atan (atan_sub u v)forall u v : R, 1 + u * v <> 0 -> - PI / 2 < atan u - atan v < PI / 2 -> - PI / 2 < atan (atan_sub u v) < PI / 2 -> atan u = atan v + atan (atan_sub u v)u, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2atan u = atan v + atan (atan_sub u v)u, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2cos (atan u) <> 0u, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2H:cos (atan u) <> 0atan u = atan v + atan (atan_sub u v)u, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2H:- PI / 2 < atan uH0:atan u < PI / 2- (PI / 2) < atan uu, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2H:cos (atan u) <> 0atan u = atan v + atan (atan_sub u v)u, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2H:cos (atan u) <> 0atan u = atan v + atan (atan_sub u v)u, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2H:cos (atan u) <> 0cos (atan v) <> 0u, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2H:cos (atan u) <> 0H0:cos (atan v) <> 0atan u = atan v + atan (atan_sub u v)u, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2H:cos (atan u) <> 0H0:- PI / 2 < atan vH1:atan v < PI / 2- (PI / 2) < atan vu, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2H:cos (atan u) <> 0H0:cos (atan v) <> 0atan u = atan v + atan (atan_sub u v)u, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2H:cos (atan u) <> 0H0:cos (atan v) <> 0atan u = atan v + atan (atan_sub u v)u, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2H:cos (atan u) <> 0H0:cos (atan v) <> 0t:forall a b c : R, a - b = c -> a = b + catan u = atan v + atan (atan_sub u v)u, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2H:cos (atan u) <> 0H0:cos (atan v) <> 0tan (atan u - atan v) = tan (atan (atan_sub u v))u, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2H:cos (atan u) <> 0H0:cos (atan v) <> 0(tan (atan u) - tan (atan v)) / (1 + tan (atan u) * tan (atan v)) = tan (atan (atan_sub u v))u, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2H:cos (atan u) <> 0H0:cos (atan v) <> 0cos (atan u - atan v) <> 0u, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2H:cos (atan u) <> 0H0:cos (atan v) <> 01 + tan (atan u) * tan (atan v) <> 0u, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2H:cos (atan u) <> 0H0:cos (atan v) <> 0cos (atan u - atan v) <> 0u, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2H:cos (atan u) <> 0H0:cos (atan v) <> 01 + tan (atan u) * tan (atan v) <> 0rewrite !atan_right_inv; assumption. Qed.u, v:Rpn0:1 + u * v <> 0uvint:- PI / 2 < atan u - atan v < PI / 2aint:- PI / 2 < atan (atan_sub u v) < PI / 2H:cos (atan u) <> 0H0:cos (atan v) <> 01 + tan (atan u) * tan (atan v) <> 0forall x y : R, -1 <= x <= 1 -> -1 < y < 1 -> - PI / 2 < atan x - atan y < PI / 2forall x y : R, -1 <= x <= 1 -> -1 < y < 1 -> - PI / 2 < atan x - atan y < PI / 2ut:PI > 0forall x y : R, -1 <= x <= 1 -> -1 < y < 1 -> - PI / 2 < atan x - atan y < PI / 2ut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1- PI / 2 < atan x - atan y < PI / 2ut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1- (PI / 4) <= atan xut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan x- PI / 2 < atan x - atan y < PI / 2ut:PI > 0x, y:Rxm1:-1 < xx1:x <= 1ym1:-1 < yy1:y < 1- (PI / 4) <= atan xut:PI > 0x, y:Rxm1:-1 = xx1:x <= 1ym1:-1 < yy1:y < 1- (PI / 4) <= atan xut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan x- PI / 2 < atan x - atan y < PI / 2ut:PI > 0x, y:Rxm1:-1 < xx1:x <= 1ym1:-1 < yy1:y < 1- (1) < xut:PI > 0x, y:Rxm1:-1 = xx1:x <= 1ym1:-1 < yy1:y < 1- (PI / 4) <= atan xut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan x- PI / 2 < atan x - atan y < PI / 2ut:PI > 0x, y:Rxm1:-1 = xx1:x <= 1ym1:-1 < yy1:y < 1- (PI / 4) <= atan xut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan x- PI / 2 < atan x - atan y < PI / 2ut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan x- PI / 2 < atan x - atan y < PI / 2ut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan x- (PI / 4) < atan yut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan y- PI / 2 < atan x - atan y < PI / 2ut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan x- (1) < yut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan y- PI / 2 < atan x - atan y < PI / 2ut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan y- PI / 2 < atan x - atan y < PI / 2ut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan yatan x <= PI / 4ut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan yH1:atan x <= PI / 4- PI / 2 < atan x - atan y < PI / 2ut:PI > 0x, y:Rxm1:-1 <= xx1:x < 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan yatan x <= PI / 4ut:PI > 0x, y:Rxm1:-1 <= xx1:x = 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan yatan x <= PI / 4ut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan yH1:atan x <= PI / 4- PI / 2 < atan x - atan y < PI / 2ut:PI > 0x, y:Rxm1:-1 <= xx1:x < 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan yx < 1ut:PI > 0x, y:Rxm1:-1 <= xx1:x = 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan yatan x <= PI / 4ut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan yH1:atan x <= PI / 4- PI / 2 < atan x - atan y < PI / 2ut:PI > 0x, y:Rxm1:-1 <= xx1:x = 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan yatan x <= PI / 4ut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan yH1:atan x <= PI / 4- PI / 2 < atan x - atan y < PI / 2ut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan yH1:atan x <= PI / 4- PI / 2 < atan x - atan y < PI / 2ut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan yH1:atan x <= PI / 4atan y < PI / 4ut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan yH1:atan x <= PI / 4H2:atan y < PI / 4- PI / 2 < atan x - atan y < PI / 2ut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan yH1:atan x <= PI / 4y < 1ut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan yH1:atan x <= PI / 4H2:atan y < PI / 4- PI / 2 < atan x - atan y < PI / 2rewrite Ropp_div; split; lra. Qed. (* A simple formula, reasonably efficient. *)ut:PI > 0x, y:Rxm1:-1 <= xx1:x <= 1ym1:-1 < yy1:y < 1H:- (PI / 4) <= atan xH0:- (PI / 4) < atan yH1:atan x <= PI / 4H2:atan y < PI / 4- PI / 2 < atan x - atan y < PI / 2PI / 4 = atan (/ 2) + atan (/ 3)PI / 4 = atan (/ 2) + atan (/ 3)utility:0 < PI / 2PI / 4 = atan (/ 2) + atan (/ 3)utility:0 < PI / 2atan 1 = atan (/ 2) + atan (/ 3)utility:0 < PI / 2atan (/ 2) + atan (atan_sub 1 (/ 2)) = atan (/ 2) + atan (/ 3)utility:0 < PI / 21 + 1 * / 2 <> 0utility:0 < PI / 2- PI / 2 < atan 1 - atan (/ 2) < PI / 2utility:0 < PI / 2- PI / 2 < atan (atan_sub 1 (/ 2)) < PI / 2utility:0 < PI / 21 + 1 * / 2 <> 0utility:0 < PI / 2- PI / 2 < atan 1 - atan (/ 2) < PI / 2utility:0 < PI / 2- PI / 2 < atan (atan_sub 1 (/ 2)) < PI / 2utility:0 < PI / 2- PI / 2 < atan 1 - atan (/ 2) < PI / 2utility:0 < PI / 2- PI / 2 < atan (atan_sub 1 (/ 2)) < PI / 2apply atan_bound. Qed.utility:0 < PI / 2- PI / 2 < atan (atan_sub 1 (/ 2)) < PI / 2PI / 4 = 4 * atan (/ 5) - atan (/ 239)PI / 4 = 4 * atan (/ 5) - atan (/ 239)atan 1 = 4 * atan (/ 5) - atan (/ 239)atan (/ 5) + atan (atan_sub 1 (/ 5)) = 4 * atan (/ 5) - atan (/ 239)atan (/ 5) + atan (atan_sub 1 (/ 5)) = atan (/ 5) + (atan (/ 5) + (atan (/ 5) + (atan (/ 5) + - atan (/ 239))))atan (atan_sub 1 (/ 5)) = atan (/ 5) + (atan (/ 5) + (atan (/ 5) + - atan (/ 239)))atan (2 / 3) = atan (/ 5) + (atan (/ 5) + (atan (/ 5) + - atan (/ 239)))atan (atan_sub (2 / 3) (/ 5)) = atan (/ 5) + (atan (/ 5) + - atan (/ 239))atan (7 / 17) = atan (/ 5) + (atan (/ 5) + - atan (/ 239))atan (atan_sub (7 / 17) (/ 5)) = atan (/ 5) + - atan (/ 239)atan (9 / 46) = atan (/ 5) + - atan (/ 239)atan (atan_sub (9 / 46) (/ 5)) = - atan (/ 239)unfold atan_sub; field. Qed.atan_sub (9 / 46) (/ 5) = - / 239PI / 4 = 2 * atan (/ 3) + atan (/ 7)PI / 4 = 2 * atan (/ 3) + atan (/ 7)atan 1 = 2 * atan (/ 3) + atan (/ 7)atan (/ 3) + atan (atan_sub 1 (/ 3)) = 2 * atan (/ 3) + atan (/ 7)atan (/ 3) + atan (atan_sub 1 (/ 3)) = atan (/ 3) + (atan (/ 3) + atan (/ 7))atan (atan_sub 1 (/ 3)) = atan (/ 3) + atan (/ 7)atan (/ 2) = atan (/ 3) + atan (/ 7)apply f_equal; unfold atan_sub; field. Qed. (* More efficient way to compute approximations of PI. *) Definition PI_2_3_7_tg n := 2 * Ratan_seq (/3) n + Ratan_seq (/7) n.atan (atan_sub (/ 2) (/ 3)) = atan (/ 7)forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1Un_decreasing PI_2_3_7_tgdec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgforall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_decreasing (Ratan_seq (/ 3))dec7:0 <= / 7 <= 1Un_decreasing PI_2_3_7_tgdec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgforall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_decreasing (Ratan_seq (/ 3))dec7:Un_decreasing (Ratan_seq (/ 7))Un_decreasing PI_2_3_7_tgdec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgforall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_decreasing (Ratan_seq (/ 3))dec7:Un_decreasing (Ratan_seq (/ 7))n:nat2 * Ratan_seq (/ 3) (S n) <= 2 * Ratan_seq (/ 3) ndec3:Un_decreasing (Ratan_seq (/ 3))dec7:Un_decreasing (Ratan_seq (/ 7))n:natRatan_seq (/ 7) (S n) <= Ratan_seq (/ 7) ndec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgforall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_decreasing (Ratan_seq (/ 3))dec7:Un_decreasing (Ratan_seq (/ 7))n:natRatan_seq (/ 7) (S n) <= Ratan_seq (/ 7) ndec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgforall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgforall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgUn_cv PI_2_3_7_tg 0dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgUn_cv PI_2_3_7_tg 0dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgUn_cv PI_2_3_7_tg 0dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0exists N : nat, forall n : nat, (n >= N)%nat -> R_dist (PI_2_3_7_tg n) 0 < epsdec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3exists N : nat, forall n : nat, (n >= N)%nat -> R_dist (PI_2_3_7_tg n) 0 < epsdec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3N1:natPn1:forall n : nat, (n >= N1)%nat -> R_dist (Ratan_seq (/ 3) n) 0 < eps / 3N2:natPn2:forall n : nat, (n >= N2)%nat -> R_dist (Ratan_seq (/ 7) n) 0 < eps / 3exists N : nat, forall n : nat, (n >= N)%nat -> R_dist (PI_2_3_7_tg n) 0 < epsdec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3N1:natPn1:forall n0 : nat, (n0 >= N1)%nat -> R_dist (Ratan_seq (/ 3) n0) 0 < eps / 3N2:natPn2:forall n0 : nat, (n0 >= N2)%nat -> R_dist (Ratan_seq (/ 7) n0) 0 < eps / 3n:natNn:(n >= N1 + N2)%natR_dist (PI_2_3_7_tg n) 0 < epsdec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3N1:natPn1:forall n0 : nat, (n0 >= N1)%nat -> R_dist (Ratan_seq (/ 3) n0) 0 < eps / 3N2:natPn2:forall n0 : nat, (n0 >= N2)%nat -> R_dist (Ratan_seq (/ 7) n0) 0 < eps / 3n:natNn:(n >= N1 + N2)%natR_dist (2 * Ratan_seq (/ 3) n + Ratan_seq (/ 7) n) 0 < epsdec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3N1:natPn1:forall n0 : nat, (n0 >= N1)%nat -> R_dist (Ratan_seq (/ 3) n0) 0 < eps / 3N2:natPn2:forall n0 : nat, (n0 >= N2)%nat -> R_dist (Ratan_seq (/ 7) n0) 0 < eps / 3n:natNn:(n >= N1 + N2)%natR_dist (2 * Ratan_seq (/ 3) n + Ratan_seq (/ 7) n) (0 + 0) < epsdec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3N1:natPn1:forall n0 : nat, (n0 >= N1)%nat -> R_dist (Ratan_seq (/ 3) n0) 0 < eps / 3N2:natPn2:forall n0 : nat, (n0 >= N2)%nat -> R_dist (Ratan_seq (/ 7) n0) 0 < eps / 3n:natNn:(n >= N1 + N2)%natR_dist (2 * Ratan_seq (/ 3) n) 0 + R_dist (Ratan_seq (/ 7) n) 0 < epsdec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3N1:natPn1:forall n0 : nat, (n0 >= N1)%nat -> R_dist (Ratan_seq (/ 3) n0) 0 < eps / 3N2:natPn2:forall n0 : nat, (n0 >= N2)%nat -> R_dist (Ratan_seq (/ 7) n0) 0 < eps / 3n:natNn:(n >= N1 + N2)%natR_dist (2 * Ratan_seq (/ 3) n) 0 + R_dist (Ratan_seq (/ 7) n) 0 < 2 * eps / 3 + eps / 3dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3N1:natPn1:forall n0 : nat, (n0 >= N1)%nat -> R_dist (Ratan_seq (/ 3) n0) 0 < eps / 3N2:natPn2:forall n0 : nat, (n0 >= N2)%nat -> R_dist (Ratan_seq (/ 7) n0) 0 < eps / 3n:natNn:(n >= N1 + N2)%natR_dist (2 * Ratan_seq (/ 3) n) 0 < 2 * eps / 3dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3N1:natPn1:forall n0 : nat, (n0 >= N1)%nat -> R_dist (Ratan_seq (/ 3) n0) 0 < eps / 3N2:natPn2:forall n0 : nat, (n0 >= N2)%nat -> R_dist (Ratan_seq (/ 7) n0) 0 < eps / 3n:natNn:(n >= N1 + N2)%natR_dist (Ratan_seq (/ 7) n) 0 < eps / 3dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3N1:natPn1:forall n0 : nat, (n0 >= N1)%nat -> R_dist (Ratan_seq (/ 3) n0) 0 < eps / 3N2:natPn2:forall n0 : nat, (n0 >= N2)%nat -> R_dist (Ratan_seq (/ 7) n0) 0 < eps / 3n:natNn:(n >= N1 + N2)%natRabs (2 * Ratan_seq (/ 3) n + - 0) < 2 * eps * / 3dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3N1:natPn1:forall n0 : nat, (n0 >= N1)%nat -> R_dist (Ratan_seq (/ 3) n0) 0 < eps / 3N2:natPn2:forall n0 : nat, (n0 >= N2)%nat -> R_dist (Ratan_seq (/ 7) n0) 0 < eps / 3n:natNn:(n >= N1 + N2)%natR_dist (Ratan_seq (/ 7) n) 0 < eps / 3dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3N1:natPn1:forall n0 : nat, (n0 >= N1)%nat -> R_dist (Ratan_seq (/ 3) n0) 0 < eps / 3N2:natPn2:forall n0 : nat, (n0 >= N2)%nat -> R_dist (Ratan_seq (/ 7) n0) 0 < eps / 3n:natNn:(n >= N1 + N2)%natRabs (2 * Ratan_seq (/ 3) n + 2 * - 0) < 2 * eps * / 3dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3N1:natPn1:forall n0 : nat, (n0 >= N1)%nat -> R_dist (Ratan_seq (/ 3) n0) 0 < eps / 3N2:natPn2:forall n0 : nat, (n0 >= N2)%nat -> R_dist (Ratan_seq (/ 7) n0) 0 < eps / 3n:natNn:(n >= N1 + N2)%natR_dist (Ratan_seq (/ 7) n) 0 < eps / 3dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3N1:natPn1:forall n0 : nat, (n0 >= N1)%nat -> R_dist (Ratan_seq (/ 3) n0) 0 < eps / 3N2:natPn2:forall n0 : nat, (n0 >= N2)%nat -> R_dist (Ratan_seq (/ 7) n0) 0 < eps / 3n:natNn:(n >= N1 + N2)%nat2 * Rabs (Ratan_seq (/ 3) n + - 0) < 2 * eps * / 3dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3N1:natPn1:forall n0 : nat, (n0 >= N1)%nat -> R_dist (Ratan_seq (/ 3) n0) 0 < eps / 3N2:natPn2:forall n0 : nat, (n0 >= N2)%nat -> R_dist (Ratan_seq (/ 7) n0) 0 < eps / 3n:natNn:(n >= N1 + N2)%natR_dist (Ratan_seq (/ 7) n) 0 < eps / 3dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3N1:natPn1:forall n0 : nat, (n0 >= N1)%nat -> R_dist (Ratan_seq (/ 3) n0) 0 < eps / 3N2:natPn2:forall n0 : nat, (n0 >= N2)%nat -> R_dist (Ratan_seq (/ 7) n0) 0 < eps / 3n:natNn:(n >= N1 + N2)%natRabs (Ratan_seq (/ 3) n + - 0) < eps * / 3dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3N1:natPn1:forall n0 : nat, (n0 >= N1)%nat -> R_dist (Ratan_seq (/ 3) n0) 0 < eps / 3N2:natPn2:forall n0 : nat, (n0 >= N2)%nat -> R_dist (Ratan_seq (/ 7) n0) 0 < eps / 3n:natNn:(n >= N1 + N2)%natR_dist (Ratan_seq (/ 7) n) 0 < eps / 3dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:Un_cv (Ratan_seq (/ 3)) 0dec7:Un_cv (Ratan_seq (/ 7)) 0decr:Un_decreasing PI_2_3_7_tgeps:Rep:eps > 0ep':0 < eps / 3N1:natPn1:forall n0 : nat, (n0 >= N1)%nat -> R_dist (Ratan_seq (/ 3) n0) 0 < eps / 3N2:natPn2:forall n0 : nat, (n0 >= N2)%nat -> R_dist (Ratan_seq (/ 7) n0) 0 < eps / 3n:natNn:(n >= N1 + N2)%natR_dist (Ratan_seq (/ 7) n) 0 < eps / 3dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= PI / 4 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= 2 * atan (/ 3) + atan (/ 7) <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= 2 * ps_atan (/ 3) + ps_atan (/ 7) <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= 2 * (let (v, _) := ps_atan_exists_1 (/ 3) a in v) + (let (v, _) := ps_atan_exists_1 (/ 7) a0 in v) <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= 2 * v3 + (let (v, _) := ps_atan_exists_1 (/ 7) a0 in v) <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= 2 * v3 + v7 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7Un_cv (sum_f_R0 (tg_alt PI_2_3_7_tg)) (2 * v3 + v7)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7main:Un_cv (sum_f_R0 (tg_alt PI_2_3_7_tg)) (2 * v3 + v7)forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= 2 * v3 + v7 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7Un_cv (fun n : nat => 2 * sum_f_R0 (tg_alt (Ratan_seq (/ 3))) n + sum_f_R0 (tg_alt (Ratan_seq (/ 7))) n) (2 * v3 + v7)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7main:Un_cv (fun n : nat => 2 * sum_f_R0 (tg_alt (Ratan_seq (/ 3))) n + sum_f_R0 (tg_alt (Ratan_seq (/ 7))) n) (2 * v3 + v7)Un_cv (sum_f_R0 (tg_alt PI_2_3_7_tg)) (2 * v3 + v7)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7main:Un_cv (sum_f_R0 (tg_alt PI_2_3_7_tg)) (2 * v3 + v7)forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= 2 * v3 + v7 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7Un_cv (fun i : nat => 2 * sum_f_R0 (tg_alt (Ratan_seq (/ 3))) i) (2 * v3)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7main:Un_cv (fun n : nat => 2 * sum_f_R0 (tg_alt (Ratan_seq (/ 3))) n + sum_f_R0 (tg_alt (Ratan_seq (/ 7))) n) (2 * v3 + v7)Un_cv (sum_f_R0 (tg_alt PI_2_3_7_tg)) (2 * v3 + v7)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7main:Un_cv (sum_f_R0 (tg_alt PI_2_3_7_tg)) (2 * v3 + v7)forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= 2 * v3 + v7 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7Un_cv (fun _ : nat => 2) 2dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7main:Un_cv (fun n : nat => 2 * sum_f_R0 (tg_alt (Ratan_seq (/ 3))) n + sum_f_R0 (tg_alt (Ratan_seq (/ 7))) n) (2 * v3 + v7)Un_cv (sum_f_R0 (tg_alt PI_2_3_7_tg)) (2 * v3 + v7)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7main:Un_cv (sum_f_R0 (tg_alt PI_2_3_7_tg)) (2 * v3 + v7)forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= 2 * v3 + v7 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7main:Un_cv (fun n : nat => 2 * sum_f_R0 (tg_alt (Ratan_seq (/ 3))) n + sum_f_R0 (tg_alt (Ratan_seq (/ 7))) n) (2 * v3 + v7)Un_cv (sum_f_R0 (tg_alt PI_2_3_7_tg)) (2 * v3 + v7)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7main:Un_cv (sum_f_R0 (tg_alt PI_2_3_7_tg)) (2 * v3 + v7)forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= 2 * v3 + v7 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7main:Un_cv (fun n : nat => 2 * sum_f_R0 (tg_alt (Ratan_seq (/ 3))) n + sum_f_R0 (tg_alt (Ratan_seq (/ 7))) n) (2 * v3 + v7)forall n : nat, 2 * sum_f_R0 (tg_alt (Ratan_seq (/ 3))) n + sum_f_R0 (tg_alt (Ratan_seq (/ 7))) n = sum_f_R0 (tg_alt PI_2_3_7_tg) ndec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7main:Un_cv (sum_f_R0 (tg_alt PI_2_3_7_tg)) (2 * v3 + v7)forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= 2 * v3 + v7 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7main:Un_cv (fun n0 : nat => 2 * sum_f_R0 (tg_alt (Ratan_seq (/ 3))) n0 + sum_f_R0 (tg_alt (Ratan_seq (/ 7))) n0) (2 * v3 + v7)n, i:natH:(i <= n)%nattg_alt (Ratan_seq (/ 3)) i * 2 + tg_alt (Ratan_seq (/ 7)) i = tg_alt PI_2_3_7_tg idec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7main:Un_cv (sum_f_R0 (tg_alt PI_2_3_7_tg)) (2 * v3 + v7)forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= 2 * v3 + v7 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)intros N; apply (alternated_series_ineq _ _ _ decr cv main). Qed.dec3:0 <= / 3 <= 1dec7:0 <= / 7 <= 1decr:Un_decreasing PI_2_3_7_tgcv:Un_cv PI_2_3_7_tg 0a:-1 <= / 3 <= 1a0:-1 <= / 7 <= 1v3:RPv3:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 3))) N) v3v7:RPv7:Un_cv (fun N : nat => sum_f_R0 (tg_alt (Ratan_seq (/ 7))) N) v7main:Un_cv (sum_f_R0 (tg_alt PI_2_3_7_tg)) (2 * v3 + v7)forall N : nat, sum_f_R0 (tg_alt PI_2_3_7_tg) (S (2 * N)) <= 2 * v3 + v7 <= sum_f_R0 (tg_alt PI_2_3_7_tg) (2 * N)