Pi #
This file contains lemmas which establish bounds on Real.pi.
Notably, these include pi_gt_sqrtTwoAddSeries and pi_lt_sqrtTwoAddSeries,
which bound π using series;
numerical bounds on π such as pi_gt_d2 and pi_lt_d2 (more precise versions are given, too).
See also Mathlib/Analysis/Real/Pi/Leibniz.lean and Mathlib/Analysis/Real/Pi/Wallis.lean for
infinite formulas for π.
From an upper bound on sqrtTwoAddSeries 0 n = 2 cos (π / 2 ^ (n+1)) of the form
sqrtTwoAddSeries 0 n ≤ 2 - (a / 2 ^ (n + 1)) ^ 2), one can deduce the lower bound a < π
thanks to basic trigonometric inequalities as expressed in pi_gt_sqrtTwoAddSeries.
From a lower bound on sqrtTwoAddSeries 0 n = 2 cos (π / 2 ^ (n+1)) of the form
2 - ((a - 1 / 4 ^ n) / 2 ^ (n + 1)) ^ 2 ≤ sqrtTwoAddSeries 0 n, one can deduce the upper bound
π < a thanks to basic trigonometric formulas as expressed in pi_lt_sqrtTwoAddSeries.
Create a proof of a < π for a fixed rational number a, given a witness, which is a
sequence of rational numbers √2 < r 1 < r 2 < ... < r n < 2 satisfying the property that
√(2 + r i) ≤ r(i+1), where r 0 = 0 and √(2 - r n) ≥ a/2^(n+1).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Create a proof of π < a for a fixed rational number a, given a witness, which is a
sequence of rational numbers √2 < r 1 < r 2 < ... < r n < 2 satisfying the property that
√(2 + r i) ≥ r(i+1), where r 0 = 0 and √(2 - r n) ≤ (a - 1/4^n) / 2^(n+1).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The below witnesses were generated using the following Mathematica script:
bound[a_, Iters -> n_, Rounding -> extra_, Precision -> prec_] := Module[{r0, r, r2, diff, sign},
On[Assert];
sign = If[a >= \[Pi], Print["upper"]; 1, Print["lower"]; -1];
r0 = 2 - ((a - (sign + 1)/2/4^n)/2^(n + 1))^2;
r = Log[2 - NestList[#^2 - 2 &, N[r0, prec], n - 1]];
diff = (r[[-1]] - Log[2 - Sqrt[2]])/(Length[r] + 1);
If[sign diff <= 0, Return["insufficient iterations"]];
r2 = Log[Rationalize[Exp[#], extra (Exp[#] - Exp[# - sign diff])] &
/@ (r - diff Range[1, Length[r]])];
Assert[sign (2 - Exp@r2[[1]] - r0) >= 0];
Assert[And @@ Table[
sign (Sqrt@(4 - Exp@r2[[i + 1]]) - (2 - Exp@r2[[i]])) >= 0, {i, 1, Length[r2] - 1}]];
Assert[sign (Exp@r2[[-1]] - (2 - Sqrt[2])) >= 0];
With[{s1 = ToString@InputForm[2 - #], s2 = ToString@InputForm[#]},
If[StringLength[s1] <= StringLength[s2] + 2, s1, "2-" <> s2]] & /@ Exp@Reverse@r2
];