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/Data/Real/Pi/Leibniz.lean
and Mathlib/Data/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
];
Alias of Real.pi_gt_d6
.
Alias of Real.pi_lt_d6
.