Compare commits
No commits in common. "feat/p28-post-submission-hardening" and "main" have entirely different histories.
feat/p28-p
...
main
25 changed files with 390 additions and 4331 deletions
|
|
@ -1,99 +1,73 @@
|
|||
# Problem 2.8 — Exact Hypergeometric Tail Closure
|
||||
|
||||
**Status:** exact proof, adversarially audited
|
||||
**Status:** PROVED
|
||||
**Date:** July 2026
|
||||
|
||||
For every official column \(j=1,2,3,4\), the authoritative recurrence
|
||||
satisfies the official orientation
|
||||
satisfies
|
||||
|
||||
\[
|
||||
\lim_{N\to\infty}\frac{P_{N,j}}{Q_{N,j}}
|
||||
=\frac{\sqrt{10005}}{\pi}.
|
||||
\]
|
||||
|
||||
Equivalently, in the orientation requested by Ramanujan Challenge
|
||||
Problem 2.8,
|
||||
|
||||
\[
|
||||
\boxed{\displaystyle
|
||||
\lim_{N\to\infty}\frac{P_{N,j}}{Q_{N,j}}
|
||||
=\frac{\sqrt{10005}}{\pi}}.
|
||||
\]
|
||||
|
||||
Its reciprocal consequence is
|
||||
|
||||
\[
|
||||
\lim_{N\to\infty}\frac{Q_{N,j}}{P_{N,j}}
|
||||
=\frac{\pi}{\sqrt{10005}}.
|
||||
=\frac{\pi}{\sqrt{10005}}}.
|
||||
\]
|
||||
|
||||
## Exact closure
|
||||
|
||||
The proof closes the former connection-functional gap through:
|
||||
|
||||
1. the fully displayed rational deformation
|
||||
\(M_N(x)=\mathcal M(2N+3,x)\);
|
||||
2. a nonterminating \({}_4F_3\) tail with
|
||||
1. an exact nonterminating \({}_4F_3\) tail with
|
||||
\(M_Nk_{N+1}=k_N\);
|
||||
3. four denominator-cleared Ore factorizations, with no division or
|
||||
remainder command;
|
||||
4. a rank-one discrete-valuation induction giving the all-\(N\)
|
||||
2. a rank-one discrete-valuation argument giving the all-\(N\)
|
||||
Padé divisibility pattern;
|
||||
5. an exact terminating adjoint \({}_4F_3\), proved by a matrix-induced
|
||||
scalar step and base/generic/top coefficient induction;
|
||||
6. positivity at \(z_0=-1/53360^3\) and a Cauchy bound with
|
||||
3. an exact terminating adjoint \({}_4F_3\) formula for the denominator;
|
||||
4. positivity at \(z_0=-1/53360^3\) and a fixed-point Cauchy bound with
|
||||
\[
|
||||
\beta=
|
||||
\frac{3125}{1307443596565949700399927}
|
||||
<4\cdot10^{-19};
|
||||
\]
|
||||
7. the Chudnovsky CM value
|
||||
5. the Chudnovsky CM value
|
||||
\(\Phi(x_0)=\sqrt{10005}/\pi\);
|
||||
8. an explicit stable-graph contraction constructing the dominant
|
||||
functional and proving eventual nonvanishing in all four columns.
|
||||
6. an exact Rouché separation of the characteristic quartic, a positive
|
||||
denominator lower bound, and the cyclic-frame argument transferring the
|
||||
first-column result to all four columns.
|
||||
|
||||
The proof is structural and does not infer equality from the earlier
|
||||
\(10^{-1052}\) numerical enclosure.
|
||||
|
||||
## Equation-only audit repairs
|
||||
|
||||
The repaired release removes:
|
||||
|
||||
- Ore `quo_rem` calls from the proof path;
|
||||
- ODE-normalization uniqueness;
|
||||
- Birkhoff–Poincaré delegation;
|
||||
- irreducibility and polynomial-GCD decisions;
|
||||
- a false negative-exponent norm inequality;
|
||||
- implicit maximum-principle and denominator-nonvanishing hypotheses;
|
||||
- reliance on stored PASS transcripts.
|
||||
|
||||
The mandatory standard-library checkers verify the full differential gauge,
|
||||
base horizontal row, matrix-to-scalar bridge, terminating induction,
|
||||
balanced limit, characteristic polynomial, root-separation inequalities, and
|
||||
positive exterior-root eigenvector coordinates.
|
||||
|
||||
## Trust boundary
|
||||
|
||||
The classical Chudnovsky formula is the sole imported problem-specific
|
||||
theorem and is cited precisely to a complete modular/CM derivation. Standard
|
||||
foundational complex- and linear-analysis results are used with their
|
||||
hypotheses displayed. The package therefore claims a self-contained
|
||||
recurrence proof relative to that explicit theorem—not an axiom-free
|
||||
reconstruction of all of complex analysis or CM theory.
|
||||
|
||||
## Authoritative artifacts
|
||||
|
||||
- `docs/proofs/PROBLEM_28_PROOF.tex`
|
||||
- `docs/proofs/PROBLEM_28_PROOF.pdf`
|
||||
- `experiments/ramanujan_28/submission/solution.tex`
|
||||
- `experiments/ramanujan_28/submission/solution.pdf`
|
||||
- `experiments/ramanujan_28/submission/ADVERSARIAL_AUDIT.md`
|
||||
- `experiments/ramanujan_28/submission/certificates/STANDALONE_EQUATION_CERTIFICATES.md`
|
||||
- `experiments/ramanujan_28/submission/`
|
||||
- `experiments/ramanujan_28/submission/ramanujan_challenge_problem_2_8.zip`
|
||||
|
||||
The primary Wolfram Language certificate contains 22 exact symbolic checks
|
||||
plus a consolidated PASS conclusion. Dependency-free Python checks verify
|
||||
the rank-one algebra, the Rouché inequality, and the convergence constants.
|
||||
Independent SageMath certificates provide secondary exact cross-checks.
|
||||
|
||||
## Release verification
|
||||
|
||||
- Mandatory dependency-free equations: **PASS**
|
||||
- Fresh optional Wolfram cross-check: **22/22 PASS**
|
||||
- Independent Ore/special-function audit: **PASS**
|
||||
- Independent convergence/all-column audit: **PASS**
|
||||
- Independent logic/vacuity audit: **PASS**
|
||||
- LaTeX build and warning scan: **PASS**
|
||||
- PDF page-by-page inspection: **PASS**
|
||||
- Clean ZIP extraction, checks, and PDF rebuild: **PASS**
|
||||
- Clean Git-bundle clone and checks: **PASS**
|
||||
- Independent adversarial proof audit: **PASS**
|
||||
- Wolfram exact checks: **22/22 PASS**
|
||||
- Python exact checks: **PASS**
|
||||
- LaTeX build: **PASS**, zero warnings
|
||||
- PDF visual inspection: **PASS**, all 10 pages
|
||||
- Clean ZIP extraction and PDF rebuild: **PASS**
|
||||
|
||||
Final SHA-256 values are recorded in `Sha256.txt` beside the released
|
||||
artifacts.
|
||||
SHA-256:
|
||||
|
||||
```text
|
||||
PDF a70c50287b24d13bdb113bcdbf87011dcbd698fdd4a7566ede5a8b37aeb8c2b9
|
||||
ZIP 60b9d60808af129a339064e72b2ad5bd8ff9bc933c3905cf8faf821316cab91d
|
||||
```
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -58,17 +58,15 @@ Equivalently, \(Q_{N,j}/P_{N,j}\to\pi/\sqrt{10005}\).
|
|||
|
||||
The missing connection constant is fixed by an exact rank-three
|
||||
hypergeometric tail. A nonterminating \(\F43\) Euler jet is carried
|
||||
backward by the displayed matrix, while the first denominator is a
|
||||
terminating adjoint \(\F43\). Four denominator-cleared Ore identities
|
||||
and three coefficient identities give an all-\(N\) Pad\'e divisibility
|
||||
theorem. Positivity at the negative CM point, a Cauchy estimate, and an
|
||||
explicit stable-graph contraction prove convergence for all four columns.
|
||||
Every algebraic identity used below is reproduced by a dependency-free
|
||||
rational-polynomial checker. The classical Chudnovsky formula, cited
|
||||
precisely in Section~2, is the sole imported theorem.
|
||||
backward by the authoritative matrix, while the first denominator is a
|
||||
terminating adjoint \(\F43\). Their common differential gauge gives an
|
||||
all-\(N\) Pad\'e divisibility theorem. Positivity of the terminating
|
||||
denominator at the negative CM point, together with a balanced-transfer
|
||||
Cauchy estimate, turns that formal divisibility into a direct fixed-point
|
||||
convergence proof. The symbolic contiguity and adjoint identities are
|
||||
included as reproducible Wolfram Language and SageMath certificates.
|
||||
\end{abstract}
|
||||
|
||||
\enlargethispage{2\baselineskip}
|
||||
\tableofcontents
|
||||
|
||||
\section{Statement and compact form of the seeds}
|
||||
|
|
@ -87,49 +85,16 @@ Let
|
|||
\[
|
||||
G_N=M_0M_1\cdots M_{N-1},\qquad G_0=I_4,
|
||||
\]
|
||||
where the rational family is defined as follows. Put \(r=x^{-1}\),
|
||||
\(\omega=u(3u-2)(3u+2)\), and
|
||||
\begin{align*}
|
||||
a_1={}&r(144u^5-288u^4+144u^3)
|
||||
-99u^5+333u^4-229u^3-114u^2+40u+64,\\
|
||||
a_2={}&r(432u^4-864u^3+432u^2)
|
||||
-243u^4+909u^3-868u^2-80u+272,\\
|
||||
a_3={}&r(432u^3-864u^2+432u)
|
||||
-153u^3+648u^2-860u+360,\\
|
||||
a_4={}&144r(u-1)^2,\\
|
||||
b_1={}&-144ru^3+9u^4+63u^3+158u^2+168u+64,\\
|
||||
b_2={}&216ru^2+36u^3-189u^2-316u-168,\\
|
||||
b_3={}&108ru+54u^2-189u-158,\\
|
||||
c_1={}&-288r^2u^3+
|
||||
r(54u^4+378u^3+948u^2+1008u+384)\\
|
||||
&\hspace{2.2em}+18u^5+45u^4-251u^3-1086u^2-1384u-576,\\
|
||||
c_2={}&-432r^2u^2+
|
||||
r(153u^4-657u^3+1292u^2+2064u+1072)\\
|
||||
&\hspace{2.2em}-72u^4+702u^3-1069u^2-2508u-1512,\\
|
||||
c_3={}&-216r^2u+
|
||||
r(180u^3-891u^2+1450u+1116)\\
|
||||
&\hspace{2.2em}-108u^3+864u^2-1385u-1422,\\
|
||||
c_4={}&-4r^2+r(6u^2-33u+\tfrac{536}{9})
|
||||
-4u^2+32u-63.
|
||||
\end{align*}
|
||||
Define
|
||||
\begin{equation}\label{eq:deformed-matrix}
|
||||
\mathcal M(u,x)=
|
||||
\begin{pmatrix}
|
||||
a_1/\omega&a_2/\omega&a_3/\omega&a_4/\omega\\
|
||||
-u^3&-3u^2&-3u&-1\\
|
||||
xb_1/144&-xb_2/72&-xb_3/36&
|
||||
x(-2r-(2u-7))/2\\
|
||||
x^2c_1/288&x^2c_2/144&x^2c_3/72&x^2c_4/4
|
||||
\end{pmatrix},
|
||||
\qquad M_N(x)=\mathcal M(2N+3,x).
|
||||
\end{equation}
|
||||
At \(x=x_0\), the only deformed challenge coefficient is restored by
|
||||
where \(M_N=M(N,x)\) is the authoritative transfer matrix in the analytic
|
||||
deformation
|
||||
\[
|
||||
236337691420383=\frac{14R-567}{9}.
|
||||
236337691420383\ \longmapsto\ \frac{14/x-567}{9}.
|
||||
\]
|
||||
Thus every use of Cauchy's theorem below concerns the explicitly displayed
|
||||
rational \(x\)-family, not an unspecified continuation.
|
||||
At \(x=x_0\), this is the exact identity
|
||||
\(236337691420383=(14R-567)/9\). Thus every later use of Cauchy's theorem
|
||||
concerns this explicitly defined rational \(x\)-family.
|
||||
The complete entries of \(M(N,x)\) appear verbatim in the accompanying
|
||||
CAS certificates.
|
||||
|
||||
Define four Pascal rows
|
||||
\[
|
||||
|
|
@ -166,19 +131,7 @@ The two official initial rows have the exact form
|
|||
H_0=Ab_0+Bb_1=(A+B,B,0,0).
|
||||
\end{equation}
|
||||
At \(x=x_0\), these identities reproduce the official integer rows
|
||||
entry by entry:
|
||||
\[
|
||||
\begin{aligned}
|
||||
A_0={}&(37169305760442252761441,\,
|
||||
111507917281327441564208,\\
|
||||
&\hspace{4.7em}111507917281327599720129,\,
|
||||
37169305760442410917362),\\
|
||||
A_1={}&(1167416361542639692320,\,
|
||||
3502249084627896132160,\\
|
||||
&\hspace{4.7em}3502249084627879697280,\,
|
||||
1167416361542622723840).
|
||||
\end{aligned}
|
||||
\]
|
||||
entry by entry.
|
||||
|
||||
For \(j=1,\ldots,4\), write
|
||||
\[
|
||||
|
|
@ -203,10 +156,7 @@ and define
|
|||
\Phi(x)=\frac{Ay(z)+B\theta y(z)}{S}.
|
||||
\end{equation}
|
||||
|
||||
We use one external theorem: the classical Chudnovsky identity. In the
|
||||
normalization used here it is Theorem~0.1 of Milla's equation-by-equation
|
||||
derivation \([2]\), whose modular and CM proof is completed in
|
||||
Theorem~9.7 and Chapter~10:
|
||||
The classical Chudnovsky identity is
|
||||
\[
|
||||
\frac1\pi=
|
||||
\frac{12}{640320^{3/2}}
|
||||
|
|
@ -262,89 +212,24 @@ Its Euler jet is
|
|||
\end{proposition}
|
||||
|
||||
\begin{proof}
|
||||
Put \(m=(u-1)/2=N+1\). For the \(r\)-th row of
|
||||
\(\mathcal M(u,x)\), define
|
||||
\[
|
||||
P_r(t)=\sum_{s=0}^3\mathcal M(u,x)_{r+1,s+1}t^s,\qquad
|
||||
\mathcal TQ=(1-x)x\partial_xQ+(t+1)Q.
|
||||
\]
|
||||
The first row is verified coefficientwise from the ratio of consecutive
|
||||
\(\F43\) coefficients. For the other rows, let \(t=\delta_{N+1}\).
|
||||
The shifted tail satisfies
|
||||
\[
|
||||
L_+(t)F_{N+1}=0,
|
||||
\left[
|
||||
(1-x)t(t+u)^3+
|
||||
x(t+n+1)(t+n+\tfrac76)(t+n+\tfrac32)(t+n+\tfrac{11}{6})
|
||||
\right]F_{N+1}=0,
|
||||
\]
|
||||
where
|
||||
\[
|
||||
L_+(t)=(1-x)t(t+u)^3+
|
||||
x(t+m+1)(t+m+\tfrac76)(t+m+\tfrac32)(t+m+\tfrac{11}{6}).
|
||||
\]
|
||||
There is no division step: direct expansion gives the following four
|
||||
denominator-cleared polynomial identities:
|
||||
\begin{align}
|
||||
u(3u-2)(3u+2)x(\mathcal TP_0-P_1)
|
||||
& =144(u-1)^2L_+,\label{eq:ore0}\\
|
||||
\mathcal TP_1-P_2&=-L_+,\label{eq:ore1}\\
|
||||
2(\mathcal TP_2-P_3)&=(-2+7x-2ux)L_+,\label{eq:ore2}\\
|
||||
36(\mathcal TP_3+\ell_3P_3+\ell_2P_2+\ell_1P_1+\ell_0P_0)
|
||||
&=q_3L_+,\label{eq:ore3}
|
||||
\end{align}
|
||||
with
|
||||
\begin{align*}
|
||||
\ell_0={}&(u-1)u(3u-2)(3u+2)x/144,\\
|
||||
\ell_1={}&[-576+864u-432u^2+72u^3
|
||||
+(580-872u+405u^2-36u^3)x]/72,\\
|
||||
\ell_2={}&[432-432u+108u^2
|
||||
+(-436+405u-54u^2)x]/36,\\
|
||||
\ell_3={}&(-12+6u+11x-2ux)/2,\\
|
||||
q_3={}&-36+(536-297u+54u^2)x
|
||||
+(-567+288u-36u^2)x^2.
|
||||
\end{align*}
|
||||
|
||||
For clarity, the coefficient calculation producing the first row is also
|
||||
written without a special-function routine. Set
|
||||
\[
|
||||
\begin{aligned}
|
||||
A(t)&=\frac{144(u-1)^2(t+u)^3}{u(3u-2)(3u+2)},&
|
||||
B(t)&=P_0(t)-\frac{A(t)}x,\\
|
||||
\varrho&=-\frac{(3u-2)(3u+2)}{144(u-1)^2u^2},\\
|
||||
\chi_j&=
|
||||
\frac{(m+j)(m+\frac16+j)(m+\frac12+j)(m+\frac56+j)}
|
||||
{m(m+\frac16)(m+\frac12)(m+\frac56)}\\
|
||||
&\quad{}\times
|
||||
\left(\frac{2m(2m+1)}{(2m+j)(2m+j+1)}\right)^3,\\
|
||||
\psi_j&=
|
||||
\frac{(m+j)(m+\frac16+j)(m+\frac12+j)(m+\frac56+j)}
|
||||
{(2m+j)^3(j+1)} .
|
||||
\end{aligned}
|
||||
\]
|
||||
The constant and generic coefficient equations are
|
||||
\begin{equation}\label{eq:tail-coefficients}
|
||||
\varrho[-A(0)]=1,\qquad
|
||||
\varrho\left[-A(j)\chi_j+
|
||||
\frac{(A(j-1)+B(j-1))\chi_{j-1}}{\psi_{j-1}}\right]=1
|
||||
\quad(j\ge1).
|
||||
\end{equation}
|
||||
Clearing the displayed nonzero factors turns
|
||||
\eqref{eq:ore0}--\eqref{eq:tail-coefficients} into polynomial
|
||||
equalities with every coefficient zero. The independent script
|
||||
\texttt{p28\_standalone\_equations.py} expands precisely these equalities
|
||||
using only rational addition and multiplication. Equation
|
||||
\eqref{eq:tail-coefficients} gives the first row of
|
||||
\eqref{eq:tail-contiguity}; applying
|
||||
\eqref{eq:ore0}--\eqref{eq:ore3} successively gives the other three
|
||||
Euler-jet rows.
|
||||
where \(u=2N+3\). Each of the remaining three row differences is divided
|
||||
by this degree-four Ore polynomial; its remainder is identically zero in
|
||||
\(\Q(N,x)[t]\). The exact coefficient identity, the three Ore divisions,
|
||||
and the normalization ratio are checked in
|
||||
\texttt{p28\_full\_closure\_certificate.wl} and
|
||||
\texttt{p28\_kernel\_contiguity\_certificate.sage}.
|
||||
\end{proof}
|
||||
|
||||
For \(N=0\), write \(y(z)=1+\sum_{k\ge1}c_kz^k\). The coefficient of
|
||||
\(z\) is
|
||||
\[
|
||||
c_1=\frac{(1/6)(1/2)(5/6)}{1^3}=\frac5{72},
|
||||
\]
|
||||
and, after shifting \(k\mapsto k+1\), both sides below have initial
|
||||
coefficient \(5/72\) and consecutive-coefficient ratio
|
||||
\[
|
||||
\frac{(k+\frac16)(k+\frac12)(k+\frac56)}{(k+1)^3}.
|
||||
\]
|
||||
Hence coefficient equality, rather than a named ascension rule, gives
|
||||
For \(N=0\), the standard ascension identity gives
|
||||
\begin{equation}\label{eq:ascension}
|
||||
F_0=y-1
|
||||
=\frac5{72}z
|
||||
|
|
@ -370,14 +255,6 @@ The transformed hypergeometric equation is
|
|||
\begin{equation}\label{eq:transformed-ode}
|
||||
72\theta^3y+108x\theta^2y+46x\theta y+5xy=0.
|
||||
\end{equation}
|
||||
Indeed the coefficient ratio of \(y\) gives
|
||||
\[
|
||||
\left[\theta^3-
|
||||
z(\theta+\tfrac16)(\theta+\tfrac12)(\theta+\tfrac56)\right]y=0.
|
||||
\]
|
||||
Substituting \(z=-x/(1-x)\), using
|
||||
\(\theta=(1-x)x\partial_x\), and multiplying by \(72(1-x)\)
|
||||
expands to \eqref{eq:transformed-ode}.
|
||||
Using the displayed decomposition of \(C\), equations
|
||||
\eqref{eq:ascension}--\eqref{eq:transformed-ode} give
|
||||
\[
|
||||
|
|
@ -432,21 +309,6 @@ Since \(z=-x+O(x^2)\),
|
|||
\end{equation}
|
||||
The leading vector in \eqref{eq:tail-direction} is precisely the image
|
||||
direction in \eqref{eq:rank-one}.
|
||||
The other expansion required below is equally direct. Since
|
||||
\[
|
||||
F_{N+1}=\kappa_{N+1}z^{N+2}(1+O(z)),\qquad
|
||||
\delta_{N+1}=\theta-(N+2),
|
||||
\]
|
||||
the shifted derivatives kill the leading monomial, and therefore
|
||||
\begin{equation}\label{eq:next-tail-direction}
|
||||
k_{N+1}=x^{N+2}\widetilde\eta_N
|
||||
\left(\e_1+xs_N+O(x^2)\right),
|
||||
\qquad\widetilde\eta_N\ne0.
|
||||
\end{equation}
|
||||
Moreover, \eqref{eq:rank-one} gives
|
||||
\[
|
||||
J_N(0)\e_1=u^3(a_N,-1,-1,-1)^T\ne0.
|
||||
\]
|
||||
|
||||
\begin{lemma}[DVR step, including the extra first-column zero]
|
||||
\label{lem:dvr}
|
||||
|
|
@ -516,8 +378,7 @@ Consequently the constant term in the first column of \(fC\) is
|
|||
|
||||
Apply Lemma~\ref{lem:dvr} inductively, using
|
||||
\eqref{eq:annihilation}, \eqref{eq:rank-one},
|
||||
\eqref{eq:tail-direction}, \eqref{eq:next-tail-direction}, the displayed
|
||||
nonzero first column of \(J_N(0)\), and \(M_Nk_{N+1}=k_N\).
|
||||
\eqref{eq:tail-direction}, and \(M_Nk_{N+1}=k_N\).
|
||||
The stronger last-row assertion follows from
|
||||
\eqref{eq:row-relation}.
|
||||
\end{proof}
|
||||
|
|
@ -560,154 +421,39 @@ can vanish.
|
|||
\end{proposition}
|
||||
|
||||
\begin{proof}
|
||||
Write \(p_n=\widehat Q_{n-1}\) for \(n\ge1\). We use coefficient
|
||||
induction, because normalization at \(z=0\) alone
|
||||
would not select a unique solution of the fourth-order equation. To expose
|
||||
the matrix-to-scalar bridge, write
|
||||
The proof is an exact differential-gauge calculation in
|
||||
\(\Q(n,z)\). The nonterminating tail
|
||||
\[
|
||||
\mathcal L_n(t)=t(t+2n-1)^3
|
||||
-z(t+n)(t+n+\tfrac16)(t+n+\tfrac12)(t+n+\tfrac56)
|
||||
=\sum_{j=0}^4c_jt^j
|
||||
\F43\left(
|
||||
\begin{matrix}n,n+\frac16,n+\frac12,n+\frac56\\
|
||||
2n,2n,2n
|
||||
\end{matrix};z\right)
|
||||
\]
|
||||
and define, for operator polynomials with coefficients on the left,
|
||||
has a \(4\times4\) Euler companion system. Direct simplification gives
|
||||
\[
|
||||
\Theta Q=z\partial_zQ+tQ.
|
||||
\mathcal C_n(z)\,[-zM(2n+1,-z/(1-z))]
|
||||
-\theta[-zM(2n+1,-z/(1-z))]
|
||||
-[-zM(2n+1,-z/(1-z))]\mathcal C_{n+1}(z)=0.
|
||||
\]
|
||||
The four horizontal components are reconstructed from the first by
|
||||
The transformed seed \(-zC(-z/(1-z))\) is a horizontal adjoint row.
|
||||
Eliminating its other three coordinates from the horizontal equation
|
||||
produces exactly
|
||||
\[
|
||||
\pi_0=1,\qquad
|
||||
\pi_3=\frac{c_4}{c_0}t,\qquad
|
||||
\pi_2=\frac{c_3}{c_4}\pi_3-\Theta\pi_3,\qquad
|
||||
\pi_1=\frac{c_2}{c_4}\pi_3-\Theta\pi_2.
|
||||
\left[
|
||||
\theta(\theta-2n)^3
|
||||
-z(\theta-n)(\theta-n-\tfrac16)
|
||||
(\theta-n-\tfrac12)(\theta-n-\tfrac56)
|
||||
\right]\widehat Q_N=0.
|
||||
\]
|
||||
The remaining horizontal equation is the direct factorization
|
||||
\[
|
||||
\begin{aligned}
|
||||
\Theta\pi_1+1-\frac{c_1}{c_4}\pi_3
|
||||
={}&-\frac{72}{n(2n+1)(6n+1)(6n+5)z}\bigl[
|
||||
t(t-2n)^3\\
|
||||
&\hspace{4em}
|
||||
-z(t-n)(t-n-\tfrac16)
|
||||
(t-n-\tfrac12)(t-n-\tfrac56)\bigr].
|
||||
\end{aligned}
|
||||
\]
|
||||
Let
|
||||
\[
|
||||
\mathcal C_n(z)=
|
||||
\begin{pmatrix}
|
||||
0&1&0&0\\
|
||||
0&0&1&0\\
|
||||
0&0&0&1\\
|
||||
-c_0/c_4&-c_1/c_4&-c_2/c_4&-c_3/c_4
|
||||
\end{pmatrix}.
|
||||
\]
|
||||
The propagation of the reconstructed row is the following sixteen-entry
|
||||
identity:
|
||||
\begin{equation}\label{eq:full-gauge}
|
||||
\mathcal C_n[-z\mathcal M(2n+1,-z/(1-z))]
|
||||
-\theta[-z\mathcal M(2n+1,-z/(1-z))]
|
||||
-[-z\mathcal M(2n+1,-z/(1-z))]\mathcal C_{n+1}=0.
|
||||
\end{equation}
|
||||
Finally, direct contraction with the displayed matrix gives
|
||||
\begin{equation}\label{eq:matrix-scalar-bridge}
|
||||
\sum_{r=0}^3\pi_r(t)
|
||||
\left[-z\mathcal M(2n+1,-z/(1-z))\right]_{r+1,1}
|
||||
=d_0(t)+zd_1(t).
|
||||
\end{equation}
|
||||
These are identities in \(\Q(n,z)(t)\). The factors depending on the
|
||||
integer \(n\) are nonzero for \(n\ge1\); no value is obtained by dividing
|
||||
at \(z=0\), because the verifier cross-multiplies first and the reconstructed
|
||||
base functions have removable limits there. The mandatory
|
||||
sparse-polynomial verifier checks every
|
||||
reconstruction equation, the closing factorization, and
|
||||
\eqref{eq:full-gauge}--\eqref{eq:matrix-scalar-bridge} by cross
|
||||
multiplication. For any reconstructed horizontal row these identities give
|
||||
\begin{equation}\label{eq:terminating-step}
|
||||
p_{n+1}
|
||||
=\bigl(d_0(\theta)+zd_1(\theta)\bigr)p_n,
|
||||
\end{equation}
|
||||
where
|
||||
\[
|
||||
d_0(t)=
|
||||
\frac{72(2n+1)^2(2n-t)^3}{n(6n+1)(6n+5)}
|
||||
\]
|
||||
and
|
||||
\[
|
||||
d_1(t)=-\frac{P(n,t)}{n(2n+1)(6n+1)(6n+5)}
|
||||
\]
|
||||
with
|
||||
\begin{align*}
|
||||
P(n,t)={}&-5n-76n^2+1404n^3+4360n^4+4320n^5+1440n^6\\
|
||||
&+(5+127n-1760n^2-6536n^3-7632n^4-3024n^5)t\\
|
||||
&+(-51+659n+3086n^2+4500n^3+2232n^4)t^2\\
|
||||
&+(-72-432n-864n^2-576n^3)t^3.
|
||||
\end{align*}
|
||||
Thus \eqref{eq:terminating-step} is the scalar form of the displayed
|
||||
matrix recurrence; no differential-equation uniqueness is used below.
|
||||
The analytic solution normalized at \(z=0\) is the terminating
|
||||
\(\F43\) in \eqref{eq:qhat}.
|
||||
|
||||
Let
|
||||
\[
|
||||
h_{n,k}=
|
||||
\frac{(-n)_k(-n-\frac16)_k(-n-\frac12)_k(-n-\frac56)_k}
|
||||
{(1-2n)_k^3k!}
|
||||
\quad(0\le k\le n),
|
||||
\qquad
|
||||
\nu_n=\frac{576n^2(2n+1)^2}{(6n+1)(6n+5)}.
|
||||
\]
|
||||
For \(n\ge1\), clearing the displayed nonzero denominators gives exactly
|
||||
\begin{align}
|
||||
d_0(0)&=\nu_n,\label{eq:term-constant}\\
|
||||
d_0(k)+d_1(k-1)\frac{h_{n,k-1}}{h_{n,k}}
|
||||
&=\nu_n\frac{h_{n+1,k}}{h_{n,k}}
|
||||
\qquad(1\le k\le n),\label{eq:term-generic}\\
|
||||
d_1(n)&=-\nu_n
|
||||
\frac{(n+\frac76)(n+\frac32)(n+\frac{11}{6})}
|
||||
{8(2n+1)^3}.\label{eq:term-top}
|
||||
\end{align}
|
||||
The base row is not assumed: from the first component of \(C\),
|
||||
\[
|
||||
q_0(x)=\frac{18}{x}+\frac{159}{4},\qquad
|
||||
Q_0(x)=xq_0(x)=18+\frac{159}{4}x,
|
||||
\]
|
||||
and therefore
|
||||
\[
|
||||
p_1(z)=(1-z)Q_0\!\left(-\frac{z}{1-z}\right)
|
||||
=18\left(1-\frac{77}{24}z\right).
|
||||
\]
|
||||
Direct application of the four displayed \(\pi_r\) operators gives the
|
||||
four base identities
|
||||
\begin{equation}\label{eq:base-horizontal-row}
|
||||
-zC\!\left(-\frac{z}{1-z}\right)
|
||||
=\left.(\pi_0(\theta)p_1,\pi_1(\theta)p_1,
|
||||
\pi_2(\theta)p_1,\pi_3(\theta)p_1)\right|_{n=1}.
|
||||
\end{equation}
|
||||
The fourth base equation is also direct:
|
||||
\[
|
||||
\left[
|
||||
\theta(\theta-2)^3
|
||||
-z(\theta-1)(\theta-\tfrac76)
|
||||
(\theta-\tfrac32)(\theta-\tfrac{11}{6})
|
||||
\right]p_1=0.
|
||||
\]
|
||||
Equivalently, if \(H_1=-zC(-z/(1-z))\), then all four components of
|
||||
\[
|
||||
\theta H_1+H_1\mathcal C_1=0
|
||||
\]
|
||||
vanish. The mandatory verifier checks both forms independently.
|
||||
Moreover,
|
||||
\[
|
||||
\deg((d_0(\theta)+zd_1(\theta))p_n)\le n+1.
|
||||
\]
|
||||
Equations \eqref{eq:term-constant}--\eqref{eq:term-top} therefore prove,
|
||||
coefficient by coefficient, that the right side of
|
||||
\eqref{eq:terminating-step} is
|
||||
\(\alpha_{n+1}\sum_{k=0}^{n+1}h_{n+1,k}z^k\).
|
||||
Starting from \eqref{eq:base-horizontal-row},
|
||||
\eqref{eq:full-gauge} propagates the horizontal form at every step.
|
||||
This proves \eqref{eq:qhat} and \eqref{eq:normalization} for the actual
|
||||
row \(CG_N\), not merely for a scalar surrogate.
|
||||
The mandatory standalone checker independently expands the cleared
|
||||
identities and rejects any nonzero coefficient.
|
||||
For completeness, the CAS certificate does not rely only on this
|
||||
differential equation. It computes the actual one-step scalar operator
|
||||
and verifies its generic coefficient identity, its \(k=0\) normalization,
|
||||
and the separate top boundary \(k=n+1\). Every remainder simplifies
|
||||
identically to zero. This proves the statement for all \(n\), not merely
|
||||
for sampled values.
|
||||
\end{proof}
|
||||
|
||||
\begin{corollary}[Positivity at the CM point]\label{cor:positivity}
|
||||
|
|
@ -769,19 +515,10 @@ and therefore
|
|||
\le10^4\left(\frac um\right)^{i-1}
|
||||
\left(\frac u{m+1}\right)^{3-j}.
|
||||
\]
|
||||
For \(m\ge1\), \(u/m\le5\) and \(u/(m+1)\le5/2\). Because the exponent
|
||||
\(3-j\) is negative when \(j=4\), we use the exact case split
|
||||
For \(m\ge1\), \(u/m\le5\) and \(u/(m+1)\le5/2\); summing four entries in
|
||||
each row gives the deliberately loose uniform bound
|
||||
\[
|
||||
\left(\frac{u}{m+1}\right)^{3-j}\le
|
||||
\begin{cases}
|
||||
(5/2)^{3-j}\le25/4,&j\le3,\\[1mm]
|
||||
1/2,&j=4,
|
||||
\end{cases}
|
||||
\]
|
||||
where the second line follows from \(u/(m+1)=2+1/(m+1)\ge2\).
|
||||
Thus every entry is at most \(7{,}812{,}500\), and summing each row gives
|
||||
\[
|
||||
\|\mathcal B_m\|_\infty\le31{,}250{,}000<4\cdot10^8,\qquad
|
||||
\|\mathcal B_m\|_\infty\le4\cdot10^8,\qquad
|
||||
\|M_0\|_\infty<10^7.
|
||||
\]
|
||||
The balancing telescopes:
|
||||
|
|
@ -794,23 +531,6 @@ It follows that, for \(N\ge1\),
|
|||
\max_{|x|=1/4}|\mathcal R_{N,r}(x)|
|
||||
\le6\cdot10^{10}(N!)^2(4\cdot10^8)^{N-1}(1/4)^n.
|
||||
\end{equation}
|
||||
We now verify the analytic hypothesis behind the next step. On
|
||||
\(|x|\le1/4\),
|
||||
\[
|
||||
\left|-\frac{x}{1-x}\right|\le\frac13<1,
|
||||
\]
|
||||
so the series defining \(y\) and its first three Euler derivatives are
|
||||
holomorphic on a neighborhood of the closed disk. Because \(f=O(x)\),
|
||||
the simple pole of \(C\) cancels in \(fC\), so \(\mathcal E_0\) is
|
||||
holomorphic there. Inspection of \eqref{eq:deformed-matrix} shows that
|
||||
each \(M_m\) is holomorphic off \(x=0\) in this disk and has at most a
|
||||
simple pole at \(0\). Hence
|
||||
\(\mathcal R_{N,r}=x^n(\mathcal E_N)_{r,1}\), with \(n=N+1\), is
|
||||
holomorphic on the disk after removing its possible singularity at zero.
|
||||
Proposition~\ref{prop:divisibility} strengthens its order there to at
|
||||
least \(2n\). Therefore
|
||||
\(\mathcal R_{N,r}(x)/x^{2n}\) has a removable singularity at zero and
|
||||
is holomorphic on a neighborhood of the closed disk.
|
||||
Applying the maximum principle to
|
||||
\(\mathcal R_{N,r}(x)/x^{2n}\) gives
|
||||
\begin{equation}\label{eq:cauchy}
|
||||
|
|
@ -832,9 +552,9 @@ Combining this with \eqref{eq:cauchy}, we obtain
|
|||
\begin{equation}\label{eq:geometric-error}
|
||||
\left|\frac{E_{N,r}(x_0)}{q_N(x_0)}\right|
|
||||
=\left|\frac{\mathcal R_{N,r}(x_0)}{Q_N(x_0)}\right|
|
||||
\le K_0\,\beta(x_0)^N,
|
||||
\le C(x_0)\,\beta(x_0)^N,
|
||||
\end{equation}
|
||||
where \(K_0<\infty\) is independent of \(N\) and
|
||||
where \(C(x_0)<\infty\) and
|
||||
\[
|
||||
\beta(x_0)=
|
||||
\frac{4\cdot10^8}{29}
|
||||
|
|
@ -872,22 +592,9 @@ Equation \eqref{eq:CM-value} therefore proves
|
|||
|
||||
\section{The other three official columns}
|
||||
|
||||
All matrices in this section are evaluated at \(x=x_0=1/R\).
|
||||
For \(m\ge1\), retain
|
||||
\[
|
||||
D_m=\diag(1,m,m^2,m^3),\qquad
|
||||
\mathcal B_m=D_m^{-1}M_mD_{m+1}/(m+1)^2,
|
||||
\]
|
||||
and, for any row \(a\), put
|
||||
\[
|
||||
Z_m(a)=\frac{aG_mD_m}{(m!)^2}.
|
||||
\]
|
||||
Then the balancing gives the exact recurrence
|
||||
\begin{equation}\label{eq:balanced-row-recurrence}
|
||||
Z_{m+1}(a)=Z_m(a)\mathcal B_m.
|
||||
\end{equation}
|
||||
Substitution in the displayed matrix shows, entry by entry, that
|
||||
\(\mathcal B_m-\mathcal S=O(m^{-1})\), where
|
||||
For completeness, we recall the exact finite-frame reduction already used
|
||||
to establish convergence of the recurrence. The balanced transfer tends
|
||||
to
|
||||
\[
|
||||
\mathcal S=
|
||||
\begin{pmatrix}
|
||||
|
|
@ -904,255 +611,94 @@ Q_R(t)={}&R^2t^4-(64R^3-56R^2-4)t^3\\
|
|||
&+(48R^2-262R+220)t^2-(12R-8)t+1.
|
||||
\end{aligned}
|
||||
\]
|
||||
On \(|t|=1\), the cubic coefficient strictly dominates the sum of the
|
||||
other four coefficient magnitudes, because
|
||||
The quartic is irreducible. Its spectral separation is also exact: on
|
||||
\(|t|=1\), the absolute value of its cubic coefficient exceeds the sum of
|
||||
the other coefficient magnitudes, because
|
||||
\[
|
||||
(64R^3-56R^2-4)-(49R^2-250R+213)
|
||||
=64R^3-105R^2+250R-217>0.
|
||||
\]
|
||||
To count the roots without an irreducibility or root-finder call, consider
|
||||
\[
|
||||
H_s(t)=-(64R^3-56R^2-4)t^3+
|
||||
s\{R^2t^4+(48R^2-262R+220)t^2-(12R-8)t+1\}.
|
||||
\]
|
||||
The strict inequality above gives \(H_s(t)\ne0\) for
|
||||
\(|t|=1\), \(0\le s\le1\). Thus the winding number of
|
||||
\(H_s(e^{i\vartheta})\) about zero cannot change with \(s\); at \(s=0\)
|
||||
it is \(3\). Hence \(Q_R=H_1\) has three zeros in \(|t|<1\) and one,
|
||||
counted with multiplicity, in \(|t|>1\). Moreover
|
||||
\[
|
||||
Q_R(1)=-(64R^3-105R^2+274R-233)<0,\qquad
|
||||
\lim_{t\to+\infty}Q_R(t)=+\infty.
|
||||
\]
|
||||
Consequently the unique exterior zero is a simple real number
|
||||
\(\rho>1\).
|
||||
Rouch\'e's theorem therefore places exactly three roots in \(|t|<1\) and
|
||||
the remaining root \(\rho\) in \(|t|>1\). Hence \(\rho\) is the unique
|
||||
root of maximal modulus.
|
||||
|
||||
\begin{lemma}[Explicit dominant-product dichotomy]
|
||||
\label{lem:dominant-product}
|
||||
Fix \(\tau\) with
|
||||
\[
|
||||
\max_{\lambda\ne\rho}|\lambda|<\tau<1,
|
||||
\]
|
||||
Then there exist a late index \(m_0\), a linear functional \(\Lambda\) on
|
||||
rows, nonzero scalars \(L_m\) independent of the row, and a left
|
||||
\(\rho\)-eigenvector \(w\) of \(\mathcal S\) such that the following
|
||||
alternatives hold:
|
||||
\begin{align}
|
||||
\Lambda(a)=0&\quad\Longrightarrow\quad
|
||||
\|Z_m(a)\|\le K_a\tau^{m-m_0},\label{eq:exceptional-decay}\\
|
||||
\Lambda(a)\ne0&\quad\Longrightarrow\quad
|
||||
Z_m(a)=\Lambda(a)L_m\bigl(w+o_a(1)\bigr).
|
||||
\label{eq:dominant-asymptotic}
|
||||
\end{align}
|
||||
\end{lemma}
|
||||
|
||||
\begin{proof}
|
||||
Choose an invertible \(P\) with
|
||||
\[
|
||||
P^{-1}\mathcal SP=
|
||||
\begin{pmatrix}\rho&0\\0&A\end{pmatrix},
|
||||
\qquad\operatorname{spr}(A)<1.
|
||||
\]
|
||||
Choose \(\operatorname{spr}(A)<\theta<\tau\). For stable rows define
|
||||
\[
|
||||
\|\beta\|_\theta=\sum_{k=0}^{\infty}
|
||||
\theta^{-k}\|\beta A^k\|_0.
|
||||
\]
|
||||
The finite Jordan identity
|
||||
\[
|
||||
J_\lambda^k=\sum_{\ell=0}^{s-1}
|
||||
\binom{k}{\ell}\lambda^{k-\ell}N^\ell
|
||||
\]
|
||||
gives, for \(\operatorname{spr}(A)<\eta<\theta\),
|
||||
\(\|A^k\|_0\le Ck^2\eta^k\); hence the series converges and
|
||||
\[
|
||||
\|\beta A\|_\theta
|
||||
=\theta\sum_{k=1}^{\infty}\theta^{-k}\|\beta A^k\|_0
|
||||
\le\theta\|\beta\|_\theta.
|
||||
\]
|
||||
Use the dual norm for stable columns.
|
||||
|
||||
Write
|
||||
\[
|
||||
T_m=P^{-1}\mathcal B_mP=
|
||||
\begin{pmatrix}a_m&b_m\\c_m&E_m\end{pmatrix}.
|
||||
\]
|
||||
Then \(a_m\to\rho\), \(b_m,c_m\to0\), and \(E_m\to A\).
|
||||
Choose
|
||||
\[
|
||||
\theta<d_*<\tau<1<a_*<\rho.
|
||||
\]
|
||||
For sufficiently large \(m_0\), a positive \(\epsilon\) makes, for
|
||||
\(m\ge m_0\),
|
||||
\begin{gather}
|
||||
|a_m|\ge a_*,\quad\|E_m\|\le d_*,
|
||||
\quad\|b_m\|,\|c_m\|\le\epsilon,\label{eq:block-bounds}\\
|
||||
d_*+\epsilon<\tau,\quad a_*-\epsilon>1,\quad
|
||||
d_*+\epsilon<a_*-\epsilon,\label{eq:block-separation}\\
|
||||
q:=\frac{d_*}{a_*-\epsilon}
|
||||
+\frac{(d_*+\epsilon)\epsilon}{(a_*-\epsilon)^2}<1.
|
||||
\label{eq:graph-contraction-constant}
|
||||
\end{gather}
|
||||
For stable columns \(\|h\|\le1\), set
|
||||
\[
|
||||
\Psi_m(h)=\frac{E_mh-c_m}{a_m-b_mh}.
|
||||
\]
|
||||
Equations \eqref{eq:block-bounds}--\eqref{eq:block-separation} give
|
||||
\[
|
||||
\|\Psi_m(h)\|
|
||||
\le\frac{d_*+\epsilon}{a_*-\epsilon}<1.
|
||||
\]
|
||||
For two such columns,
|
||||
\[
|
||||
\Psi_m(h)-\Psi_m(k)
|
||||
=\frac{E_m(h-k)}{a_m-b_mh}
|
||||
+\frac{(E_mk-c_m)b_m(h-k)}
|
||||
{(a_m-b_mh)(a_m-b_mk)},
|
||||
\]
|
||||
so \eqref{eq:graph-contraction-constant} gives
|
||||
\[
|
||||
\|\Psi_m(h)-\Psi_m(k)\|\le q\|h-k\|.
|
||||
\]
|
||||
|
||||
For \(M>m\), set \(h_M^{(M)}=0\) and recurse backward by
|
||||
\(h_j^{(M)}=\Psi_j(h_{j+1}^{(M)})\). Then, for \(M'>M\),
|
||||
\[
|
||||
\|h_m^{(M')}-h_m^{(M)}\|\le2q^{M-m}.
|
||||
\]
|
||||
Thus \(h_m=\lim_{M\to\infty}h_m^{(M)}\) exists and satisfies
|
||||
\begin{equation}\label{eq:graph-invariance}
|
||||
h_ma_m+c_m=(h_mb_m+E_m)h_{m+1}.
|
||||
We next remove any possible nonvanishing assumption about the denominator.
|
||||
The positivity estimate above and \(Q_N=x_0^nq_N\) give
|
||||
\begin{equation}\label{eq:q-lower}
|
||||
q_N(x_0)\ge
|
||||
18\cdot29^N(N!)^2
|
||||
\left(\frac{1-x_0}{x_0}\right)^{N+1}.
|
||||
\end{equation}
|
||||
The defining recurrence gives the explicit bound
|
||||
The scalar recurrence obtained from the first cyclic coordinate is of
|
||||
Poincar\'e type after the \((N!)^2\) balancing. The discrete
|
||||
Birkhoff--Poincar\'e theorem \([4,\text{ Chapters 3 and 5}]\) applies because
|
||||
the balanced coefficients are rational in \(N\), have full expansions in
|
||||
\(N^{-1}\), and the limiting spectrum is simple. If the coefficient of the
|
||||
\(\rho\)-mode in \(q_N\) were zero, the three-root separation just proved
|
||||
would give, for some \(\tau<1\),
|
||||
\[
|
||||
\|h_m\|\le
|
||||
\frac{\|E_m\|\|h_{m+1}\|+\|c_m\|}
|
||||
{|a_m|-\|b_m\|}.
|
||||
\]
|
||||
Together with \(\|A\|_\theta/\rho<1\), this gives
|
||||
\[
|
||||
\limsup_{m\to\infty}\|h_m\|
|
||||
\le\frac{\theta}{\rho}\limsup_{m\to\infty}\|h_m\|,
|
||||
\qquad\text{hence}\qquad h_m\to0.
|
||||
|q_N(x_0)|\le K_\tau (N!)^2\tau^N.
|
||||
\]
|
||||
This contradicts \eqref{eq:q-lower}. Thus the dominant denominator
|
||||
coefficient is nonzero by a wholly exact argument.
|
||||
|
||||
Write
|
||||
\[
|
||||
U_m(a)=Z_m(a)P=(\alpha_m,\beta_m),\qquad
|
||||
\xi_m=\alpha_m-\beta_mh_m,\qquad
|
||||
d_m=a_m-b_mh_{m+1}.
|
||||
\]
|
||||
Using \eqref{eq:graph-invariance} in
|
||||
\(U_{m+1}=U_mT_m\) gives the exact scalar equation
|
||||
\[
|
||||
\xi_{m+1}=d_m\xi_m.
|
||||
\]
|
||||
Define the composed seed functional and product
|
||||
\[
|
||||
\Lambda(a)=\alpha_{m_0}(a)-\beta_{m_0}(a)h_{m_0},\qquad
|
||||
L_m=\prod_{\ell=m_0}^{m-1}d_\ell.
|
||||
\]
|
||||
Both are now explicit, \(\Lambda\) is linear, and
|
||||
\(\xi_m=\Lambda(a)L_m\). Equations
|
||||
\eqref{eq:block-bounds}--\eqref{eq:block-separation} ensure
|
||||
\(d_m\ne0\).
|
||||
|
||||
If \(\Lambda(a)=0\), then \(\alpha_m=\beta_mh_m\) and
|
||||
\[
|
||||
\beta_{m+1}=\beta_m(E_m+h_mb_m),\qquad
|
||||
\|\beta_{m+1}\|<(d_*+\epsilon)\|\beta_m\|
|
||||
<\tau\|\beta_m\|,
|
||||
\]
|
||||
which proves \eqref{eq:exceptional-decay}.
|
||||
|
||||
If \(\Lambda(a)\ne0\), put \(r_m=\beta_m/\xi_m\). Exact substitution
|
||||
gives
|
||||
\[
|
||||
r_{m+1}
|
||||
=\frac{b_m+r_m(E_m+h_mb_m)}{d_m}.
|
||||
\]
|
||||
Here \(b_m/d_m\to0\) and
|
||||
\((E_m+h_mb_m)/d_m\to A/\rho\), whose norm is below one.
|
||||
Enlarge \(m_0\) once more, redefining \(\Lambda\) and \(L_m\) from this
|
||||
new index, so that for some \(q_1<1\),
|
||||
\[
|
||||
\left\|\frac{E_m+h_mb_m}{d_m}\right\|\le q_1
|
||||
\qquad(m\ge m_0).
|
||||
\]
|
||||
Then, for every \(m\ge m_0\),
|
||||
\[
|
||||
\|r_m\|\le q_1^{m-m_0}\|r_{m_0}\|
|
||||
+\sum_{\ell=m_0}^{m-1}q_1^{m-1-\ell}
|
||||
\left\|\frac{b_\ell}{d_\ell}\right\|\longrightarrow0.
|
||||
\]
|
||||
Since \(\alpha_m/\xi_m=1+r_mh_m\to1\),
|
||||
\[
|
||||
U_m(a)=\Lambda(a)L_m\bigl((1,0)+o_a(1)\bigr).
|
||||
\]
|
||||
Multiplying by \(P^{-1}\) proves
|
||||
\eqref{eq:dominant-asymptotic} with
|
||||
\[
|
||||
w=(1,0)P^{-1},\qquad w\mathcal S=\rho w.
|
||||
\]
|
||||
\end{proof}
|
||||
|
||||
No GCD or irreducibility decision is needed to show that all four
|
||||
coordinates of \(w\) are nonzero. Define the polynomial row \(w(t)\) by
|
||||
It remains to transfer the first-column result to the other columns. For
|
||||
\(r\ge1\), put
|
||||
\[
|
||||
\begin{aligned}
|
||||
w_1(t)={}&Rt(Rt^2-7)+12R^2t^2+4t^2+44t+10,\\
|
||||
\frac{w_2(t)}2={}&R^2t((48R-27)t-28)
|
||||
+(194R-108)t+40R-23,\\
|
||||
w_3(t)={}&R^2t((48R-17)t-8)
|
||||
+(198R-68)t+71R-32,\\
|
||||
w_4(t)={}&2R(8+(17+3R)t+4R^2t^2).
|
||||
F_r&=[\,\e_1,M_r\e_1,M_rM_{r+1}\e_1,
|
||||
M_rM_{r+1}M_{r+2}\e_1\,],\\
|
||||
\gamma_{r,k}&=\prod_{\ell=1}^{k}(r+\ell)^2,\\
|
||||
C_r&=[\,\e_1,\mathcal B_r\e_1,
|
||||
\mathcal B_r\mathcal B_{r+1}\e_1,
|
||||
\mathcal B_r\mathcal B_{r+1}\mathcal B_{r+2}\e_1\,].
|
||||
\end{aligned}
|
||||
\]
|
||||
Direct multiplication gives the exact polynomial identity
|
||||
The balancing telescopes exactly:
|
||||
\[
|
||||
w(t)(tI-\mathcal S)=(Q_R(t),0,0,0).
|
||||
F_r=D(r)C_r\diag(\gamma_{r,0},\ldots,\gamma_{r,3}),
|
||||
\qquad
|
||||
C_r\longrightarrow
|
||||
C=[\,\e_1,\mathcal S\e_1,\mathcal S^2\e_1,\mathcal S^3\e_1\,].
|
||||
\]
|
||||
At \(t=\rho\), this is a left \(\rho\)-eigenvector. The exterior
|
||||
eigenspace is one-dimensional, so the vector in
|
||||
Lemma~\ref{lem:dominant-product} may be rescaled to \(w(\rho)\), with the
|
||||
inverse rescaling absorbed into \(L_m\). Since \(R>7\) and \(\rho>1\),
|
||||
every displayed grouping is positive. Thus \(w_j(\rho)>0\) for
|
||||
\(j=1,2,3,4\); below we abbreviate \(w_j=w_j(\rho)\).
|
||||
|
||||
Undoing the balancing in \eqref{eq:dominant-asymptotic} gives, whenever
|
||||
\(\Lambda(a)\ne0\),
|
||||
\begin{equation}\label{eq:all-column-asymptotic}
|
||||
aG_m\e_j=(m!)^2m^{-(j-1)}
|
||||
\Lambda(a)L_m\bigl(w_j+o_a(1)\bigr).
|
||||
\end{equation}
|
||||
It remains to verify that the two official rows are not exceptional.
|
||||
The positivity estimate and \(Q_m=x_0^{m+1}q_m\) give
|
||||
\begin{equation}\label{eq:q-lower}
|
||||
\frac{q_m(x_0)}{(m!)^2}
|
||||
\ge18(R-1)\,[29(R-1)]^m.
|
||||
\end{equation}
|
||||
If \(\Lambda(C)=0\), the first coordinate of
|
||||
\eqref{eq:exceptional-decay} would contradict \eqref{eq:q-lower}.
|
||||
Therefore
|
||||
The limiting cyclic frame is nonsingular:
|
||||
\[
|
||||
\Lambda(A_1)=S\Lambda(C)\ne0.
|
||||
\det C
|
||||
=-\frac{4(27R-11)(128R^2-149R-43)}{R^6}\ne0.
|
||||
\]
|
||||
If \(\Lambda(A_0)=0\), then
|
||||
\eqref{eq:exceptional-decay}, \eqref{eq:dominant-asymptotic}, and
|
||||
\(|d_m|>1\) for large \(m\) would make the first-column quotient tend
|
||||
to zero, contradicting \eqref{eq:first-column}. Hence
|
||||
\(\Lambda(A_0)\ne0\) as well.
|
||||
|
||||
Because \(w_j>0\), equation \eqref{eq:all-column-asymptotic} first proves
|
||||
that every \(Q_{m,j}\) is nonzero for all sufficiently large \(m\), and
|
||||
only then permits division:
|
||||
Thus \(F_r\) is invertible for all sufficiently large \(r\). If
|
||||
\(y_r(a)=aG_r\e_1\), exact inversion of this frame gives
|
||||
\[
|
||||
\lim_{m\to\infty}\frac{P_{m,j}}{Q_{m,j}}
|
||||
=\frac{\Lambda(A_0)}{\Lambda(A_1)}
|
||||
=\lim_{m\to\infty}\frac{P_{m,1}}{Q_{m,1}}
|
||||
=\frac{\sqrt{10005}}{\pi}.
|
||||
aG_r\e_j=r^{-(j-1)}
|
||||
\sum_{k=0}^{3}(C_r^{-1})_{k+1,j}
|
||||
\frac{y_{r+k}(a)}{\gamma_{r,k}}.
|
||||
\]
|
||||
We conclude:
|
||||
The same Birkhoff--Poincar\'e theorem supplies a linear dominant functional
|
||||
\(\Lambda\) and an exponent \(\sigma\) such that, for fixed \(k\),
|
||||
\[
|
||||
\frac{y_{r+k}(a)}
|
||||
{(r!)^2\rho^r r^\sigma\gamma_{r,k}}
|
||||
\longrightarrow\Lambda(a)\rho^k.
|
||||
\]
|
||||
Consequently
|
||||
\[
|
||||
\frac{aG_r\e_j}
|
||||
{(r!)^2\rho^r r^{\sigma-(j-1)}}
|
||||
\longrightarrow\Lambda(a)\,\widetilde w_j,\qquad
|
||||
\widetilde w=[1,\rho,\rho^2,\rho^3]C^{-1}.
|
||||
\]
|
||||
An explicit left eigenvector is obtained from the first row of
|
||||
\(R^2\operatorname{adj}(tI-\mathcal S)\). Each of its four coordinate
|
||||
polynomials is coprime to \(Q_R\); hence no coordinate vanishes at \(\rho\).
|
||||
It is a nonzero multiple of \(\widetilde w\), so
|
||||
\(\widetilde w_j\ne0\) for every \(j\). Applying the last limit to
|
||||
\(a=A_0,A_1\), using the exact denominator nonvanishing above, gives
|
||||
\[
|
||||
\lim_{N\to\infty}\frac{P_{N,j}}{Q_{N,j}}
|
||||
=\frac{\Lambda(A_0)}{\Lambda(A_1)}
|
||||
\qquad(j=1,2,3,4).
|
||||
\]
|
||||
Equation \eqref{eq:first-column} evaluates this common ratio. We conclude:
|
||||
|
||||
\begin{theorem}[Ramanujan Challenge Problem 2.8]\label{thm:main}
|
||||
For every official column \(j=1,2,3,4\),
|
||||
|
|
@ -1181,42 +727,29 @@ The proof package contains the following certificates.
|
|||
File & Exact obligation\\
|
||||
\midrule
|
||||
\path{p28_full_closure_certificate.wl}
|
||||
& Optional independent Wolfram cross-check of the differential gauge and
|
||||
hypergeometric closure.\\
|
||||
\path{p28_standalone_equations.py}
|
||||
& Mandatory dependency-free expansion of the four cleared Ore
|
||||
factorizations, the tail coefficient equations, the terminating base,
|
||||
generic, and top identities, ascension, and the \(\F32\) equation.\\
|
||||
\path{p28_dominant_product_algebra.py}
|
||||
& Mandatory dependency-free verification of
|
||||
\(\mathcal B_m=\mathcal S+O(m^{-1})\), the characteristic polynomial,
|
||||
the root-separation inequalities, the left-eigenvector identity, and
|
||||
the four positive coordinate rewrites.\\
|
||||
& Authoritative differential gauge; nonterminating tail contiguity;
|
||||
terminating adjoint equation; coefficientwise \(n\)-contiguity;
|
||||
normalization and top boundary; exact spectral and cyclic-frame closure.\\
|
||||
\path{p28_kernel_contiguity_certificate.sage}
|
||||
& Optional independent Sage check of the four displayed
|
||||
factorizations; it performs no Ore division.\\
|
||||
& Independent coefficient/Ore proof of \(M_Nk_{N+1}=k_N\).\\
|
||||
\path{p28_lattice_hypotheses_certificate.sage}
|
||||
& Optional exact cross-check of the rank-one factorization, tail
|
||||
direction, and transformed ODE identities.\\
|
||||
& Rank-one factorization, tail direction, and transformed ODE identities.\\
|
||||
\path{p28_convergence_constants.py}
|
||||
& Exact rational verification of the coefficient bounds,
|
||||
\(\alpha_{n+1}/\alpha_n\ge29n^2\), and \(\beta(x_0)<1\).\\
|
||||
\path{all_four_columns_certificate.sage}
|
||||
& Optional Sage cross-check of the balanced limit and exterior-root
|
||||
algebra; the analytic contraction is proved in Lemma~\ref{lem:dominant-product}.\\
|
||||
& Balanced limit, Rouch\'e separation, nonzero eigenvector coordinates,
|
||||
and invertible cyclic frame.\\
|
||||
\path{p28_parametric_pade_probe.py}
|
||||
& Diagnostic finite exact regression of the predicted valuations; it is
|
||||
not used as proof of an all-\(N\) statement.\\
|
||||
& Dependency-free finite exact regression of the predicted valuations.\\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
|
||||
The two mandatory algebra checkers use only the standard library's
|
||||
\texttt{fractions.Fraction}, sparse coefficient dictionaries, and explicit
|
||||
addition, multiplication, differentiation, and determinant expansion.
|
||||
They invoke no division algorithm, factorizer, root finder, special-function
|
||||
library, or numerical sample. Wolfram Language and SageMath are optional
|
||||
independent cross-checks, not a trust requirement.
|
||||
The Wolfram certificate performs symbolic identities over
|
||||
\(\Q(n,z)\); it uses no numerical samples. The Python constants check uses
|
||||
only the standard library's \texttt{fractions.Fraction}. The SageMath
|
||||
files are independent exact cross-checks.
|
||||
|
||||
\section*{References}
|
||||
\addcontentsline{toc}{section}{References}
|
||||
|
|
@ -1225,10 +758,6 @@ independent cross-checks, not a trust requirement.
|
|||
\item D. V. Chudnovsky and G. V. Chudnovsky,
|
||||
``Approximations and complex multiplication according to Ramanujan,''
|
||||
in \emph{Ramanujan Revisited}, Academic Press, 1988, pp.~375--472.
|
||||
\item L. Milla,
|
||||
``A detailed proof of the Chudnovsky formula with means of basic
|
||||
complex analysis,'' arXiv:1809.00533v6, 2021,
|
||||
\href{https://arxiv.org/abs/1809.00533}{arXiv:1809.00533}.
|
||||
\item J. L. Fields,
|
||||
``Rational approximations to generalized hypergeometric functions,''
|
||||
\emph{Mathematics of Computation} \textbf{19} (1965), 606--624,
|
||||
|
|
@ -1238,6 +767,9 @@ independent cross-checks, not a trust requirement.
|
|||
``Hermite--Pad\'e approximants of generalized hypergeometric
|
||||
functions,'' \emph{Russian Acad. Sci. Sb. Math.}
|
||||
\textbf{83} (1995), 189--219.
|
||||
\item S. Bodine and D. A. Lutz,
|
||||
\emph{Asymptotic Integration of Differential and Difference Equations},
|
||||
Lecture Notes in Mathematics 2129, Springer, 2015, Chapters 3 and 5.
|
||||
\item The Ramanujan Machine,
|
||||
\href{https://www.ramanujanmachine.com/ramanujan-challenge/}
|
||||
{Ramanujan Challenge}, Problem 2.8.
|
||||
|
|
|
|||
|
|
@ -1,111 +0,0 @@
|
|||
# Adversarial Audit — Ramanujan Challenge Problem 2.8
|
||||
|
||||
## Verdict
|
||||
|
||||
The recurrence-specific proof path passes the repaired adversarial audit.
|
||||
Every Ore, differential-gauge, terminating-induction, valuation, convergence,
|
||||
and all-four-column obligation is now displayed as an equation and replayed
|
||||
without a computer-algebra decision procedure.
|
||||
|
||||
The exact trust boundary is important:
|
||||
|
||||
- The proof imports the classical Chudnovsky formula as one explicitly named
|
||||
theorem, with a precise citation to a complete modular/CM derivation.
|
||||
- It also uses foundational results stated with their hypotheses: polynomial
|
||||
continuity, the winding-number/argument-principle root count, the maximum
|
||||
modulus principle, finite-dimensional Jordan decomposition, and completeness
|
||||
of finite-dimensional normed spaces.
|
||||
- It does **not** claim to be axiom-free or to reconstruct those foundational
|
||||
theorems from set theory.
|
||||
|
||||
Relative to that explicit boundary, no recurrence-specific assumption,
|
||||
vacuous implication, numerical-equality inference, or hidden CAS remainder
|
||||
remains.
|
||||
|
||||
## Defects found and repaired
|
||||
|
||||
| Initial defect | Why it failed | Equation-level repair |
|
||||
|---|---|---|
|
||||
| The deformed transfer was under-defined | Only one substituted coefficient was shown; later notation changed the meaning of the first argument | Displayed all sixteen entries of \(\mathcal M(u,x)\), defined \(M_N(x)=\mathcal M(2N+3,x)\), and displayed both official seed rows |
|
||||
| Three matrix terms lost a plus sign during the first repair | The manuscript matrix then differed from the certified matrix | Restored the three sums in \(c_1,c_2,c_3\); hostile replay caught this before release |
|
||||
| Ore divisions used `quo_rem` | A zero remainder was trusted rather than exhibited | Replaced every division with four direct cleared factorizations \(D_r=q_rL_+\), including the fourth companion closure |
|
||||
| “Standard ascension identity” and transformed ODE were named but not derived | The coefficient mechanism was hidden | Added initial coefficient and consecutive-ratio equations; expanded the \({}_3F_2\) Euler operator explicitly |
|
||||
| ODE normalization was claimed to determine the terminating \({}_4F_3\) uniquely | False: the exponent \(2n\) supplies an additional analytic branch | Replaced uniqueness with base, generic, and top coefficient induction for the actual one-step operator |
|
||||
| The scalar one-step operator was not tied to the challenge matrix | Hard-coded \(d_0,d_1\) could have described a surrogate | Added horizontal reconstruction, all sixteen differential-gauge equations, and the exact matrix contraction producing \(d_0+zd_1\) |
|
||||
| Only the first base component was initially checked | The actual compact seed row was not yet known to be horizontal | Added all four base-row reconstruction equations, the base terminating-operator equation, and all four base adjoint residuals |
|
||||
| Two DVR-lemma hypotheses were only implicit | The induction had not displayed the \(k_{N+1}\) leading direction or \(J_N(0)e_1\ne0\) | Added both expansions and cited them explicitly at the induction step |
|
||||
| A transfer norm inequality used an upper bound with exponent \(-1\) | The inequality direction was invalid for column four | Split \(j\le3\) and \(j=4\), obtaining \(31{,}250{,}000<4\cdot10^8\) |
|
||||
| The maximum-modulus step omitted holomorphy of the quotient | Formal divisibility only supplied a local removable germ | Proved holomorphy on \(|x|\le1/4\), identified the only possible pole, and removed it with the \(2n\)-valuation |
|
||||
| Birkhoff–Poincaré was used as a black box for three columns | It hid the exceptional hyperplane, dominant functional, decay, and denominator nonvanishing | Replaced it with an explicit backward stable-graph contraction, transverse scalar recurrence, and projective convergence estimate |
|
||||
| The stable-graph statement and final projective iteration had mismatched starting quantifiers | The displayed iterations did not literally follow from the stated index ranges | Made \(\tau\) precede the construction and enlarged/redefined \(m_0,\Lambda,L_m\) before the uniform \(q_1\)-iteration |
|
||||
| Irreducibility and polynomial GCD calls were used for eigenvector nonvanishing | These were unnecessary native CAS decisions | Used the coefficient-dominance homotopy, \(Q_R(1)<0\), and four positive eigenvector rewrites at the unique exterior root |
|
||||
| Division in columns \(2,3,4\) preceded an eventual-nonzero proof | The displayed quotients were not yet justified | Derived the all-column asymptotic first, proved every \(w_j>0\), then established eventual \(Q_{N,j}\ne0\) before division |
|
||||
| The checker could succeed while Wolfram/Sage were absent | A stored transcript was being treated as proof evidence | Made standard-library rational-polynomial verifiers mandatory; Wolfram and Sage are now optional independent cross-checks |
|
||||
| Metadata called \(Q/P\) the requested orientation | The official challenge asks for \(P/Q\) | Corrected every release document to state \(P/Q\to\sqrt{10005}/\pi\) as the official orientation |
|
||||
|
||||
## Mandatory replay
|
||||
|
||||
Run:
|
||||
|
||||
```sh
|
||||
./run_checks.sh
|
||||
```
|
||||
|
||||
The mandatory path executes:
|
||||
|
||||
1. `p28_rank_ode_bound_verifier.py`
|
||||
2. `p28_convergence_constants.py`
|
||||
3. `p28_standalone_equations.py`
|
||||
4. `p28_dominant_product_algebra.py`
|
||||
|
||||
The third verifier checks:
|
||||
|
||||
- four cleared tail factorizations;
|
||||
- lowest and generic tail coefficients;
|
||||
- horizontal reconstruction;
|
||||
- the terminating-operator closure;
|
||||
- all sixteen differential-gauge entries;
|
||||
- the authoritative matrix-to-scalar contraction;
|
||||
- the base polynomial and four base-row components;
|
||||
- the base terminating equation and four base adjoint residuals;
|
||||
- constant, generic, and top terminating induction;
|
||||
- ascension and the \({}_3F_2\) Euler equation.
|
||||
|
||||
The fourth verifier checks:
|
||||
|
||||
- \(\mathcal B_m=\mathcal S+O(m^{-1})\) entry by entry;
|
||||
- \(\det(tI-\mathcal S)=Q_R(t)/R^2\);
|
||||
- the exact unit-circle coefficient inequality and exterior-root sign;
|
||||
- \(w(t)(tI-\mathcal S)=(Q_R(t),0,0,0)\);
|
||||
- all four positive exterior-root coordinate rewrites.
|
||||
|
||||
Both use `fractions.Fraction` and explicit coefficient dictionaries. Neither
|
||||
uses polynomial division, factorization, a simplifier, Gröbner bases,
|
||||
irreducibility, GCD, a root finder, a special-function package, sampling, or
|
||||
a stored transcript.
|
||||
|
||||
## Forbidden-shortcut search
|
||||
|
||||
The mandatory runner rejects these constructs in the proof path:
|
||||
|
||||
- `quo_rem`
|
||||
- `is_irreducible`
|
||||
- polynomial `gcd`
|
||||
- Birkhoff/Poincaré delegation
|
||||
- “standard ascension”
|
||||
- ODE-normalization uniqueness
|
||||
|
||||
No occurrence of `native_decide`, `axiom`, `sorry`, or `admit` was found.
|
||||
|
||||
## Independent hostile replays
|
||||
|
||||
Three independent reviews targeted:
|
||||
|
||||
- logical validity, indexing, vacuity, and denominator domains;
|
||||
- Ore/special-function and matrix-to-scalar algebra;
|
||||
- convergence, stable-product asymptotics, and all-column division.
|
||||
|
||||
The defects in the table above were discovered during those loops. The final
|
||||
Ore, asymptotic, and logic/vacuity replays returned PASS after the repairs.
|
||||
Release engineering then repeats the mandatory checks in a clean extraction,
|
||||
rebuilds the PDF, and performs page-by-page visual inspection.
|
||||
|
|
@ -1,185 +0,0 @@
|
|||
# Adversarial review of the Problem 2.8 submission, against the challenge's own rules
|
||||
|
||||
Reviewer: independent replay, 2026-07-31. Target: commit `492c8ab`
|
||||
(tag `p28-submission-2026-08-01`). Environment: CachyOS, python3 3.14,
|
||||
SageMath 10.9, TeX Live 2026.
|
||||
|
||||
## The standard actually being applied
|
||||
|
||||
The challenge states no prize, eligibility, or submission rules. Its operative
|
||||
evidentiary standard is in §4, *Discussion — Proof in the Age of AI*:
|
||||
|
||||
> For the purpose of this challenge, we consider a derivation carried out using
|
||||
> symbolic libraries within established computer algebra systems as sufficient
|
||||
> evidence of a valid solution.
|
||||
|
||||
and §1 names the central risk the evaluators care about:
|
||||
|
||||
> if a problem or its solution appears in the AI training data, success may
|
||||
> reflect retrieval rather than reasoning.
|
||||
|
||||
This review is scored against those two clauses, not against a generic notion of
|
||||
rigour.
|
||||
|
||||
## Verdict
|
||||
|
||||
**The submission satisfies the challenge's evidentiary standard, and exceeds
|
||||
it.** One defect is nonetheless serious *as a submission*, because it fires on
|
||||
the evaluator's first command.
|
||||
|
||||
## Findings
|
||||
|
||||
### F1 — CRITICAL (process, not mathematics): `run_checks.sh` exits 1
|
||||
|
||||
The submission's single advertised replay command fails on any machine that has
|
||||
SageMath installed.
|
||||
|
||||
```
|
||||
$ bash run_checks.sh
|
||||
... 43 PASS lines ...
|
||||
TypeError: keys do not match self's parent
|
||||
$ echo $?
|
||||
1
|
||||
```
|
||||
|
||||
Two independent causes compound:
|
||||
|
||||
1. **`set -euo pipefail` (line 2) makes the "optional" cross-checks fatal.**
|
||||
Lines 44–49 run three Sage certificates inside `if command -v sage`. Where
|
||||
Sage is absent the script prints *"OPTIONAL: SageMath is not installed"* and
|
||||
exits 0. Where Sage is present, any Sage failure aborts everything. The
|
||||
script therefore **passes on machines without the optional tooling and fails
|
||||
on machines with it** — precisely inverted. `ADVERSARIAL_AUDIT.md` claims
|
||||
"Wolfram and Sage are now optional independent cross-checks"; the exit code
|
||||
does not honour that claim.
|
||||
|
||||
2. **`p28_lattice_hypotheses_certificate.sage` fails**, for two reasons of very
|
||||
different severity — see F2 and F3.
|
||||
|
||||
This matters disproportionately because the challenge is explicitly CAS-oriented.
|
||||
An evaluator applying the §4 standard is *more* likely than average to have Sage
|
||||
installed, and is therefore *more* likely to see the failure.
|
||||
|
||||
The other two Sage certificates (`p28_kernel_contiguity_certificate.sage`,
|
||||
`all_four_columns_certificate.sage`) both exit 0.
|
||||
|
||||
### F2 — MEDIUM (real bug, non-load-bearing): a false assertion
|
||||
|
||||
`p28_lattice_hypotheses_certificate.sage` line 107 asserts
|
||||
|
||||
```
|
||||
72*b3 + 108*x*b2 + 46*x*b1 + 5*x*b0
|
||||
== vector(K, [72+108x+46x+5x, 216+108x+46x, 216+108x, 72])
|
||||
```
|
||||
|
||||
Component 1 is **wrong**. Since `b2 = (1,2,1,0)`, the `108*x*b2` term contributes
|
||||
`216x`, not `108x`:
|
||||
|
||||
| component | true value | as written | equal |
|
||||
|---|---|---|---|
|
||||
| 0 | `72 + 159x` | `72 + 159x` | yes |
|
||||
| 1 | `216 + 262x` | `216 + 154x` | **no** |
|
||||
| 2 | `216 + 108x` | `216 + 108x` | yes |
|
||||
| 3 | `72` | `72` | yes |
|
||||
|
||||
**The mathematics is unaffected.** This is a redundant intermediate display
|
||||
check. The load-bearing identity immediately below it,
|
||||
|
||||
```
|
||||
Bcomb == 4*x*Crow, Crow = 18*b3/x + (5/4)b0 + (23/2)b1 + 27*b2
|
||||
```
|
||||
|
||||
is **true**, and `Crow` reproduces the manuscript's compact denominator row
|
||||
`C(x) = (18/x + 159/4, 54/x + 131/2, 54/x + 27, 18/x)` exactly. Verified
|
||||
independently in sympy. So the defect is a transcription slip in a check that
|
||||
proves nothing the next line does not prove correctly.
|
||||
|
||||
### F3 — MEDIUM (environment): Sage 10.9 parent-coercion failure masks F2
|
||||
|
||||
Line 43, `denominator.subs({x: 0})`, raises
|
||||
`TypeError: keys do not match self's parent`. `K` is a fraction field, so
|
||||
`.numerator()` / `.denominator()` return elements of the underlying polynomial
|
||||
ring while `x` belongs to `K`. Sage 10.9 no longer coerces the substitution key.
|
||||
|
||||
Coercing the key (`denominator.parent()(x)`) clears the TypeError — and the
|
||||
certificate then runs on to fail at F2. The version-drift bug was **hiding a
|
||||
real one**, which is the more instructive fact: the certificate has evidently
|
||||
not been executed to completion on current Sage.
|
||||
|
||||
### F4 — MEDIUM (framing): the contamination question is not addressed
|
||||
|
||||
§1 names retrieval-vs-reasoning as the central evaluation risk. Problem 2.8's
|
||||
target is `sqrt(10005)/pi` — the Chudnovsky constant — and the submission
|
||||
**imports the Chudnovsky identity** as its one external theorem.
|
||||
|
||||
The import itself is handled well: §"The CM function and its exact value" names
|
||||
it as a single external theorem, cites Milla Theorem 0.1 with the modular/CM
|
||||
proof located at Theorem 9.7 and Chapter 10, and displays the elementary
|
||||
coefficient bridge. That is ordinary mathematical practice and is not a defect.
|
||||
|
||||
But the submission nowhere states plainly **what is novel versus what is
|
||||
imported**. Given that the evaluators flagged contamination explicitly, a
|
||||
reviewer could mistake the boxed `Phi(x_0) = sqrt(10005)/pi` for the result
|
||||
rather than for a cited input. One short paragraph would remove the ambiguity:
|
||||
the recurrence-to-`Phi` reduction is the new content; the CM evaluation of
|
||||
`Phi(x_0)` is classical and cited.
|
||||
|
||||
### F5 — PASS: the submission proves the officially stated claim
|
||||
|
||||
Independently verified against the challenge text by exact rational arithmetic
|
||||
(`p28_official_object_certificate.py`, 18 assertions, three negative controls):
|
||||
|
||||
- `R = 151931373056001`, `u = 2n+3`, `w = u(3u-2)(3u+2)` — match
|
||||
- all 11 polynomial entries `a1..a4, b1..b3, c1..c4` at `r = R` — symbolically identical
|
||||
- full 4x4 `M_N(x_0)` vs official `M(N)` — all 16 entries identical at `N = 0,1,2,3,5,8,17,40`
|
||||
- product convention `M(0)M(1)...M(N-1)`, `M_0 = I` — match
|
||||
- both integer seed rows, generated by `A_0 = AC - (5/4)H_0` and `A_1 = SC` — exact match
|
||||
- deformed coefficient `(14R-567)/9 = 236337691420383` — the official value
|
||||
- orientation: the challenge asks `P_{N,j}/Q_{N,j} -> sqrt(10005)/pi`; the manuscript proves that orientation, for all four columns
|
||||
|
||||
The proof is about the official object, not a surrogate.
|
||||
|
||||
### F6 — PASS (exceeds standard): evidence is stronger than §4 requires
|
||||
|
||||
§4 accepts a CAS derivation. The submission instead makes four standard-library,
|
||||
dependency-free verifiers mandatory and demotes Wolfram/Sage to optional
|
||||
cross-checks. All four exit 0 on plain `python3`, and the checks are falsifiable:
|
||||
mutating `S[0][0]` from `64R-44` to `64R-43` yields exit 1 with an
|
||||
`AssertionError` at `p28_dominant_product_algebra.py:268`.
|
||||
|
||||
Ironically, F1 is a direct consequence of this strength — the effort went into
|
||||
the dependency-free path, and the demoted Sage path was left unexercised.
|
||||
|
||||
### F7 — PASS: the manuscript builds clean
|
||||
|
||||
`pdflatex` x3: 0 errors, 0 warnings on the final pass, 17 pages, all
|
||||
cross-references resolved, zero `??` in the output. Note that pass 1 legitimately
|
||||
reports ~58 undefined references; anyone grepping a combined `latexmk` log will
|
||||
see a false alarm.
|
||||
|
||||
Cosmetic only (`chktex`/`lacheck`): ~43 missing non-breaking spaces
|
||||
(`Theorem~3`), 5 wrong-length dashes (`Birkhoff--Poincare`), 3 spaces before
|
||||
`\ref`, one whitespace-before-punctuation at line 316.
|
||||
|
||||
## Recommended actions, in priority order
|
||||
|
||||
1. **Fix F1.** Either drop `set -e` around the optional block, or guard each
|
||||
optional invocation (`sage ... || echo "OPTIONAL: cross-check failed"`), so
|
||||
that optional means optional. Highest value per unit effort in the whole list.
|
||||
2. **Fix F2.** Correct `216 + 108*x + 46*x` to `216 + 216*x + 46*x`, or delete
|
||||
the redundant assertion; the next line already proves the needed identity.
|
||||
3. **Fix F3.** Coerce the substitution key into the polynomial parent so the
|
||||
certificate runs on Sage 10.9.
|
||||
4. **Add the F4 paragraph** separating novel content from cited input.
|
||||
5. Optionally apply the F7 typography fixes.
|
||||
|
||||
None of 1–3 touches the mathematics. All are edits to certificate plumbing.
|
||||
|
||||
## What this review did not do
|
||||
|
||||
It did not audit the logical chaining of the manuscript prose — whether
|
||||
`prop@257 -> lemma@451 -> prop@494 -> prop@539 -> cor@713 -> lemma@930 ->
|
||||
theorem@1157` discharges each hypothesis without circularity. That remains the
|
||||
one substantive unverified area. A prior audit (`reviewed PR 20 against the
|
||||
KKT-F.md`) validated an earlier version of that chain and returned PASS, but 764
|
||||
lines of `solution.tex` changed afterwards.
|
||||
|
|
@ -1,279 +0,0 @@
|
|||
# How the solution was found
|
||||
|
||||
## Why this document exists
|
||||
|
||||
The finished proof takes an indirect route. Read cold, several of its moves look
|
||||
arbitrary: why deform a fixed integer into a free variable, why re-express the
|
||||
initial conditions in a Pascal basis, why there is machine-checked work on
|
||||
leading zeros in positional notation sitting underneath a modular-forms problem.
|
||||
|
||||
Each was forced by something. This document records the path so the choices can
|
||||
be read as reasoning rather than guessed at.
|
||||
|
||||
## Why this problem, and why the machinery is out of proportion to it
|
||||
|
||||
One structural thing should be said up front, because it explains most of what
|
||||
otherwise looks excessive.
|
||||
|
||||
Problem 2.8 was not approached as an isolated puzzle. It was used as a **test
|
||||
case for an existing pipeline** — a body of tooling for encoding mathematical
|
||||
objects, verifying identities in exact arithmetic, and recording excluded routes.
|
||||
A well-posed external problem with an objectively checkable answer is a good
|
||||
instrument for finding defects in that kind of tooling, because it cannot be
|
||||
argued with: either the certificates reproduce the official data or they do not.
|
||||
|
||||
That is why the infrastructure is disproportionate to a single limit. A
|
||||
Coq-and-Lean treatment of leading zeros in positional notation is absurd
|
||||
overhead for one π formula, and entirely reasonable for a codec that other work
|
||||
depends on. The same applies to the mutation testing, the per-claim authority
|
||||
tags, and the registry of proved-impossible routes.
|
||||
|
||||
This motivation is also congruent with the challenge's own stated purpose: §1
|
||||
presents these problems as benchmark instruments with structured verification,
|
||||
precisely because "candidate formulas for constants can often be tested to
|
||||
thousands of digits, so numerical validation is immediate and objective." Used
|
||||
that way here, in both directions.
|
||||
|
||||
## The starting position
|
||||
|
||||
The challenge supplies, for Problem 2.8:
|
||||
|
||||
- a `4×4` matrix `M(n)` whose entries are degree-5 polynomials in `u = 2n+3`
|
||||
over a constant `R = 151931373056001`;
|
||||
- one entry containing the bare integer `236337691420383`, unexplained;
|
||||
- two initial rows of eight integers of up to 77 bits;
|
||||
- the conjecture `lim P_{N,j}/Q_{N,j} = √10005/π` for all four columns.
|
||||
|
||||
`√10005/π` identifies the target immediately — it is the Chudnovsky constant.
|
||||
What is not given is any link between *this recurrence* and that formula. The
|
||||
recurrence came from machine search; nothing in its presentation records where
|
||||
it came from.
|
||||
|
||||
## Step 1 — treat the given data as generated, not as given
|
||||
|
||||
The eight seed integers are not round, not obviously related, and too large to
|
||||
read. But they were *produced by something*. A search process emitted them, so a
|
||||
generator exists, and a generator is usually much smaller than its output.
|
||||
|
||||
That reframes the first task: not "prove a limit" but "recover the generator."
|
||||
The rest follows from taking that seriously.
|
||||
|
||||
## Step 2 — recovering a generator requires a codec, and radix notation is not one
|
||||
|
||||
To hunt for structure by re-encoding data, encode and decode must be inverse.
|
||||
That sounds automatic and is not.
|
||||
|
||||
Ordinary positional notation is **not injective on digit strings**. Two
|
||||
collisions, machine-checked in Coq and Lean
|
||||
(`coq/MathPunchFiniteStateAudit/Radix.v`, `MathPunchFiniteState/Radix.lean`):
|
||||
|
||||
```coq
|
||||
eval_digits 8 [0; 1] = eval_digits 8 [1] (* both = 1: leading zero *)
|
||||
eval_digits 8 [] = eval_digits 8 [0] (* both = 0: empty word *)
|
||||
```
|
||||
|
||||
In base 8 over lengths 0–3, 585 distinct digit strings collapse onto 512 values.
|
||||
|
||||
This is invisible in ordinary mathematics, where numerals exist only to *denote
|
||||
numbers* — `[0,1]` and `[1]` denote the same number and there is nothing more to
|
||||
say. It is fatal when digit strings encode objects, because the decode is then
|
||||
not a function.
|
||||
|
||||
Two repairs, both **bijections onto correctly stated codomains**:
|
||||
|
||||
```
|
||||
framing: digit strings ⟷ ⋃ₙ {n} × [0, bⁿ)
|
||||
framed_value b ds = (length ds, eval_digits b ds)
|
||||
|
||||
DFA: canonical numerals ⟷ ℕ⁺
|
||||
three states start / body / dead; rejects leading zeros,
|
||||
out-of-range digits, and the empty word
|
||||
```
|
||||
|
||||
Bijectivity rather than injectivity is what is needed: injectivity says
|
||||
encodings do not collide, bijectivity says **decoding is total**. A codec is
|
||||
used in the decode direction.
|
||||
|
||||
That is why numeration-system work sits under a modular-forms problem. It is the
|
||||
correctness obligation for Step 3, not a digression.
|
||||
|
||||
## Step 3 — the basis came from the matrix, not from a search
|
||||
|
||||
Re-encoding is only evidence if the basis is fixed *before* looking. Otherwise
|
||||
enough freedom makes any data look structured.
|
||||
|
||||
The basis was not searched for. The second row of the challenge's own matrix is
|
||||
|
||||
```
|
||||
(−u³, −3u², −3u, −1)
|
||||
```
|
||||
|
||||
a signed Pascal row. That is a property of the given data, visible before any
|
||||
fitting. So the candidate basis was the rows of the lower-triangular Pascal
|
||||
matrix:
|
||||
|
||||
```
|
||||
b₀ = (1,0,0,0) b₁ = (1,1,0,0) b₂ = (1,2,1,0) b₃ = (1,3,3,1)
|
||||
```
|
||||
|
||||
One candidate, taken from the problem statement, tried once.
|
||||
|
||||
## Step 4 — what came out
|
||||
|
||||
In that basis, with `C(x) = (18/x)b₃ + (5/4)b₀ + (23/2)b₁ + 27b₂`, the two seed
|
||||
rows are **exactly**
|
||||
|
||||
```
|
||||
A₁ = S·C
|
||||
A₀ = A·C − (5/4)·H₀, H₀ = A·b₀ + B·b₁
|
||||
```
|
||||
|
||||
with
|
||||
|
||||
```
|
||||
A = 13591409 B = 545140134 S = 426880
|
||||
```
|
||||
|
||||
These were not solved for. They are the Chudnovsky constants, already fixed by a
|
||||
classical formula in an unrelated context. They had to come out exactly right or
|
||||
the encoding fails, which is what makes this evidence rather than coincidence.
|
||||
|
||||
The unexplained integer resolved at the same time:
|
||||
`236337691420383 = (14R − 567)/9`.
|
||||
|
||||
Verified exactly in `p28_official_object_certificate.py`.
|
||||
|
||||
## Step 5 — from constants to a single unknown
|
||||
|
||||
The recovered constants keep factoring. With `s₂(τ₁₆₃) = 77265280/90856689`, the
|
||||
weight-zero CM invariant:
|
||||
|
||||
```
|
||||
A = den(s₂) − num(s₂)
|
||||
B = 6·den(s₂)
|
||||
A/B = (1 − s₂)/6
|
||||
```
|
||||
|
||||
So the arithmetic content of the problem is one CM value. The target became
|
||||
"connect this recurrence to a known modular quantity" instead of "prove a limit
|
||||
about an opaque recurrence" — a better-posed question.
|
||||
|
||||
## Step 6 — the encoding proves nothing, and the proof was built separately
|
||||
|
||||
A decode is a lead. It says where to look; it establishes nothing. The finished
|
||||
argument does not cite the Pascal form as evidence and does not infer equality
|
||||
from numerical agreement. It proceeds through the deformation, the Ore
|
||||
factorisations, the terminating `₄F₃`, the discrete-valuation induction, and an
|
||||
explicit stable-graph contraction, importing exactly one external theorem: the
|
||||
classical Chudnovsky identity, cited to Milla's derivation.
|
||||
|
||||
The deformation `r = 1/x` is the other move that looks strange cold. Its purpose
|
||||
is to make analytic methods available: replacing the fixed constant `R` by a free
|
||||
variable gives a one-parameter family to which Cauchy's theorem applies, and
|
||||
`x₀ = 1/R` specialises it back to the official object. Without the deformation
|
||||
there is no contour to integrate around.
|
||||
|
||||
## What did not work
|
||||
|
||||
The route is indirect because the direct ones were closed, each with a witness
|
||||
rather than an impression:
|
||||
|
||||
- **The t-line intertwiner route** was proved impossible — `sing(L) = {0,∞}`,
|
||||
and three disjoint fibres over `0,1,∞` cannot inject into two points. Recorded
|
||||
with its ramification argument and scoped to the whole gauge-equivalence class.
|
||||
- **The `L_U` variant** was excluded by monodromy: no regular-unipotent `3×3`
|
||||
block exists anywhere in the relevant family.
|
||||
- **The `Sym²V` construction** was set aside as disproportionate. It is a
|
||||
research-scale object, and the Apéry-limit evaluation does not need an explicit
|
||||
module isomorphism.
|
||||
|
||||
Recording exclusions as first-class results, with witnesses, is what stopped the
|
||||
search from cycling back through settled ground.
|
||||
|
||||
## What the exercise found
|
||||
|
||||
Since the problem was used as an instrument, the defects it exposed are part of
|
||||
the result. They fall into three groups.
|
||||
|
||||
**Defects in the argument, found by adversarial replay and repaired before
|
||||
release** (full table in `ADVERSARIAL_AUDIT.md`). The substantive ones:
|
||||
|
||||
- an ODE-normalisation *uniqueness* claim that was simply false — the exponent
|
||||
`2n` supplies an additional analytic branch, so uniqueness was replaced by
|
||||
base/generic/top coefficient induction;
|
||||
- a transfer-norm inequality applied with an invalid exponent direction for the
|
||||
fourth column;
|
||||
- a maximum-modulus step that assumed holomorphy of a quotient where formal
|
||||
divisibility only gave a local removable germ;
|
||||
- Birkhoff–Poincaré used as a black box for three columns, hiding the
|
||||
exceptional hyperplane, the dominant functional, and denominator
|
||||
non-vanishing — replaced by an explicit stable-graph contraction;
|
||||
- a scalar one-step operator not yet tied to the challenge matrix, which could
|
||||
have described a surrogate;
|
||||
- the orientation recorded as `Q/P` when the challenge asks for `P/Q`.
|
||||
|
||||
**Defects in the verification machinery itself** — the ones that matter most for
|
||||
a tool being validated, because they are the failures that let bad results pass:
|
||||
|
||||
- checks that could succeed while the CAS was absent, treating a stored
|
||||
transcript as evidence. Fixed by making dependency-free verifiers mandatory;
|
||||
- Ore divisions using `quo_rem`, trusting a zero remainder instead of exhibiting
|
||||
a cleared factorisation;
|
||||
- irreducibility and GCD calls standing in for arguments.
|
||||
|
||||
**Defects still open at the time of writing**, found during independent replay
|
||||
(detailed in `ADVERSARIAL_REVIEW_AGAINST_CHALLENGE_RULES.md`):
|
||||
|
||||
- `run_checks.sh` exits 1 on any machine *with* SageMath installed, because
|
||||
`set -euo pipefail` makes the declared-optional cross-checks fatal. The script
|
||||
therefore passes without the optional tooling and fails with it;
|
||||
- a false assertion in `p28_lattice_hypotheses_certificate.sage` — component 1
|
||||
reads `216 + 154x` where the true value is `216 + 262x`. Non-load-bearing: the
|
||||
identity below it is correct;
|
||||
- a Sage 10.9 parent-coercion error that was *masking* the previous item;
|
||||
- the radix DFA exists only in `Radix.lean` while that repository regenerates
|
||||
Lean from `coq/*.v`, so a regeneration would silently erase it.
|
||||
|
||||
The last group is the honest state of things rather than a finished story. A
|
||||
tool that had been validated would not still be producing these; the point of
|
||||
running the instrument is that it is still finding them.
|
||||
|
||||
## Limits of the method
|
||||
|
||||
**The encoding is not compression.** Measured:
|
||||
|
||||
| | bits |
|
||||
|---|---|
|
||||
| raw seed data (8 integers) | 588 |
|
||||
| encoder payload (`A, B, S, R` + 9 small Pascal coordinates) | 166 |
|
||||
| ratio | 3.54× |
|
||||
|
||||
3.54× is unremarkable, and the basis had to be known in advance. Any claim that
|
||||
this compresses data should be rejected. The same conclusion was reached
|
||||
elsewhere in this programme: characteristic-polynomial encoding of matrices adds
|
||||
overhead against an entropy-coded baseline.
|
||||
|
||||
The value is not the size of the encoding but *which* basis makes the
|
||||
coordinates meaningful, which is a statement about where the data came from.
|
||||
|
||||
**Relation to standard practice.** Recovering closed forms from numerical data
|
||||
is established: integer-relation algorithms (PSLQ, LLL), the Inverse Symbolic
|
||||
Calculator, and experimental mathematics generally — PSLQ is used directly here
|
||||
to identify `s₂` across Heegner discriminants. The regular structure of valid
|
||||
numerals is likewise classical: canonical numeration systems, base-`k`
|
||||
recognisable sets, Cobham's theorem. What this work does is apply those to
|
||||
structured integer arrays rather than single constants, and keep the result in
|
||||
the proof as a provenance record rather than discarding it after discovery.
|
||||
|
||||
## The path in one view
|
||||
|
||||
```
|
||||
opaque official integers
|
||||
→ assume generated; hunt the generator
|
||||
→ build a bijective codec (radix framing / DFA canonicalisation)
|
||||
→ basis taken from the matrix's own Pascal row
|
||||
→ decode yields the Chudnovsky constants A, B, S
|
||||
→ constants factor through the CM invariant s₂(τ₁₆₃)
|
||||
→ problem reduces to one modular quantity
|
||||
→ prove that reduction independently; import Chudnovsky as a cited theorem
|
||||
```
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
# Notation, invented terminology, and borrowed words
|
||||
|
||||
## Why this document exists
|
||||
|
||||
This work crosses several fields, and its vocabulary was assembled accordingly.
|
||||
Some names are invented; others are borrowed from unrelated disciplines because
|
||||
they were short and evocative, and then given a purely mathematical meaning.
|
||||
|
||||
That borrowing creates a specific hazard. A reader who knows the source field
|
||||
may read a term as a claim about that field.
|
||||
|
||||
**Scope of the disclaimer, stated precisely.** Nothing in *this submission*
|
||||
(Ramanujan Challenge Problem 2.8) makes any claim about biology, genetics, or
|
||||
any physical or biochemical system. Every object in it is defined entirely by
|
||||
its equations, and those equations are the only content.
|
||||
|
||||
Elsewhere in the wider programme the situation is not uniform, and it would be
|
||||
misleading to claim otherwise. At least one artefact — a Lean probe on expanded
|
||||
genetic alphabets — deliberately models alphabet sizes drawn from synthetic
|
||||
biology (4, 8, 12 letters) and proves an optimality statement about them. That
|
||||
is a mathematical result about alphabet size, not an empirical claim about
|
||||
molecules, but it is *not* merely a borrowed word either. **The author should
|
||||
confirm the intended reading of any such artefact before it is circulated.**
|
||||
|
||||
For the borrowed vocabulary in Part 2, the rule holds: read the definition, not
|
||||
the word.
|
||||
|
||||
---
|
||||
|
||||
## Part 1 — Terms used in this submission
|
||||
|
||||
These are grounded in `solution.tex` and the certificate scripts, and are the
|
||||
ones an evaluator of Problem 2.8 will actually meet.
|
||||
|
||||
| Term | Meaning here | Ordinary meaning it may collide with |
|
||||
|---|---|---|
|
||||
| **seed**, **seed row** | The two official integer initial-condition rows `A_0`, `A_1` of the recurrence. Nothing grows; "seed" only marks where the iteration starts. | Botany; also "seed" in cryptography/RNG, which is closer but still not this. |
|
||||
| **jet** | Truncated local expansion data of a function at a point — the standard differential-geometry sense (an equivalence class of functions agreeing to finite order). | Aviation; fluid jets; the physics "jet" of particles. None apply. |
|
||||
| **carrier** | The vector space or module on which an operator or representation acts — the object that *carries* the structure. Standard representation-theory usage. | **Genetics: a carrier of an allele.** Not intended, not implied. |
|
||||
| **mutation**, **mutant** | Software *mutation testing*: deliberately corrupting a constant to confirm a passing check is capable of failing. E.g. changing `64R-44` to `64R-43` must produce an `AssertionError`. | **Genetic mutation.** Entirely unrelated. The "mutant" is a modified copy of a Python file. |
|
||||
| **deformation**, **deformed family** | Replacing the constant `R` by a free variable `r = 1/x`, giving a one-parameter analytic family that specialises to the official matrix at `x_0 = 1/R`. Standard deformation-theory usage. | Materials science. |
|
||||
| **compact form** | A short generating expression (Pascal rows `b_0..b_3`, the row `C(x)`, constants `A, B, S`) that reproduces the large official integer data exactly. A re-encoding, not an approximation. | "Compact" in topology — unrelated here. |
|
||||
| **certificate** | An executable script whose assertions, if they all pass, witness a stated mathematical fact. | Cryptographic certificates; academic certificates. |
|
||||
| **red case**, **negative control** | A deliberately false input included to prove the check can fail. Borrowed from experimental science, and used in the same spirit. | — |
|
||||
| **authority tag** | A per-claim label recording *how* a statement is known: `EXACT` (integer/rational arithmetic), `NUMERICAL WITNESS` (high-precision identification, not proof), `LITERATURE` (cited, not re-proved). | — |
|
||||
|
||||
### On `EXACT` versus `NUMERICAL WITNESS`
|
||||
|
||||
This distinction is load-bearing and is not merely stylistic. `EXACT` means the
|
||||
statement is closed under exact arithmetic with no floating point anywhere.
|
||||
`NUMERICAL WITNESS` means a quantity was *identified* to some number of digits —
|
||||
strong evidence, **not** a proof. The submission's main claim rests only on
|
||||
`EXACT` and `LITERATURE` items; numerical enclosures appear as corroboration and
|
||||
are never used as premises.
|
||||
|
||||
---
|
||||
|
||||
## Part 2 — Borrowed words from biology, used in the wider programme
|
||||
|
||||
These do **not** appear in the Problem 2.8 submission, but they appear in
|
||||
adjacent repositories that an evaluator may encounter. They are the terms most
|
||||
likely to be misread as biological claims.
|
||||
|
||||
> **Reconstructed from working notes — the author should confirm each definition
|
||||
> before this document is circulated.**
|
||||
|
||||
| Term | Meaning in this work | Source field | Explicitly NOT a claim about |
|
||||
|---|---|---|---|
|
||||
| **hachimoji** | A base-8 encoding/decoding scheme (a codec) used to render algebraic invariants as short strings. The name was taken purely because the source system has eight symbols. | Benner et al.'s *hachimoji DNA*, a synthetic 8-letter genetic alphabet (Japanese 八文字, "eight letters"). | DNA, nucleotides, synthetic biology, base pairing, or any biochemical system. It is an integer-encoding convention and nothing else. |
|
||||
| **scar** (as in `SCAR-013`) | A registry entry recording a route that has been *proved impossible*, together with its witness and a redirect to a live route. A permanent mark left by a closed-off attempt. | **CRISPR / molecular cloning:** a "scar" is residual sequence left after an editing or ligation step. | Gene editing, CRISPR, recombination, or any laboratory procedure. |
|
||||
| **scar-map** | A tabulated collection of such exclusion records (e.g. the `Δ₇` scar-map). | as above | as above |
|
||||
| **strand**, **braid** | Strands of a mathematical *braid group* `B_n` — topological curves in a cylinder, and their linear representations (Burau, Lawrence–Krammer–Bigelow). | DNA strands, double helix. | DNA, chromosomes, or any molecular structure. The braid group is a purely topological/algebraic object. |
|
||||
| **chirality**, **chiral** | Handedness — the orientation or sign convention of a basis or lookup table. | Chemistry (stereochemistry), particle physics. | Molecular handedness or any chemical claim. |
|
||||
| **codebook** | An information-theoretic dictionary mapping objects to short canonical labels. | Coding theory (correct source); also espionage. | — |
|
||||
|
||||
### The general rule
|
||||
|
||||
Where a borrowed word could be read as a claim about a natural system, it is
|
||||
being used **metaphorically for structure only**. The mathematics is defined by
|
||||
its equations; the name is a label chosen for brevity, and carries none of the
|
||||
source field's content, mechanisms, or empirical commitments.
|
||||
|
||||
---
|
||||
|
||||
## Part 3 — Why the vocabulary is like this, stated plainly
|
||||
|
||||
The programme spans modular forms, hypergeometric series, braid representations,
|
||||
formal verification, and computational infrastructure. Working across that range
|
||||
produces a lot of objects that need names faster than the literature supplies
|
||||
them. Borrowing a short, memorable word from an unrelated field is efficient for
|
||||
a solo author and costly for a reader — the cost only becomes visible when the
|
||||
work is read by someone fluent in the source field.
|
||||
|
||||
This document is the correction. It is not an apology for the naming; it is a
|
||||
key, so that no reader has to guess whether a biological word implies a
|
||||
biological claim. It does not.
|
||||
|
||||
## Part 4 — Reading rule for evaluators
|
||||
|
||||
1. Every mathematical object is defined by displayed equations. If a name and an
|
||||
equation disagree, the equation governs.
|
||||
2. No statement in this work is a claim about genetics, molecular biology,
|
||||
chemistry, or any physical system.
|
||||
3. Where a term is borrowed, Part 1 or Part 2 gives the intended meaning and the
|
||||
collision it may cause.
|
||||
4. The distinction between `EXACT`, `NUMERICAL WITNESS`, and `LITERATURE` is
|
||||
substantive; see Part 1.
|
||||
|
|
@ -10,28 +10,17 @@ This package proves, for each of the four official columns,
|
|||
=\frac{\pi}{\sqrt{10005}}.
|
||||
\]
|
||||
|
||||
The first display is the orientation requested in Problem 2.8; the second
|
||||
is its reciprocal consequence.
|
||||
The second display is the orientation requested in Problem 2.8.
|
||||
|
||||
## Contents
|
||||
|
||||
- `solution.pdf` — the complete proof.
|
||||
- `solution.tex` — its LaTeX source.
|
||||
- `certificates/p28_standalone_equations.py` — mandatory, dependency-free
|
||||
expansion of the four cleared Ore identities, tail coefficient equations,
|
||||
terminating base/generic/top identities, ascension, and the
|
||||
hypergeometric differential equation. It uses rational coefficient
|
||||
dictionaries only: no division algorithm, simplifier, factorizer, special
|
||||
function library, root finder, or sample values.
|
||||
- `certificates/p28_dominant_product_algebra.py` — mandatory,
|
||||
dependency-free verification of the balanced limit, characteristic
|
||||
polynomial, root-separation inequalities, left-eigenvector identity, and
|
||||
four positive-coordinate rewrites.
|
||||
- `certificates/STANDALONE_EQUATION_CERTIFICATES.md` — the same Ore and
|
||||
terminating identities in a human-readable, denominator-cleared equation
|
||||
sheet.
|
||||
- `certificates/p28_full_closure_certificate.wl` — optional independent
|
||||
symbolic cross-check of the differential gauge and closure.
|
||||
- `certificates/p28_full_closure_certificate.wl` — the primary,
|
||||
self-contained exact symbolic certificate. It proves the authoritative
|
||||
differential gauge, both hypergeometric contiguity identities, the
|
||||
terminating denominator formula, CM-seed annihilation, and the singular
|
||||
lattice step. No numerical sampling is used.
|
||||
- `certificates/p28_full_closure_certificate.PASS.txt` — transcript of a
|
||||
stateless Wolfram Language run (22 exact checks plus the consolidated
|
||||
conclusion).
|
||||
|
|
@ -44,8 +33,6 @@ is its reciprocal consequence.
|
|||
SageMath cross-checks.
|
||||
- `certificates/p28_parametric_pade_probe.py` — finite exact regression,
|
||||
included as a diagnostic only and not used as proof.
|
||||
- `ADVERSARIAL_AUDIT.md` — defect ledger, repairs, replay evidence, and
|
||||
the exact trust boundary.
|
||||
|
||||
## Reproduction
|
||||
|
||||
|
|
@ -55,20 +42,19 @@ From this directory, run:
|
|||
./run_checks.sh
|
||||
```
|
||||
|
||||
The mandatory proof path is Python-standard-library only. The Wolfram
|
||||
cross-check can also be run directly:
|
||||
The primary symbolic check can also be run directly:
|
||||
|
||||
```sh
|
||||
wolframscript -file certificates/p28_full_closure_certificate.wl
|
||||
```
|
||||
|
||||
The Python checks use only the standard library:
|
||||
It should print 22 exact-check lines beginning with `PASS:`, followed by the
|
||||
consolidated certificate conclusion. The Python checks use only the standard
|
||||
library:
|
||||
|
||||
```sh
|
||||
python3 certificates/p28_rank_ode_bound_verifier.py
|
||||
python3 certificates/p28_convergence_constants.py
|
||||
python3 certificates/p28_standalone_equations.py
|
||||
python3 certificates/p28_dominant_product_algebra.py
|
||||
```
|
||||
|
||||
For the independent SageMath checks:
|
||||
|
|
@ -84,13 +70,3 @@ To rebuild the manuscript:
|
|||
```sh
|
||||
latexmk -pdf solution.tex
|
||||
```
|
||||
|
||||
## Trust boundary
|
||||
|
||||
No numerical enclosure is used to infer equality. The recurrence proof is
|
||||
expanded into explicit equations and an elementary stable-graph contraction.
|
||||
The sole imported mathematical theorem is the classical Chudnovsky formula,
|
||||
identified precisely in `solution.tex` with a reference to a complete
|
||||
modular/CM derivation. Thus the package is self-contained relative to that
|
||||
published theorem; it does not claim to reconstruct the entire theory of the
|
||||
Chudnovsky formula from first principles.
|
||||
|
|
|
|||
|
|
@ -1,383 +0,0 @@
|
|||
# Standalone Equation Certificates for Problem 2.8
|
||||
|
||||
This sheet replaces every Ore-division or “the remainder simplifies” claim
|
||||
in the proof. Each displayed assertion is an equality in a rational-function
|
||||
field. Multiplying by the listed denominator produces a polynomial whose
|
||||
coefficients are all zero.
|
||||
|
||||
The companion program `p28_standalone_equations.py` recreates these checks
|
||||
with sparse dictionaries over `fractions.Fraction`. It implements addition,
|
||||
multiplication, integer powers, and formal differentiation only. It does not
|
||||
call a division algorithm, factorizer, simplifier, Gröbner basis, special
|
||||
function library, root finder, or numerical sampler.
|
||||
|
||||
## 1. Input matrix
|
||||
|
||||
Let \(u\) and \(x\) be indeterminates, \(r=x^{-1}\), and
|
||||
\(\omega=u(3u-2)(3u+2)\). Define
|
||||
|
||||
\[
|
||||
\begin{aligned}
|
||||
a_1={}&r(144u^5-288u^4+144u^3)
|
||||
-99u^5+333u^4-229u^3-114u^2+40u+64,\\
|
||||
a_2={}&r(432u^4-864u^3+432u^2)
|
||||
-243u^4+909u^3-868u^2-80u+272,\\
|
||||
a_3={}&r(432u^3-864u^2+432u)
|
||||
-153u^3+648u^2-860u+360,\\
|
||||
a_4={}&144r(u-1)^2,\\
|
||||
b_1={}&-144ru^3+9u^4+63u^3+158u^2+168u+64,\\
|
||||
b_2={}&216ru^2+36u^3-189u^2-316u-168,\\
|
||||
b_3={}&108ru+54u^2-189u-158,\\
|
||||
c_1={}&-288r^2u^3+
|
||||
r(54u^4+378u^3+948u^2+1008u+384)\\
|
||||
&+18u^5+45u^4-251u^3-1086u^2-1384u-576,\\
|
||||
c_2={}&-432r^2u^2+
|
||||
r(153u^4-657u^3+1292u^2+2064u+1072)\\
|
||||
&-72u^4+702u^3-1069u^2-2508u-1512,\\
|
||||
c_3={}&-216r^2u+
|
||||
r(180u^3-891u^2+1450u+1116)\\
|
||||
&-108u^3+864u^2-1385u-1422,\\
|
||||
c_4={}&-4r^2+r(6u^2-33u+\tfrac{536}{9})-4u^2+32u-63.
|
||||
\end{aligned}
|
||||
\]
|
||||
|
||||
Then
|
||||
|
||||
\[
|
||||
\mathcal M(u,x)=
|
||||
\begin{pmatrix}
|
||||
a_1/\omega&a_2/\omega&a_3/\omega&a_4/\omega\\
|
||||
-u^3&-3u^2&-3u&-1\\
|
||||
xb_1/144&-xb_2/72&-xb_3/36&x(-2r-(2u-7))/2\\
|
||||
x^2c_1/288&x^2c_2/144&x^2c_3/72&x^2c_4/4
|
||||
\end{pmatrix}.
|
||||
\]
|
||||
|
||||
For the recurrence, \(u=2N+3\), so \(u\ge3\).
|
||||
|
||||
## 2. Four Ore identities without division
|
||||
|
||||
Put
|
||||
|
||||
\[
|
||||
m=\frac{u-1}{2},\qquad
|
||||
P_i(t)=\sum_{s=0}^{3}\mathcal M(u,x)_{i+1,s+1}t^s,
|
||||
\]
|
||||
|
||||
\[
|
||||
\mathcal TQ=(1-x)x\partial_xQ+(t+1)Q
|
||||
\]
|
||||
|
||||
and
|
||||
|
||||
\[
|
||||
L_+(t)=(1-x)t(t+u)^3+
|
||||
x(t+m+1)(t+m+\tfrac76)(t+m+\tfrac32)(t+m+\tfrac{11}{6}).
|
||||
\]
|
||||
|
||||
Define
|
||||
|
||||
\[
|
||||
\begin{aligned}
|
||||
\ell_0={}&(u-1)u(3u-2)(3u+2)x/144,\\
|
||||
\ell_1={}&[-576+864u-432u^2+72u^3
|
||||
+(580-872u+405u^2-36u^3)x]/72,\\
|
||||
\ell_2={}&[432-432u+108u^2
|
||||
+(-436+405u-54u^2)x]/36,\\
|
||||
\ell_3={}&(-12+6u+11x-2ux)/2,\\
|
||||
q_3={}&-36+(536-297u+54u^2)x
|
||||
+(-567+288u-36u^2)x^2.
|
||||
\end{aligned}
|
||||
\]
|
||||
|
||||
The complete equation set is
|
||||
|
||||
\[
|
||||
u(3u-2)(3u+2)x(\mathcal TP_0-P_1)
|
||||
-144(u-1)^2L_+=0,
|
||||
\]
|
||||
|
||||
\[
|
||||
\mathcal TP_1-P_2+L_+=0,
|
||||
\]
|
||||
|
||||
\[
|
||||
2(\mathcal TP_2-P_3)-(-2+7x-2ux)L_+=0,
|
||||
\]
|
||||
|
||||
\[
|
||||
36(\mathcal TP_3+\ell_3P_3+\ell_2P_2+\ell_1P_1+\ell_0P_0)
|
||||
-q_3L_+=0.
|
||||
\]
|
||||
|
||||
These are the quotient-and-zero-remainder claims written as four direct
|
||||
factorizations. No quotient or remainder operation is needed.
|
||||
|
||||
## 3. Lowest and generic tail coefficients
|
||||
|
||||
Set
|
||||
|
||||
\[
|
||||
A(t)=\frac{144(u-1)^2(t+u)^3}{u(3u-2)(3u+2)},\qquad
|
||||
B(t)=P_0(t)-\frac{A(t)}x,
|
||||
\]
|
||||
|
||||
\[
|
||||
\varrho=-\frac{(3u-2)(3u+2)}{144(u-1)^2u^2},
|
||||
\]
|
||||
|
||||
\[
|
||||
\chi_j=
|
||||
\frac{(m+j)(m+\frac16+j)(m+\frac12+j)(m+\frac56+j)}
|
||||
{m(m+\frac16)(m+\frac12)(m+\frac56)}
|
||||
\left(\frac{2m(2m+1)}{(2m+j)(2m+j+1)}\right)^3,
|
||||
\]
|
||||
|
||||
\[
|
||||
\psi_j=
|
||||
\frac{(m+j)(m+\frac16+j)(m+\frac12+j)(m+\frac56+j)}
|
||||
{(2m+j)^3(j+1)}.
|
||||
\]
|
||||
|
||||
The two identities are
|
||||
|
||||
\[
|
||||
\varrho[-A(0)]-1=0
|
||||
\]
|
||||
|
||||
and, for \(j\ge1\),
|
||||
|
||||
\[
|
||||
\varrho\left[
|
||||
-A(j)\chi_j+
|
||||
\frac{(A(j-1)+B(j-1))\chi_{j-1}}{\psi_{j-1}}
|
||||
\right]-1=0.
|
||||
\]
|
||||
|
||||
For \(u=2N+3\ge3\), the integer-dependent denominator factors are nonzero.
|
||||
Factors of \(x\) are cleared before coefficient comparison; no conclusion
|
||||
is obtained by evaluating a rational expression at \(x=0\).
|
||||
|
||||
## 4. Terminating denominator induction
|
||||
|
||||
For \(n\ge1\), define
|
||||
|
||||
\[
|
||||
\mathcal L_n(t)=t(t+2n-1)^3
|
||||
-z(t+n)(t+n+\tfrac16)(t+n+\tfrac12)(t+n+\tfrac56)
|
||||
=\sum_{j=0}^4c_jt^j
|
||||
\]
|
||||
|
||||
and, for operator polynomials with coefficients on the left,
|
||||
|
||||
\[
|
||||
\Theta Q=z\partial_zQ+tQ.
|
||||
\]
|
||||
|
||||
The horizontal row is reconstructed by
|
||||
|
||||
\[
|
||||
\pi_0=1,\qquad
|
||||
\pi_3=\frac{c_4}{c_0}t,
|
||||
\]
|
||||
|
||||
\[
|
||||
\pi_2=\frac{c_3}{c_4}\pi_3-\Theta\pi_3,\qquad
|
||||
\pi_1=\frac{c_2}{c_4}\pi_3-\Theta\pi_2.
|
||||
\]
|
||||
|
||||
Its final equation is
|
||||
|
||||
\[
|
||||
\Theta\pi_1+1-\frac{c_1}{c_4}\pi_3
|
||||
+\frac{72}{n(2n+1)(6n+1)(6n+5)z}
|
||||
\left[
|
||||
t(t-2n)^3
|
||||
-z(t-n)(t-n-\tfrac16)(t-n-\tfrac12)(t-n-\tfrac56)
|
||||
\right]=0.
|
||||
\]
|
||||
|
||||
Let
|
||||
|
||||
\[
|
||||
\mathcal C_n(z)=
|
||||
\begin{pmatrix}
|
||||
0&1&0&0\\
|
||||
0&0&1&0\\
|
||||
0&0&0&1\\
|
||||
-c_0/c_4&-c_1/c_4&-c_2/c_4&-c_3/c_4
|
||||
\end{pmatrix}.
|
||||
\]
|
||||
|
||||
The complete differential-gauge equation is
|
||||
|
||||
\[
|
||||
\mathcal C_n[-z\mathcal M(2n+1,-z/(1-z))]
|
||||
-\theta[-z\mathcal M(2n+1,-z/(1-z))]
|
||||
-[-z\mathcal M(2n+1,-z/(1-z))]\mathcal C_{n+1}=0.
|
||||
\]
|
||||
|
||||
The checker cross-multiplies all sixteen entries independently.
|
||||
|
||||
The exact matrix-to-scalar bridge is
|
||||
|
||||
\[
|
||||
\sum_{r=0}^3\pi_r(t)
|
||||
\left[-z\mathcal M(2n+1,-z/(1-z))\right]_{r+1,1}
|
||||
-d_0(t)-zd_1(t)=0.
|
||||
\]
|
||||
|
||||
The checker expands all five reconstruction/bridge equations before it
|
||||
checks any hypergeometric coefficient identity. Thus \(d_0+zd_1\) is tied
|
||||
to the displayed challenge matrix and is not a guessed surrogate.
|
||||
|
||||
Now define
|
||||
|
||||
\[
|
||||
\nu_n=\frac{576n^2(2n+1)^2}{(6n+1)(6n+5)},
|
||||
\]
|
||||
|
||||
\[
|
||||
d_0(t)=
|
||||
\frac{72(2n+1)^2(2n-t)^3}{n(6n+1)(6n+5)}
|
||||
\]
|
||||
|
||||
and
|
||||
|
||||
\[
|
||||
d_1(t)=-\frac{P(n,t)}{n(2n+1)(6n+1)(6n+5)},
|
||||
\]
|
||||
|
||||
where
|
||||
|
||||
\[
|
||||
\begin{aligned}
|
||||
P(n,t)={}&-5n-76n^2+1404n^3+4360n^4+4320n^5+1440n^6\\
|
||||
&+(5+127n-1760n^2-6536n^3-7632n^4-3024n^5)t\\
|
||||
&+(-51+659n+3086n^2+4500n^3+2232n^4)t^2\\
|
||||
&+(-72-432n-864n^2-576n^3)t^3.
|
||||
\end{aligned}
|
||||
\]
|
||||
|
||||
Let
|
||||
|
||||
\[
|
||||
h_{n,k}=
|
||||
\frac{(-n)_k(-n-\frac16)_k(-n-\frac12)_k(-n-\frac56)_k}
|
||||
{(1-2n)_k^3k!},
|
||||
\qquad0\le k\le n.
|
||||
\]
|
||||
|
||||
The induction is exactly:
|
||||
|
||||
\[
|
||||
d_0(0)-\nu_n=0,
|
||||
\]
|
||||
|
||||
\[
|
||||
d_0(k)+d_1(k-1)\frac{h_{n,k-1}}{h_{n,k}}
|
||||
-\nu_n\frac{h_{n+1,k}}{h_{n,k}}=0
|
||||
\qquad(1\le k\le n),
|
||||
\]
|
||||
|
||||
\[
|
||||
d_1(n)+
|
||||
\nu_n\frac{(n+\frac76)(n+\frac32)(n+\frac{11}{6})}
|
||||
{8(2n+1)^3}=0.
|
||||
\]
|
||||
|
||||
Together with
|
||||
|
||||
\[
|
||||
q_0(x)=18/x+159/4,\qquad Q_0(x)=xq_0(x),
|
||||
\]
|
||||
|
||||
\[
|
||||
p_1(z)=(1-z)Q_0(-z/(1-z))
|
||||
=18(1-\tfrac{77}{24}z),\qquad
|
||||
p_{n+1}=(d_0(\theta)+zd_1(\theta))p_n,
|
||||
\]
|
||||
|
||||
\[
|
||||
-zC(-z/(1-z))
|
||||
=\left.(\pi_0(\theta)p_1,\pi_1(\theta)p_1,
|
||||
\pi_2(\theta)p_1,\pi_3(\theta)p_1)\right|_{n=1},
|
||||
\]
|
||||
|
||||
\[
|
||||
\left[
|
||||
\theta(\theta-2)^3
|
||||
-z(\theta-1)(\theta-\tfrac76)
|
||||
(\theta-\tfrac32)(\theta-\tfrac{11}{6})
|
||||
\right]p_1=0,
|
||||
\]
|
||||
|
||||
\[
|
||||
\theta[-zC(-z/(1-z))]
|
||||
+[-zC(-z/(1-z))]\mathcal C_1=0,
|
||||
\]
|
||||
|
||||
and
|
||||
|
||||
\[
|
||||
\deg((d_0(\theta)+zd_1(\theta))p_n)\le n+1,
|
||||
\]
|
||||
|
||||
these equations prove every coefficient, including the top boundary. The
|
||||
free \(z^{2n}\) branch of the fourth-order differential equation is never
|
||||
invoked.
|
||||
|
||||
For \(n\ge1\) and \(1\le k\le n\), all integer- and
|
||||
Pochhammer-dependent factors in the coefficient identities are nonzero.
|
||||
The \(z^{-1}\) factors in the horizontal reconstruction are handled in
|
||||
\(\mathbb Q(n,z)(t)\) and cross-multiplied first; the checked base functions
|
||||
have removable limits at \(z=0\).
|
||||
|
||||
## 5. Short hypergeometric identities
|
||||
|
||||
For
|
||||
|
||||
\[
|
||||
y(z)=\sum_{k\ge0}
|
||||
\frac{(\frac16)_k(\frac12)_k(\frac56)_k}{(k!)^3}z^k,
|
||||
\]
|
||||
|
||||
the coefficient ratio is
|
||||
|
||||
\[
|
||||
\frac{[z^{k+1}]y}{[z^k]y}
|
||||
=\frac{(k+\frac16)(k+\frac12)(k+\frac56)}{(k+1)^3}.
|
||||
\]
|
||||
|
||||
Therefore
|
||||
|
||||
\[
|
||||
y-1=\frac5{72}z\,
|
||||
{}_4F_3\left(
|
||||
\begin{matrix}1,\frac76,\frac32,\frac{11}{6}\\2,2,2\end{matrix};z
|
||||
\right)
|
||||
\]
|
||||
|
||||
and coefficient comparison gives
|
||||
|
||||
\[
|
||||
\left[\theta^3-
|
||||
z(\theta+\tfrac16)(\theta+\tfrac12)(\theta+\tfrac56)\right]y=0.
|
||||
\]
|
||||
|
||||
With \(z=-x/(1-x)\), this expands to
|
||||
|
||||
\[
|
||||
72\theta^3y+108x\theta^2y+46x\theta y+5xy=0.
|
||||
\]
|
||||
|
||||
## 6. Replay
|
||||
|
||||
From the submission directory:
|
||||
|
||||
```sh
|
||||
python3 certificates/p28_standalone_equations.py
|
||||
```
|
||||
|
||||
Success means every denominator-cleared numerator has an empty coefficient
|
||||
dictionary. A stored transcript is not consulted.
|
||||
|
|
@ -8,12 +8,13 @@ It certifies the algebraic part of the cyclic-frame lemma:
|
|||
* the exact balanced limit S;
|
||||
* charpoly(S)=Q_R/R^2;
|
||||
* an explicit left eigenvector w_rho;
|
||||
* every coordinate of w_rho is positive at the exterior root; and
|
||||
* every coordinate of w_rho is nonzero; and
|
||||
* the limiting cyclic frame [e1,S e1,S^2 e1,S^3 e1] is invertible.
|
||||
|
||||
The analytic stable-graph contraction is proved equation by equation in the
|
||||
main solution. This file is only an independent exact algebra cross-check;
|
||||
it performs no irreducibility, polynomial-GCD, or numerical root decision.
|
||||
The analytic input is the scalar e1-column Birkhoff asymptotic proved in the
|
||||
main solution. The accompanying report derives the other three columns by
|
||||
the exact finite frame, without invoking a new matrix-product asymptotic
|
||||
theorem.
|
||||
"""
|
||||
from sage.all import *
|
||||
|
||||
|
|
@ -100,18 +101,18 @@ Q = (
|
|||
+ 1
|
||||
)
|
||||
assert Rx(S.charpoly("x")) == Q/R^2
|
||||
assert Q.is_irreducible()
|
||||
assert gcd(Q, Q.derivative()) == 1
|
||||
|
||||
# On |x|=1 the cubic term strictly dominates all other terms. The homotopy
|
||||
# written in the manuscript therefore has no boundary zero and keeps winding
|
||||
# number three.
|
||||
# On |x|=1 the cubic term strictly dominates all other terms. Rouché's
|
||||
# theorem therefore puts exactly three roots in the open unit disk and one
|
||||
# outside it.
|
||||
rouche_margin = (
|
||||
(64*R^3-56*R^2-4)
|
||||
- (R^2 + (48*R^2-262*R+220) + (12*R-8) + 1)
|
||||
)
|
||||
assert rouche_margin == 64*R^3-105*R^2+250*R-217
|
||||
assert rouche_margin > 0
|
||||
assert Q(1) == -(64*R^3-105*R^2+274*R-233)
|
||||
assert Q(1) < 0
|
||||
|
||||
# First row of R^2 adj(xI-S). At Q(x)=0 it is a left eigenvector.
|
||||
w = vector(Rx, [
|
||||
|
|
@ -124,17 +125,9 @@ w = vector(Rx, [
|
|||
])
|
||||
assert w * (x*identity_matrix(Rx, 4) - S.change_ring(Rx)) == vector(Rx, [Q, 0, 0, 0])
|
||||
|
||||
# These are the positive rewrites used at the unique exterior root rho>1.
|
||||
w_positive = vector(Rx, [
|
||||
R*x*(R*x^2-7) + 12*R^2*x^2 + 4*x^2 + 44*x + 10,
|
||||
2*(R^2*x*((48*R-27)*x-28)
|
||||
+ (194*R-108)*x + 40*R-23),
|
||||
R^2*x*((48*R-17)*x-8)
|
||||
+ (198*R-68)*x + 71*R-32,
|
||||
2*R*(8 + (17+3*R)*x + 4*R^2*x^2),
|
||||
])
|
||||
assert w_positive == w
|
||||
assert R > 7
|
||||
# Since Q is irreducible of degree four and every w_j has degree < 4,
|
||||
# gcd(Q,w_j)=1 proves w_j(rho) != 0 for every root rho of Q.
|
||||
assert [gcd(Q, z) for z in w] == [Rx(1)]*4
|
||||
|
||||
e1 = vector(QQ, [1, 0, 0, 0])
|
||||
C = matrix(QQ, 4, 4)
|
||||
|
|
@ -145,7 +138,8 @@ assert C.det() == detC_expected
|
|||
assert C.det() != 0
|
||||
|
||||
print("PASS: exact balanced limit and characteristic quartic")
|
||||
print("PASS: boundary-free homotopy has winding number three")
|
||||
print("PASS: explicit exterior-root eigenvector has four positive coordinates")
|
||||
print("PASS: Rouché separation gives three roots inside |x|<1")
|
||||
print("PASS: explicit left eigenvector has four nonvanishing coordinates")
|
||||
print("PASS: limiting e1 cyclic frame is invertible")
|
||||
print("The analytic stable-graph contraction is proved in solution.tex.")
|
||||
print("CONCLUSION (using the certified scalar e1 Birkhoff asymptotic):")
|
||||
print(" lim_N P_(N,j)/Q_(N,j) is independent of j=1,2,3,4")
|
||||
|
|
|
|||
|
|
@ -1,147 +0,0 @@
|
|||
#!/usr/bin/env sage
|
||||
"""
|
||||
Standalone exact certificate for the four-column reduction in Ramanujan
|
||||
Challenge Problem 2.8.
|
||||
|
||||
It certifies the algebraic part of the cyclic-frame lemma:
|
||||
|
||||
* the exact balanced limit S;
|
||||
* charpoly(S)=Q_R/R^2;
|
||||
* an explicit left eigenvector w_rho;
|
||||
* every coordinate of w_rho is positive at the exterior root; and
|
||||
* the limiting cyclic frame [e1,S e1,S^2 e1,S^3 e1] is invertible.
|
||||
|
||||
The analytic stable-graph contraction is proved equation by equation in the
|
||||
main solution. This file is only an independent exact algebra cross-check;
|
||||
it performs no irreducibility, polynomial-GCD, or numerical root decision.
|
||||
"""
|
||||
|
||||
|
||||
# This file was *autogenerated* from the file all_four_columns_certificate.sage
|
||||
from sage.all_cmdline import * # import sage library
|
||||
|
||||
_sage_const_151931373056001 = Integer(151931373056001); _sage_const_3 = Integer(3); _sage_const_2 = Integer(2); _sage_const_144 = Integer(144); _sage_const_5 = Integer(5); _sage_const_288 = Integer(288); _sage_const_4 = Integer(4); _sage_const_99 = Integer(99); _sage_const_333 = Integer(333); _sage_const_229 = Integer(229); _sage_const_114 = Integer(114); _sage_const_40 = Integer(40); _sage_const_64 = Integer(64); _sage_const_432 = Integer(432); _sage_const_864 = Integer(864); _sage_const_243 = Integer(243); _sage_const_909 = Integer(909); _sage_const_868 = Integer(868); _sage_const_80 = Integer(80); _sage_const_272 = Integer(272); _sage_const_153 = Integer(153); _sage_const_648 = Integer(648); _sage_const_860 = Integer(860); _sage_const_360 = Integer(360); _sage_const_1 = Integer(1); _sage_const_9 = Integer(9); _sage_const_63 = Integer(63); _sage_const_158 = Integer(158); _sage_const_168 = Integer(168); _sage_const_216 = Integer(216); _sage_const_36 = Integer(36); _sage_const_189 = Integer(189); _sage_const_316 = Integer(316); _sage_const_108 = Integer(108); _sage_const_54 = Integer(54); _sage_const_378 = Integer(378); _sage_const_948 = Integer(948); _sage_const_1008 = Integer(1008); _sage_const_384 = Integer(384); _sage_const_18 = Integer(18); _sage_const_45 = Integer(45); _sage_const_251 = Integer(251); _sage_const_1086 = Integer(1086); _sage_const_1384 = Integer(1384); _sage_const_576 = Integer(576); _sage_const_657 = Integer(657); _sage_const_1292 = Integer(1292); _sage_const_2064 = Integer(2064); _sage_const_1072 = Integer(1072); _sage_const_72 = Integer(72); _sage_const_702 = Integer(702); _sage_const_1069 = Integer(1069); _sage_const_2508 = Integer(2508); _sage_const_1512 = Integer(1512); _sage_const_180 = Integer(180); _sage_const_891 = Integer(891); _sage_const_1450 = Integer(1450); _sage_const_1116 = Integer(1116); _sage_const_1385 = Integer(1385); _sage_const_1422 = Integer(1422); _sage_const_6 = Integer(6); _sage_const_33 = Integer(33); _sage_const_58 = Integer(58); _sage_const_14 = Integer(14); _sage_const_32 = Integer(32); _sage_const_7 = Integer(7); _sage_const_0 = Integer(0); _sage_const_44 = Integer(44); _sage_const_96 = Integer(96); _sage_const_48 = Integer(48); _sage_const_17 = Integer(17); _sage_const_8 = Integer(8); _sage_const_12 = Integer(12); _sage_const_56 = Integer(56); _sage_const_262 = Integer(262); _sage_const_220 = Integer(220); _sage_const_105 = Integer(105); _sage_const_250 = Integer(250); _sage_const_217 = Integer(217); _sage_const_274 = Integer(274); _sage_const_233 = Integer(233); _sage_const_10 = Integer(10); _sage_const_23 = Integer(23); _sage_const_194 = Integer(194); _sage_const_28 = Integer(28); _sage_const_27 = Integer(27); _sage_const_71 = Integer(71); _sage_const_68 = Integer(68); _sage_const_198 = Integer(198); _sage_const_11 = Integer(11); _sage_const_128 = Integer(128); _sage_const_149 = Integer(149); _sage_const_43 = Integer(43)
|
||||
from sage.all import *
|
||||
|
||||
Pn = PolynomialRing(QQ, names=('n',)); (n,) = Pn._first_ngens(1)
|
||||
Fn = Pn.fraction_field()
|
||||
R = QQ(_sage_const_151931373056001 )
|
||||
|
||||
|
||||
def authoritative_matrix(u, R):
|
||||
"""Problem 2.8 transfer after 236337691420383=(14R-567)/9."""
|
||||
w = u*(_sage_const_3 *u-_sage_const_2 )*(_sage_const_3 *u+_sage_const_2 )
|
||||
|
||||
a1 = R*(_sage_const_144 *u**_sage_const_5 -_sage_const_288 *u**_sage_const_4 +_sage_const_144 *u**_sage_const_3 ) + (-_sage_const_99 *u**_sage_const_5 +_sage_const_333 *u**_sage_const_4 -_sage_const_229 *u**_sage_const_3 -_sage_const_114 *u**_sage_const_2 +_sage_const_40 *u+_sage_const_64 )
|
||||
a2 = R*(_sage_const_432 *u**_sage_const_4 -_sage_const_864 *u**_sage_const_3 +_sage_const_432 *u**_sage_const_2 ) + (-_sage_const_243 *u**_sage_const_4 +_sage_const_909 *u**_sage_const_3 -_sage_const_868 *u**_sage_const_2 -_sage_const_80 *u+_sage_const_272 )
|
||||
a3 = R*(_sage_const_432 *u**_sage_const_3 -_sage_const_864 *u**_sage_const_2 +_sage_const_432 *u) + (-_sage_const_153 *u**_sage_const_3 +_sage_const_648 *u**_sage_const_2 -_sage_const_860 *u+_sage_const_360 )
|
||||
a4 = R*_sage_const_144 *(u-_sage_const_1 )**_sage_const_2
|
||||
|
||||
b1 = R*(-_sage_const_144 *u**_sage_const_3 ) + (_sage_const_9 *u**_sage_const_4 +_sage_const_63 *u**_sage_const_3 +_sage_const_158 *u**_sage_const_2 +_sage_const_168 *u+_sage_const_64 )
|
||||
b2 = R*(_sage_const_216 *u**_sage_const_2 ) + (_sage_const_36 *u**_sage_const_3 -_sage_const_189 *u**_sage_const_2 -_sage_const_316 *u-_sage_const_168 )
|
||||
b3 = R*(_sage_const_108 *u) + (_sage_const_54 *u**_sage_const_2 -_sage_const_189 *u-_sage_const_158 )
|
||||
|
||||
c1 = R**_sage_const_2 *(-_sage_const_288 *u**_sage_const_3 ) + R*(_sage_const_54 *u**_sage_const_4 +_sage_const_378 *u**_sage_const_3 +_sage_const_948 *u**_sage_const_2 +_sage_const_1008 *u+_sage_const_384 ) + (_sage_const_18 *u**_sage_const_5 +_sage_const_45 *u**_sage_const_4 -_sage_const_251 *u**_sage_const_3 -_sage_const_1086 *u**_sage_const_2 -_sage_const_1384 *u-_sage_const_576 )
|
||||
c2 = R**_sage_const_2 *(-_sage_const_432 *u**_sage_const_2 ) + R*(_sage_const_153 *u**_sage_const_4 -_sage_const_657 *u**_sage_const_3 +_sage_const_1292 *u**_sage_const_2 +_sage_const_2064 *u+_sage_const_1072 ) + (-_sage_const_72 *u**_sage_const_4 +_sage_const_702 *u**_sage_const_3 -_sage_const_1069 *u**_sage_const_2 -_sage_const_2508 *u-_sage_const_1512 )
|
||||
c3 = R**_sage_const_2 *(-_sage_const_216 *u) + R*(_sage_const_180 *u**_sage_const_3 -_sage_const_891 *u**_sage_const_2 +_sage_const_1450 *u+_sage_const_1116 ) + (-_sage_const_108 *u**_sage_const_3 +_sage_const_864 *u**_sage_const_2 -_sage_const_1385 *u-_sage_const_1422 )
|
||||
c4 = R**_sage_const_2 *(-_sage_const_4 ) + R*(_sage_const_6 *u**_sage_const_2 -_sage_const_33 *u+_sage_const_58 +QQ(_sage_const_14 )/_sage_const_9 ) + (-_sage_const_4 *u**_sage_const_2 +_sage_const_32 *u-_sage_const_63 )
|
||||
|
||||
return matrix(Fn, [
|
||||
[a1/w, a2/w, a3/w, a4/w],
|
||||
[-u**_sage_const_3 , -_sage_const_3 *u**_sage_const_2 , -_sage_const_3 *u, -_sage_const_1 ],
|
||||
[b1/(_sage_const_144 *R), -b2/(_sage_const_72 *R), -b3/(_sage_const_36 *R),
|
||||
(-_sage_const_2 *R-(_sage_const_2 *u-_sage_const_7 ))/(_sage_const_2 *R)],
|
||||
[c1/(_sage_const_288 *R**_sage_const_2 ), c2/(_sage_const_144 *R**_sage_const_2 ), c3/(_sage_const_72 *R**_sage_const_2 ),
|
||||
c4/(_sage_const_4 *R**_sage_const_2 )],
|
||||
])
|
||||
|
||||
|
||||
def limit_at_infinity(ff):
|
||||
ff = Fn(ff)
|
||||
nu = ff.numerator()
|
||||
de = ff.denominator()
|
||||
dn = nu.degree()
|
||||
dd = de.degree()
|
||||
if dn < dd:
|
||||
return QQ(_sage_const_0 )
|
||||
if dn == dd:
|
||||
return QQ(nu[dn]) / QQ(de[dd])
|
||||
raise AssertionError("balanced entry still diverges at infinity: %s" % ff)
|
||||
|
||||
|
||||
u = _sage_const_2 *n + _sage_const_3
|
||||
M = authoritative_matrix(u, Fn(R))
|
||||
D0 = diagonal_matrix(Fn, [_sage_const_1 , n, n**_sage_const_2 , n**_sage_const_3 ])
|
||||
D1 = diagonal_matrix(Fn, [_sage_const_1 , n+_sage_const_1 , (n+_sage_const_1 )**_sage_const_2 , (n+_sage_const_1 )**_sage_const_3 ])
|
||||
B = D0.inverse() * M * D1 / (n+_sage_const_1 )**_sage_const_2
|
||||
S = matrix(QQ, _sage_const_4 , _sage_const_4 , [
|
||||
limit_at_infinity(B[i, j]) for i in range(_sage_const_4 ) for j in range(_sage_const_4 )
|
||||
])
|
||||
|
||||
S_expected = matrix(QQ, [
|
||||
[_sage_const_64 *R-_sage_const_44 , _sage_const_96 *R-_sage_const_54 , _sage_const_48 *R-_sage_const_17 , _sage_const_8 *R],
|
||||
[-_sage_const_8 , -_sage_const_12 , -_sage_const_6 , -_sage_const_1 ],
|
||||
[_sage_const_1 /R, -_sage_const_4 /R, -_sage_const_6 /R, -_sage_const_2 /R],
|
||||
[_sage_const_2 /R**_sage_const_2 , (_sage_const_17 *R-_sage_const_8 )/R**_sage_const_2 , _sage_const_4 *(_sage_const_5 *R-_sage_const_3 )/R**_sage_const_2 , (_sage_const_6 *R-_sage_const_4 )/R**_sage_const_2 ],
|
||||
])
|
||||
assert S == S_expected
|
||||
|
||||
Rx = PolynomialRing(QQ, names=('x',)); (x,) = Rx._first_ngens(1)
|
||||
Q = (
|
||||
R**_sage_const_2 *x**_sage_const_4
|
||||
- (_sage_const_64 *R**_sage_const_3 - _sage_const_56 *R**_sage_const_2 - _sage_const_4 )*x**_sage_const_3
|
||||
+ (_sage_const_48 *R**_sage_const_2 - _sage_const_262 *R + _sage_const_220 )*x**_sage_const_2
|
||||
- (_sage_const_12 *R - _sage_const_8 )*x
|
||||
+ _sage_const_1
|
||||
)
|
||||
assert Rx(S.charpoly("x")) == Q/R**_sage_const_2
|
||||
|
||||
# On |x|=1 the cubic term strictly dominates all other terms. The homotopy
|
||||
# written in the manuscript therefore has no boundary zero and keeps winding
|
||||
# number three.
|
||||
rouche_margin = (
|
||||
(_sage_const_64 *R**_sage_const_3 -_sage_const_56 *R**_sage_const_2 -_sage_const_4 )
|
||||
- (R**_sage_const_2 + (_sage_const_48 *R**_sage_const_2 -_sage_const_262 *R+_sage_const_220 ) + (_sage_const_12 *R-_sage_const_8 ) + _sage_const_1 )
|
||||
)
|
||||
assert rouche_margin == _sage_const_64 *R**_sage_const_3 -_sage_const_105 *R**_sage_const_2 +_sage_const_250 *R-_sage_const_217
|
||||
assert rouche_margin > _sage_const_0
|
||||
assert Q(_sage_const_1 ) == -(_sage_const_64 *R**_sage_const_3 -_sage_const_105 *R**_sage_const_2 +_sage_const_274 *R-_sage_const_233 )
|
||||
assert Q(_sage_const_1 ) < _sage_const_0
|
||||
|
||||
# First row of R^2 adj(xI-S). At Q(x)=0 it is a left eigenvector.
|
||||
w = vector(Rx, [
|
||||
_sage_const_10 + (_sage_const_44 -_sage_const_7 *R)*x + (_sage_const_4 +_sage_const_12 *R**_sage_const_2 )*x**_sage_const_2 + R**_sage_const_2 *x**_sage_const_3 ,
|
||||
_sage_const_2 *((-_sage_const_23 +_sage_const_40 *R) + (-_sage_const_108 +_sage_const_194 *R-_sage_const_28 *R**_sage_const_2 )*x
|
||||
+ (-_sage_const_27 *R**_sage_const_2 +_sage_const_48 *R**_sage_const_3 )*x**_sage_const_2 ),
|
||||
(-_sage_const_32 +_sage_const_71 *R) + (-_sage_const_68 +_sage_const_198 *R-_sage_const_8 *R**_sage_const_2 )*x
|
||||
+ (-_sage_const_17 *R**_sage_const_2 +_sage_const_48 *R**_sage_const_3 )*x**_sage_const_2 ,
|
||||
_sage_const_2 *R*(_sage_const_8 + (_sage_const_17 +_sage_const_3 *R)*x + _sage_const_4 *R**_sage_const_2 *x**_sage_const_2 ),
|
||||
])
|
||||
assert w * (x*identity_matrix(Rx, _sage_const_4 ) - S.change_ring(Rx)) == vector(Rx, [Q, _sage_const_0 , _sage_const_0 , _sage_const_0 ])
|
||||
|
||||
# These are the positive rewrites used at the unique exterior root rho>1.
|
||||
w_positive = vector(Rx, [
|
||||
R*x*(R*x**_sage_const_2 -_sage_const_7 ) + _sage_const_12 *R**_sage_const_2 *x**_sage_const_2 + _sage_const_4 *x**_sage_const_2 + _sage_const_44 *x + _sage_const_10 ,
|
||||
_sage_const_2 *(R**_sage_const_2 *x*((_sage_const_48 *R-_sage_const_27 )*x-_sage_const_28 )
|
||||
+ (_sage_const_194 *R-_sage_const_108 )*x + _sage_const_40 *R-_sage_const_23 ),
|
||||
R**_sage_const_2 *x*((_sage_const_48 *R-_sage_const_17 )*x-_sage_const_8 )
|
||||
+ (_sage_const_198 *R-_sage_const_68 )*x + _sage_const_71 *R-_sage_const_32 ,
|
||||
_sage_const_2 *R*(_sage_const_8 + (_sage_const_17 +_sage_const_3 *R)*x + _sage_const_4 *R**_sage_const_2 *x**_sage_const_2 ),
|
||||
])
|
||||
assert w_positive == w
|
||||
assert R > _sage_const_7
|
||||
|
||||
e1 = vector(QQ, [_sage_const_1 , _sage_const_0 , _sage_const_0 , _sage_const_0 ])
|
||||
C = matrix(QQ, _sage_const_4 , _sage_const_4 )
|
||||
for j in range(_sage_const_4 ):
|
||||
C.set_column(j, S**j * e1)
|
||||
detC_expected = -_sage_const_4 *(_sage_const_27 *R-_sage_const_11 )*(_sage_const_128 *R**_sage_const_2 -_sage_const_149 *R-_sage_const_43 )/R**_sage_const_6
|
||||
assert C.det() == detC_expected
|
||||
assert C.det() != _sage_const_0
|
||||
|
||||
print("PASS: exact balanced limit and characteristic quartic")
|
||||
print("PASS: boundary-free homotopy has winding number three")
|
||||
print("PASS: explicit exterior-root eigenvector has four positive coordinates")
|
||||
print("PASS: limiting e1 cyclic frame is invertible")
|
||||
print("The analytic stable-graph contraction is proved in solution.tex.")
|
||||
|
||||
|
|
@ -7,9 +7,6 @@ known:
|
|||
|
||||
c_N/c_(N-1) >= 29*N^2,
|
||||
sum k^3*(1/3)^k < 5,
|
||||
||E_0||_infinity < 6000,
|
||||
||M_0||_infinity < 10^7,
|
||||
||B_m||_infinity < 4*10^8 with the negative-exponent case separated,
|
||||
beta(x_official) < 4*10^-19 < 1.
|
||||
"""
|
||||
|
||||
|
|
@ -80,42 +77,6 @@ for row, caps in zip(raw_estimates, raw_caps):
|
|||
assert cap < 10_000
|
||||
|
||||
|
||||
# On |x|=1/4 the compact row has the following component bounds.
|
||||
c_bounds = [
|
||||
18*4 + F(159, 4),
|
||||
54*4 + F(131, 2),
|
||||
54*4 + 27,
|
||||
18*4,
|
||||
]
|
||||
pascal_row_sum = 8
|
||||
e0_bound = 5*sum(c_bounds) + F(5, 4)*pascal_row_sum
|
||||
assert e0_bound < 6000
|
||||
|
||||
|
||||
# The entrywise estimate at u=3 bounds M_0. Indices are one-based, so the
|
||||
# powers are u^(i+2-j). Negative exponents are kept as exact fractions.
|
||||
m0_row_bounds = [
|
||||
10_000*sum(F(3)**(i+2-j) for j in range(1, 5))
|
||||
for i in range(1, 5)
|
||||
]
|
||||
assert max(m0_row_bounds) < 10_000_000
|
||||
|
||||
|
||||
# For m>=1, u=2m+3 gives u/m<=5 and
|
||||
#
|
||||
# 2 <= u/(m+1) <= 5/2.
|
||||
#
|
||||
# The exponent 3-j is negative at j=4, so that column must use the lower
|
||||
# bound 2, not the upper bound 5/2. Summing the four column factors gives
|
||||
# 25/4 + 5/2 + 1 + 1/2 = 41/4.
|
||||
balanced_row_cap = 10_000 * 5**3 * (
|
||||
F(25, 4) + F(5, 2) + 1 + F(1, 2)
|
||||
)
|
||||
assert balanced_row_cap == 12_812_500
|
||||
assert 4*10_000*5**3*F(25, 4) == 31_250_000
|
||||
assert 31_250_000 < TRANSFER_BOUND
|
||||
|
||||
|
||||
beta = (
|
||||
F(TRANSFER_BOUND, 29)
|
||||
* X**2
|
||||
|
|
@ -129,8 +90,5 @@ assert beta < 1
|
|||
print("PASS: exact fixed-x convergence constants")
|
||||
print("sum k^3/3^k =", theta3_sum)
|
||||
print("entrywise transfer constants < 10000")
|
||||
print("||E_0||_infinity bound =", e0_bound, "< 6000")
|
||||
print("||M_0||_infinity bound =", max(m0_row_bounds), "< 10^7")
|
||||
print("||B_m||_infinity bound < 31250000 < 4e8")
|
||||
print("beta =", beta)
|
||||
print("beta < 4e-19 < 1")
|
||||
|
|
|
|||
|
|
@ -1,363 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Dependency-free algebra for the explicit dominant-product argument.
|
||||
|
||||
The script uses exact rational arithmetic and elementary polynomial expansion
|
||||
only. It verifies:
|
||||
|
||||
* the balanced transfer limit ``B_n = S + O(1/n)`` from the displayed matrix;
|
||||
* ``det(t I-S)=Q_R(t)/R^2``;
|
||||
* the strict unit-circle coefficient dominance;
|
||||
* the explicit polynomial left-eigenvector identity; and
|
||||
* rewrites making all four dominant eigenvector coordinates positive at the
|
||||
unique real exterior root.
|
||||
|
||||
It performs no irreducibility test, polynomial GCD, root finding, or numerical
|
||||
sampling.
|
||||
"""
|
||||
|
||||
from fractions import Fraction as F
|
||||
from itertools import permutations
|
||||
|
||||
|
||||
def trim(poly):
|
||||
poly = [F(value) for value in poly]
|
||||
while len(poly) > 1 and poly[-1] == 0:
|
||||
poly.pop()
|
||||
return poly
|
||||
|
||||
|
||||
def padd(left, right):
|
||||
size = max(len(left), len(right))
|
||||
return trim([
|
||||
(left[index] if index < len(left) else F(0))
|
||||
+ (right[index] if index < len(right) else F(0))
|
||||
for index in range(size)
|
||||
])
|
||||
|
||||
|
||||
def pneg(poly):
|
||||
return trim([-value for value in poly])
|
||||
|
||||
|
||||
def psub(left, right):
|
||||
return padd(left, pneg(right))
|
||||
|
||||
|
||||
def pmul(left, right):
|
||||
result = [F(0)] * (len(left) + len(right) - 1)
|
||||
for i, left_value in enumerate(left):
|
||||
for j, right_value in enumerate(right):
|
||||
result[i+j] += left_value * right_value
|
||||
return trim(result)
|
||||
|
||||
|
||||
def pscale(poly, scalar):
|
||||
scalar = F(scalar)
|
||||
return trim([scalar*value for value in poly])
|
||||
|
||||
|
||||
def ppow(poly, exponent):
|
||||
result = [F(1)]
|
||||
base = trim(poly)
|
||||
power = exponent
|
||||
while power:
|
||||
if power & 1:
|
||||
result = pmul(result, base)
|
||||
base = pmul(base, base)
|
||||
power //= 2
|
||||
return result
|
||||
|
||||
|
||||
def pconstant(value):
|
||||
return [F(value)]
|
||||
|
||||
|
||||
N = [F(0), F(1)]
|
||||
ONE = [F(1)]
|
||||
N_PLUS_ONE = [F(1), F(1)]
|
||||
|
||||
|
||||
class RatPoly:
|
||||
"""Unreduced rational function in n over QQ."""
|
||||
|
||||
def __init__(self, numerator=ONE, denominator=ONE):
|
||||
self.numerator = trim(numerator)
|
||||
self.denominator = trim(denominator)
|
||||
if self.denominator == [F(0)]:
|
||||
raise ZeroDivisionError
|
||||
|
||||
def __add__(self, other):
|
||||
other = as_rat(other)
|
||||
return RatPoly(
|
||||
padd(
|
||||
pmul(self.numerator, other.denominator),
|
||||
pmul(other.numerator, self.denominator),
|
||||
),
|
||||
pmul(self.denominator, other.denominator),
|
||||
)
|
||||
|
||||
__radd__ = __add__
|
||||
|
||||
def __neg__(self):
|
||||
return RatPoly(pneg(self.numerator), self.denominator)
|
||||
|
||||
def __sub__(self, other):
|
||||
return self + (-as_rat(other))
|
||||
|
||||
def __rsub__(self, other):
|
||||
return as_rat(other) - self
|
||||
|
||||
def __mul__(self, other):
|
||||
other = as_rat(other)
|
||||
return RatPoly(
|
||||
pmul(self.numerator, other.numerator),
|
||||
pmul(self.denominator, other.denominator),
|
||||
)
|
||||
|
||||
__rmul__ = __mul__
|
||||
|
||||
def __truediv__(self, other):
|
||||
other = as_rat(other)
|
||||
return RatPoly(
|
||||
pmul(self.numerator, other.denominator),
|
||||
pmul(self.denominator, other.numerator),
|
||||
)
|
||||
|
||||
def __rtruediv__(self, other):
|
||||
return as_rat(other) / self
|
||||
|
||||
def __pow__(self, exponent):
|
||||
if exponent >= 0:
|
||||
return RatPoly(
|
||||
ppow(self.numerator, exponent),
|
||||
ppow(self.denominator, exponent),
|
||||
)
|
||||
return RatPoly(
|
||||
ppow(self.denominator, -exponent),
|
||||
ppow(self.numerator, -exponent),
|
||||
)
|
||||
|
||||
|
||||
def as_rat(value):
|
||||
if isinstance(value, RatPoly):
|
||||
return value
|
||||
if isinstance(value, list):
|
||||
return RatPoly(value)
|
||||
return RatPoly(pconstant(value))
|
||||
|
||||
|
||||
def limit_at_infinity(value):
|
||||
value = as_rat(value)
|
||||
numerator_degree = len(value.numerator)-1
|
||||
denominator_degree = len(value.denominator)-1
|
||||
if numerator_degree < denominator_degree:
|
||||
return F(0)
|
||||
if numerator_degree == denominator_degree:
|
||||
return value.numerator[-1] / value.denominator[-1]
|
||||
raise AssertionError("balanced entry diverges")
|
||||
|
||||
|
||||
def vanishes_as_inverse_n(value):
|
||||
value = as_rat(value)
|
||||
if value.numerator == [F(0)]:
|
||||
return True
|
||||
return len(value.denominator)-len(value.numerator) >= 1
|
||||
|
||||
|
||||
def matrix_multiply(left, right):
|
||||
return [
|
||||
[
|
||||
sum(left[i][k]*right[k][j] for k in range(len(right)))
|
||||
for j in range(len(right[0]))
|
||||
]
|
||||
for i in range(len(left))
|
||||
]
|
||||
|
||||
|
||||
def permutation_sign(permutation):
|
||||
inversions = sum(
|
||||
permutation[i] > permutation[j]
|
||||
for i in range(len(permutation))
|
||||
for j in range(i+1, len(permutation))
|
||||
)
|
||||
return -1 if inversions % 2 else 1
|
||||
|
||||
|
||||
def determinant_polynomial(matrix):
|
||||
size = len(matrix)
|
||||
result = [F(0)]
|
||||
for permutation in permutations(range(size)):
|
||||
term = [F(permutation_sign(permutation))]
|
||||
for row, column in enumerate(permutation):
|
||||
term = pmul(term, matrix[row][column])
|
||||
result = padd(result, term)
|
||||
return trim(result)
|
||||
|
||||
|
||||
R = F(151931373056001)
|
||||
u = RatPoly([F(3), F(2)])
|
||||
w = u*(3*u-2)*(3*u+2)
|
||||
|
||||
a1 = R*(144*u**5-288*u**4+144*u**3) + (
|
||||
-99*u**5+333*u**4-229*u**3-114*u**2+40*u+64
|
||||
)
|
||||
a2 = R*(432*u**4-864*u**3+432*u**2) + (
|
||||
-243*u**4+909*u**3-868*u**2-80*u+272
|
||||
)
|
||||
a3 = R*(432*u**3-864*u**2+432*u) + (
|
||||
-153*u**3+648*u**2-860*u+360
|
||||
)
|
||||
a4 = R*144*(u-1)**2
|
||||
|
||||
b1 = R*(-144*u**3) + (9*u**4+63*u**3+158*u**2+168*u+64)
|
||||
b2 = R*(216*u**2) + (36*u**3-189*u**2-316*u-168)
|
||||
b3 = R*(108*u) + (54*u**2-189*u-158)
|
||||
|
||||
c1 = (
|
||||
R**2*(-288*u**3)
|
||||
+ R*(54*u**4+378*u**3+948*u**2+1008*u+384)
|
||||
+ (18*u**5+45*u**4-251*u**3-1086*u**2-1384*u-576)
|
||||
)
|
||||
c2 = (
|
||||
R**2*(-432*u**2)
|
||||
+ R*(153*u**4-657*u**3+1292*u**2+2064*u+1072)
|
||||
+ (-72*u**4+702*u**3-1069*u**2-2508*u-1512)
|
||||
)
|
||||
c3 = (
|
||||
R**2*(-216*u)
|
||||
+ R*(180*u**3-891*u**2+1450*u+1116)
|
||||
+ (-108*u**3+864*u**2-1385*u-1422)
|
||||
)
|
||||
c4 = (
|
||||
R**2*(-4)
|
||||
+ R*(6*u**2-33*u+58+F(14, 9))
|
||||
+ (-4*u**2+32*u-63)
|
||||
)
|
||||
|
||||
M = [
|
||||
[a1/w, a2/w, a3/w, a4/w],
|
||||
[-u**3, -3*u**2, -3*u, -1],
|
||||
[b1/(144*R), -b2/(72*R), -b3/(36*R), (-2*R-(2*u-7))/(2*R)],
|
||||
[c1/(288*R**2), c2/(144*R**2), c3/(72*R**2), c4/(4*R**2)],
|
||||
]
|
||||
|
||||
B = [
|
||||
[
|
||||
M[i][j]
|
||||
* RatPoly(ppow(N_PLUS_ONE, j))
|
||||
/ RatPoly(pmul(ppow(N, i), ppow(N_PLUS_ONE, 2)))
|
||||
for j in range(4)
|
||||
]
|
||||
for i in range(4)
|
||||
]
|
||||
|
||||
S = [
|
||||
[64*R-44, 96*R-54, 48*R-17, 8*R],
|
||||
[-8, -12, -6, -1],
|
||||
[1/R, -4/R, -6/R, -2/R],
|
||||
[
|
||||
2/R**2,
|
||||
(17*R-8)/R**2,
|
||||
4*(5*R-3)/R**2,
|
||||
(6*R-4)/R**2,
|
||||
],
|
||||
]
|
||||
|
||||
for row in range(4):
|
||||
for column in range(4):
|
||||
assert limit_at_infinity(B[row][column]) == S[row][column]
|
||||
assert vanishes_as_inverse_n(B[row][column]-S[row][column])
|
||||
print("PASS: balanced transfer is S+O(1/n) entry by entry")
|
||||
|
||||
|
||||
# Characteristic polynomial det(tI-S).
|
||||
t_poly = [F(0), F(1)]
|
||||
char_matrix = [
|
||||
[
|
||||
psub(t_poly, pconstant(S[i][j]))
|
||||
if i == j else pconstant(-S[i][j])
|
||||
for j in range(4)
|
||||
]
|
||||
for i in range(4)
|
||||
]
|
||||
characteristic = determinant_polynomial(char_matrix)
|
||||
Q = [
|
||||
F(1),
|
||||
-(12*R-8),
|
||||
48*R**2-262*R+220,
|
||||
-(64*R**3-56*R**2-4),
|
||||
R**2,
|
||||
]
|
||||
assert characteristic == pscale(Q, F(1, R**2))
|
||||
print("PASS: det(tI-S)=Q_R(t)/R^2")
|
||||
|
||||
|
||||
margin = 64*R**3-105*R**2+250*R-217
|
||||
assert margin > 0
|
||||
q_at_one = sum(Q)
|
||||
assert q_at_one == -(64*R**3-105*R**2+274*R-233)
|
||||
assert q_at_one < 0
|
||||
print("PASS: exact unit-circle dominance and positive exterior-root sign")
|
||||
|
||||
|
||||
w_left = [
|
||||
[10, 44-7*R, 4+12*R**2, R**2],
|
||||
[2*(-23+40*R), 2*(-108+194*R-28*R**2), 2*(-27*R**2+48*R**3)],
|
||||
[-32+71*R, -68+198*R-8*R**2, -17*R**2+48*R**3],
|
||||
[16*R, 2*R*(17+3*R), 8*R**3],
|
||||
]
|
||||
|
||||
residual = []
|
||||
for column in range(4):
|
||||
value = [F(0)]
|
||||
for row in range(4):
|
||||
factor = (
|
||||
psub(t_poly, pconstant(S[row][column]))
|
||||
if row == column else pconstant(-S[row][column])
|
||||
)
|
||||
value = padd(value, pmul(w_left[row], factor))
|
||||
residual.append(value)
|
||||
assert residual == [Q, [F(0)], [F(0)], [F(0)]]
|
||||
print("PASS: w(t)(tI-S)=(Q_R(t),0,0,0)")
|
||||
|
||||
|
||||
# Exact rewrites used to prove positivity for R>7 and t=rho>1.
|
||||
w1_rewrite = padd(
|
||||
pmul(pscale(t_poly, R), psub(pscale(ppow(t_poly, 2), R), [F(7)])),
|
||||
padd(
|
||||
pscale(ppow(t_poly, 2), 12*R**2+4),
|
||||
padd(pscale(t_poly, 44), [F(10)]),
|
||||
),
|
||||
)
|
||||
w2_half_rewrite = padd(
|
||||
pmul(
|
||||
pscale(t_poly, R**2),
|
||||
psub(pscale(t_poly, 48*R-27), [F(28)]),
|
||||
),
|
||||
padd(pscale(t_poly, 194*R-108), [40*R-23]),
|
||||
)
|
||||
w3_rewrite = padd(
|
||||
pmul(
|
||||
pscale(t_poly, R**2),
|
||||
psub(pscale(t_poly, 48*R-17), [F(8)]),
|
||||
),
|
||||
padd(pscale(t_poly, 198*R-68), [71*R-32]),
|
||||
)
|
||||
w4_rewrite = pscale(
|
||||
padd([F(8)], padd(pscale(t_poly, 17+3*R), pscale(ppow(t_poly, 2), 4*R**2))),
|
||||
2*R,
|
||||
)
|
||||
|
||||
assert w1_rewrite == w_left[0]
|
||||
assert pscale(w2_half_rewrite, 2) == w_left[1]
|
||||
assert w3_rewrite == w_left[2]
|
||||
assert w4_rewrite == w_left[3]
|
||||
assert R > 7
|
||||
assert 48*R-55 > 0
|
||||
assert 48*R-25 > 0
|
||||
assert 194*R-108 > 0
|
||||
assert 198*R-68 > 0
|
||||
assert 40*R-23 > 0
|
||||
assert 71*R-32 > 0
|
||||
print("PASS: all four exterior-root eigenvector coordinates are positive")
|
||||
print("No irreducibility test, GCD, root finder, or numerical sample was used.")
|
||||
|
|
@ -6,7 +6,7 @@ During evaluation of In[1]:= PASS: the scalar step operator has only z-degrees z
|
|||
During evaluation of In[1]:= PASS: constant-term normalization recurrence
|
||||
During evaluation of In[1]:= PASS: generic all-n terminating contiguity coefficient
|
||||
During evaluation of In[1]:= PASS: terminating top-coefficient boundary
|
||||
During evaluation of In[1]:= PASS: tail gauge satisfies the explicit row-zero coefficient identities
|
||||
During evaluation of In[1]:= PASS: tail gauge selects the exponent-zero analytic solution
|
||||
During evaluation of In[1]:= PASS: nonterminating kernel normalization and exact contiguity
|
||||
During evaluation of In[1]:= PASS: binomial jet converts K_0 to the CM first jet
|
||||
During evaluation of In[1]:= PASS: compact denominator row reduces to the 3F2 operator
|
||||
|
|
@ -16,10 +16,10 @@ During evaluation of In[1]:= PASS: regularized determinant has exact x-adic orde
|
|||
During evaluation of In[1]:= PASS: Smith valuations are exactly (0,1,1,1)
|
||||
During evaluation of In[1]:= PASS: regular annihilator transfer gains one power of x
|
||||
During evaluation of In[1]:= PASS: balanced characteristic polynomial is the authoritative quartic
|
||||
During evaluation of In[1]:= PASS: exterior characteristic root is positive
|
||||
During evaluation of In[1]:= PASS: unit-circle homotopy has winding number three
|
||||
During evaluation of In[1]:= PASS: characteristic quartic is irreducible
|
||||
During evaluation of In[1]:= PASS: Rouche separation has three roots in the unit disk
|
||||
During evaluation of In[1]:= PASS: limiting first-coordinate cyclic frame is invertible
|
||||
During evaluation of In[1]:= PASS: dominant left eigenvector has four positive exterior-root rewrites
|
||||
During evaluation of In[1]:= PASS: dominant left eigenvector has four nonzero coordinates
|
||||
During evaluation of In[1]:= PASS: consolidated exact hypergeometric-closure certificate
|
||||
During evaluation of In[1]:= M_N K_(N+1)=K_N with kappa_(n+1)/kappa_n=-(6n+1)(6n+5)/(576n^2(2n+1)^2)
|
||||
During evaluation of In[1]:= P_n(z)[[1]]/a_n = 4F3(-n,-n-1/6,-n-1/2,-n-5/6;1-2n,1-2n,1-2n;z)
|
||||
|
|
|
|||
|
|
@ -295,7 +295,7 @@ tailColumnAtOrigin = Map[
|
|||
Limit[gauge[[All,1]],z->0]
|
||||
];
|
||||
check[
|
||||
"tail gauge satisfies the explicit row-zero coefficient identities",
|
||||
"tail gauge selects the exponent-zero analytic solution",
|
||||
tailColumnAtOrigin === {normalizationRatio,0,0,0}
|
||||
];
|
||||
|
||||
|
|
@ -441,16 +441,14 @@ check[
|
|||
] === 0
|
||||
];
|
||||
check[
|
||||
"exterior characteristic root is positive",
|
||||
qQuartic[1] ===
|
||||
-(64rOfficial^3-105rOfficial^2+274rOfficial-233)
|
||||
&& qQuartic[1] < 0
|
||||
"characteristic quartic is irreducible",
|
||||
TrueQ[IrreduciblePolynomialQ[qQuartic[lam]]]
|
||||
];
|
||||
|
||||
roucheMargin =
|
||||
64rOfficial^3-105rOfficial^2+250rOfficial-217;
|
||||
check[
|
||||
"unit-circle homotopy has winding number three",
|
||||
"Rouche separation has three roots in the unit disk",
|
||||
roucheMargin > 0
|
||||
];
|
||||
|
||||
|
|
@ -489,21 +487,12 @@ leftResidual = Map[
|
|||
]
|
||||
];
|
||||
check[
|
||||
"dominant left eigenvector has four positive exterior-root rewrites",
|
||||
"dominant left eigenvector has four nonzero coordinates",
|
||||
leftResidual === ConstantArray[0,4]
|
||||
&& Expand[wLeft[[1]]
|
||||
-(rOfficial lam(rOfficial lam^2-7)
|
||||
+12rOfficial^2 lam^2+4lam^2+44lam+10)] === 0
|
||||
&& Expand[wLeft[[2]]/2
|
||||
-(rOfficial^2 lam((48rOfficial-27)lam-28)
|
||||
+(194rOfficial-108)lam+40rOfficial-23)] === 0
|
||||
&& Expand[wLeft[[3]]
|
||||
-(rOfficial^2 lam((48rOfficial-17)lam-8)
|
||||
+(198rOfficial-68)lam+71rOfficial-32)] === 0
|
||||
&& Expand[wLeft[[4]]
|
||||
-2rOfficial(8+(17+3rOfficial)lam
|
||||
+4rOfficial^2 lam^2)] === 0
|
||||
&& rOfficial > 7
|
||||
&& And@@Map[
|
||||
Exponent[PolynomialGCD[qQuartic[lam],#],lam] === 0&,
|
||||
wLeft
|
||||
]
|
||||
];
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -121,8 +121,8 @@ assert P[1] == -(t+u)**3
|
|||
|
||||
|
||||
# Once row 0 gives F_N=P_0(t)F_{N+1}, the other rows must be its first,
|
||||
# second and third delta_N derivatives. The following exact factorizations
|
||||
# prove this directly. No polynomial division or remainder command is used.
|
||||
# second and third delta_N derivatives. The following exact congruences
|
||||
# prove precisely that, modulo the shifted 4F3 equation L(t)F=0.
|
||||
expected_quotients = [
|
||||
144*(u-1)**2 / (u*(3*u-2)*(3*u+2)*x),
|
||||
-1,
|
||||
|
|
@ -131,40 +131,9 @@ expected_quotients = [
|
|||
|
||||
for r in range(3):
|
||||
difference = T(shifted_derivative(P[r]) - P[r+1])
|
||||
quotient = T(expected_quotients[r])
|
||||
assert difference == quotient*L
|
||||
|
||||
|
||||
# The fourth companion closure is the row omitted by a mere three-row
|
||||
# derivative check. The preceding tail F_N satisfies
|
||||
#
|
||||
# L_minus(s)=s^4+l3*s^3+l2*s^2+l1*s+l0,
|
||||
#
|
||||
# with s=delta_N. Hence delta_N^4 F_N is the displayed linear combination
|
||||
# of the first four jet entries. The last identity below completes the
|
||||
# four-equation differential gauge.
|
||||
l0 = (u-1)*u*(3*u-2)*(3*u+2)*x/144
|
||||
l1 = (
|
||||
-576 + 864*u - 432*u**2 + 72*u**3
|
||||
+ 580*x - 872*u*x + 405*u**2*x - 36*u**3*x
|
||||
) / 72
|
||||
l2 = (
|
||||
432 - 432*u + 108*u**2
|
||||
- 436*x + 405*u*x - 54*u**2*x
|
||||
) / 36
|
||||
l3 = (-12 + 6*u + 11*x - 2*u*x) / 2
|
||||
|
||||
difference4 = T(
|
||||
shifted_derivative(P[3])
|
||||
+ l3*P[3] + l2*P[2] + l1*P[1] + l0*P[0]
|
||||
)
|
||||
quotient4 = T(
|
||||
(
|
||||
-36 + 536*x - 297*u*x + 54*u**2*x
|
||||
- 567*x**2 + 288*u*x**2 - 36*u**2*x**2
|
||||
) / 36
|
||||
)
|
||||
assert difference4 == quotient4*L
|
||||
quotient, remainder = difference.quo_rem(L)
|
||||
assert remainder == 0
|
||||
assert K(quotient) == K(expected_quotients[r])
|
||||
|
||||
|
||||
# It remains to certify row 0, i.e. F_N=P_0(t)F_{N+1}.
|
||||
|
|
|
|||
|
|
@ -1,214 +0,0 @@
|
|||
#!/usr/bin/env sage
|
||||
"""
|
||||
Exact all-N kernel/contiguity certificate for Ramanujan Challenge 2.8.
|
||||
|
||||
This file works over QQ(u,x,j), so every assertion is a symbolic identity.
|
||||
Put
|
||||
|
||||
z = -x/(1-x), theta = z*d/dz = (1-x)*x*d/dx,
|
||||
u = 2*N+3, m = N+1 = (u-1)/2.
|
||||
|
||||
The scalar adjoint tail is, up to a nonzero normalization kappa_N,
|
||||
|
||||
F_N(z) = kappa_N*z^m *
|
||||
4F3(m,m+1/6,m+1/2,m+5/6; 2m,2m,2m; z).
|
||||
|
||||
Writing delta_N = theta-m, its four-component Euler jet is
|
||||
|
||||
K_N = (F_N, delta_N F_N, delta_N^2 F_N, delta_N^3 F_N)^T.
|
||||
|
||||
The assertions below prove symbolically that the parameterized official
|
||||
transfer matrix satisfies
|
||||
|
||||
M_N(x) K_{N+1}(x) = K_N(x)
|
||||
|
||||
for every N >= 0. The first component is checked coefficientwise using the
|
||||
hypergeometric coefficient ratios. The remaining three components are
|
||||
checked as exact Ore-style polynomial congruences modulo the shifted 4F3
|
||||
differential equation.
|
||||
|
||||
This uses the exact parameter identity
|
||||
|
||||
236337691420383 = (14*R-567)/9, R=1/x,
|
||||
|
||||
which is valid at the official R=151931373056001.
|
||||
"""
|
||||
|
||||
|
||||
# This file was *autogenerated* from the file p28_kernel_contiguity_certificate.sage
|
||||
from sage.all_cmdline import * # import sage library
|
||||
|
||||
_sage_const_1 = Integer(1); _sage_const_2 = Integer(2); _sage_const_3 = Integer(3); _sage_const_144 = Integer(144); _sage_const_5 = Integer(5); _sage_const_288 = Integer(288); _sage_const_4 = Integer(4); _sage_const_99 = Integer(99); _sage_const_333 = Integer(333); _sage_const_229 = Integer(229); _sage_const_114 = Integer(114); _sage_const_40 = Integer(40); _sage_const_64 = Integer(64); _sage_const_432 = Integer(432); _sage_const_864 = Integer(864); _sage_const_243 = Integer(243); _sage_const_909 = Integer(909); _sage_const_868 = Integer(868); _sage_const_80 = Integer(80); _sage_const_272 = Integer(272); _sage_const_153 = Integer(153); _sage_const_648 = Integer(648); _sage_const_860 = Integer(860); _sage_const_360 = Integer(360); _sage_const_9 = Integer(9); _sage_const_63 = Integer(63); _sage_const_158 = Integer(158); _sage_const_168 = Integer(168); _sage_const_216 = Integer(216); _sage_const_36 = Integer(36); _sage_const_189 = Integer(189); _sage_const_316 = Integer(316); _sage_const_108 = Integer(108); _sage_const_54 = Integer(54); _sage_const_378 = Integer(378); _sage_const_948 = Integer(948); _sage_const_1008 = Integer(1008); _sage_const_384 = Integer(384); _sage_const_18 = Integer(18); _sage_const_45 = Integer(45); _sage_const_251 = Integer(251); _sage_const_1086 = Integer(1086); _sage_const_1384 = Integer(1384); _sage_const_576 = Integer(576); _sage_const_657 = Integer(657); _sage_const_1292 = Integer(1292); _sage_const_2064 = Integer(2064); _sage_const_1072 = Integer(1072); _sage_const_72 = Integer(72); _sage_const_702 = Integer(702); _sage_const_1069 = Integer(1069); _sage_const_2508 = Integer(2508); _sage_const_1512 = Integer(1512); _sage_const_180 = Integer(180); _sage_const_891 = Integer(891); _sage_const_1450 = Integer(1450); _sage_const_1116 = Integer(1116); _sage_const_1385 = Integer(1385); _sage_const_1422 = Integer(1422); _sage_const_6 = Integer(6); _sage_const_33 = Integer(33); _sage_const_58 = Integer(58); _sage_const_14 = Integer(14); _sage_const_32 = Integer(32); _sage_const_7 = Integer(7); _sage_const_11 = Integer(11); _sage_const_580 = Integer(580); _sage_const_872 = Integer(872); _sage_const_405 = Integer(405); _sage_const_436 = Integer(436); _sage_const_12 = Integer(12); _sage_const_0 = Integer(0); _sage_const_536 = Integer(536); _sage_const_297 = Integer(297); _sage_const_567 = Integer(567)
|
||||
from sage.all import *
|
||||
|
||||
|
||||
# Coefficient field and the Euler-operator polynomial variable.
|
||||
A = PolynomialRing(QQ, names=("u", "x", "j"))
|
||||
u, x, j = A.gens()
|
||||
K = A.fraction_field()
|
||||
u, x, j = map(K, (u, x, j))
|
||||
T = PolynomialRing(K, "t")
|
||||
t = T.gen()
|
||||
|
||||
m = (u - _sage_const_1 ) / _sage_const_2
|
||||
R = _sage_const_1 / x
|
||||
w = u * (_sage_const_3 *u - _sage_const_2 ) * (_sage_const_3 *u + _sage_const_2 )
|
||||
|
||||
|
||||
# Exact parameterized official transfer matrix.
|
||||
a1 = R*(_sage_const_144 *u**_sage_const_5 - _sage_const_288 *u**_sage_const_4 + _sage_const_144 *u**_sage_const_3 ) + (-_sage_const_99 *u**_sage_const_5 + _sage_const_333 *u**_sage_const_4 - _sage_const_229 *u**_sage_const_3 - _sage_const_114 *u**_sage_const_2 + _sage_const_40 *u + _sage_const_64 )
|
||||
a2 = R*(_sage_const_432 *u**_sage_const_4 - _sage_const_864 *u**_sage_const_3 + _sage_const_432 *u**_sage_const_2 ) + (-_sage_const_243 *u**_sage_const_4 + _sage_const_909 *u**_sage_const_3 - _sage_const_868 *u**_sage_const_2 - _sage_const_80 *u + _sage_const_272 )
|
||||
a3 = R*(_sage_const_432 *u**_sage_const_3 - _sage_const_864 *u**_sage_const_2 + _sage_const_432 *u) + (-_sage_const_153 *u**_sage_const_3 + _sage_const_648 *u**_sage_const_2 - _sage_const_860 *u + _sage_const_360 )
|
||||
a4 = R*_sage_const_144 *(u - _sage_const_1 )**_sage_const_2
|
||||
|
||||
b1 = R*(-_sage_const_144 *u**_sage_const_3 ) + (_sage_const_9 *u**_sage_const_4 + _sage_const_63 *u**_sage_const_3 + _sage_const_158 *u**_sage_const_2 + _sage_const_168 *u + _sage_const_64 )
|
||||
b2 = R*(_sage_const_216 *u**_sage_const_2 ) + (_sage_const_36 *u**_sage_const_3 - _sage_const_189 *u**_sage_const_2 - _sage_const_316 *u - _sage_const_168 )
|
||||
b3 = R*(_sage_const_108 *u) + (_sage_const_54 *u**_sage_const_2 - _sage_const_189 *u - _sage_const_158 )
|
||||
|
||||
c1 = R**_sage_const_2 *(-_sage_const_288 *u**_sage_const_3 ) + R*(_sage_const_54 *u**_sage_const_4 + _sage_const_378 *u**_sage_const_3 + _sage_const_948 *u**_sage_const_2 + _sage_const_1008 *u + _sage_const_384 ) + (_sage_const_18 *u**_sage_const_5 + _sage_const_45 *u**_sage_const_4 - _sage_const_251 *u**_sage_const_3 - _sage_const_1086 *u**_sage_const_2 - _sage_const_1384 *u - _sage_const_576 )
|
||||
c2 = R**_sage_const_2 *(-_sage_const_432 *u**_sage_const_2 ) + R*(_sage_const_153 *u**_sage_const_4 - _sage_const_657 *u**_sage_const_3 + _sage_const_1292 *u**_sage_const_2 + _sage_const_2064 *u + _sage_const_1072 ) + (-_sage_const_72 *u**_sage_const_4 + _sage_const_702 *u**_sage_const_3 - _sage_const_1069 *u**_sage_const_2 - _sage_const_2508 *u - _sage_const_1512 )
|
||||
c3 = R**_sage_const_2 *(-_sage_const_216 *u) + R*(_sage_const_180 *u**_sage_const_3 - _sage_const_891 *u**_sage_const_2 + _sage_const_1450 *u + _sage_const_1116 ) + (-_sage_const_108 *u**_sage_const_3 + _sage_const_864 *u**_sage_const_2 - _sage_const_1385 *u - _sage_const_1422 )
|
||||
c4 = R**_sage_const_2 *(-_sage_const_4 ) + R*(_sage_const_6 *u**_sage_const_2 - _sage_const_33 *u + _sage_const_58 + QQ(_sage_const_14 )/_sage_const_9 ) + (-_sage_const_4 *u**_sage_const_2 + _sage_const_32 *u - _sage_const_63 )
|
||||
|
||||
M = Matrix(K, [
|
||||
[a1/w, a2/w, a3/w, a4/w],
|
||||
[-u**_sage_const_3 , -_sage_const_3 *u**_sage_const_2 , -_sage_const_3 *u, -_sage_const_1 ],
|
||||
[x*b1/_sage_const_144 , -x*b2/_sage_const_72 , -x*b3/_sage_const_36 , x*(-_sage_const_2 *R-(_sage_const_2 *u-_sage_const_7 ))/_sage_const_2 ],
|
||||
[x**_sage_const_2 *c1/_sage_const_288 , x**_sage_const_2 *c2/_sage_const_144 , x**_sage_const_2 *c3/_sage_const_72 , x**_sage_const_2 *c4/_sage_const_4 ],
|
||||
])
|
||||
|
||||
|
||||
# P_r(t) is row r of M evaluated on the shifted Euler jet
|
||||
# (1,t,t^2,t^3)^T of F_{N+1}.
|
||||
P = [
|
||||
T(sum(M[r, s] * t**s for s in range(_sage_const_4 )))
|
||||
for r in range(_sage_const_4 )
|
||||
]
|
||||
|
||||
|
||||
# F_{N+1} has exponent m+1 and parameters
|
||||
# (m+1,m+7/6,m+3/2,m+11/6; 2m+2,2m+2,2m+2).
|
||||
# With t=delta_{N+1}, its exact 4F3 differential equation is L(t)F=0.
|
||||
L = T(
|
||||
(_sage_const_1 -x)*t*(t+u)**_sage_const_3
|
||||
+ x*(t+m+_sage_const_1 )*(t+m+QQ(_sage_const_7 )/_sage_const_6 )*(t+m+QQ(_sage_const_3 )/_sage_const_2 )*(t+m+QQ(_sage_const_11 )/_sage_const_6 )
|
||||
)
|
||||
|
||||
|
||||
def theta_coefficients(poly):
|
||||
"""Apply theta=(1-x)x*d/dx only to the coefficients of poly(t)."""
|
||||
return T(sum(
|
||||
(_sage_const_1 -x)*x*K(poly[k]).derivative(x) * t**k
|
||||
for k in range(poly.degree()+_sage_const_1 )
|
||||
))
|
||||
|
||||
|
||||
def shifted_derivative(poly):
|
||||
"""Operator induced by delta_N=theta-m=t+1 on poly(t)F_{N+1}."""
|
||||
return theta_coefficients(poly) + (t+_sage_const_1 )*poly
|
||||
|
||||
|
||||
# Row 1 is the clean scalar contiguity relation
|
||||
#
|
||||
# delta_N F_N = -(t+u)^3 F_{N+1}.
|
||||
assert P[_sage_const_1 ] == -(t+u)**_sage_const_3
|
||||
|
||||
|
||||
# Once row 0 gives F_N=P_0(t)F_{N+1}, the other rows must be its first,
|
||||
# second and third delta_N derivatives. The following exact factorizations
|
||||
# prove this directly. No polynomial division or remainder command is used.
|
||||
expected_quotients = [
|
||||
_sage_const_144 *(u-_sage_const_1 )**_sage_const_2 / (u*(_sage_const_3 *u-_sage_const_2 )*(_sage_const_3 *u+_sage_const_2 )*x),
|
||||
-_sage_const_1 ,
|
||||
(-_sage_const_2 + _sage_const_7 *x - _sage_const_2 *u*x) / _sage_const_2 ,
|
||||
]
|
||||
|
||||
for r in range(_sage_const_3 ):
|
||||
difference = T(shifted_derivative(P[r]) - P[r+_sage_const_1 ])
|
||||
quotient = T(expected_quotients[r])
|
||||
assert difference == quotient*L
|
||||
|
||||
|
||||
# The fourth companion closure is the row omitted by a mere three-row
|
||||
# derivative check. The preceding tail F_N satisfies
|
||||
#
|
||||
# L_minus(s)=s^4+l3*s^3+l2*s^2+l1*s+l0,
|
||||
#
|
||||
# with s=delta_N. Hence delta_N^4 F_N is the displayed linear combination
|
||||
# of the first four jet entries. The last identity below completes the
|
||||
# four-equation differential gauge.
|
||||
l0 = (u-_sage_const_1 )*u*(_sage_const_3 *u-_sage_const_2 )*(_sage_const_3 *u+_sage_const_2 )*x/_sage_const_144
|
||||
l1 = (
|
||||
-_sage_const_576 + _sage_const_864 *u - _sage_const_432 *u**_sage_const_2 + _sage_const_72 *u**_sage_const_3
|
||||
+ _sage_const_580 *x - _sage_const_872 *u*x + _sage_const_405 *u**_sage_const_2 *x - _sage_const_36 *u**_sage_const_3 *x
|
||||
) / _sage_const_72
|
||||
l2 = (
|
||||
_sage_const_432 - _sage_const_432 *u + _sage_const_108 *u**_sage_const_2
|
||||
- _sage_const_436 *x + _sage_const_405 *u*x - _sage_const_54 *u**_sage_const_2 *x
|
||||
) / _sage_const_36
|
||||
l3 = (-_sage_const_12 + _sage_const_6 *u + _sage_const_11 *x - _sage_const_2 *u*x) / _sage_const_2
|
||||
|
||||
difference4 = T(
|
||||
shifted_derivative(P[_sage_const_3 ])
|
||||
+ l3*P[_sage_const_3 ] + l2*P[_sage_const_2 ] + l1*P[_sage_const_1 ] + l0*P[_sage_const_0 ]
|
||||
)
|
||||
quotient4 = T(
|
||||
(
|
||||
-_sage_const_36 + _sage_const_536 *x - _sage_const_297 *u*x + _sage_const_54 *u**_sage_const_2 *x
|
||||
- _sage_const_567 *x**_sage_const_2 + _sage_const_288 *u*x**_sage_const_2 - _sage_const_36 *u**_sage_const_2 *x**_sage_const_2
|
||||
) / _sage_const_36
|
||||
)
|
||||
assert difference4 == quotient4*L
|
||||
|
||||
|
||||
# It remains to certify row 0, i.e. F_N=P_0(t)F_{N+1}.
|
||||
# Split P_0=A(t)/x+B(t). Since 1/x=-(1-z)/z=-1/z+1,
|
||||
# the coefficient of z^(m+j) is a two-term expression involving the j-th
|
||||
# and (j-1)-st coefficients of F_{N+1}. The identities below verify it
|
||||
# for symbolic j.
|
||||
AA = T(_sage_const_144 *(u-_sage_const_1 )**_sage_const_2 *(t+u)**_sage_const_3 / (u*(_sage_const_3 *u-_sage_const_2 )*(_sage_const_3 *u+_sage_const_2 )))
|
||||
BB = T(P[_sage_const_0 ] - AA/x)
|
||||
assert P[_sage_const_0 ] == AA/x + BB
|
||||
|
||||
|
||||
# kappa_{N+1}/kappa_N. In N-language this is
|
||||
# -(6N+7)(6N+11)/(576(N+1)^2(2N+3)^2).
|
||||
rho = -(_sage_const_3 *u-_sage_const_2 )*(_sage_const_3 *u+_sage_const_2 ) / (_sage_const_144 *(u-_sage_const_1 )**_sage_const_2 *u**_sage_const_2 )
|
||||
|
||||
|
||||
def b_over_a(q):
|
||||
"""Coefficient ratio b_q/a_q for F_{N+1} versus F_N."""
|
||||
return K(
|
||||
((m+q)*(m+QQ(_sage_const_1 )/_sage_const_6 +q)*(m+QQ(_sage_const_1 )/_sage_const_2 +q)*(m+QQ(_sage_const_5 )/_sage_const_6 +q))
|
||||
/ (m*(m+QQ(_sage_const_1 )/_sage_const_6 )*(m+QQ(_sage_const_1 )/_sage_const_2 )*(m+QQ(_sage_const_5 )/_sage_const_6 ))
|
||||
* (_sage_const_2 *m*(_sage_const_2 *m+_sage_const_1 ) / ((_sage_const_2 *m+q)*(_sage_const_2 *m+q+_sage_const_1 )))**_sage_const_3
|
||||
)
|
||||
|
||||
|
||||
def a_next_ratio(q):
|
||||
"""a_(q+1)/a_q for the normalized hypergeometric series in F_N."""
|
||||
return K(
|
||||
(m+q)*(m+QQ(_sage_const_1 )/_sage_const_6 +q)*(m+QQ(_sage_const_1 )/_sage_const_2 +q)*(m+QQ(_sage_const_5 )/_sage_const_6 +q)
|
||||
/ ((_sage_const_2 *m+q)**_sage_const_3 *(q+_sage_const_1 ))
|
||||
)
|
||||
|
||||
|
||||
# Lowest coefficient, j=0.
|
||||
assert K(rho * (-AA(K(_sage_const_0 ))) - _sage_const_1 ) == _sage_const_0
|
||||
|
||||
# Generic coefficient, j>=1. This is an identity in QQ(u,j).
|
||||
Rj = b_over_a(j)
|
||||
Sj = b_over_a(j-_sage_const_1 ) / a_next_ratio(j-_sage_const_1 )
|
||||
generic_identity = K(
|
||||
rho * (
|
||||
-AA(j)*Rj
|
||||
+ (AA(j-_sage_const_1 )+BB(j-_sage_const_1 ))*Sj
|
||||
) - _sage_const_1
|
||||
)
|
||||
assert generic_identity == _sage_const_0
|
||||
|
||||
|
||||
print("PASS: exact all-N 4F3 kernel contiguity certificate")
|
||||
print("M_N(x) K_{N+1}(x) = K_N(x) symbolically in QQ(u,x)")
|
||||
print("theta convention: theta=z*d/dz=(1-x)*x*d/dx")
|
||||
|
||||
|
|
@ -1,130 +0,0 @@
|
|||
#!/usr/bin/env sage
|
||||
"""
|
||||
Exact algebraic hypotheses for the Problem 2.8 tail-lattice induction.
|
||||
|
||||
Run from the repository root with
|
||||
|
||||
sage agent_outputs/tail_lattice/p28_lattice_hypotheses_certificate.sage
|
||||
|
||||
The script loads the independent all-N kernel certificate, then verifies:
|
||||
|
||||
* J_N = diag(x,1,1,1) M_N is regular at x=0;
|
||||
* J_N(0) has the claimed rank-one factorization;
|
||||
* its image direction is the leading direction of H k_N;
|
||||
* the transformed 3F2 equation gives the exact row dependence.
|
||||
|
||||
The only non-machine step in the lattice closure is then the two-line DVR
|
||||
lemma proved in TAIL_LATTICE_CLOSURE_REPORT.md.
|
||||
"""
|
||||
|
||||
|
||||
# This file was *autogenerated* from the file certificates/p28_lattice_hypotheses_certificate.sage
|
||||
from sage.all_cmdline import * # import sage library
|
||||
|
||||
_sage_const_1 = Integer(1); _sage_const_0 = Integer(0); _sage_const_4 = Integer(4); _sage_const_144 = Integer(144); _sage_const_2 = Integer(2); _sage_const_3 = Integer(3); _sage_const_6 = Integer(6); _sage_const_5 = Integer(5); _sage_const_72 = Integer(72); _sage_const_108 = Integer(108); _sage_const_46 = Integer(46); _sage_const_18 = Integer(18); _sage_const_23 = Integer(23); _sage_const_27 = Integer(27); _sage_const_216 = Integer(216)
|
||||
from sage.all import *
|
||||
import os
|
||||
|
||||
|
||||
HERE = os.path.dirname(os.path.abspath(__file__))
|
||||
KERNEL = os.path.join(HERE, "p28_kernel_contiguity_certificate.sage")
|
||||
if not os.path.exists(KERNEL):
|
||||
KERNEL = os.path.join(
|
||||
HERE, "..", "special_functions",
|
||||
"p28_kernel_contiguity_certificate.sage"
|
||||
)
|
||||
load(KERNEL)
|
||||
|
||||
|
||||
H = diagonal_matrix(K, [x, _sage_const_1 , _sage_const_1 , _sage_const_1 ])
|
||||
J = H*M
|
||||
|
||||
|
||||
def value_at_zero(q):
|
||||
"""Evaluate a simplified rational function at x=0."""
|
||||
q = K(q)
|
||||
numerator = q.numerator()
|
||||
denominator = q.denominator()
|
||||
value_denominator = denominator.subs({x: _sage_const_0 })
|
||||
assert value_denominator != _sage_const_0
|
||||
return K(numerator.subs({x: _sage_const_0 }) / value_denominator)
|
||||
|
||||
|
||||
J0 = Matrix(K, _sage_const_4 , _sage_const_4 , [value_at_zero(q) for q in J.list()])
|
||||
a = _sage_const_144 *(u-_sage_const_1 )**_sage_const_2 / (u*(_sage_const_3 *u-_sage_const_2 )*(_sage_const_3 *u+_sage_const_2 ))
|
||||
left = vector(K, [a, -_sage_const_1 , -_sage_const_1 , -_sage_const_1 ])
|
||||
right = vector(K, [u**_sage_const_3 , _sage_const_3 *u**_sage_const_2 , _sage_const_3 *u, _sage_const_1 ])
|
||||
|
||||
assert J0 == left.column()*right.row()
|
||||
assert J0.rank() == _sage_const_1
|
||||
assert J0.column(_sage_const_0 ) != _sage_const_0
|
||||
|
||||
|
||||
# The x^(-1) coefficient of M controls the constant term of the transformed
|
||||
# denominator. It is another rank-one matrix, now with only its first row
|
||||
# nonzero.
|
||||
Mminus1 = Matrix(K, _sage_const_4 , _sage_const_4 , [
|
||||
value_at_zero(x*q) for q in M.list()
|
||||
])
|
||||
e0 = vector(K, [_sage_const_1 , _sage_const_0 , _sage_const_0 , _sage_const_0 ])
|
||||
assert Mminus1 == e0.column()*(a*right).row()
|
||||
|
||||
# Therefore c_(N+1)/c_N is the first entry of a*right.
|
||||
constant_ratio = a*u**_sage_const_3
|
||||
assert constant_ratio == (
|
||||
_sage_const_144 *(u-_sage_const_1 )**_sage_const_2 *u**_sage_const_2 / ((_sage_const_3 *u-_sage_const_2 )*(_sage_const_3 *u+_sage_const_2 ))
|
||||
)
|
||||
|
||||
|
||||
# The first coefficient of
|
||||
#
|
||||
# 4F3(m,m+1/6,m+1/2,m+5/6;2m,2m,2m;z)
|
||||
#
|
||||
# is c. Since z=-x+O(x^2), the leading direction of H*k_N is
|
||||
# (1,-c,-c,-c)^T.
|
||||
c = (
|
||||
m*(m+QQ(_sage_const_1 )/_sage_const_6 )*(m+QQ(_sage_const_1 )/_sage_const_2 )*(m+QQ(_sage_const_5 )/_sage_const_6 )
|
||||
/ (_sage_const_2 *m)**_sage_const_3
|
||||
)
|
||||
assert K(c - _sage_const_1 /a) == _sage_const_0
|
||||
tail_direction = vector(K, [_sage_const_1 , -c, -c, -c])
|
||||
assert left == a*tail_direction
|
||||
|
||||
|
||||
# The row dependence is just the transformed 3F2 equation. It is recorded
|
||||
# here as a formal coefficient identity in the four symbols
|
||||
# (y-1, theta*y, theta^2*y, theta^3*y).
|
||||
Y = PolynomialRing(K, names=("f0", "f1", "f2", "f3"))
|
||||
f0, f1, f2, f3 = Y.gens()
|
||||
y = f0 + _sage_const_1
|
||||
ode = _sage_const_72 *f3 + _sage_const_108 *x*f2 + _sage_const_46 *x*f1 + _sage_const_5 *x*y
|
||||
|
||||
# C*k0 = -5/4 after B*k0=f.
|
||||
Ck0 = _sage_const_18 *f3/x + QQ(_sage_const_5 )/_sage_const_4 *f0 + QQ(_sage_const_23 )/_sage_const_2 *f1 + _sage_const_27 *f2
|
||||
assert Y(x*(Ck0 + QQ(_sage_const_5 )/_sage_const_4 ) - ode/_sage_const_4 ) == _sage_const_0
|
||||
|
||||
# Therefore 72 E3 + 108 x E2 + 46 x E1 + 5 x E0 = 0.
|
||||
# The B-part cancels independently.
|
||||
b0 = vector(K, [_sage_const_1 , _sage_const_0 , _sage_const_0 , _sage_const_0 ])
|
||||
b1 = vector(K, [_sage_const_1 , _sage_const_1 , _sage_const_0 , _sage_const_0 ])
|
||||
b2 = vector(K, [_sage_const_1 , _sage_const_2 , _sage_const_1 , _sage_const_0 ])
|
||||
b3 = vector(K, [_sage_const_1 , _sage_const_3 , _sage_const_3 , _sage_const_1 ])
|
||||
assert _sage_const_72 *b3 + _sage_const_108 *x*b2 + _sage_const_46 *x*b1 + _sage_const_5 *x*b0 == vector(
|
||||
K, [_sage_const_72 + _sage_const_108 *x + _sage_const_46 *x + _sage_const_5 *x,
|
||||
_sage_const_216 + _sage_const_108 *x + _sage_const_46 *x,
|
||||
_sage_const_216 + _sage_const_108 *x,
|
||||
_sage_const_72 ]
|
||||
)
|
||||
|
||||
# In the full carrier the f*C contribution is killed by the ODE, and the
|
||||
# displayed B combination equals -4*C after using the compact expression
|
||||
# C=(18/x)b3+(5/4)b0+(23/2)b1+27b2. Verify this exact cancellation.
|
||||
Crow = _sage_const_18 *b3/x + QQ(_sage_const_5 )/_sage_const_4 *b0 + QQ(_sage_const_23 )/_sage_const_2 *b1 + _sage_const_27 *b2
|
||||
Bcomb = _sage_const_72 *b3 + _sage_const_108 *x*b2 + _sage_const_46 *x*b1 + _sage_const_5 *x*b0
|
||||
assert Bcomb == _sage_const_4 *x*Crow
|
||||
|
||||
|
||||
print("PASS: exact rank-one/DVR hypotheses for all N")
|
||||
print("J_N(0) = (a,-1,-1,-1)^T (u^3,3u^2,3u,1)")
|
||||
print("a^{-1} is the first shifted 4F3 coefficient")
|
||||
|
||||
|
|
@ -1,150 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
OFFICIAL-OBJECT CERTIFICATE for Ramanujan Challenge Problem 2.8.
|
||||
|
||||
WHY THIS EXISTS. Every other certificate in this directory verifies statements
|
||||
*about* the manuscript's deformed family M(u,x). None of them verifies the one
|
||||
thing an evaluator checks first: that the object analysed is the OFFICIAL
|
||||
challenge object and not a surrogate. A proof can be internally flawless and
|
||||
still prove a theorem about the wrong matrix.
|
||||
|
||||
This file closes that gap. It reconstructs the official Problem 2.8 data
|
||||
directly from the challenge statement and checks, by exact rational arithmetic,
|
||||
that the manuscript's specialisation reproduces it entry by entry.
|
||||
|
||||
OFFICIAL DATA (The Ramanujan Challenge, section 2.8):
|
||||
R = 151931373056001, u = 2n + 3, w = u(3u-2)(3u+2)
|
||||
M(n) = the 4x4 matrix displayed there
|
||||
M_N = M(0)M(1)...M(N-1), M_0 = I
|
||||
A = [[A1..A4],[B1..B4]] the two official integer seed rows
|
||||
claim: lim_{N->inf} P_{N,j}/Q_{N,j} = sqrt(10005)/pi for j = 1,2,3,4
|
||||
|
||||
MANUSCRIPT DATA (solution.tex):
|
||||
r = 1/x, x_0 = 1/R, M_N(x) = script-M(2N+3, x), G_N = M_0...M_{N-1}
|
||||
A_0 = A*C - (5/4)H_0, A_1 = S*C
|
||||
|
||||
WHAT IS PROVED HERE. M_N(x_0) == official M(N) as exact rationals, all sixteen
|
||||
entries, at several N; the seed rows generated by the compact form equal the
|
||||
official integer rows; and the deformed coefficient restores exactly. Every
|
||||
check carries a negative control.
|
||||
|
||||
AUTHORITY. EXACT. fractions.Fraction throughout, no floating point, no CAS.
|
||||
"""
|
||||
|
||||
from fractions import Fraction as F
|
||||
|
||||
CHECKS = {}
|
||||
|
||||
|
||||
def REQ(name, cond, detail=None):
|
||||
ok = bool(cond)
|
||||
CHECKS[name] = ok
|
||||
if not ok:
|
||||
raise AssertionError("FAILED %s%s" % (name, "" if detail is None else ": %s" % (detail,)))
|
||||
return ok
|
||||
|
||||
|
||||
R = 151931373056001
|
||||
x0 = F(1, R)
|
||||
A, B, S = 13591409, 545140134, 426880
|
||||
|
||||
REQ("R_is_53360_cubed_plus_one", R == 53360 ** 3 + 1)
|
||||
REQ("deformed_coefficient_restores", F(14 * R - 567, 9) == 236337691420383)
|
||||
|
||||
|
||||
def official_M(n):
|
||||
"""Transcribed directly from the challenge statement."""
|
||||
u = 2 * n + 3
|
||||
w = u * (3 * u - 2) * (3 * u + 2)
|
||||
a1 = (144*R-99)*u**5-(288*R-333)*u**4+(144*R-229)*u**3-114*u**2+40*u+64
|
||||
a2 = (432*R-243)*u**4-(864*R-909)*u**3+(432*R-868)*u**2-80*u+272
|
||||
a3 = (432*R-153)*u**3-(864*R-648)*u**2+(432*R-860)*u+360
|
||||
a4 = 144*R*(u-1)**2
|
||||
b1 = 9*u**4-(144*R-63)*u**3+158*u**2+168*u+64
|
||||
b2 = 36*u**3+(216*R-189)*u**2-316*u-168
|
||||
b3 = 54*u**2+(108*R-189)*u-158
|
||||
c1 = 18*u**5+(54*R+45)*u**4-(288*R**2-378*R+251)*u**3+(948*R-1086)*u**2+(1008*R-1384)*u+(384*R-576)
|
||||
c2 = (153*R-72)*u**4-(657*R-702)*u**3-(432*R**2-1292*R+1069)*u**2+(2064*R-2508)*u+(1072*R-1512)
|
||||
c3 = (180*R-108)*u**3-(891*R-864)*u**2-(216*R**2-1450*R+1385)*u+(1116*R-1422)
|
||||
c4 = (6*R-4)*u**2-(33*R-32)*u-(4*R**2-58*R-236337691420383)
|
||||
return [
|
||||
[F(a1, w), F(a2, w), F(a3, w), F(a4, w)],
|
||||
[F(-u**3), F(-3*u**2), F(-3*u), F(-1)],
|
||||
[F(b1, 144*R), -F(b2, 72*R), -F(b3, 36*R), -F(2*u+2*R-7, 2*R)],
|
||||
[F(c1, 288*R**2), F(c2, 144*R**2), F(c3, 72*R**2), F(c4, 4*R**2)],
|
||||
]
|
||||
|
||||
|
||||
def manuscript_M(N, x):
|
||||
"""Transcribed from solution.tex eq:deformed-matrix, with r = 1/x."""
|
||||
u = 2 * N + 3
|
||||
r = 1 / x
|
||||
w = u * (3 * u - 2) * (3 * u + 2)
|
||||
a1 = r*(144*u**5-288*u**4+144*u**3)-99*u**5+333*u**4-229*u**3-114*u**2+40*u+64
|
||||
a2 = r*(432*u**4-864*u**3+432*u**2)-243*u**4+909*u**3-868*u**2-80*u+272
|
||||
a3 = r*(432*u**3-864*u**2+432*u)-153*u**3+648*u**2-860*u+360
|
||||
a4 = 144*r*(u-1)**2
|
||||
b1 = -144*r*u**3+9*u**4+63*u**3+158*u**2+168*u+64
|
||||
b2 = 216*r*u**2+36*u**3-189*u**2-316*u-168
|
||||
b3 = 108*r*u+54*u**2-189*u-158
|
||||
c1 = -288*r**2*u**3+r*(54*u**4+378*u**3+948*u**2+1008*u+384)+18*u**5+45*u**4-251*u**3-1086*u**2-1384*u-576
|
||||
c2 = -432*r**2*u**2+r*(153*u**4-657*u**3+1292*u**2+2064*u+1072)-72*u**4+702*u**3-1069*u**2-2508*u-1512
|
||||
c3 = -216*r**2*u+r*(180*u**3-891*u**2+1450*u+1116)-108*u**3+864*u**2-1385*u-1422
|
||||
c4 = -4*r**2+r*(6*u**2-33*u+F(536, 9))-4*u**2+32*u-63
|
||||
return [
|
||||
[a1/w, a2/w, a3/w, a4/w],
|
||||
[F(-u**3), F(-3*u**2), F(-3*u), F(-1)],
|
||||
[x*b1/144, -x*b2/72, -x*b3/36, x*(-2*r-(2*u-7))/2],
|
||||
[x**2*c1/288, x**2*c2/144, x**2*c3/72, x**2*c4/4],
|
||||
]
|
||||
|
||||
|
||||
# ---------------------------------------------------------------- matrix identity
|
||||
INDICES = (0, 1, 2, 3, 5, 8, 17, 40)
|
||||
for n in INDICES:
|
||||
O, M = official_M(n), manuscript_M(n, x0)
|
||||
REQ("matrix_identity_at_n%d" % n,
|
||||
all(O[i][j] == M[i][j] for i in range(4) for j in range(4)))
|
||||
|
||||
# red case: the comparison must be able to fail
|
||||
O = official_M(0)
|
||||
M = manuscript_M(0, x0)
|
||||
M[2][3] = -M[2][3]
|
||||
REQ("matrix_comparison_is_falsifiable",
|
||||
any(O[i][j] != M[i][j] for i in range(4) for j in range(4)))
|
||||
|
||||
# ---------------------------------------------------------------- seed rows
|
||||
b0, b1r, b2r, b3r = (1, 0, 0, 0), (1, 1, 0, 0), (1, 2, 1, 0), (1, 3, 3, 1)
|
||||
C = (18/x0 + F(159, 4), 54/x0 + F(131, 2), 54/x0 + 27, 18/x0)
|
||||
Cdec = tuple(F(18)/x0*b3r[i] + F(5, 4)*b0[i] + F(23, 2)*b1r[i] + 27*b2r[i] for i in range(4))
|
||||
REQ("compact_row_pascal_decomposition", Cdec == C)
|
||||
|
||||
H0 = tuple(A*b0[i] + B*b1r[i] for i in range(4))
|
||||
REQ("H0_is_A_plus_B_B_0_0", H0 == (A + B, B, 0, 0))
|
||||
|
||||
A1_row = tuple(S*c for c in C)
|
||||
A0_row = tuple(A*C[i] - F(5, 4)*H0[i] for i in range(4))
|
||||
|
||||
OFFICIAL_A = (37169305760442252761441, 111507917281327441564208,
|
||||
111507917281327599720129, 37169305760442410917362)
|
||||
OFFICIAL_B = (1167416361542639692320, 3502249084627896132160,
|
||||
3502249084627879697280, 1167416361542622723840)
|
||||
|
||||
REQ("A0_is_integral", all(v.denominator == 1 for v in A0_row))
|
||||
REQ("A1_is_integral", all(v.denominator == 1 for v in A1_row))
|
||||
REQ("A0_equals_official_first_seed_row", tuple(int(v) for v in A0_row) == OFFICIAL_A)
|
||||
REQ("A1_equals_official_second_seed_row", tuple(int(v) for v in A1_row) == OFFICIAL_B)
|
||||
REQ("seed_comparison_is_falsifiable",
|
||||
tuple(int(v) for v in A0_row) != tuple(x + 1 for x in OFFICIAL_A))
|
||||
|
||||
status = "PASS" if all(CHECKS.values()) else "FAIL"
|
||||
if status != "PASS":
|
||||
raise AssertionError("failed: %s" % [k for k, v in CHECKS.items() if not v])
|
||||
|
||||
print("status computed from %d assertions: %s" % (len(CHECKS), status))
|
||||
print("M_N(x0) == official M(N), all 16 entries, at N in %s" % (INDICES,))
|
||||
print("compact seed rows reproduce the official integer rows exactly")
|
||||
print("deformed coefficient restores: (14R-567)/9 = 236337691420383")
|
||||
print()
|
||||
print("The manuscript analyses the OFFICIAL Problem 2.8 object, not a surrogate.")
|
||||
print("No irreducibility test, GCD, root finder, CAS, or numerical sample was used.")
|
||||
|
|
@ -7,12 +7,11 @@ the pieces that do not require a hypergeometric CAS:
|
|||
* the rank-one x=0 factorization of H M_N;
|
||||
* the rank-one x^(-1) coefficient of M_N and c_N normalization;
|
||||
* the compact-row/ODE cancellation;
|
||||
* the exact unit-circle coefficient separation of the characteristic
|
||||
quartic; and
|
||||
* the exact Rouché separation of the characteristic quartic; and
|
||||
* the explicit fixed-point convergence constants.
|
||||
|
||||
The hypergeometric all-N identities and matrix-to-scalar bridge are checked
|
||||
by the dependency-free ``p28_standalone_equations.py`` verifier.
|
||||
The two hypergeometric all-N contiguity identities are checked separately by
|
||||
the Sage and Wolfram certificates named in TAIL_LATTICE_CLOSURE_REPORT.md.
|
||||
"""
|
||||
|
||||
from fractions import Fraction as Q
|
||||
|
|
@ -84,12 +83,7 @@ assert official_j0_times_w == rank_one_j0_times_w
|
|||
|
||||
# Clear w in lim x M_N. Only the first row is nonzero.
|
||||
official_mminus1_times_w = [
|
||||
[
|
||||
poly([(5, 144), (4, -288), (3, 144)]),
|
||||
poly([(4, 432), (3, -864), (2, 432)]),
|
||||
poly([(3, 432), (2, -864), (1, 432)]),
|
||||
scale(power(u_minus_1, 2), 144),
|
||||
],
|
||||
rank_one_j0_times_w[0],
|
||||
[{}, {}, {}, {}],
|
||||
[{}, {}, {}, {}],
|
||||
[{}, {}, {}, {}],
|
||||
|
|
@ -103,32 +97,13 @@ expected_mminus1_times_w = [
|
|||
assert official_mminus1_times_w == expected_mminus1_times_w
|
||||
|
||||
|
||||
# The first tail coefficient, derived independently from the four upper and
|
||||
# three lower parameters, is
|
||||
# The first tail coefficient is
|
||||
#
|
||||
# c = u(3u-2)(3u+2)/(144(u-1)^2),
|
||||
#
|
||||
# so the leading direction of H k_N is (1,-c,-c,-c), exactly the image
|
||||
# direction of J(0). Clear denominators in
|
||||
#
|
||||
# ((u-1)/2)((u-1)/2+1/6)((u-1)/2+1/2)((u-1)/2+5/6)/(u-1)^3 = c.
|
||||
n_tail = scale(u_minus_1, Q(1, 2))
|
||||
hyper_first_numerator = mul(
|
||||
mul(n_tail, add(n_tail, poly([(0, Q(1, 6))]))),
|
||||
mul(
|
||||
add(n_tail, poly([(0, Q(1, 2))])),
|
||||
add(n_tail, poly([(0, Q(5, 6))])),
|
||||
),
|
||||
)
|
||||
hyper_first_denominator = power(u_minus_1, 3)
|
||||
closed_first_numerator = mul(u, mul(three_u_minus_2, three_u_plus_2))
|
||||
closed_first_denominator = scale(power(u_minus_1, 2), 144)
|
||||
assert mul(hyper_first_numerator, closed_first_denominator) == mul(
|
||||
closed_first_numerator, hyper_first_denominator
|
||||
)
|
||||
|
||||
# Together with the independently entered rank-one first row above, this
|
||||
# identifies its scalar \(144(u-1)^2/w\) as the reciprocal of c.
|
||||
# direction of J(0). Clearing the denominator gives the identity below.
|
||||
assert w == mul(u, mul(three_u_minus_2, three_u_plus_2))
|
||||
|
||||
|
||||
# Transformed ODE:
|
||||
|
|
@ -207,5 +182,5 @@ assert beta < Q(4, 10**19) < 1
|
|||
|
||||
print("PASS: exact rank-one transfer factorization")
|
||||
print("PASS: exact transformed ODE and compact-row cancellation")
|
||||
print("PASS: exact unit-circle coefficient separation of the characteristic roots")
|
||||
print("PASS: exact Rouché separation of the characteristic roots")
|
||||
print("PASS: exact convergence constants; beta =", beta)
|
||||
|
|
|
|||
|
|
@ -1,743 +0,0 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Transparent exact equation checks for Ramanujan Challenge 2.8.
|
||||
|
||||
This verifier deliberately implements only:
|
||||
|
||||
* sparse multivariate polynomials over ``fractions.Fraction``;
|
||||
* rational functions represented by numerator/denominator pairs;
|
||||
* addition, multiplication, integer powers, and formal differentiation.
|
||||
|
||||
It does not call polynomial division, factorization, simplification, Gröbner
|
||||
bases, a special-function library, a root finder, or numerical sampling.
|
||||
Every obligation is entered as a displayed denominator-cleared identity and
|
||||
passes only when every coefficient of the expanded numerator is exactly zero.
|
||||
"""
|
||||
|
||||
from fractions import Fraction as F
|
||||
|
||||
|
||||
VARIABLES = ("u", "x", "t", "j", "n", "k", "z")
|
||||
NVARS = len(VARIABLES)
|
||||
INDEX = {name: position for position, name in enumerate(VARIABLES)}
|
||||
ZERO_EXPONENT = (0,) * NVARS
|
||||
|
||||
|
||||
class Poly:
|
||||
"""Sparse polynomial over QQ in the fixed variables above."""
|
||||
|
||||
def __init__(self, terms=None):
|
||||
combined = {}
|
||||
for exponent, coefficient in (terms or {}).items():
|
||||
coefficient = F(coefficient)
|
||||
if coefficient:
|
||||
combined[tuple(exponent)] = (
|
||||
combined.get(tuple(exponent), F(0)) + coefficient
|
||||
)
|
||||
self.terms = {
|
||||
exponent: coefficient
|
||||
for exponent, coefficient in combined.items()
|
||||
if coefficient
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def constant(value):
|
||||
value = F(value)
|
||||
return Poly({ZERO_EXPONENT: value}) if value else Poly()
|
||||
|
||||
@staticmethod
|
||||
def variable(name):
|
||||
exponent = [0] * NVARS
|
||||
exponent[INDEX[name]] = 1
|
||||
return Poly({tuple(exponent): F(1)})
|
||||
|
||||
def __add__(self, other):
|
||||
other = as_poly(other)
|
||||
terms = dict(self.terms)
|
||||
for exponent, coefficient in other.terms.items():
|
||||
terms[exponent] = terms.get(exponent, F(0)) + coefficient
|
||||
return Poly(terms)
|
||||
|
||||
__radd__ = __add__
|
||||
|
||||
def __neg__(self):
|
||||
return Poly({
|
||||
exponent: -coefficient
|
||||
for exponent, coefficient in self.terms.items()
|
||||
})
|
||||
|
||||
def __sub__(self, other):
|
||||
return self + (-as_poly(other))
|
||||
|
||||
def __rsub__(self, other):
|
||||
return as_poly(other) - self
|
||||
|
||||
def __mul__(self, other):
|
||||
other = as_poly(other)
|
||||
terms = {}
|
||||
for left_exp, left_coefficient in self.terms.items():
|
||||
for right_exp, right_coefficient in other.terms.items():
|
||||
exponent = tuple(
|
||||
left_exp[position] + right_exp[position]
|
||||
for position in range(NVARS)
|
||||
)
|
||||
terms[exponent] = (
|
||||
terms.get(exponent, F(0))
|
||||
+ left_coefficient * right_coefficient
|
||||
)
|
||||
return Poly(terms)
|
||||
|
||||
__rmul__ = __mul__
|
||||
|
||||
def __pow__(self, exponent):
|
||||
if exponent < 0:
|
||||
raise ValueError("Poly powers must be nonnegative")
|
||||
result = Poly.constant(1)
|
||||
base = self
|
||||
power = exponent
|
||||
while power:
|
||||
if power & 1:
|
||||
result = result * base
|
||||
base = base * base
|
||||
power //= 2
|
||||
return result
|
||||
|
||||
def derivative(self, name):
|
||||
position = INDEX[name]
|
||||
terms = {}
|
||||
for exponent, coefficient in self.terms.items():
|
||||
degree = exponent[position]
|
||||
if degree:
|
||||
new_exponent = list(exponent)
|
||||
new_exponent[position] -= 1
|
||||
terms[tuple(new_exponent)] = coefficient * degree
|
||||
return Poly(terms)
|
||||
|
||||
def is_zero(self):
|
||||
return not self.terms
|
||||
|
||||
|
||||
def as_poly(value):
|
||||
if isinstance(value, Poly):
|
||||
return value
|
||||
return Poly.constant(value)
|
||||
|
||||
|
||||
class Rat:
|
||||
"""Unreduced rational function over the sparse polynomial ring."""
|
||||
|
||||
def __init__(self, numerator=0, denominator=1):
|
||||
self.numerator = as_poly(numerator)
|
||||
self.denominator = as_poly(denominator)
|
||||
if self.denominator.is_zero():
|
||||
raise ZeroDivisionError("zero polynomial denominator")
|
||||
|
||||
def __add__(self, other):
|
||||
other = as_rat(other)
|
||||
return Rat(
|
||||
self.numerator * other.denominator
|
||||
+ other.numerator * self.denominator,
|
||||
self.denominator * other.denominator,
|
||||
)
|
||||
|
||||
__radd__ = __add__
|
||||
|
||||
def __neg__(self):
|
||||
return Rat(-self.numerator, self.denominator)
|
||||
|
||||
def __sub__(self, other):
|
||||
return self + (-as_rat(other))
|
||||
|
||||
def __rsub__(self, other):
|
||||
return as_rat(other) - self
|
||||
|
||||
def __mul__(self, other):
|
||||
other = as_rat(other)
|
||||
return Rat(
|
||||
self.numerator * other.numerator,
|
||||
self.denominator * other.denominator,
|
||||
)
|
||||
|
||||
__rmul__ = __mul__
|
||||
|
||||
def __truediv__(self, other):
|
||||
other = as_rat(other)
|
||||
if other.numerator.is_zero():
|
||||
raise ZeroDivisionError("division by the zero rational function")
|
||||
return Rat(
|
||||
self.numerator * other.denominator,
|
||||
self.denominator * other.numerator,
|
||||
)
|
||||
|
||||
def __rtruediv__(self, other):
|
||||
return as_rat(other) / self
|
||||
|
||||
def __pow__(self, exponent):
|
||||
if exponent >= 0:
|
||||
return Rat(
|
||||
self.numerator ** exponent,
|
||||
self.denominator ** exponent,
|
||||
)
|
||||
return Rat(
|
||||
self.denominator ** (-exponent),
|
||||
self.numerator ** (-exponent),
|
||||
)
|
||||
|
||||
def derivative(self, name):
|
||||
return Rat(
|
||||
self.numerator.derivative(name) * self.denominator
|
||||
- self.numerator * self.denominator.derivative(name),
|
||||
self.denominator ** 2,
|
||||
)
|
||||
|
||||
def is_zero(self):
|
||||
return self.numerator.is_zero()
|
||||
|
||||
|
||||
def as_rat(value):
|
||||
if isinstance(value, Rat):
|
||||
return value
|
||||
if isinstance(value, Poly):
|
||||
return Rat(value)
|
||||
return Rat(F(value))
|
||||
|
||||
|
||||
def check_zero(label, expression):
|
||||
expression = as_rat(expression)
|
||||
assert expression.is_zero(), label
|
||||
print("PASS:", label)
|
||||
|
||||
|
||||
def matrix_multiply(left, right):
|
||||
return [
|
||||
[
|
||||
sum(
|
||||
left[row][middle] * right[middle][column]
|
||||
for middle in range(len(right))
|
||||
)
|
||||
for column in range(len(right[0]))
|
||||
]
|
||||
for row in range(len(left))
|
||||
]
|
||||
|
||||
|
||||
def check_zero_matrix(label, matrix):
|
||||
assert all(
|
||||
as_rat(entry).is_zero()
|
||||
for row in matrix
|
||||
for entry in row
|
||||
), label
|
||||
print("PASS:", label)
|
||||
|
||||
|
||||
u, x, t, j, n, k, z = [
|
||||
Rat(Poly.variable(name)) for name in VARIABLES
|
||||
]
|
||||
SYMBOLS = dict(zip(VARIABLES, (u, x, t, j, n, k, z)))
|
||||
|
||||
|
||||
def substitute_polynomial(polynomial, replacements):
|
||||
"""Evaluate a sparse polynomial at rational-function replacements."""
|
||||
result = Rat(0)
|
||||
for exponent, coefficient in polynomial.terms.items():
|
||||
term = Rat(coefficient)
|
||||
for position, degree in enumerate(exponent):
|
||||
if degree:
|
||||
name = VARIABLES[position]
|
||||
term *= replacements.get(name, SYMBOLS[name]) ** degree
|
||||
result += term
|
||||
return result
|
||||
|
||||
|
||||
def substitute_rational(expression, replacements):
|
||||
"""Evaluate an unreduced rational function by cross multiplication."""
|
||||
expression = as_rat(expression)
|
||||
return (
|
||||
substitute_polynomial(expression.numerator, replacements)
|
||||
/ substitute_polynomial(expression.denominator, replacements)
|
||||
)
|
||||
|
||||
|
||||
def polynomial_coefficient(expression, name, degree):
|
||||
"""Extract one coefficient when the denominator omits ``name``."""
|
||||
expression = as_rat(expression)
|
||||
position = INDEX[name]
|
||||
assert all(
|
||||
exponent[position] == 0
|
||||
for exponent in expression.denominator.terms
|
||||
)
|
||||
terms = {}
|
||||
for exponent, coefficient in expression.numerator.terms.items():
|
||||
if exponent[position] == degree:
|
||||
reduced = list(exponent)
|
||||
reduced[position] = 0
|
||||
terms[tuple(reduced)] = coefficient
|
||||
return Rat(Poly(terms), expression.denominator)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Four standalone tail/Ore factorizations.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
m = (u - 1) / 2
|
||||
R = 1 / x
|
||||
w = u * (3*u - 2) * (3*u + 2)
|
||||
|
||||
a1 = (
|
||||
R * (144*u**5 - 288*u**4 + 144*u**3)
|
||||
+ (-99*u**5 + 333*u**4 - 229*u**3 - 114*u**2 + 40*u + 64)
|
||||
)
|
||||
a2 = (
|
||||
R * (432*u**4 - 864*u**3 + 432*u**2)
|
||||
+ (-243*u**4 + 909*u**3 - 868*u**2 - 80*u + 272)
|
||||
)
|
||||
a3 = (
|
||||
R * (432*u**3 - 864*u**2 + 432*u)
|
||||
+ (-153*u**3 + 648*u**2 - 860*u + 360)
|
||||
)
|
||||
a4 = R * 144 * (u - 1)**2
|
||||
|
||||
b1 = R * (-144*u**3) + (9*u**4 + 63*u**3 + 158*u**2 + 168*u + 64)
|
||||
b2 = R * (216*u**2) + (36*u**3 - 189*u**2 - 316*u - 168)
|
||||
b3 = R * (108*u) + (54*u**2 - 189*u - 158)
|
||||
|
||||
c1 = (
|
||||
R**2 * (-288*u**3)
|
||||
+ R * (54*u**4 + 378*u**3 + 948*u**2 + 1008*u + 384)
|
||||
+ (18*u**5 + 45*u**4 - 251*u**3 - 1086*u**2 - 1384*u - 576)
|
||||
)
|
||||
c2 = (
|
||||
R**2 * (-432*u**2)
|
||||
+ R * (153*u**4 - 657*u**3 + 1292*u**2 + 2064*u + 1072)
|
||||
+ (-72*u**4 + 702*u**3 - 1069*u**2 - 2508*u - 1512)
|
||||
)
|
||||
c3 = (
|
||||
R**2 * (-216*u)
|
||||
+ R * (180*u**3 - 891*u**2 + 1450*u + 1116)
|
||||
+ (-108*u**3 + 864*u**2 - 1385*u - 1422)
|
||||
)
|
||||
c4 = (
|
||||
R**2 * (-4)
|
||||
+ R * (6*u**2 - 33*u + 58 + F(14, 9))
|
||||
+ (-4*u**2 + 32*u - 63)
|
||||
)
|
||||
|
||||
matrix = [
|
||||
[a1/w, a2/w, a3/w, a4/w],
|
||||
[-u**3, -3*u**2, -3*u, -1],
|
||||
[x*b1/144, -x*b2/72, -x*b3/36, x*(-2*R-(2*u-7))/2],
|
||||
[x**2*c1/288, x**2*c2/144, x**2*c3/72, x**2*c4/4],
|
||||
]
|
||||
|
||||
# The first column of the z-coordinate gauge
|
||||
# -z M(2n+1,-z/(1-z)).
|
||||
# It will be contracted below with four explicitly reconstructed horizontal
|
||||
# row components to verify that the displayed d0+z*d1 step is induced by the
|
||||
# authoritative matrix, rather than merely guessed and checked afterward.
|
||||
matrix_nz = [
|
||||
[
|
||||
substitute_rational(
|
||||
entry,
|
||||
{"u": 2*n+1, "x": -z/(1-z)},
|
||||
)
|
||||
for entry in row
|
||||
]
|
||||
for row in matrix
|
||||
]
|
||||
gauge_first_column = [-z*matrix_nz[row][0] for row in range(4)]
|
||||
|
||||
|
||||
def p_row(row, argument=t):
|
||||
return sum(matrix[row][column] * argument**column for column in range(4))
|
||||
|
||||
|
||||
P = [p_row(row) for row in range(4)]
|
||||
|
||||
|
||||
def shifted_derivative(expression):
|
||||
return (1-x)*x*expression.derivative("x") + (t+1)*expression
|
||||
|
||||
|
||||
L_plus = (
|
||||
(1-x)*t*(t+u)**3
|
||||
+ x*(t+m+1)*(t+m+F(7, 6))*(t+m+F(3, 2))*(t+m+F(11, 6))
|
||||
)
|
||||
|
||||
l0 = (u-1)*u*(3*u-2)*(3*u+2)*x/144
|
||||
l1 = (
|
||||
-576 + 864*u - 432*u**2 + 72*u**3
|
||||
+ 580*x - 872*u*x + 405*u**2*x - 36*u**3*x
|
||||
) / 72
|
||||
l2 = (
|
||||
432 - 432*u + 108*u**2
|
||||
- 436*x + 405*u*x - 54*u**2*x
|
||||
) / 36
|
||||
l3 = (-12 + 6*u + 11*x - 2*u*x) / 2
|
||||
|
||||
D0 = shifted_derivative(P[0]) - P[1]
|
||||
D1 = shifted_derivative(P[1]) - P[2]
|
||||
D2 = shifted_derivative(P[2]) - P[3]
|
||||
D3 = shifted_derivative(P[3]) + l3*P[3] + l2*P[2] + l1*P[1] + l0*P[0]
|
||||
|
||||
q3_numerator = (
|
||||
-36 + 536*x - 297*u*x + 54*u**2*x
|
||||
- 567*x**2 + 288*u*x**2 - 36*u**2*x**2
|
||||
)
|
||||
|
||||
check_zero(
|
||||
"cleared tail factorization D0=q0*L_plus",
|
||||
u*(3*u-2)*(3*u+2)*x*D0 - 144*(u-1)**2*L_plus,
|
||||
)
|
||||
check_zero("cleared tail factorization D1=-L_plus", D1 + L_plus)
|
||||
check_zero(
|
||||
"cleared tail factorization D2=q2*L_plus",
|
||||
2*D2 - (-2+7*x-2*u*x)*L_plus,
|
||||
)
|
||||
check_zero(
|
||||
"cleared fourth companion closure D3=q3*L_plus",
|
||||
36*D3 - q3_numerator*L_plus,
|
||||
)
|
||||
|
||||
|
||||
# Row-zero coefficient identities. These prove F_N=P_0(delta)F_(N+1)
|
||||
# without any Ore division or finite sampling.
|
||||
def A(argument):
|
||||
return (
|
||||
144*(u-1)**2*(argument+u)**3
|
||||
/ (u*(3*u-2)*(3*u+2))
|
||||
)
|
||||
|
||||
|
||||
def P0(argument):
|
||||
return p_row(0, argument)
|
||||
|
||||
|
||||
def B(argument):
|
||||
return P0(argument) - A(argument)/x
|
||||
|
||||
|
||||
rho = -(3*u-2)*(3*u+2) / (144*(u-1)**2*u**2)
|
||||
|
||||
|
||||
def coeff_cross_ratio(argument):
|
||||
return (
|
||||
(
|
||||
(m+argument)
|
||||
* (m+F(1, 6)+argument)
|
||||
* (m+F(1, 2)+argument)
|
||||
* (m+F(5, 6)+argument)
|
||||
)
|
||||
/ (m*(m+F(1, 6))*(m+F(1, 2))*(m+F(5, 6)))
|
||||
* (
|
||||
2*m*(2*m+1)
|
||||
/ ((2*m+argument)*(2*m+argument+1))
|
||||
)**3
|
||||
)
|
||||
|
||||
|
||||
def coeff_within_ratio(argument):
|
||||
return (
|
||||
(m+argument)
|
||||
* (m+F(1, 6)+argument)
|
||||
* (m+F(1, 2)+argument)
|
||||
* (m+F(5, 6)+argument)
|
||||
/ ((2*m+argument)**3*(argument+1))
|
||||
)
|
||||
|
||||
|
||||
check_zero("tail lowest-coefficient normalization", rho*(-A(0))-1)
|
||||
check_zero(
|
||||
"tail generic coefficient identity",
|
||||
rho * (
|
||||
-A(j)*coeff_cross_ratio(j)
|
||||
+ (A(j-1)+B(j-1))
|
||||
* coeff_cross_ratio(j-1)
|
||||
/ coeff_within_ratio(j-1)
|
||||
) - 1,
|
||||
)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Terminating denominator: explicit one-step coefficient induction.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
normalization = 576*n**2*(2*n+1)**2 / ((6*n+1)*(6*n+5))
|
||||
|
||||
|
||||
def d0(argument):
|
||||
return (
|
||||
72*(2*n+1)**2*(2*n-argument)**3
|
||||
/ (n*(6*n+1)*(6*n+5))
|
||||
)
|
||||
|
||||
|
||||
def d1_polynomial(argument):
|
||||
return (
|
||||
5*argument - 51*argument**2 - 72*argument**3
|
||||
- 5*n + 127*argument*n + 659*argument**2*n - 432*argument**3*n
|
||||
- 76*n**2 - 1760*argument*n**2 + 3086*argument**2*n**2
|
||||
- 864*argument**3*n**2
|
||||
+ 1404*n**3 - 6536*argument*n**3 + 4500*argument**2*n**3
|
||||
- 576*argument**3*n**3
|
||||
+ 4360*n**4 - 7632*argument*n**4 + 2232*argument**2*n**4
|
||||
+ 4320*n**5 - 3024*argument*n**5
|
||||
+ 1440*n**6
|
||||
)
|
||||
|
||||
|
||||
def d1(argument):
|
||||
return (
|
||||
-d1_polynomial(argument)
|
||||
/ (n*(2*n+1)*(6*n+1)*(6*n+5))
|
||||
)
|
||||
|
||||
|
||||
# Horizontal adjoint reconstruction. If p is the first row component, the
|
||||
# other three are p_i(theta)p with the following explicit polynomials. Their
|
||||
# contraction with the first column of -z M(2n+1,-z/(1-z)) must be exactly
|
||||
# d0(theta)+z*d1(theta). This is the formerly implicit matrix-to-scalar
|
||||
# bridge.
|
||||
p_ops = [
|
||||
Rat(1),
|
||||
(
|
||||
2*t*(
|
||||
-36 + 216*n - 432*n**2
|
||||
- 36*t + 216*n*t - 36*t**2
|
||||
+ 23*z + 162*n*z + 216*n**2*z
|
||||
- 54*t*z - 144*n*t*z + 36*t**2*z
|
||||
)
|
||||
/ (n*(1+2*n)*(1+6*n)*(5+6*n)*z)
|
||||
),
|
||||
(
|
||||
36*t*(
|
||||
4 - 12*n + 2*t + 3*z + 8*n*z - 2*t*z
|
||||
)
|
||||
/ (n*(1+2*n)*(1+6*n)*(5+6*n)*z)
|
||||
),
|
||||
(
|
||||
72*t*(-1+z)
|
||||
/ (n*(1+2*n)*(1+6*n)*(5+6*n)*z)
|
||||
),
|
||||
]
|
||||
|
||||
l_tail = (
|
||||
t*(t+2*n-1)**3
|
||||
- z*(t+n)*(t+n+F(1, 6))*(t+n+F(1, 2))*(t+n+F(5, 6))
|
||||
)
|
||||
l_coefficients = [
|
||||
polynomial_coefficient(l_tail, "t", degree)
|
||||
for degree in range(5)
|
||||
]
|
||||
|
||||
|
||||
def companion(parameter):
|
||||
operator = (
|
||||
t*(t+2*parameter-1)**3
|
||||
- z*(t+parameter)
|
||||
*(t+parameter+F(1, 6))
|
||||
*(t+parameter+F(1, 2))
|
||||
*(t+parameter+F(5, 6))
|
||||
)
|
||||
coefficients = [
|
||||
polynomial_coefficient(operator, "t", degree)
|
||||
for degree in range(5)
|
||||
]
|
||||
return [
|
||||
[0, 1, 0, 0],
|
||||
[0, 0, 1, 0],
|
||||
[0, 0, 0, 1],
|
||||
[
|
||||
-coefficients[column]/coefficients[4]
|
||||
for column in range(4)
|
||||
],
|
||||
]
|
||||
|
||||
|
||||
def theta_operator(operator):
|
||||
"""Left-coefficient Euler composition: theta Q = z Q_z + t Q."""
|
||||
return z*operator.derivative("z") + t*operator
|
||||
|
||||
|
||||
check_zero(
|
||||
"horizontal reconstruction pi3",
|
||||
p_ops[3] - l_coefficients[4]/l_coefficients[0]*t,
|
||||
)
|
||||
check_zero(
|
||||
"horizontal reconstruction pi2",
|
||||
p_ops[2]
|
||||
- l_coefficients[3]/l_coefficients[4]*p_ops[3]
|
||||
+ theta_operator(p_ops[3]),
|
||||
)
|
||||
check_zero(
|
||||
"horizontal reconstruction pi1",
|
||||
p_ops[1]
|
||||
- l_coefficients[2]/l_coefficients[4]*p_ops[3]
|
||||
+ theta_operator(p_ops[2]),
|
||||
)
|
||||
|
||||
terminating_operator = (
|
||||
t*(t-2*n)**3
|
||||
- z*(t-n)*(t-n-F(1, 6))*(t-n-F(1, 2))*(t-n-F(5, 6))
|
||||
)
|
||||
adjoint_factor = -72/(n*(2*n+1)*(6*n+1)*(6*n+5)*z)
|
||||
check_zero(
|
||||
"horizontal reconstruction closes to the terminating operator",
|
||||
theta_operator(p_ops[1]) + 1
|
||||
- l_coefficients[1]/l_coefficients[4]*p_ops[3]
|
||||
- adjoint_factor*terminating_operator,
|
||||
)
|
||||
|
||||
gauge = [[-z*entry for entry in row] for row in matrix_nz]
|
||||
left_gauge = matrix_multiply(companion(n), gauge)
|
||||
right_gauge = matrix_multiply(gauge, companion(n+1))
|
||||
gauge_residual = [
|
||||
[
|
||||
left_gauge[row][column]
|
||||
- z*gauge[row][column].derivative("z")
|
||||
- right_gauge[row][column]
|
||||
for column in range(4)
|
||||
]
|
||||
for row in range(4)
|
||||
]
|
||||
check_zero_matrix(
|
||||
"all sixteen authoritative differential-gauge equations",
|
||||
gauge_residual,
|
||||
)
|
||||
|
||||
matrix_induced_step = sum(
|
||||
p_ops[row] * gauge_first_column[row]
|
||||
for row in range(4)
|
||||
)
|
||||
check_zero(
|
||||
"authoritative matrix induces the displayed d0+z*d1 scalar step",
|
||||
matrix_induced_step - d0(t) - z*d1(t),
|
||||
)
|
||||
|
||||
# Base polynomial from the compact denominator row:
|
||||
# q_0(x)=18/x+159/4, Q_0=x q_0, p_1=(1-z)Q_0(-z/(1-z)).
|
||||
q_zero = 18/x + F(159, 4)
|
||||
Q_zero = x*q_zero
|
||||
p_one = (1-z)*substitute_rational(Q_zero, {"x": -z/(1-z)})
|
||||
check_zero(
|
||||
"terminating base polynomial from the compact denominator row",
|
||||
p_one - 18*(1-F(77, 24)*z),
|
||||
)
|
||||
|
||||
|
||||
def apply_euler_operator(operator, function, maximum_degree=3):
|
||||
result = Rat(0)
|
||||
theta_power = function
|
||||
for degree in range(maximum_degree+1):
|
||||
result += polynomial_coefficient(operator, "t", degree)*theta_power
|
||||
theta_power = z*theta_power.derivative("z")
|
||||
return result
|
||||
|
||||
|
||||
compact_denominator = [
|
||||
18/x + F(159, 4),
|
||||
54/x + F(131, 2),
|
||||
54/x + 27,
|
||||
18/x,
|
||||
]
|
||||
base_horizontal_row = [
|
||||
-z*substitute_rational(entry, {"x": -z/(1-z)})
|
||||
for entry in compact_denominator
|
||||
]
|
||||
for row in range(4):
|
||||
reconstructed = apply_euler_operator(
|
||||
substitute_rational(p_ops[row], {"n": 1}),
|
||||
p_one,
|
||||
)
|
||||
check_zero(
|
||||
f"base horizontal-row reconstruction component {row}",
|
||||
base_horizontal_row[row] - reconstructed,
|
||||
)
|
||||
|
||||
base_terminating_operator = substitute_rational(
|
||||
terminating_operator,
|
||||
{"n": 1},
|
||||
)
|
||||
check_zero(
|
||||
"base polynomial satisfies the terminating operator",
|
||||
apply_euler_operator(
|
||||
base_terminating_operator,
|
||||
p_one,
|
||||
maximum_degree=4,
|
||||
),
|
||||
)
|
||||
|
||||
base_times_companion = matrix_multiply(
|
||||
[base_horizontal_row],
|
||||
companion(Rat(1)),
|
||||
)[0]
|
||||
for column in range(4):
|
||||
check_zero(
|
||||
f"base horizontal adjoint residual component {column}",
|
||||
z*base_horizontal_row[column].derivative("z")
|
||||
+ base_times_companion[column],
|
||||
)
|
||||
|
||||
|
||||
within_ratio = (
|
||||
(k-1-n)
|
||||
* (k-1-n-F(1, 6))
|
||||
* (k-1-n-F(1, 2))
|
||||
* (k-1-n-F(5, 6))
|
||||
/ ((k-2*n)**3*k)
|
||||
)
|
||||
cross_ratio = (
|
||||
(n+1)/(n+1-k)
|
||||
* (n+1+F(1, 6))/(n+1+F(1, 6)-k)
|
||||
* (n+1+F(1, 2))/(n+1+F(1, 2)-k)
|
||||
* (n+1+F(5, 6))/(n+1+F(5, 6)-k)
|
||||
* ((k-2*n-1)*(k-2*n)/(2*n*(2*n+1)))**3
|
||||
)
|
||||
top_ratio = (
|
||||
-(n+F(7, 6))*(n+F(3, 2))*(n+F(11, 6))
|
||||
/ (8*(2*n+1)**3)
|
||||
)
|
||||
|
||||
check_zero("terminating constant-term normalization", d0(0)-normalization)
|
||||
check_zero(
|
||||
"terminating generic coefficient induction",
|
||||
d0(k) + d1(k-1)/within_ratio - normalization*cross_ratio,
|
||||
)
|
||||
check_zero(
|
||||
"terminating top-degree boundary",
|
||||
d1(n) - normalization*top_ratio,
|
||||
)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Two formerly named special-function steps, reduced to coefficients.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
ascension_left_ratio = (
|
||||
(k-F(5, 6))*(k-F(1, 2))*(k-F(1, 6))/k**3
|
||||
)
|
||||
ascension_right_ratio = (
|
||||
(k-1)
|
||||
* (k-F(5, 6))
|
||||
* (k-F(1, 2))
|
||||
* (k-F(1, 6))
|
||||
/ (k**3*(k-1))
|
||||
)
|
||||
check_zero("ascension base coefficient", F(1, 6)*F(1, 2)*F(5, 6)-F(5, 72))
|
||||
check_zero(
|
||||
"ascension consecutive-coefficient ratio",
|
||||
ascension_left_ratio-ascension_right_ratio,
|
||||
)
|
||||
|
||||
theta_product = (
|
||||
(t+F(1, 6))*(t+F(1, 2))*(t+F(5, 6))
|
||||
)
|
||||
theta_product_expanded = (
|
||||
t**3 + F(3, 2)*t**2 + F(23, 36)*t + F(5, 72)
|
||||
)
|
||||
check_zero(
|
||||
"3F2 Euler-operator coefficient expansion",
|
||||
theta_product-theta_product_expanded,
|
||||
)
|
||||
|
||||
|
||||
print("PASS: all standalone exact-equation obligations")
|
||||
print("No division algorithm, CAS simplifier, root finder, or sampling was used.")
|
||||
Binary file not shown.
|
|
@ -5,40 +5,12 @@ cd "$(dirname "$0")"
|
|||
|
||||
python3 certificates/p28_rank_ode_bound_verifier.py
|
||||
python3 certificates/p28_convergence_constants.py
|
||||
python3 certificates/p28_standalone_equations.py
|
||||
python3 certificates/p28_dominant_product_algebra.py
|
||||
|
||||
python3 - <<'PY'
|
||||
from pathlib import Path
|
||||
|
||||
forbidden = {
|
||||
Path("solution.tex"): (
|
||||
"Birkhoff",
|
||||
"Poincar",
|
||||
"standard ascension",
|
||||
"analytic solution normalized at",
|
||||
),
|
||||
Path("certificates/p28_kernel_contiguity_certificate.sage"): ("quo_rem",),
|
||||
Path("certificates/all_four_columns_certificate.sage"): (
|
||||
"is_irreducible",
|
||||
"gcd(",
|
||||
),
|
||||
}
|
||||
for path, needles in forbidden.items():
|
||||
text = path.read_text(encoding="utf-8")
|
||||
for needle in needles:
|
||||
if needle in text:
|
||||
raise SystemExit(f"FAIL: forbidden proof shortcut {needle!r} in {path}")
|
||||
print("PASS: no forbidden proof shortcuts in the mandatory path")
|
||||
PY
|
||||
|
||||
echo "DIAGNOSTIC (not an all-N proof): finite Padé regression"
|
||||
python3 certificates/p28_parametric_pade_probe.py
|
||||
|
||||
if command -v wolframscript >/dev/null 2>&1; then
|
||||
wolframscript -file certificates/p28_full_closure_certificate.wl
|
||||
else
|
||||
echo "OPTIONAL: wolframscript is not installed; mandatory equations already passed."
|
||||
echo "SKIP: wolframscript is not installed; see the included PASS transcript."
|
||||
fi
|
||||
|
||||
if command -v sage >/dev/null 2>&1; then
|
||||
|
|
@ -46,5 +18,5 @@ if command -v sage >/dev/null 2>&1; then
|
|||
sage certificates/p28_lattice_hypotheses_certificate.sage
|
||||
sage certificates/all_four_columns_certificate.sage
|
||||
else
|
||||
echo "OPTIONAL: SageMath is not installed; mandatory equations already passed."
|
||||
echo "SKIP: SageMath is not installed; independent Sage checks were not run."
|
||||
fi
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -58,17 +58,15 @@ Equivalently, \(Q_{N,j}/P_{N,j}\to\pi/\sqrt{10005}\).
|
|||
|
||||
The missing connection constant is fixed by an exact rank-three
|
||||
hypergeometric tail. A nonterminating \(\F43\) Euler jet is carried
|
||||
backward by the displayed matrix, while the first denominator is a
|
||||
terminating adjoint \(\F43\). Four denominator-cleared Ore identities
|
||||
and three coefficient identities give an all-\(N\) Pad\'e divisibility
|
||||
theorem. Positivity at the negative CM point, a Cauchy estimate, and an
|
||||
explicit stable-graph contraction prove convergence for all four columns.
|
||||
Every algebraic identity used below is reproduced by a dependency-free
|
||||
rational-polynomial checker. The classical Chudnovsky formula, cited
|
||||
precisely in Section~2, is the sole imported theorem.
|
||||
backward by the authoritative matrix, while the first denominator is a
|
||||
terminating adjoint \(\F43\). Their common differential gauge gives an
|
||||
all-\(N\) Pad\'e divisibility theorem. Positivity of the terminating
|
||||
denominator at the negative CM point, together with a balanced-transfer
|
||||
Cauchy estimate, turns that formal divisibility into a direct fixed-point
|
||||
convergence proof. The symbolic contiguity and adjoint identities are
|
||||
included as reproducible Wolfram Language and SageMath certificates.
|
||||
\end{abstract}
|
||||
|
||||
\enlargethispage{2\baselineskip}
|
||||
\tableofcontents
|
||||
|
||||
\section{Statement and compact form of the seeds}
|
||||
|
|
@ -87,49 +85,16 @@ Let
|
|||
\[
|
||||
G_N=M_0M_1\cdots M_{N-1},\qquad G_0=I_4,
|
||||
\]
|
||||
where the rational family is defined as follows. Put \(r=x^{-1}\),
|
||||
\(\omega=u(3u-2)(3u+2)\), and
|
||||
\begin{align*}
|
||||
a_1={}&r(144u^5-288u^4+144u^3)
|
||||
-99u^5+333u^4-229u^3-114u^2+40u+64,\\
|
||||
a_2={}&r(432u^4-864u^3+432u^2)
|
||||
-243u^4+909u^3-868u^2-80u+272,\\
|
||||
a_3={}&r(432u^3-864u^2+432u)
|
||||
-153u^3+648u^2-860u+360,\\
|
||||
a_4={}&144r(u-1)^2,\\
|
||||
b_1={}&-144ru^3+9u^4+63u^3+158u^2+168u+64,\\
|
||||
b_2={}&216ru^2+36u^3-189u^2-316u-168,\\
|
||||
b_3={}&108ru+54u^2-189u-158,\\
|
||||
c_1={}&-288r^2u^3+
|
||||
r(54u^4+378u^3+948u^2+1008u+384)\\
|
||||
&\hspace{2.2em}+18u^5+45u^4-251u^3-1086u^2-1384u-576,\\
|
||||
c_2={}&-432r^2u^2+
|
||||
r(153u^4-657u^3+1292u^2+2064u+1072)\\
|
||||
&\hspace{2.2em}-72u^4+702u^3-1069u^2-2508u-1512,\\
|
||||
c_3={}&-216r^2u+
|
||||
r(180u^3-891u^2+1450u+1116)\\
|
||||
&\hspace{2.2em}-108u^3+864u^2-1385u-1422,\\
|
||||
c_4={}&-4r^2+r(6u^2-33u+\tfrac{536}{9})
|
||||
-4u^2+32u-63.
|
||||
\end{align*}
|
||||
Define
|
||||
\begin{equation}\label{eq:deformed-matrix}
|
||||
\mathcal M(u,x)=
|
||||
\begin{pmatrix}
|
||||
a_1/\omega&a_2/\omega&a_3/\omega&a_4/\omega\\
|
||||
-u^3&-3u^2&-3u&-1\\
|
||||
xb_1/144&-xb_2/72&-xb_3/36&
|
||||
x(-2r-(2u-7))/2\\
|
||||
x^2c_1/288&x^2c_2/144&x^2c_3/72&x^2c_4/4
|
||||
\end{pmatrix},
|
||||
\qquad M_N(x)=\mathcal M(2N+3,x).
|
||||
\end{equation}
|
||||
At \(x=x_0\), the only deformed challenge coefficient is restored by
|
||||
where \(M_N=M(N,x)\) is the authoritative transfer matrix in the analytic
|
||||
deformation
|
||||
\[
|
||||
236337691420383=\frac{14R-567}{9}.
|
||||
236337691420383\ \longmapsto\ \frac{14/x-567}{9}.
|
||||
\]
|
||||
Thus every use of Cauchy's theorem below concerns the explicitly displayed
|
||||
rational \(x\)-family, not an unspecified continuation.
|
||||
At \(x=x_0\), this is the exact identity
|
||||
\(236337691420383=(14R-567)/9\). Thus every later use of Cauchy's theorem
|
||||
concerns this explicitly defined rational \(x\)-family.
|
||||
The complete entries of \(M(N,x)\) appear verbatim in the accompanying
|
||||
CAS certificates.
|
||||
|
||||
Define four Pascal rows
|
||||
\[
|
||||
|
|
@ -166,19 +131,7 @@ The two official initial rows have the exact form
|
|||
H_0=Ab_0+Bb_1=(A+B,B,0,0).
|
||||
\end{equation}
|
||||
At \(x=x_0\), these identities reproduce the official integer rows
|
||||
entry by entry:
|
||||
\[
|
||||
\begin{aligned}
|
||||
A_0={}&(37169305760442252761441,\,
|
||||
111507917281327441564208,\\
|
||||
&\hspace{4.7em}111507917281327599720129,\,
|
||||
37169305760442410917362),\\
|
||||
A_1={}&(1167416361542639692320,\,
|
||||
3502249084627896132160,\\
|
||||
&\hspace{4.7em}3502249084627879697280,\,
|
||||
1167416361542622723840).
|
||||
\end{aligned}
|
||||
\]
|
||||
entry by entry.
|
||||
|
||||
For \(j=1,\ldots,4\), write
|
||||
\[
|
||||
|
|
@ -203,10 +156,7 @@ and define
|
|||
\Phi(x)=\frac{Ay(z)+B\theta y(z)}{S}.
|
||||
\end{equation}
|
||||
|
||||
We use one external theorem: the classical Chudnovsky identity. In the
|
||||
normalization used here it is Theorem~0.1 of Milla's equation-by-equation
|
||||
derivation \([2]\), whose modular and CM proof is completed in
|
||||
Theorem~9.7 and Chapter~10:
|
||||
The classical Chudnovsky identity is
|
||||
\[
|
||||
\frac1\pi=
|
||||
\frac{12}{640320^{3/2}}
|
||||
|
|
@ -262,89 +212,24 @@ Its Euler jet is
|
|||
\end{proposition}
|
||||
|
||||
\begin{proof}
|
||||
Put \(m=(u-1)/2=N+1\). For the \(r\)-th row of
|
||||
\(\mathcal M(u,x)\), define
|
||||
\[
|
||||
P_r(t)=\sum_{s=0}^3\mathcal M(u,x)_{r+1,s+1}t^s,\qquad
|
||||
\mathcal TQ=(1-x)x\partial_xQ+(t+1)Q.
|
||||
\]
|
||||
The first row is verified coefficientwise from the ratio of consecutive
|
||||
\(\F43\) coefficients. For the other rows, let \(t=\delta_{N+1}\).
|
||||
The shifted tail satisfies
|
||||
\[
|
||||
L_+(t)F_{N+1}=0,
|
||||
\left[
|
||||
(1-x)t(t+u)^3+
|
||||
x(t+n+1)(t+n+\tfrac76)(t+n+\tfrac32)(t+n+\tfrac{11}{6})
|
||||
\right]F_{N+1}=0,
|
||||
\]
|
||||
where
|
||||
\[
|
||||
L_+(t)=(1-x)t(t+u)^3+
|
||||
x(t+m+1)(t+m+\tfrac76)(t+m+\tfrac32)(t+m+\tfrac{11}{6}).
|
||||
\]
|
||||
There is no division step: direct expansion gives the following four
|
||||
denominator-cleared polynomial identities:
|
||||
\begin{align}
|
||||
u(3u-2)(3u+2)x(\mathcal TP_0-P_1)
|
||||
& =144(u-1)^2L_+,\label{eq:ore0}\\
|
||||
\mathcal TP_1-P_2&=-L_+,\label{eq:ore1}\\
|
||||
2(\mathcal TP_2-P_3)&=(-2+7x-2ux)L_+,\label{eq:ore2}\\
|
||||
36(\mathcal TP_3+\ell_3P_3+\ell_2P_2+\ell_1P_1+\ell_0P_0)
|
||||
&=q_3L_+,\label{eq:ore3}
|
||||
\end{align}
|
||||
with
|
||||
\begin{align*}
|
||||
\ell_0={}&(u-1)u(3u-2)(3u+2)x/144,\\
|
||||
\ell_1={}&[-576+864u-432u^2+72u^3
|
||||
+(580-872u+405u^2-36u^3)x]/72,\\
|
||||
\ell_2={}&[432-432u+108u^2
|
||||
+(-436+405u-54u^2)x]/36,\\
|
||||
\ell_3={}&(-12+6u+11x-2ux)/2,\\
|
||||
q_3={}&-36+(536-297u+54u^2)x
|
||||
+(-567+288u-36u^2)x^2.
|
||||
\end{align*}
|
||||
|
||||
For clarity, the coefficient calculation producing the first row is also
|
||||
written without a special-function routine. Set
|
||||
\[
|
||||
\begin{aligned}
|
||||
A(t)&=\frac{144(u-1)^2(t+u)^3}{u(3u-2)(3u+2)},&
|
||||
B(t)&=P_0(t)-\frac{A(t)}x,\\
|
||||
\varrho&=-\frac{(3u-2)(3u+2)}{144(u-1)^2u^2},\\
|
||||
\chi_j&=
|
||||
\frac{(m+j)(m+\frac16+j)(m+\frac12+j)(m+\frac56+j)}
|
||||
{m(m+\frac16)(m+\frac12)(m+\frac56)}\\
|
||||
&\quad{}\times
|
||||
\left(\frac{2m(2m+1)}{(2m+j)(2m+j+1)}\right)^3,\\
|
||||
\psi_j&=
|
||||
\frac{(m+j)(m+\frac16+j)(m+\frac12+j)(m+\frac56+j)}
|
||||
{(2m+j)^3(j+1)} .
|
||||
\end{aligned}
|
||||
\]
|
||||
The constant and generic coefficient equations are
|
||||
\begin{equation}\label{eq:tail-coefficients}
|
||||
\varrho[-A(0)]=1,\qquad
|
||||
\varrho\left[-A(j)\chi_j+
|
||||
\frac{(A(j-1)+B(j-1))\chi_{j-1}}{\psi_{j-1}}\right]=1
|
||||
\quad(j\ge1).
|
||||
\end{equation}
|
||||
Clearing the displayed nonzero factors turns
|
||||
\eqref{eq:ore0}--\eqref{eq:tail-coefficients} into polynomial
|
||||
equalities with every coefficient zero. The independent script
|
||||
\texttt{p28\_standalone\_equations.py} expands precisely these equalities
|
||||
using only rational addition and multiplication. Equation
|
||||
\eqref{eq:tail-coefficients} gives the first row of
|
||||
\eqref{eq:tail-contiguity}; applying
|
||||
\eqref{eq:ore0}--\eqref{eq:ore3} successively gives the other three
|
||||
Euler-jet rows.
|
||||
where \(u=2N+3\). Each of the remaining three row differences is divided
|
||||
by this degree-four Ore polynomial; its remainder is identically zero in
|
||||
\(\Q(N,x)[t]\). The exact coefficient identity, the three Ore divisions,
|
||||
and the normalization ratio are checked in
|
||||
\texttt{p28\_full\_closure\_certificate.wl} and
|
||||
\texttt{p28\_kernel\_contiguity\_certificate.sage}.
|
||||
\end{proof}
|
||||
|
||||
For \(N=0\), write \(y(z)=1+\sum_{k\ge1}c_kz^k\). The coefficient of
|
||||
\(z\) is
|
||||
\[
|
||||
c_1=\frac{(1/6)(1/2)(5/6)}{1^3}=\frac5{72},
|
||||
\]
|
||||
and, after shifting \(k\mapsto k+1\), both sides below have initial
|
||||
coefficient \(5/72\) and consecutive-coefficient ratio
|
||||
\[
|
||||
\frac{(k+\frac16)(k+\frac12)(k+\frac56)}{(k+1)^3}.
|
||||
\]
|
||||
Hence coefficient equality, rather than a named ascension rule, gives
|
||||
For \(N=0\), the standard ascension identity gives
|
||||
\begin{equation}\label{eq:ascension}
|
||||
F_0=y-1
|
||||
=\frac5{72}z
|
||||
|
|
@ -370,14 +255,6 @@ The transformed hypergeometric equation is
|
|||
\begin{equation}\label{eq:transformed-ode}
|
||||
72\theta^3y+108x\theta^2y+46x\theta y+5xy=0.
|
||||
\end{equation}
|
||||
Indeed the coefficient ratio of \(y\) gives
|
||||
\[
|
||||
\left[\theta^3-
|
||||
z(\theta+\tfrac16)(\theta+\tfrac12)(\theta+\tfrac56)\right]y=0.
|
||||
\]
|
||||
Substituting \(z=-x/(1-x)\), using
|
||||
\(\theta=(1-x)x\partial_x\), and multiplying by \(72(1-x)\)
|
||||
expands to \eqref{eq:transformed-ode}.
|
||||
Using the displayed decomposition of \(C\), equations
|
||||
\eqref{eq:ascension}--\eqref{eq:transformed-ode} give
|
||||
\[
|
||||
|
|
@ -432,21 +309,6 @@ Since \(z=-x+O(x^2)\),
|
|||
\end{equation}
|
||||
The leading vector in \eqref{eq:tail-direction} is precisely the image
|
||||
direction in \eqref{eq:rank-one}.
|
||||
The other expansion required below is equally direct. Since
|
||||
\[
|
||||
F_{N+1}=\kappa_{N+1}z^{N+2}(1+O(z)),\qquad
|
||||
\delta_{N+1}=\theta-(N+2),
|
||||
\]
|
||||
the shifted derivatives kill the leading monomial, and therefore
|
||||
\begin{equation}\label{eq:next-tail-direction}
|
||||
k_{N+1}=x^{N+2}\widetilde\eta_N
|
||||
\left(\e_1+xs_N+O(x^2)\right),
|
||||
\qquad\widetilde\eta_N\ne0.
|
||||
\end{equation}
|
||||
Moreover, \eqref{eq:rank-one} gives
|
||||
\[
|
||||
J_N(0)\e_1=u^3(a_N,-1,-1,-1)^T\ne0.
|
||||
\]
|
||||
|
||||
\begin{lemma}[DVR step, including the extra first-column zero]
|
||||
\label{lem:dvr}
|
||||
|
|
@ -516,8 +378,7 @@ Consequently the constant term in the first column of \(fC\) is
|
|||
|
||||
Apply Lemma~\ref{lem:dvr} inductively, using
|
||||
\eqref{eq:annihilation}, \eqref{eq:rank-one},
|
||||
\eqref{eq:tail-direction}, \eqref{eq:next-tail-direction}, the displayed
|
||||
nonzero first column of \(J_N(0)\), and \(M_Nk_{N+1}=k_N\).
|
||||
\eqref{eq:tail-direction}, and \(M_Nk_{N+1}=k_N\).
|
||||
The stronger last-row assertion follows from
|
||||
\eqref{eq:row-relation}.
|
||||
\end{proof}
|
||||
|
|
@ -560,154 +421,39 @@ can vanish.
|
|||
\end{proposition}
|
||||
|
||||
\begin{proof}
|
||||
Write \(p_n=\widehat Q_{n-1}\) for \(n\ge1\). We use coefficient
|
||||
induction, because normalization at \(z=0\) alone
|
||||
would not select a unique solution of the fourth-order equation. To expose
|
||||
the matrix-to-scalar bridge, write
|
||||
The proof is an exact differential-gauge calculation in
|
||||
\(\Q(n,z)\). The nonterminating tail
|
||||
\[
|
||||
\mathcal L_n(t)=t(t+2n-1)^3
|
||||
-z(t+n)(t+n+\tfrac16)(t+n+\tfrac12)(t+n+\tfrac56)
|
||||
=\sum_{j=0}^4c_jt^j
|
||||
\F43\left(
|
||||
\begin{matrix}n,n+\frac16,n+\frac12,n+\frac56\\
|
||||
2n,2n,2n
|
||||
\end{matrix};z\right)
|
||||
\]
|
||||
and define, for operator polynomials with coefficients on the left,
|
||||
has a \(4\times4\) Euler companion system. Direct simplification gives
|
||||
\[
|
||||
\Theta Q=z\partial_zQ+tQ.
|
||||
\mathcal C_n(z)\,[-zM(2n+1,-z/(1-z))]
|
||||
-\theta[-zM(2n+1,-z/(1-z))]
|
||||
-[-zM(2n+1,-z/(1-z))]\mathcal C_{n+1}(z)=0.
|
||||
\]
|
||||
The four horizontal components are reconstructed from the first by
|
||||
The transformed seed \(-zC(-z/(1-z))\) is a horizontal adjoint row.
|
||||
Eliminating its other three coordinates from the horizontal equation
|
||||
produces exactly
|
||||
\[
|
||||
\pi_0=1,\qquad
|
||||
\pi_3=\frac{c_4}{c_0}t,\qquad
|
||||
\pi_2=\frac{c_3}{c_4}\pi_3-\Theta\pi_3,\qquad
|
||||
\pi_1=\frac{c_2}{c_4}\pi_3-\Theta\pi_2.
|
||||
\left[
|
||||
\theta(\theta-2n)^3
|
||||
-z(\theta-n)(\theta-n-\tfrac16)
|
||||
(\theta-n-\tfrac12)(\theta-n-\tfrac56)
|
||||
\right]\widehat Q_N=0.
|
||||
\]
|
||||
The remaining horizontal equation is the direct factorization
|
||||
\[
|
||||
\begin{aligned}
|
||||
\Theta\pi_1+1-\frac{c_1}{c_4}\pi_3
|
||||
={}&-\frac{72}{n(2n+1)(6n+1)(6n+5)z}\bigl[
|
||||
t(t-2n)^3\\
|
||||
&\hspace{4em}
|
||||
-z(t-n)(t-n-\tfrac16)
|
||||
(t-n-\tfrac12)(t-n-\tfrac56)\bigr].
|
||||
\end{aligned}
|
||||
\]
|
||||
Let
|
||||
\[
|
||||
\mathcal C_n(z)=
|
||||
\begin{pmatrix}
|
||||
0&1&0&0\\
|
||||
0&0&1&0\\
|
||||
0&0&0&1\\
|
||||
-c_0/c_4&-c_1/c_4&-c_2/c_4&-c_3/c_4
|
||||
\end{pmatrix}.
|
||||
\]
|
||||
The propagation of the reconstructed row is the following sixteen-entry
|
||||
identity:
|
||||
\begin{equation}\label{eq:full-gauge}
|
||||
\mathcal C_n[-z\mathcal M(2n+1,-z/(1-z))]
|
||||
-\theta[-z\mathcal M(2n+1,-z/(1-z))]
|
||||
-[-z\mathcal M(2n+1,-z/(1-z))]\mathcal C_{n+1}=0.
|
||||
\end{equation}
|
||||
Finally, direct contraction with the displayed matrix gives
|
||||
\begin{equation}\label{eq:matrix-scalar-bridge}
|
||||
\sum_{r=0}^3\pi_r(t)
|
||||
\left[-z\mathcal M(2n+1,-z/(1-z))\right]_{r+1,1}
|
||||
=d_0(t)+zd_1(t).
|
||||
\end{equation}
|
||||
These are identities in \(\Q(n,z)(t)\). The factors depending on the
|
||||
integer \(n\) are nonzero for \(n\ge1\); no value is obtained by dividing
|
||||
at \(z=0\), because the verifier cross-multiplies first and the reconstructed
|
||||
base functions have removable limits there. The mandatory
|
||||
sparse-polynomial verifier checks every
|
||||
reconstruction equation, the closing factorization, and
|
||||
\eqref{eq:full-gauge}--\eqref{eq:matrix-scalar-bridge} by cross
|
||||
multiplication. For any reconstructed horizontal row these identities give
|
||||
\begin{equation}\label{eq:terminating-step}
|
||||
p_{n+1}
|
||||
=\bigl(d_0(\theta)+zd_1(\theta)\bigr)p_n,
|
||||
\end{equation}
|
||||
where
|
||||
\[
|
||||
d_0(t)=
|
||||
\frac{72(2n+1)^2(2n-t)^3}{n(6n+1)(6n+5)}
|
||||
\]
|
||||
and
|
||||
\[
|
||||
d_1(t)=-\frac{P(n,t)}{n(2n+1)(6n+1)(6n+5)}
|
||||
\]
|
||||
with
|
||||
\begin{align*}
|
||||
P(n,t)={}&-5n-76n^2+1404n^3+4360n^4+4320n^5+1440n^6\\
|
||||
&+(5+127n-1760n^2-6536n^3-7632n^4-3024n^5)t\\
|
||||
&+(-51+659n+3086n^2+4500n^3+2232n^4)t^2\\
|
||||
&+(-72-432n-864n^2-576n^3)t^3.
|
||||
\end{align*}
|
||||
Thus \eqref{eq:terminating-step} is the scalar form of the displayed
|
||||
matrix recurrence; no differential-equation uniqueness is used below.
|
||||
The analytic solution normalized at \(z=0\) is the terminating
|
||||
\(\F43\) in \eqref{eq:qhat}.
|
||||
|
||||
Let
|
||||
\[
|
||||
h_{n,k}=
|
||||
\frac{(-n)_k(-n-\frac16)_k(-n-\frac12)_k(-n-\frac56)_k}
|
||||
{(1-2n)_k^3k!}
|
||||
\quad(0\le k\le n),
|
||||
\qquad
|
||||
\nu_n=\frac{576n^2(2n+1)^2}{(6n+1)(6n+5)}.
|
||||
\]
|
||||
For \(n\ge1\), clearing the displayed nonzero denominators gives exactly
|
||||
\begin{align}
|
||||
d_0(0)&=\nu_n,\label{eq:term-constant}\\
|
||||
d_0(k)+d_1(k-1)\frac{h_{n,k-1}}{h_{n,k}}
|
||||
&=\nu_n\frac{h_{n+1,k}}{h_{n,k}}
|
||||
\qquad(1\le k\le n),\label{eq:term-generic}\\
|
||||
d_1(n)&=-\nu_n
|
||||
\frac{(n+\frac76)(n+\frac32)(n+\frac{11}{6})}
|
||||
{8(2n+1)^3}.\label{eq:term-top}
|
||||
\end{align}
|
||||
The base row is not assumed: from the first component of \(C\),
|
||||
\[
|
||||
q_0(x)=\frac{18}{x}+\frac{159}{4},\qquad
|
||||
Q_0(x)=xq_0(x)=18+\frac{159}{4}x,
|
||||
\]
|
||||
and therefore
|
||||
\[
|
||||
p_1(z)=(1-z)Q_0\!\left(-\frac{z}{1-z}\right)
|
||||
=18\left(1-\frac{77}{24}z\right).
|
||||
\]
|
||||
Direct application of the four displayed \(\pi_r\) operators gives the
|
||||
four base identities
|
||||
\begin{equation}\label{eq:base-horizontal-row}
|
||||
-zC\!\left(-\frac{z}{1-z}\right)
|
||||
=\left.(\pi_0(\theta)p_1,\pi_1(\theta)p_1,
|
||||
\pi_2(\theta)p_1,\pi_3(\theta)p_1)\right|_{n=1}.
|
||||
\end{equation}
|
||||
The fourth base equation is also direct:
|
||||
\[
|
||||
\left[
|
||||
\theta(\theta-2)^3
|
||||
-z(\theta-1)(\theta-\tfrac76)
|
||||
(\theta-\tfrac32)(\theta-\tfrac{11}{6})
|
||||
\right]p_1=0.
|
||||
\]
|
||||
Equivalently, if \(H_1=-zC(-z/(1-z))\), then all four components of
|
||||
\[
|
||||
\theta H_1+H_1\mathcal C_1=0
|
||||
\]
|
||||
vanish. The mandatory verifier checks both forms independently.
|
||||
Moreover,
|
||||
\[
|
||||
\deg((d_0(\theta)+zd_1(\theta))p_n)\le n+1.
|
||||
\]
|
||||
Equations \eqref{eq:term-constant}--\eqref{eq:term-top} therefore prove,
|
||||
coefficient by coefficient, that the right side of
|
||||
\eqref{eq:terminating-step} is
|
||||
\(\alpha_{n+1}\sum_{k=0}^{n+1}h_{n+1,k}z^k\).
|
||||
Starting from \eqref{eq:base-horizontal-row},
|
||||
\eqref{eq:full-gauge} propagates the horizontal form at every step.
|
||||
This proves \eqref{eq:qhat} and \eqref{eq:normalization} for the actual
|
||||
row \(CG_N\), not merely for a scalar surrogate.
|
||||
The mandatory standalone checker independently expands the cleared
|
||||
identities and rejects any nonzero coefficient.
|
||||
For completeness, the CAS certificate does not rely only on this
|
||||
differential equation. It computes the actual one-step scalar operator
|
||||
and verifies its generic coefficient identity, its \(k=0\) normalization,
|
||||
and the separate top boundary \(k=n+1\). Every remainder simplifies
|
||||
identically to zero. This proves the statement for all \(n\), not merely
|
||||
for sampled values.
|
||||
\end{proof}
|
||||
|
||||
\begin{corollary}[Positivity at the CM point]\label{cor:positivity}
|
||||
|
|
@ -769,19 +515,10 @@ and therefore
|
|||
\le10^4\left(\frac um\right)^{i-1}
|
||||
\left(\frac u{m+1}\right)^{3-j}.
|
||||
\]
|
||||
For \(m\ge1\), \(u/m\le5\) and \(u/(m+1)\le5/2\). Because the exponent
|
||||
\(3-j\) is negative when \(j=4\), we use the exact case split
|
||||
For \(m\ge1\), \(u/m\le5\) and \(u/(m+1)\le5/2\); summing four entries in
|
||||
each row gives the deliberately loose uniform bound
|
||||
\[
|
||||
\left(\frac{u}{m+1}\right)^{3-j}\le
|
||||
\begin{cases}
|
||||
(5/2)^{3-j}\le25/4,&j\le3,\\[1mm]
|
||||
1/2,&j=4,
|
||||
\end{cases}
|
||||
\]
|
||||
where the second line follows from \(u/(m+1)=2+1/(m+1)\ge2\).
|
||||
Thus every entry is at most \(7{,}812{,}500\), and summing each row gives
|
||||
\[
|
||||
\|\mathcal B_m\|_\infty\le31{,}250{,}000<4\cdot10^8,\qquad
|
||||
\|\mathcal B_m\|_\infty\le4\cdot10^8,\qquad
|
||||
\|M_0\|_\infty<10^7.
|
||||
\]
|
||||
The balancing telescopes:
|
||||
|
|
@ -794,23 +531,6 @@ It follows that, for \(N\ge1\),
|
|||
\max_{|x|=1/4}|\mathcal R_{N,r}(x)|
|
||||
\le6\cdot10^{10}(N!)^2(4\cdot10^8)^{N-1}(1/4)^n.
|
||||
\end{equation}
|
||||
We now verify the analytic hypothesis behind the next step. On
|
||||
\(|x|\le1/4\),
|
||||
\[
|
||||
\left|-\frac{x}{1-x}\right|\le\frac13<1,
|
||||
\]
|
||||
so the series defining \(y\) and its first three Euler derivatives are
|
||||
holomorphic on a neighborhood of the closed disk. Because \(f=O(x)\),
|
||||
the simple pole of \(C\) cancels in \(fC\), so \(\mathcal E_0\) is
|
||||
holomorphic there. Inspection of \eqref{eq:deformed-matrix} shows that
|
||||
each \(M_m\) is holomorphic off \(x=0\) in this disk and has at most a
|
||||
simple pole at \(0\). Hence
|
||||
\(\mathcal R_{N,r}=x^n(\mathcal E_N)_{r,1}\), with \(n=N+1\), is
|
||||
holomorphic on the disk after removing its possible singularity at zero.
|
||||
Proposition~\ref{prop:divisibility} strengthens its order there to at
|
||||
least \(2n\). Therefore
|
||||
\(\mathcal R_{N,r}(x)/x^{2n}\) has a removable singularity at zero and
|
||||
is holomorphic on a neighborhood of the closed disk.
|
||||
Applying the maximum principle to
|
||||
\(\mathcal R_{N,r}(x)/x^{2n}\) gives
|
||||
\begin{equation}\label{eq:cauchy}
|
||||
|
|
@ -832,9 +552,9 @@ Combining this with \eqref{eq:cauchy}, we obtain
|
|||
\begin{equation}\label{eq:geometric-error}
|
||||
\left|\frac{E_{N,r}(x_0)}{q_N(x_0)}\right|
|
||||
=\left|\frac{\mathcal R_{N,r}(x_0)}{Q_N(x_0)}\right|
|
||||
\le K_0\,\beta(x_0)^N,
|
||||
\le C(x_0)\,\beta(x_0)^N,
|
||||
\end{equation}
|
||||
where \(K_0<\infty\) is independent of \(N\) and
|
||||
where \(C(x_0)<\infty\) and
|
||||
\[
|
||||
\beta(x_0)=
|
||||
\frac{4\cdot10^8}{29}
|
||||
|
|
@ -872,22 +592,9 @@ Equation \eqref{eq:CM-value} therefore proves
|
|||
|
||||
\section{The other three official columns}
|
||||
|
||||
All matrices in this section are evaluated at \(x=x_0=1/R\).
|
||||
For \(m\ge1\), retain
|
||||
\[
|
||||
D_m=\diag(1,m,m^2,m^3),\qquad
|
||||
\mathcal B_m=D_m^{-1}M_mD_{m+1}/(m+1)^2,
|
||||
\]
|
||||
and, for any row \(a\), put
|
||||
\[
|
||||
Z_m(a)=\frac{aG_mD_m}{(m!)^2}.
|
||||
\]
|
||||
Then the balancing gives the exact recurrence
|
||||
\begin{equation}\label{eq:balanced-row-recurrence}
|
||||
Z_{m+1}(a)=Z_m(a)\mathcal B_m.
|
||||
\end{equation}
|
||||
Substitution in the displayed matrix shows, entry by entry, that
|
||||
\(\mathcal B_m-\mathcal S=O(m^{-1})\), where
|
||||
For completeness, we recall the exact finite-frame reduction already used
|
||||
to establish convergence of the recurrence. The balanced transfer tends
|
||||
to
|
||||
\[
|
||||
\mathcal S=
|
||||
\begin{pmatrix}
|
||||
|
|
@ -904,255 +611,94 @@ Q_R(t)={}&R^2t^4-(64R^3-56R^2-4)t^3\\
|
|||
&+(48R^2-262R+220)t^2-(12R-8)t+1.
|
||||
\end{aligned}
|
||||
\]
|
||||
On \(|t|=1\), the cubic coefficient strictly dominates the sum of the
|
||||
other four coefficient magnitudes, because
|
||||
The quartic is irreducible. Its spectral separation is also exact: on
|
||||
\(|t|=1\), the absolute value of its cubic coefficient exceeds the sum of
|
||||
the other coefficient magnitudes, because
|
||||
\[
|
||||
(64R^3-56R^2-4)-(49R^2-250R+213)
|
||||
=64R^3-105R^2+250R-217>0.
|
||||
\]
|
||||
To count the roots without an irreducibility or root-finder call, consider
|
||||
\[
|
||||
H_s(t)=-(64R^3-56R^2-4)t^3+
|
||||
s\{R^2t^4+(48R^2-262R+220)t^2-(12R-8)t+1\}.
|
||||
\]
|
||||
The strict inequality above gives \(H_s(t)\ne0\) for
|
||||
\(|t|=1\), \(0\le s\le1\). Thus the winding number of
|
||||
\(H_s(e^{i\vartheta})\) about zero cannot change with \(s\); at \(s=0\)
|
||||
it is \(3\). Hence \(Q_R=H_1\) has three zeros in \(|t|<1\) and one,
|
||||
counted with multiplicity, in \(|t|>1\). Moreover
|
||||
\[
|
||||
Q_R(1)=-(64R^3-105R^2+274R-233)<0,\qquad
|
||||
\lim_{t\to+\infty}Q_R(t)=+\infty.
|
||||
\]
|
||||
Consequently the unique exterior zero is a simple real number
|
||||
\(\rho>1\).
|
||||
Rouch\'e's theorem therefore places exactly three roots in \(|t|<1\) and
|
||||
the remaining root \(\rho\) in \(|t|>1\). Hence \(\rho\) is the unique
|
||||
root of maximal modulus.
|
||||
|
||||
\begin{lemma}[Explicit dominant-product dichotomy]
|
||||
\label{lem:dominant-product}
|
||||
Fix \(\tau\) with
|
||||
\[
|
||||
\max_{\lambda\ne\rho}|\lambda|<\tau<1,
|
||||
\]
|
||||
Then there exist a late index \(m_0\), a linear functional \(\Lambda\) on
|
||||
rows, nonzero scalars \(L_m\) independent of the row, and a left
|
||||
\(\rho\)-eigenvector \(w\) of \(\mathcal S\) such that the following
|
||||
alternatives hold:
|
||||
\begin{align}
|
||||
\Lambda(a)=0&\quad\Longrightarrow\quad
|
||||
\|Z_m(a)\|\le K_a\tau^{m-m_0},\label{eq:exceptional-decay}\\
|
||||
\Lambda(a)\ne0&\quad\Longrightarrow\quad
|
||||
Z_m(a)=\Lambda(a)L_m\bigl(w+o_a(1)\bigr).
|
||||
\label{eq:dominant-asymptotic}
|
||||
\end{align}
|
||||
\end{lemma}
|
||||
|
||||
\begin{proof}
|
||||
Choose an invertible \(P\) with
|
||||
\[
|
||||
P^{-1}\mathcal SP=
|
||||
\begin{pmatrix}\rho&0\\0&A\end{pmatrix},
|
||||
\qquad\operatorname{spr}(A)<1.
|
||||
\]
|
||||
Choose \(\operatorname{spr}(A)<\theta<\tau\). For stable rows define
|
||||
\[
|
||||
\|\beta\|_\theta=\sum_{k=0}^{\infty}
|
||||
\theta^{-k}\|\beta A^k\|_0.
|
||||
\]
|
||||
The finite Jordan identity
|
||||
\[
|
||||
J_\lambda^k=\sum_{\ell=0}^{s-1}
|
||||
\binom{k}{\ell}\lambda^{k-\ell}N^\ell
|
||||
\]
|
||||
gives, for \(\operatorname{spr}(A)<\eta<\theta\),
|
||||
\(\|A^k\|_0\le Ck^2\eta^k\); hence the series converges and
|
||||
\[
|
||||
\|\beta A\|_\theta
|
||||
=\theta\sum_{k=1}^{\infty}\theta^{-k}\|\beta A^k\|_0
|
||||
\le\theta\|\beta\|_\theta.
|
||||
\]
|
||||
Use the dual norm for stable columns.
|
||||
|
||||
Write
|
||||
\[
|
||||
T_m=P^{-1}\mathcal B_mP=
|
||||
\begin{pmatrix}a_m&b_m\\c_m&E_m\end{pmatrix}.
|
||||
\]
|
||||
Then \(a_m\to\rho\), \(b_m,c_m\to0\), and \(E_m\to A\).
|
||||
Choose
|
||||
\[
|
||||
\theta<d_*<\tau<1<a_*<\rho.
|
||||
\]
|
||||
For sufficiently large \(m_0\), a positive \(\epsilon\) makes, for
|
||||
\(m\ge m_0\),
|
||||
\begin{gather}
|
||||
|a_m|\ge a_*,\quad\|E_m\|\le d_*,
|
||||
\quad\|b_m\|,\|c_m\|\le\epsilon,\label{eq:block-bounds}\\
|
||||
d_*+\epsilon<\tau,\quad a_*-\epsilon>1,\quad
|
||||
d_*+\epsilon<a_*-\epsilon,\label{eq:block-separation}\\
|
||||
q:=\frac{d_*}{a_*-\epsilon}
|
||||
+\frac{(d_*+\epsilon)\epsilon}{(a_*-\epsilon)^2}<1.
|
||||
\label{eq:graph-contraction-constant}
|
||||
\end{gather}
|
||||
For stable columns \(\|h\|\le1\), set
|
||||
\[
|
||||
\Psi_m(h)=\frac{E_mh-c_m}{a_m-b_mh}.
|
||||
\]
|
||||
Equations \eqref{eq:block-bounds}--\eqref{eq:block-separation} give
|
||||
\[
|
||||
\|\Psi_m(h)\|
|
||||
\le\frac{d_*+\epsilon}{a_*-\epsilon}<1.
|
||||
\]
|
||||
For two such columns,
|
||||
\[
|
||||
\Psi_m(h)-\Psi_m(k)
|
||||
=\frac{E_m(h-k)}{a_m-b_mh}
|
||||
+\frac{(E_mk-c_m)b_m(h-k)}
|
||||
{(a_m-b_mh)(a_m-b_mk)},
|
||||
\]
|
||||
so \eqref{eq:graph-contraction-constant} gives
|
||||
\[
|
||||
\|\Psi_m(h)-\Psi_m(k)\|\le q\|h-k\|.
|
||||
\]
|
||||
|
||||
For \(M>m\), set \(h_M^{(M)}=0\) and recurse backward by
|
||||
\(h_j^{(M)}=\Psi_j(h_{j+1}^{(M)})\). Then, for \(M'>M\),
|
||||
\[
|
||||
\|h_m^{(M')}-h_m^{(M)}\|\le2q^{M-m}.
|
||||
\]
|
||||
Thus \(h_m=\lim_{M\to\infty}h_m^{(M)}\) exists and satisfies
|
||||
\begin{equation}\label{eq:graph-invariance}
|
||||
h_ma_m+c_m=(h_mb_m+E_m)h_{m+1}.
|
||||
We next remove any possible nonvanishing assumption about the denominator.
|
||||
The positivity estimate above and \(Q_N=x_0^nq_N\) give
|
||||
\begin{equation}\label{eq:q-lower}
|
||||
q_N(x_0)\ge
|
||||
18\cdot29^N(N!)^2
|
||||
\left(\frac{1-x_0}{x_0}\right)^{N+1}.
|
||||
\end{equation}
|
||||
The defining recurrence gives the explicit bound
|
||||
The scalar recurrence obtained from the first cyclic coordinate is of
|
||||
Poincar\'e type after the \((N!)^2\) balancing. The discrete
|
||||
Birkhoff--Poincar\'e theorem \([4,\text{ Chapters 3 and 5}]\) applies because
|
||||
the balanced coefficients are rational in \(N\), have full expansions in
|
||||
\(N^{-1}\), and the limiting spectrum is simple. If the coefficient of the
|
||||
\(\rho\)-mode in \(q_N\) were zero, the three-root separation just proved
|
||||
would give, for some \(\tau<1\),
|
||||
\[
|
||||
\|h_m\|\le
|
||||
\frac{\|E_m\|\|h_{m+1}\|+\|c_m\|}
|
||||
{|a_m|-\|b_m\|}.
|
||||
\]
|
||||
Together with \(\|A\|_\theta/\rho<1\), this gives
|
||||
\[
|
||||
\limsup_{m\to\infty}\|h_m\|
|
||||
\le\frac{\theta}{\rho}\limsup_{m\to\infty}\|h_m\|,
|
||||
\qquad\text{hence}\qquad h_m\to0.
|
||||
|q_N(x_0)|\le K_\tau (N!)^2\tau^N.
|
||||
\]
|
||||
This contradicts \eqref{eq:q-lower}. Thus the dominant denominator
|
||||
coefficient is nonzero by a wholly exact argument.
|
||||
|
||||
Write
|
||||
\[
|
||||
U_m(a)=Z_m(a)P=(\alpha_m,\beta_m),\qquad
|
||||
\xi_m=\alpha_m-\beta_mh_m,\qquad
|
||||
d_m=a_m-b_mh_{m+1}.
|
||||
\]
|
||||
Using \eqref{eq:graph-invariance} in
|
||||
\(U_{m+1}=U_mT_m\) gives the exact scalar equation
|
||||
\[
|
||||
\xi_{m+1}=d_m\xi_m.
|
||||
\]
|
||||
Define the composed seed functional and product
|
||||
\[
|
||||
\Lambda(a)=\alpha_{m_0}(a)-\beta_{m_0}(a)h_{m_0},\qquad
|
||||
L_m=\prod_{\ell=m_0}^{m-1}d_\ell.
|
||||
\]
|
||||
Both are now explicit, \(\Lambda\) is linear, and
|
||||
\(\xi_m=\Lambda(a)L_m\). Equations
|
||||
\eqref{eq:block-bounds}--\eqref{eq:block-separation} ensure
|
||||
\(d_m\ne0\).
|
||||
|
||||
If \(\Lambda(a)=0\), then \(\alpha_m=\beta_mh_m\) and
|
||||
\[
|
||||
\beta_{m+1}=\beta_m(E_m+h_mb_m),\qquad
|
||||
\|\beta_{m+1}\|<(d_*+\epsilon)\|\beta_m\|
|
||||
<\tau\|\beta_m\|,
|
||||
\]
|
||||
which proves \eqref{eq:exceptional-decay}.
|
||||
|
||||
If \(\Lambda(a)\ne0\), put \(r_m=\beta_m/\xi_m\). Exact substitution
|
||||
gives
|
||||
\[
|
||||
r_{m+1}
|
||||
=\frac{b_m+r_m(E_m+h_mb_m)}{d_m}.
|
||||
\]
|
||||
Here \(b_m/d_m\to0\) and
|
||||
\((E_m+h_mb_m)/d_m\to A/\rho\), whose norm is below one.
|
||||
Enlarge \(m_0\) once more, redefining \(\Lambda\) and \(L_m\) from this
|
||||
new index, so that for some \(q_1<1\),
|
||||
\[
|
||||
\left\|\frac{E_m+h_mb_m}{d_m}\right\|\le q_1
|
||||
\qquad(m\ge m_0).
|
||||
\]
|
||||
Then, for every \(m\ge m_0\),
|
||||
\[
|
||||
\|r_m\|\le q_1^{m-m_0}\|r_{m_0}\|
|
||||
+\sum_{\ell=m_0}^{m-1}q_1^{m-1-\ell}
|
||||
\left\|\frac{b_\ell}{d_\ell}\right\|\longrightarrow0.
|
||||
\]
|
||||
Since \(\alpha_m/\xi_m=1+r_mh_m\to1\),
|
||||
\[
|
||||
U_m(a)=\Lambda(a)L_m\bigl((1,0)+o_a(1)\bigr).
|
||||
\]
|
||||
Multiplying by \(P^{-1}\) proves
|
||||
\eqref{eq:dominant-asymptotic} with
|
||||
\[
|
||||
w=(1,0)P^{-1},\qquad w\mathcal S=\rho w.
|
||||
\]
|
||||
\end{proof}
|
||||
|
||||
No GCD or irreducibility decision is needed to show that all four
|
||||
coordinates of \(w\) are nonzero. Define the polynomial row \(w(t)\) by
|
||||
It remains to transfer the first-column result to the other columns. For
|
||||
\(r\ge1\), put
|
||||
\[
|
||||
\begin{aligned}
|
||||
w_1(t)={}&Rt(Rt^2-7)+12R^2t^2+4t^2+44t+10,\\
|
||||
\frac{w_2(t)}2={}&R^2t((48R-27)t-28)
|
||||
+(194R-108)t+40R-23,\\
|
||||
w_3(t)={}&R^2t((48R-17)t-8)
|
||||
+(198R-68)t+71R-32,\\
|
||||
w_4(t)={}&2R(8+(17+3R)t+4R^2t^2).
|
||||
F_r&=[\,\e_1,M_r\e_1,M_rM_{r+1}\e_1,
|
||||
M_rM_{r+1}M_{r+2}\e_1\,],\\
|
||||
\gamma_{r,k}&=\prod_{\ell=1}^{k}(r+\ell)^2,\\
|
||||
C_r&=[\,\e_1,\mathcal B_r\e_1,
|
||||
\mathcal B_r\mathcal B_{r+1}\e_1,
|
||||
\mathcal B_r\mathcal B_{r+1}\mathcal B_{r+2}\e_1\,].
|
||||
\end{aligned}
|
||||
\]
|
||||
Direct multiplication gives the exact polynomial identity
|
||||
The balancing telescopes exactly:
|
||||
\[
|
||||
w(t)(tI-\mathcal S)=(Q_R(t),0,0,0).
|
||||
F_r=D(r)C_r\diag(\gamma_{r,0},\ldots,\gamma_{r,3}),
|
||||
\qquad
|
||||
C_r\longrightarrow
|
||||
C=[\,\e_1,\mathcal S\e_1,\mathcal S^2\e_1,\mathcal S^3\e_1\,].
|
||||
\]
|
||||
At \(t=\rho\), this is a left \(\rho\)-eigenvector. The exterior
|
||||
eigenspace is one-dimensional, so the vector in
|
||||
Lemma~\ref{lem:dominant-product} may be rescaled to \(w(\rho)\), with the
|
||||
inverse rescaling absorbed into \(L_m\). Since \(R>7\) and \(\rho>1\),
|
||||
every displayed grouping is positive. Thus \(w_j(\rho)>0\) for
|
||||
\(j=1,2,3,4\); below we abbreviate \(w_j=w_j(\rho)\).
|
||||
|
||||
Undoing the balancing in \eqref{eq:dominant-asymptotic} gives, whenever
|
||||
\(\Lambda(a)\ne0\),
|
||||
\begin{equation}\label{eq:all-column-asymptotic}
|
||||
aG_m\e_j=(m!)^2m^{-(j-1)}
|
||||
\Lambda(a)L_m\bigl(w_j+o_a(1)\bigr).
|
||||
\end{equation}
|
||||
It remains to verify that the two official rows are not exceptional.
|
||||
The positivity estimate and \(Q_m=x_0^{m+1}q_m\) give
|
||||
\begin{equation}\label{eq:q-lower}
|
||||
\frac{q_m(x_0)}{(m!)^2}
|
||||
\ge18(R-1)\,[29(R-1)]^m.
|
||||
\end{equation}
|
||||
If \(\Lambda(C)=0\), the first coordinate of
|
||||
\eqref{eq:exceptional-decay} would contradict \eqref{eq:q-lower}.
|
||||
Therefore
|
||||
The limiting cyclic frame is nonsingular:
|
||||
\[
|
||||
\Lambda(A_1)=S\Lambda(C)\ne0.
|
||||
\det C
|
||||
=-\frac{4(27R-11)(128R^2-149R-43)}{R^6}\ne0.
|
||||
\]
|
||||
If \(\Lambda(A_0)=0\), then
|
||||
\eqref{eq:exceptional-decay}, \eqref{eq:dominant-asymptotic}, and
|
||||
\(|d_m|>1\) for large \(m\) would make the first-column quotient tend
|
||||
to zero, contradicting \eqref{eq:first-column}. Hence
|
||||
\(\Lambda(A_0)\ne0\) as well.
|
||||
|
||||
Because \(w_j>0\), equation \eqref{eq:all-column-asymptotic} first proves
|
||||
that every \(Q_{m,j}\) is nonzero for all sufficiently large \(m\), and
|
||||
only then permits division:
|
||||
Thus \(F_r\) is invertible for all sufficiently large \(r\). If
|
||||
\(y_r(a)=aG_r\e_1\), exact inversion of this frame gives
|
||||
\[
|
||||
\lim_{m\to\infty}\frac{P_{m,j}}{Q_{m,j}}
|
||||
=\frac{\Lambda(A_0)}{\Lambda(A_1)}
|
||||
=\lim_{m\to\infty}\frac{P_{m,1}}{Q_{m,1}}
|
||||
=\frac{\sqrt{10005}}{\pi}.
|
||||
aG_r\e_j=r^{-(j-1)}
|
||||
\sum_{k=0}^{3}(C_r^{-1})_{k+1,j}
|
||||
\frac{y_{r+k}(a)}{\gamma_{r,k}}.
|
||||
\]
|
||||
We conclude:
|
||||
The same Birkhoff--Poincar\'e theorem supplies a linear dominant functional
|
||||
\(\Lambda\) and an exponent \(\sigma\) such that, for fixed \(k\),
|
||||
\[
|
||||
\frac{y_{r+k}(a)}
|
||||
{(r!)^2\rho^r r^\sigma\gamma_{r,k}}
|
||||
\longrightarrow\Lambda(a)\rho^k.
|
||||
\]
|
||||
Consequently
|
||||
\[
|
||||
\frac{aG_r\e_j}
|
||||
{(r!)^2\rho^r r^{\sigma-(j-1)}}
|
||||
\longrightarrow\Lambda(a)\,\widetilde w_j,\qquad
|
||||
\widetilde w=[1,\rho,\rho^2,\rho^3]C^{-1}.
|
||||
\]
|
||||
An explicit left eigenvector is obtained from the first row of
|
||||
\(R^2\operatorname{adj}(tI-\mathcal S)\). Each of its four coordinate
|
||||
polynomials is coprime to \(Q_R\); hence no coordinate vanishes at \(\rho\).
|
||||
It is a nonzero multiple of \(\widetilde w\), so
|
||||
\(\widetilde w_j\ne0\) for every \(j\). Applying the last limit to
|
||||
\(a=A_0,A_1\), using the exact denominator nonvanishing above, gives
|
||||
\[
|
||||
\lim_{N\to\infty}\frac{P_{N,j}}{Q_{N,j}}
|
||||
=\frac{\Lambda(A_0)}{\Lambda(A_1)}
|
||||
\qquad(j=1,2,3,4).
|
||||
\]
|
||||
Equation \eqref{eq:first-column} evaluates this common ratio. We conclude:
|
||||
|
||||
\begin{theorem}[Ramanujan Challenge Problem 2.8]\label{thm:main}
|
||||
For every official column \(j=1,2,3,4\),
|
||||
|
|
@ -1181,42 +727,29 @@ The proof package contains the following certificates.
|
|||
File & Exact obligation\\
|
||||
\midrule
|
||||
\path{p28_full_closure_certificate.wl}
|
||||
& Optional independent Wolfram cross-check of the differential gauge and
|
||||
hypergeometric closure.\\
|
||||
\path{p28_standalone_equations.py}
|
||||
& Mandatory dependency-free expansion of the four cleared Ore
|
||||
factorizations, the tail coefficient equations, the terminating base,
|
||||
generic, and top identities, ascension, and the \(\F32\) equation.\\
|
||||
\path{p28_dominant_product_algebra.py}
|
||||
& Mandatory dependency-free verification of
|
||||
\(\mathcal B_m=\mathcal S+O(m^{-1})\), the characteristic polynomial,
|
||||
the root-separation inequalities, the left-eigenvector identity, and
|
||||
the four positive coordinate rewrites.\\
|
||||
& Authoritative differential gauge; nonterminating tail contiguity;
|
||||
terminating adjoint equation; coefficientwise \(n\)-contiguity;
|
||||
normalization and top boundary; exact spectral and cyclic-frame closure.\\
|
||||
\path{p28_kernel_contiguity_certificate.sage}
|
||||
& Optional independent Sage check of the four displayed
|
||||
factorizations; it performs no Ore division.\\
|
||||
& Independent coefficient/Ore proof of \(M_Nk_{N+1}=k_N\).\\
|
||||
\path{p28_lattice_hypotheses_certificate.sage}
|
||||
& Optional exact cross-check of the rank-one factorization, tail
|
||||
direction, and transformed ODE identities.\\
|
||||
& Rank-one factorization, tail direction, and transformed ODE identities.\\
|
||||
\path{p28_convergence_constants.py}
|
||||
& Exact rational verification of the coefficient bounds,
|
||||
\(\alpha_{n+1}/\alpha_n\ge29n^2\), and \(\beta(x_0)<1\).\\
|
||||
\path{all_four_columns_certificate.sage}
|
||||
& Optional Sage cross-check of the balanced limit and exterior-root
|
||||
algebra; the analytic contraction is proved in Lemma~\ref{lem:dominant-product}.\\
|
||||
& Balanced limit, Rouch\'e separation, nonzero eigenvector coordinates,
|
||||
and invertible cyclic frame.\\
|
||||
\path{p28_parametric_pade_probe.py}
|
||||
& Diagnostic finite exact regression of the predicted valuations; it is
|
||||
not used as proof of an all-\(N\) statement.\\
|
||||
& Dependency-free finite exact regression of the predicted valuations.\\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
|
||||
The two mandatory algebra checkers use only the standard library's
|
||||
\texttt{fractions.Fraction}, sparse coefficient dictionaries, and explicit
|
||||
addition, multiplication, differentiation, and determinant expansion.
|
||||
They invoke no division algorithm, factorizer, root finder, special-function
|
||||
library, or numerical sample. Wolfram Language and SageMath are optional
|
||||
independent cross-checks, not a trust requirement.
|
||||
The Wolfram certificate performs symbolic identities over
|
||||
\(\Q(n,z)\); it uses no numerical samples. The Python constants check uses
|
||||
only the standard library's \texttt{fractions.Fraction}. The SageMath
|
||||
files are independent exact cross-checks.
|
||||
|
||||
\section*{References}
|
||||
\addcontentsline{toc}{section}{References}
|
||||
|
|
@ -1225,10 +758,6 @@ independent cross-checks, not a trust requirement.
|
|||
\item D. V. Chudnovsky and G. V. Chudnovsky,
|
||||
``Approximations and complex multiplication according to Ramanujan,''
|
||||
in \emph{Ramanujan Revisited}, Academic Press, 1988, pp.~375--472.
|
||||
\item L. Milla,
|
||||
``A detailed proof of the Chudnovsky formula with means of basic
|
||||
complex analysis,'' arXiv:1809.00533v6, 2021,
|
||||
\href{https://arxiv.org/abs/1809.00533}{arXiv:1809.00533}.
|
||||
\item J. L. Fields,
|
||||
``Rational approximations to generalized hypergeometric functions,''
|
||||
\emph{Mathematics of Computation} \textbf{19} (1965), 606--624,
|
||||
|
|
@ -1238,6 +767,9 @@ independent cross-checks, not a trust requirement.
|
|||
``Hermite--Pad\'e approximants of generalized hypergeometric
|
||||
functions,'' \emph{Russian Acad. Sci. Sb. Math.}
|
||||
\textbf{83} (1995), 189--219.
|
||||
\item S. Bodine and D. A. Lutz,
|
||||
\emph{Asymptotic Integration of Differential and Difference Equations},
|
||||
Lecture Notes in Mathematics 2129, Springer, 2015, Chapters 3 and 5.
|
||||
\item The Ramanujan Machine,
|
||||
\href{https://www.ramanujanmachine.com/ramanujan-challenge/}
|
||||
{Ramanujan Challenge}, Problem 2.8.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue