From c498cbc50b17b30662dcf3bc0acd84780e78d75d Mon Sep 17 00:00:00 2001 From: Vasily Ilin Date: Sun, 11 Oct 2026 09:49:31 +0000 Subject: [PATCH 1/3] Import persistent quartic SOS counterexamples --- LeanPool/PersistentSOS.lean | 72 + LeanPool/PersistentSOS/Contracts.lean | 124 + LeanPool/PersistentSOS/Definitions.lean | 145 + LeanPool/PersistentSOS/Derivatives.lean | 78 + LeanPool/PersistentSOS/Geometry.lean | 101 + LeanPool/PersistentSOS/Imports.lean | 38 + LeanPool/PersistentSOS/Localizers.lean | 103 + LeanPool/PersistentSOS/Main.lean | 105 + LeanPool/PersistentSOS/MomentBlock1.lean | 336 + LeanPool/PersistentSOS/MomentBlock2.lean | 336 + LeanPool/PersistentSOS/MomentBlock3.lean | 873 ++ LeanPool/PersistentSOS/MomentBlock4.lean | 336 + LeanPool/PersistentSOS/MomentBlock5.lean | 873 ++ LeanPool/PersistentSOS/MomentBlock6.lean | 866 ++ LeanPool/PersistentSOS/MomentBlock7.lean | 344 + LeanPool/PersistentSOS/MomentBlockFull0.lean | 7361 +++++++++++++++++ LeanPool/PersistentSOS/MomentBridge.lean | 98 + LeanPool/PersistentSOS/MomentData.lean | 1676 ++++ LeanPool/PersistentSOS/MomentGeneral.lean | 90 + LeanPool/PersistentSOS/Moments.lean | 181 + LeanPool/PersistentSOS/PSD.lean | 127 + LeanPool/PersistentSOS/Polynomial.lean | 246 + .../PersistentSOS/QuadraticMonomials.lean | 74 + LeanPool/PersistentSOS/Radial.lean | 115 + LeanPool/PersistentSOS/SOSDegree.lean | 143 + LeanPool/PersistentSOS/Sphere.lean | 357 + LeanPool/PersistentSOS/Transfer.lean | 127 + LeanPool/PersistentSOS/UniqueDerivatives.lean | 219 + LeanPool/PersistentSOS/UniqueGeometry.lean | 219 + LeanPool/PersistentSOS/UniqueMain.lean | 72 + LeanPool/PersistentSOS/UniqueMoments.lean | 208 + LeanPool/projects/persistent-sos.yaml | 54 + 32 files changed, 16097 insertions(+) create mode 100644 LeanPool/PersistentSOS.lean create mode 100644 LeanPool/PersistentSOS/Contracts.lean create mode 100644 LeanPool/PersistentSOS/Definitions.lean create mode 100644 LeanPool/PersistentSOS/Derivatives.lean create mode 100644 LeanPool/PersistentSOS/Geometry.lean create mode 100644 LeanPool/PersistentSOS/Imports.lean create mode 100644 LeanPool/PersistentSOS/Localizers.lean create mode 100644 LeanPool/PersistentSOS/Main.lean create mode 100644 LeanPool/PersistentSOS/MomentBlock1.lean create mode 100644 LeanPool/PersistentSOS/MomentBlock2.lean create mode 100644 LeanPool/PersistentSOS/MomentBlock3.lean create mode 100644 LeanPool/PersistentSOS/MomentBlock4.lean create mode 100644 LeanPool/PersistentSOS/MomentBlock5.lean create mode 100644 LeanPool/PersistentSOS/MomentBlock6.lean create mode 100644 LeanPool/PersistentSOS/MomentBlock7.lean create mode 100644 LeanPool/PersistentSOS/MomentBlockFull0.lean create mode 100644 LeanPool/PersistentSOS/MomentBridge.lean create mode 100644 LeanPool/PersistentSOS/MomentData.lean create mode 100644 LeanPool/PersistentSOS/MomentGeneral.lean create mode 100644 LeanPool/PersistentSOS/Moments.lean create mode 100644 LeanPool/PersistentSOS/PSD.lean create mode 100644 LeanPool/PersistentSOS/Polynomial.lean create mode 100644 LeanPool/PersistentSOS/QuadraticMonomials.lean create mode 100644 LeanPool/PersistentSOS/Radial.lean create mode 100644 LeanPool/PersistentSOS/SOSDegree.lean create mode 100644 LeanPool/PersistentSOS/Sphere.lean create mode 100644 LeanPool/PersistentSOS/Transfer.lean create mode 100644 LeanPool/PersistentSOS/UniqueDerivatives.lean create mode 100644 LeanPool/PersistentSOS/UniqueGeometry.lean create mode 100644 LeanPool/PersistentSOS/UniqueMain.lean create mode 100644 LeanPool/PersistentSOS/UniqueMoments.lean create mode 100644 LeanPool/projects/persistent-sos.yaml diff --git a/LeanPool/PersistentSOS.lean b/LeanPool/PersistentSOS.lean new file mode 100644 index 0000000000..25f0596635 --- /dev/null +++ b/LeanPool/PersistentSOS.lean @@ -0,0 +1,72 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.Contracts + +/-! +# Persistent failure of quartic sum-of-squares exactness + +Source: url:https://github.com/JD-Jones-ASES/persistent-sos +Authors: JD Jones +Status: verified +Main declarations: `PersistentSOS.persistent_failure`, `PersistentSOS.unique_persistent_failure` +Tags: sum-of-squares, polynomial-optimization, exact-certificates +MSC: 90C22, 90C26, 14P10 +-/ + +/-! +## Mathematical context and certificate data + +This explicit example addresses the zero-gradient, indefinite-Hessian case in +Cartis and Zhu, [Remark 2.3](https://arxiv.org/html/2601.20418v2#S2.SS3). +It does not contradict their sufficient conditions with nonzero gradient or +positive-definite Hessian at the origin. Positive curvature in the companion +example is proved at its unique global minimizer. + +The analytic construction uses the classical Choi–Lam quartic +([1977](https://doi.org/10.1007/BF01360024)) and a contraction variant of +Tkachev's cubic normal form ([2010](https://doi.org/10.1090/S0002-9939-10-10385-2)). +The polynomial inequalities and exact moment certificate are proved here; +these published results are not assumptions of the Lean theorems. + +The eight integer matrix certificates and the sparse moment table were generated +from exact rational data by the upstream `scripts/generate_moments.py` at the +commit recorded in the retained MIT notice. Their proofs check every Schur +identity, positive pivot, basis-coverage identity, and sphere localizer in Lean. +The port only factors repeated large integers and wraps the generated data; +it preserves every matrix entry. Python and numerical optimization are not +part of the formal proof's trusted base. +-/ diff --git a/LeanPool/PersistentSOS/Contracts.lean b/LeanPool/PersistentSOS/Contracts.lean new file mode 100644 index 0000000000..7e6c5e627f --- /dev/null +++ b/LeanPool/PersistentSOS/Contracts.lean @@ -0,0 +1,124 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.Main +public import LeanPool.PersistentSOS.UniqueMain + +/-! +# Contracts + +Part of the explicit persistent quartic SOS counterexample. +-/ + +@[expose] public section +namespace PersistentSOS + +/-- The norm polynomial uses every Euclidean coordinate once. -/ +theorem qPoly_definition : qPoly = ∑ i : Fin 14, MvPolynomial.X i ^ 2 := rfl + +/-- Literal coefficients of the fixed cubic. -/ +theorem cubicPoly_definition : cubicPoly = + MvPolynomial.X 0 ^ 3 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 5 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 6 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 7 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 8 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 9 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 10 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 11 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 12 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 13 ^ 2 + + MvPolynomial.C (3 / 2) * MvPolynomial.X 0 * MvPolynomial.X 1 ^ 2 + + MvPolynomial.C (3 / 2) * MvPolynomial.X 0 * MvPolynomial.X 2 ^ 2 + + MvPolynomial.C (3 / 2) * MvPolynomial.X 0 * MvPolynomial.X 3 ^ 2 + + MvPolynomial.C (3 / 2) * MvPolynomial.X 0 * MvPolynomial.X 4 ^ 2 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 5 * MvPolynomial.X 1 ^ 2 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 6 * MvPolynomial.X 2 ^ 2 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 7 * MvPolynomial.X 3 ^ 2 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 8 * MvPolynomial.X 1 * MvPolynomial.X 2 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 8 * MvPolynomial.X 3 * MvPolynomial.X 4 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 9 * MvPolynomial.X 1 * MvPolynomial.X 3 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 9 * MvPolynomial.X 2 * MvPolynomial.X 4 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 10 * MvPolynomial.X 2 * MvPolynomial.X 3 + + MvPolynomial.C (1813 / 500) * MvPolynomial.X 11 * MvPolynomial.X 1 * MvPolynomial.X 4 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 12 * MvPolynomial.X 2 * MvPolynomial.X 4 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 13 * MvPolynomial.X 3 * MvPolynomial.X 4 := rfl + +/-- Ordinary finite sums of squares, without a restriction on summand degree. -/ +theorem sos_definition (p : Poly) : IsSOS p ↔ + ∃ (m : ℕ) (f : Fin m → Poly), p = ∑ i, (f i) ^ 2 := Iff.rfl + +/-- The exact quartic polynomial, with ordinary polynomial scalar coefficients. -/ +theorem quarticPoly_definition (σ a b : ℝ) : quarticPoly σ a b = + MvPolynomial.C (σ / 4) * qPoly ^ 2 - MvPolynomial.C (a / 2) * qPoly - + MvPolynomial.C b * cubicPoly := rfl + +/-- Ordinary polynomial evaluation defines the objective function. -/ +theorem objective_definition (σ a b : ℝ) (z : Fin 14 → ℝ) : + objective σ a b z = MvPolynomial.eval z (quarticPoly σ a b) := rfl + +/-- Explicit positive minimizing root. -/ +theorem minimizingRadius_definition (σ a b : ℝ) : minimizingRadius σ a b = + (3 * b + Real.sqrt (9 * b ^ 2 + 4 * a * σ)) / (2 * σ) := rfl + +/-- Explicit attained minimum. -/ +theorem minimumValue_definition (σ a b : ℝ) : minimumValue σ a b = + -(b * minimizingRadius σ a b ^ 3 + a * minimizingRadius σ a b ^ 2) / 4 := rfl + +/-- Exact rational separation constant. -/ +theorem separation_definition : separation = 753357629 / 500000000000 := rfl + +/-- Literal rational coefficients defining the companion cubic. -/ +theorem uniqueCubicPoly_definition : uniqueCubicPoly = + MvPolynomial.C (1 / 1001) * (1000 * cubicPoly + MvPolynomial.X 0 * qPoly) := rfl + +/-- The companion cubic uses ordinary polynomial evaluation. -/ +theorem uniqueCubic_definition (z : Fin 14 → ℝ) : + uniqueCubic z = MvPolynomial.eval z uniqueCubicPoly := rfl + +/-- Literal quartic regularization of the companion cubic. -/ +theorem uniqueQuarticPoly_definition (σ a b : ℝ) : uniqueQuarticPoly σ a b = + MvPolynomial.C (σ / 4) * qPoly ^ 2 - MvPolynomial.C (a / 2) * qPoly + - MvPolynomial.C b * uniqueCubicPoly := rfl + +/-- The companion objective uses ordinary polynomial evaluation. -/ +theorem uniqueObjective_definition (σ a b : ℝ) (z : Fin 14 → ℝ) : + uniqueObjective σ a b z = MvPolynomial.eval z (uniqueQuarticPoly σ a b) := rfl + +/-- Exact rational separation for the companion cubic. -/ +theorem uniqueSeparation_definition : uniqueSeparation = 132860603 / 143000000000 := rfl + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/Definitions.lean b/LeanPool/PersistentSOS/Definitions.lean new file mode 100644 index 0000000000..faef9d897a --- /dev/null +++ b/LeanPool/PersistentSOS/Definitions.lean @@ -0,0 +1,145 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import Mathlib.Algebra.MvPolynomial.CommRing +public import Mathlib.Analysis.InnerProductSpace.PiL2 +public import Mathlib.Analysis.SpecialFunctions.Sqrt +public import Mathlib.Data.Fin.VecNotation + +/-! +# Definitions + +Part of the explicit persistent quartic SOS counterexample. +-/ + +@[expose] public section + +namespace PersistentSOS + +/-- Ordinary real multivariate polynomials in fourteen variables. -/ +abbrev Poly := MvPolynomial (Fin 14) ℝ + +/-- The squared Euclidean norm polynomial, the sum of all coordinate squares. -/ +noncomputable def qPoly : Poly := ∑ i, MvPolynomial.X i ^ 2 + +/-- The fixed sparse rational cubic, in coordinate order `(t, x₁, …, x₄, y₁, …, y₉)`. -/ +noncomputable def cubicPoly : Poly := + MvPolynomial.X 0 ^ 3 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 5 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 6 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 7 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 8 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 9 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 10 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 11 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 12 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 13 ^ 2 + + MvPolynomial.C (3 / 2) * MvPolynomial.X 0 * MvPolynomial.X 1 ^ 2 + + MvPolynomial.C (3 / 2) * MvPolynomial.X 0 * MvPolynomial.X 2 ^ 2 + + MvPolynomial.C (3 / 2) * MvPolynomial.X 0 * MvPolynomial.X 3 ^ 2 + + MvPolynomial.C (3 / 2) * MvPolynomial.X 0 * MvPolynomial.X 4 ^ 2 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 5 * MvPolynomial.X 1 ^ 2 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 6 * MvPolynomial.X 2 ^ 2 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 7 * MvPolynomial.X 3 ^ 2 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 8 * MvPolynomial.X 1 * MvPolynomial.X 2 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 8 * MvPolynomial.X 3 * MvPolynomial.X 4 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 9 * MvPolynomial.X 1 * MvPolynomial.X 3 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 9 * MvPolynomial.X 2 * MvPolynomial.X 4 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 10 * MvPolynomial.X 2 * MvPolynomial.X 3 + + MvPolynomial.C (1813 / 500) * MvPolynomial.X 11 * MvPolynomial.X 1 * MvPolynomial.X 4 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 12 * MvPolynomial.X 2 * MvPolynomial.X 4 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 13 * MvPolynomial.X 3 * MvPolynomial.X 4 + +/-- Evaluation of the squared Euclidean norm polynomial at a real vector. -/ +noncomputable def Q (z : Fin 14 → ℝ) : ℝ := MvPolynomial.eval z qPoly +/-- Evaluation of the fixed cubic polynomial at a real vector. -/ +noncomputable def C (z : Fin 14 → ℝ) : ℝ := MvPolynomial.eval z cubicPoly +/-- Euclidean radius, written as the square root of the sum of coordinate squares. -/ +noncomputable def radius (z : Fin 14 → ℝ) : ℝ := Real.sqrt (Q z) + +/-- Ordinary SOS: a finite sum of squares of arbitrary real polynomials. -/ +def IsSOS (p : Poly) : Prop := + ∃ (m : ℕ) (f : Fin m → Poly), p = ∑ i, (f i) ^ 2 + +/-- Euclidean quartic regularization with quadratic coefficient -a / 2 and cubic -bC. -/ +noncomputable def quarticPoly (σ a b : ℝ) : Poly := + MvPolynomial.C (σ / 4) * qPoly ^ 2 - MvPolynomial.C (a / 2) * qPoly + - MvPolynomial.C b * cubicPoly + +/-- The real - valued function obtained by evaluating the quartic polynomial. -/ +noncomputable def objective (σ a b : ℝ) (z : Fin 14 → ℝ) : ℝ := + MvPolynomial.eval z (quarticPoly σ a b) + +/-- The point on the distinguished coordinate axis with first coordinate `r`. -/ +def axis (r : ℝ) : Fin 14 → ℝ := fun i => if i = 0 then r else 0 + +/-- Positive minimizing radius for quartic regularization with negative quadratic +strength `a` and positive cubic strength `b`. -/ +noncomputable def minimizingRadius (σ a b : ℝ) : ℝ := + (3 * b + Real.sqrt (9 * b ^ 2 + 4 * a * σ)) / (2 * σ) + +/-- Exact minimum, once the cubic has sphere maximum one. -/ +noncomputable def minimumValue (σ a b : ℝ) : ℝ := + -(b * minimizingRadius σ a b ^ 3 + a * minimizingRadius σ a b ^ 2) / 4 + +/-- A second literal rational cubic selecting the positive first coordinate axis. -/ +noncomputable def uniqueCubicPoly : Poly := + MvPolynomial.C (1 / 1001) * (1000 * cubicPoly + MvPolynomial.X 0 * qPoly) + +/-- Evaluation of the cubic with a unique sphere maximizer. -/ +noncomputable def uniqueCubic (z : Fin 14 → ℝ) : ℝ := MvPolynomial.eval z uniqueCubicPoly + +/-- Quartic regularization using the cubic with a unique sphere maximizer. -/ +noncomputable def uniqueQuarticPoly (σ a b : ℝ) : Poly := + MvPolynomial.C (σ / 4) * qPoly ^ 2 - MvPolynomial.C (a / 2) * qPoly + - MvPolynomial.C b * uniqueCubicPoly + +/-- Evaluation of the quartic with a unique global minimizer. -/ +noncomputable def uniqueObjective (σ a b : ℝ) (z : Fin 14 → ℝ) : ℝ := + MvPolynomial.eval z (uniqueQuarticPoly σ a b) + +/-- The strict rational moment separation for the selected cubic. -/ +noncomputable def uniqueSeparation : ℝ := 132860603 / 143000000000 + + +@[simp] theorem Q_eq_sum (z : Fin 14 → ℝ) : Q z = ∑ i, z i ^ 2 := by + simp [Q, qPoly, map_sum] + +@[simp] theorem objective_eq (σ a b : ℝ) (z : Fin 14 → ℝ) : + objective σ a b z = σ / 4 * Q z ^ 2 - a / 2 * Q z - b * C z := by + simp [objective, quarticPoly, Q, C] + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/Derivatives.lean b/LeanPool/PersistentSOS/Derivatives.lean new file mode 100644 index 0000000000..c36619320c --- /dev/null +++ b/LeanPool/PersistentSOS/Derivatives.lean @@ -0,0 +1,78 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.Definitions +public import Mathlib.Algebra.MvPolynomial.PDeriv + +/-! +# Derivatives + +Part of the explicit persistent quartic SOS counterexample. +-/ + +@[expose] public section +namespace PersistentSOS +open MvPolynomial + +theorem cubic_first_at_zero (i : Fin 14) : eval (0 : Fin 14 → ℝ) (pderiv i cubicPoly) = 0 := by + simp [cubicPoly] + +theorem cubic_second_at_zero (i j : Fin 14) : + eval (0 : Fin 14 → ℝ) (pderiv j (pderiv i cubicPoly)) = 0 := by + simp [cubicPoly] + +theorem q_first (i : Fin 14) : pderiv i qPoly = 2 * X i := by + simp [qPoly, Pi.single_apply, mul_ite] + +theorem stationary_origin (σ a b : ℝ) (i : Fin 14) : + eval (0 : Fin 14 → ℝ) (pderiv i (quarticPoly σ a b)) = 0 := by + have hc : constantCoeff (pderiv i cubicPoly) = 0 := by simpa using cubic_first_at_zero i + have hq : constantCoeff qPoly = 0 := by simp [qPoly] + simp [quarticPoly, q_first, hc, hq] + +theorem hessian_origin (σ a b : ℝ) (i j : Fin 14) : + eval (0 : Fin 14 → ℝ) (pderiv j (pderiv i (quarticPoly σ a b))) = + if i = j then -a else 0 := by + have hc : constantCoeff (pderiv j (pderiv i cubicPoly)) = 0 := by + simpa using cubic_second_at_zero i j + have hq : constantCoeff qPoly = 0 := by simp [qPoly] + have htwo : constantCoeff (2 : Poly) = 2 := by + rw [← map_ofNat MvPolynomial.C 2] + simp + simp [quarticPoly, q_first, hc, hq, Pi.single_apply, htwo] + split_ifs <;> simp_all + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/Geometry.lean b/LeanPool/PersistentSOS/Geometry.lean new file mode 100644 index 0000000000..2313506eed --- /dev/null +++ b/LeanPool/PersistentSOS/Geometry.lean @@ -0,0 +1,101 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.Transfer +public import Mathlib.Tactic.Linarith +public import Mathlib.Tactic.Ring + +/-! +# Geometry + +Part of the explicit persistent quartic SOS counterexample. +-/ + +@[expose] public section + +namespace PersistentSOS + +/-- The objective separates into its radial envelope and a nonnegative cubic deficit. -/ +theorem objective_radial_decomposition (σ a b : ℝ) (z : Fin 14 → ℝ) : + objective σ a b z = radialValue σ a b (radius z) + + b * (radius z ^ 3 - C z) := by + rw [objective_eq, ← radius_sq] + unfold radialValue + ring + +/-- Equality in the global lower bound requires the unique radial minimum and + equality in the sharp cubic bound. -/ +theorem objective_minimizer_radius_iff {σ a b : ℝ} (hσ : 0 < σ) + (ha : 0 < a) (hb : 0 < b) (z : Fin 14 → ℝ) : + objective σ a b z = minimumValue σ a b ↔ + radius z = minimizingRadius σ a b ∧ C z = radius z ^ 3 := by + constructor + · intro hobj + have hrad := radial_global_minimum hσ ha hb (radius_nonneg z) + have hc := (le_abs_self (C z)).trans (cubic_abs_le z) + have hdef := mul_nonneg (le_of_lt hb) (sub_nonneg.mpr hc) + have hid := objective_radial_decomposition σ a b z + have heq : radialValue σ a b (radius z) = minimumValue σ a b := by linarith + have hr := (radial_minimum_eq_iff hσ ha hb (radius_nonneg z)).mp heq + have hzero : b * (radius z ^ 3 - C z) = 0 := by linarith + have hd := (mul_eq_zero.mp hzero).resolve_left (ne_of_gt hb) + exact ⟨hr, by linarith⟩ + · rintro ⟨hr, hc⟩ + rw [objective_radial_decomposition, hc, sub_self, mul_zero, add_zero, hr] + exact radial_at_minimizingRadius hσ ha + +/-- Complete coordinate description of all global minimizers. Besides the + distinguished axis point, they form a sphere in the nine `y` coordinates + at first coordinate `-r / 2`, with squared radius `3 * r² / 4`. -/ +theorem objective_all_minimizers {σ a b : ℝ} (hσ : 0 < σ) + (ha : 0 < a) (hb : 0 < b) (z : Fin 14 → ℝ) : + objective σ a b z = minimumValue σ a b ↔ + Q z = minimizingRadius σ a b ^ 2 ∧ + (z 1 = 0 ∧ z 2 = 0 ∧ z 3 = 0 ∧ z 4 = 0) ∧ + (z 0 = minimizingRadius σ a b ∨ z 0 = -minimizingRadius σ a b / 2) := by + rw [objective_minimizer_radius_iff hσ ha hb z] + constructor + · rintro ⟨hr, hc⟩ + obtain ⟨hx, ht⟩ := (cubic_upper_equality_coordinates z).mp hc + exact ⟨by rw [← radius_sq, hr], hx, by simpa only [hr] using ht⟩ + · rintro ⟨hQ, hx, ht⟩ + have hp := minimizingRadius_pos hσ ha hb + have hn := radius_nonneg z + have hs := radius_sq z + have hr : radius z = minimizingRadius σ a b := by nlinarith + exact ⟨hr, (cubic_upper_equality_coordinates z).mpr ⟨hx, by simpa only [hr] using ht⟩⟩ + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/Imports.lean b/LeanPool/PersistentSOS/Imports.lean new file mode 100644 index 0000000000..fd830d8364 --- /dev/null +++ b/LeanPool/PersistentSOS/Imports.lean @@ -0,0 +1,38 @@ +/- +Copyright (c) 2026 Lean Pool contributors. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Lean Pool contributors +-/ +module -- shake: keep-all --deprecated_module: ignore + +-- Generated project imports; run `lake exe mk_all`. +public import LeanPool.PersistentSOS +public import LeanPool.PersistentSOS.Contracts +public import LeanPool.PersistentSOS.Definitions +public import LeanPool.PersistentSOS.Derivatives +public import LeanPool.PersistentSOS.Geometry +public import LeanPool.PersistentSOS.Localizers +public import LeanPool.PersistentSOS.Main +public import LeanPool.PersistentSOS.MomentBlock1 +public import LeanPool.PersistentSOS.MomentBlock2 +public import LeanPool.PersistentSOS.MomentBlock3 +public import LeanPool.PersistentSOS.MomentBlock4 +public import LeanPool.PersistentSOS.MomentBlock5 +public import LeanPool.PersistentSOS.MomentBlock6 +public import LeanPool.PersistentSOS.MomentBlock7 +public import LeanPool.PersistentSOS.MomentBlockFull0 +public import LeanPool.PersistentSOS.MomentBridge +public import LeanPool.PersistentSOS.MomentData +public import LeanPool.PersistentSOS.MomentGeneral +public import LeanPool.PersistentSOS.Moments +public import LeanPool.PersistentSOS.PSD +public import LeanPool.PersistentSOS.Polynomial +public import LeanPool.PersistentSOS.QuadraticMonomials +public import LeanPool.PersistentSOS.Radial +public import LeanPool.PersistentSOS.SOSDegree +public import LeanPool.PersistentSOS.Sphere +public import LeanPool.PersistentSOS.Transfer +public import LeanPool.PersistentSOS.UniqueDerivatives +public import LeanPool.PersistentSOS.UniqueGeometry +public import LeanPool.PersistentSOS.UniqueMain +public import LeanPool.PersistentSOS.UniqueMoments diff --git a/LeanPool/PersistentSOS/Localizers.lean b/LeanPool/PersistentSOS/Localizers.lean new file mode 100644 index 0000000000..8a70ad6266 --- /dev/null +++ b/LeanPool/PersistentSOS/Localizers.lean @@ -0,0 +1,103 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.Moments +public import LeanPool.PersistentSOS.Polynomial +public import Mathlib.Tactic.FieldSimp +public import Mathlib.Tactic.NormNum +public import Mathlib.Tactic.Positivity +public import Mathlib.Tactic.Ring + +/-! # The full truncated sphere relation + +The sphere relation annihilates every polynomial of degree at most two. +This follows from positivity and its zero square, without enumerating +individual localizer equations. +-/ + + +@[expose] public section +namespace PersistentSOS +open MvPolynomial + +/-- A null square of a positive truncated functional is orthogonal to +every other polynomial in its domain of quadratic - square positivity. -/ +theorem mul_eq_zero_of_square_eq_zero (L : Poly →ₗ[ℝ] ℝ) + (hL : ∀ p : Poly, p.totalDegree ≤ 2 → 0 ≤ L (p ^ 2)) + (h k : Poly) (hh : h.totalDegree ≤ 2) (hk : k.totalDegree ≤ 2) + (hk0 : L (k ^ 2) = 0) : L (k * h) = 0 := by + have hscale (c : ℝ) (p : Poly) : L (MvPolynomial.C c * p) = c * L p := by + rw [← MvPolynomial.smul_eq_C_mul, map_smul, smul_eq_mul] + have hpos (t : ℝ) : 0 ≤ L (h ^ 2) + 2 * t * L (k * h) := by + have hd : (h + MvPolynomial.C t * k).totalDegree ≤ 2 := by + apply (totalDegree_add _ _).trans + apply max_le hh + apply (totalDegree_mul _ _).trans + simpa only [totalDegree_C, zero_add] using hk + have he : (h + MvPolynomial.C t * k) ^ 2 = + h ^ 2 + MvPolynomial.C (2 * t) * (k * h) + MvPolynomial.C (t ^ 2) * k ^ 2 := by + simp only [map_mul, map_pow, map_ofNat] + ring + have hp := hL _ hd + rw [he] at hp + simpa only [map_add, hscale, hk0, mul_zero, add_zero] using hp + by_contra hn + have hv : L (h ^ 2) + 2 * (-(L (h ^ 2) + 1) / (2 * L (k * h))) * L (k * h) = -1 := by + field_simp + ring + have hp := hpos (-(L (h ^ 2) + 1) / (2 * L (k * h))) + rw [hv] at hp + norm_num at hp + +/-- The sphere relation has zero square under the exact moment functional. -/ +theorem moment_sphere_relation_square : sphereFunctional ((qPoly - 1) ^ 2) = 0 := by + have he : (qPoly - 1) ^ 2 = qPoly ^ 2 - (2 : ℝ) • qPoly + 1 := by + rw [MvPolynomial.smul_eq_C_mul] + simp only [map_ofNat] + ring + rw [he] + simp only [map_add, map_sub, map_smul, smul_eq_mul, moment_q_sq, moment_q, moment_one] + norm_num + +/-- All sphere localizer identities through degree four, for arbitrary +quadratic multipliers. -/ +theorem moment_sphere_localizer (h : Poly) (hh : h.totalDegree ≤ 2) : + sphereFunctional ((qPoly - 1) * h) = 0 := by + apply mul_eq_zero_of_square_eq_zero sphereFunctional moment_square_nonneg h (qPoly - 1) + hh _ moment_sphere_relation_square + exact (totalDegree_sub _ _).trans (max_le totalDegree_qPoly_le (by simp)) + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/Main.lean b/LeanPool/PersistentSOS/Main.lean new file mode 100644 index 0000000000..3991b71bf1 --- /dev/null +++ b/LeanPool/PersistentSOS/Main.lean @@ -0,0 +1,105 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.Localizers +public import LeanPool.PersistentSOS.Geometry +public import LeanPool.PersistentSOS.Derivatives +public import Mathlib.Tactic.Linarith +public import Mathlib.Tactic.NormNum +public import Mathlib.Tactic.Positivity + +/-! +# Main + +Part of the explicit persistent quartic SOS counterexample. +-/ + +@[expose] public section +namespace PersistentSOS + +/-- Every ordinary polynomial SOS lower bound satisfies the displayed quantitative bound. -/ +theorem quantitative_sos_gap {σ a b γ : ℝ} (hσ : 0 < σ) (ha : 0 < a) + (hsos : IsSOS (quarticPoly σ a b - MvPolynomial.C γ)) : + γ ≤ minimumValue σ a b - b * separation * minimizingRadius σ a b ^ 3 := by + apply moment_quantitative_transfer sphereFunctional moment_one moment_q moment_q_sq + ?_ moment_square_nonneg hσ ha hsos + rw [moment_cubic] + norm_num [separation] + +/-- A strict gap holds for every positive regularization parameter and every +positive fixed quadratic and cubic strength. -/ +theorem quantitative_sos_strict {σ a b γ : ℝ} (hσ : 0 < σ) (ha : 0 < a) + (hb : 0 < b) (hsos : IsSOS (quarticPoly σ a b - MvPolynomial.C γ)) : + γ < minimumValue σ a b := by + have h := quantitative_sos_gap hσ ha hsos + have hr := minimizingRadius_pos hσ ha hb + have hd := separation_pos + have hp : 0 < b * separation * minimizingRadius σ a b ^ 3 := by positivity + linarith + +/-- The exact minimum shift is not a finite sum of squares of real polynomials. -/ +theorem minimum_shift_not_sos {σ a b : ℝ} (hσ : 0 < σ) (ha : 0 < a) (hb : 0 < b) : + ¬ IsSOS (quarticPoly σ a b - MvPolynomial.C (minimumValue σ a b)) := by + intro h + exact (lt_irrefl _) (quantitative_sos_strict hσ ha hb h) + +/-- The exact minimum shift is globally nonnegative. -/ +theorem minimum_shift_nonnegative {σ a b : ℝ} (hσ : 0 < σ) (ha : 0 < a) + (hb : 0 < b) (z : Fin 14 → ℝ) : + 0 ≤ MvPolynomial.eval z + (quarticPoly σ a b - MvPolynomial.C (minimumValue σ a b)) := by + simpa only [map_sub, MvPolynomial.eval_C, sub_nonneg, objective] + using objective_global_lower_bound hσ ha hb z + +/-- Explicit persistent failure, including actual global optimality and attainment. -/ +theorem persistent_failure {σ a b : ℝ} (hσ : 0 < σ) (ha : 0 < a) (hb : 0 < b) : + (∀ z : Fin 14 → ℝ, minimumValue σ a b ≤ objective σ a b z) ∧ + objective σ a b (axis (minimizingRadius σ a b)) = minimumValue σ a b ∧ + ¬ IsSOS (quarticPoly σ a b - MvPolynomial.C (minimumValue σ a b)) := + ⟨objective_global_lower_bound hσ ha hb, objective_axis_attainment hσ ha, + minimum_shift_not_sos hσ ha hb⟩ + +/-- The finite certificate is a functional on ordinary real polynomials, positive +on every quadratic square, with normalized radial moments and a strict cubic gap. -/ +theorem sphere_moment_gap : ∃ L : Poly →ₗ[ℝ] ℝ, + L 1 = 1 ∧ L qPoly = 1 ∧ L (qPoly ^ 2) = 1 ∧ + (∀ h : Poly, h.totalDegree ≤ 2 → 0 ≤ L (h ^ 2)) ∧ + (∀ h : Poly, h.totalDegree ≤ 2 → L ((qPoly - 1) * h) = 0) ∧ + L cubicPoly = 500753357629 / 500000000000 := + ⟨sphereFunctional, moment_one, moment_q, moment_q_sq, moment_square_nonneg, + moment_sphere_localizer, moment_cubic⟩ + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/MomentBlock1.lean b/LeanPool/PersistentSOS/MomentBlock1.lean new file mode 100644 index 0000000000..80cb150b3a --- /dev/null +++ b/LeanPool/PersistentSOS/MomentBlock1.lean @@ -0,0 +1,336 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.PSD + +/-! +# Exact moment block certificate + +Generated by `scripts/generate_moments.py`; all identities below are checked +by the Lean kernel with integer arithmetic. No external verifier is trusted. +-/ + +@[expose] public section + + +namespace PersistentSOS + + +/-- Exact integer matrix after 0 fraction-free Schur steps in moment block 1. -/ +def momentBlock1Stage0 : Fin 11 → Fin 11 → ℤ := + ![![148973087, 79751621, 27438237, 3349856, 3349854, 7457187, 4162390, 7457187, 4162390, + 4143478, 7594848], + ![79751621, 45340304, 14265654, 1432129, 1432127, 3269119, 1964655, 3269121, 1964657, 2022744, + 3598238], + ![27438237, 14265654, 6365418, 202667, 202668, 608339, 318998, 608339, 318997, 331233, 900626], + ![3349856, 1432129, 202667, 307820, 305587, 604148, 317179, 604133, 317182, 297189, 454472], + ![3349854, 1432127, 202668, 305587, 307807, 604133, 317183, 604148, 317179, 297189, 454472], + ![7457187, 3269119, 608339, 604148, 604133, 1203533, 630687, 1201302, 630690, 591740, 918271], + ![4162390, 1964655, 318998, 317179, 317183, 630687, 340281, 630691, 338068, 318788, 486285], + ![7457187, 3269121, 608339, 604133, 604148, 1201302, 630691, 1203525, 630686, 591740, 918271], + ![4162390, 1964657, 318997, 317182, 317179, 630690, 338068, 630686, 340280, 318788, 486284], + ![4143478, 2022744, 331233, 297189, 297189, 591740, 318788, 591740, 318788, 305822, 461335], + ![7594848, 3598238, 900626, 454472, 454472, 918271, 486285, 918271, 486284, 461335, 739380]] + +/-- Exact integer matrix after 1 fraction-free Schur steps in moment block 1. -/ +def momentBlock1Stage1 : Fin 10 → Fin 10 → ℤ := + ![![394164000270807, -63045363678279, -53807768004353, -53807906447285, -107712002149774, + -39276629494205, -107711704203600, -39276331548031, -29114669187110, -69660816627902], + ![-63045363678279, 195419119837197, -61722214220843, -61722010371282, -113985925486826, + -66686526499604, -113985925486826, -66686675472691, -64344928842015, -74220203950514], + ![-53807768004353, -61722214220843, 34635360419604, 34302710216045, 65021289949804, + 33307727645733, 65019055353499, 33308174564994, 30393108113275, 42262449653176], + ![-53807906447285, -61722010371282, 34302710216045, 34633437168893, 65019070267873, + 33308331862861, 65021304864178, 33307735970513, 30393116400231, 42262464842872], + ![-107712002149774, -113985925486826, 65021289949804, 65019070267873, 123684388363402, + 62915668723839, 123352029406305, 62916115643100, 57254644224994, 80161463800001], + ![-39276629494205, -66686526499604, 33307727645733, 33308331862861, 62915668723839, + 33367220505347, 62916264616187, 33037543063816, 30244061066136, 40830658245075], + ![-107711704203600, -113985925486826, 65019055353499, 65021304864178, 123352029406305, + 62916264616187, 123683196578706, 62915519750752, 57254644224994, 80161463800001], + ![-39276331548031, -66686675472691, 33308174564994, 33307735970513, 62916115643100, + 33037543063816, 62915519750752, 33367071532260, 30244061066136, 40830509271988], + ![-29114669187110, -64344928842015, 30393108113275, 30393116400231, 57254644224994, + 30244061066136, 57254644224994, 30244061066136, 28390837476030, 37257413489801], + ![-69660816627902, -74220203950514, 42262449653176, 42262464842872, 80161463800001, + 40830658245075, 80161463800001, 40830509271988, 37257413489801, 52466004922956]] + +/-- Exact integer matrix after 2 fraction-free Schur steps in moment block 1. -/ +def momentBlock1Stage2 : Fin 9 → Fin 9 → ℤ := + ![![490373567429017047174, -186080625189770468124, -186080144418546196047, + -347176068872799429144, -193065996140418724329, -347175942782072072586, + -193066264213691638578, -182569885638358230285, -225857735018149537488], + ![-186080625189770468124, 72205903313274394837, 71325702822894004330, 133133505694376550938, + 73941673780013411818, 133127700849908497539, 73942963887550232945, 69900368711887496185, + 86660237875258001398], + ![-186080144418546196047, 71325702822894004330, 72200714625580276798, 133127532597540335183, + 73943235961969528246, 133133552673357291858, 73941766921781339588, 69900363581427660541, + 86660213328432565582], + ![-347176068872799429144, 133133505694376550938, 133127532597540335183, 249374290547215855774, + 138068745688176504269, 248495126086615984905, 138070143604181616238, 130437790362319217414, + 161730267485108146157], + ![-193065996140418724329, 73941673780013411818, 73943235961969528246, 138068745688176504269, + 77930206869383177092, 138070400897436575907, 77058000490042869611, 72345913190039940646, + 89666756402860260145], + ![-347175942782072072586, 133127700849908497539, 133133552673357291858, 248495126086615984905, + 138070400897436575907, 249371568082626396066, 138068645500843629072, 130437848591657591634, + 161730406806741401961], + ![-193066264213691638578, 73942963887550232945, 73941766921781339588, 138070143604181616238, + 77058000490042869611, 138068645500843629072, 77929969811304990757, 72345971419378314866, + 89666501560493245142], + ![-182569885638358230285, 69900368711887496185, 69900363581427660541, 130437790362319217414, + 72345913190039940646, 130437848591657591634, 72345971419378314866, 69428527776399464530, + 84964202355947631301], + ![-225857735018149537488, 86660237875258001398, 86660213328432565582, 161730267485108146157, + 89666756402860260145, 161730406806741401961, 89666501560493245142, 84964202355947631301, + 106244566210768005424]] + +/-- Exact integer matrix after 3 fraction-free Schur steps in moment block 1. -/ +def momentBlock1Stage3 : Fin 8 → Fin 8 → ℤ := + ![![1983609171847332477984066, 888791806450867328033256, 1731289981927854358116708, + 845336175434431364456448, 1724127787392449738657046, 846814624487559281377794, + 772710621041152958336550, 1187681941255603213265820], + ![888791806450867328033256, 1977607936056179816333349, 1724282399960433563794782, + 847515149956543248355563, 1731831412638573174020250, 845560984709112988488678, + 772926923152667034740877, 1187926886977058350382076], + ![1731289981927854358116708, 1724282399960433563794782, 4453318115154302473653420, + 1718497376862947357978490, 3359673751584938788189098, 1720000386861134956471740, + 1469818138259514635274228, 2272778993491518995385378], + ![845336175434431364456448, 847515149956543248355563, 1718497376862947357978490, + 2385896953254035178163281, 1720618358741073366106632, 1300666670145889973982336, + 579674206018121414525577, 925398107160633602067354], + ![1724127787392449738657046, 1731831412638573174020250, 3359673751584938788189098, + 1720618358741073366106632, 4450153256562740551488984, 1718198379544243076230260, + 1469948983537180043595558, 2273024572012999203165978], + ![846814624487559281377794, 845560984709112988488678, 1720000386861134956471740, + 1300666670145889973982336, 1718198379544243076230260, 2385339421987486178639862, + 579622481410148464616622, 924927454379666643263292], + ![772710621041152958336550, 772926923152667034740877, 1469818138259514635274228, + 579674206018121414525577, 1469948983537180043595558, 579622481410148464616622, + 1811813622156643457511285, 1089338853750612068062242], + ![1187681941255603213265820, 1187926886977058350382076, 2272778993491518995385378, + 925398107160633602067354, 2273024572012999203165978, 924927454379666643263292, + 1089338853750612068062242, 2759791570124841361802976]] + +/-- Exact integer matrix after 4 fraction-free Schur steps in moment block 1. -/ +def momentBlock1Stage4 : Fin 7 → Fin 7 → ℤ := + ![![6388701539298208968258340727, 3836964628320547655398172186, 1896127809632242774168018905, + 3880482452329512721633214326, 1885543361657211113613801066, 1726043411418072396716851943, + 2652632149921893241204577604], + ![3836964628320547655398172186, 11901697082592072773671087244, 3966986060951734345637487294, + 7503084885820699016996835850, 3967846140718111902810435912, 3217462538067429628784836952, + 5000439610387889732488128462], + ![1896127809632242774168018905, 3966986060951734345637487294, 8193944569903493237516266683, + 3987912272975865234796740696, 3801533003144797114415358336, 1012792824940068467188311843, + 1695926775744948244815446046], + ![3880482452329512721633214326, 7503084885820699016996835850, 3987912272975865234796740696, + 11939363329229270452260767522, 3972925070334038424319162314, 3229277713405522757927486572, + 5018779793290138678116711522], + ![1885543361657211113613801066, 3967846140718111902810435912, 3801533003144797114415358336, + 3972925070334038424319162314, 8186587560632525972682653244, 1010253914249320953138465048, + 1690442144041308751050458208], + ![1726043411418072396716851943, 3217462538067429628784836952, 1012792824940068467188311843, + 3229277713405522757927486572, 1010253914249320953138465048, 6111357980468335959498984065, + 2534981845860472950687857178], + ![2652632149921893241204577604, 5000439610387889732488128462, 1695926775744948244815446046, + 5018779793290138678116711522, 1690442144041308751050458208, 2534981845860472950687857178, + 8287068772095160817902922184]] + +/-- Exact integer matrix after 5 fraction-free Schur steps in moment block 1. -/ +def momentBlock1Stage5 : Fin 6 → Fin 6 → ℤ := + ![![30910369735653223417949121811512, 9108908586471128600269979137188, + 16659378529867100384474552357429, 9132152553111458125305642689178, + 7023883812784242661746054790041, 10974067277872033740588326976205], + ![9108908586471128600269979137188, 24578110601697782748440362059326, + 9134708006729155153290827218257, 10441385752058049772346963254387, + 1612027314677383154724829427931, 2926504120335916135547315920967], + ![16659378529867100384474552357429, 9134708006729155153290827218257, + 30862372329039645102608275293973, 9107144109198882876018250051557, + 7024070329092434509137562758461, 10974941026442257804267794349115], + ![9132152553111458125305642689178, 10441385752058049772346963254387, + 9107144109198882876018250051557, 24574594367359960123348199569152, + 1613060216764024204165705361313, 2922993838109656780945379722172], + ![7023883812784242661746054790041, 1612027314677383154724829427931, + 7024070329092434509137562758461, 1613060216764024204165705361313, + 18181210689469626476359625365091, 5856337196018697807164788233149], + ![10974067277872033740588326976205, 2926504120335916135547315920967, + 10974941026442257804267794349115, 2922993838109656780945379722172, + 5856337196018697807164788233149, 23143244319142747269387066438772]] + +/-- Exact integer matrix after 6 fraction-free Schur steps in moment block 1. -/ +def momentBlock1Stage6 : Fin 5 → Fin 5 → ℤ := + ![![105928609483909163009389834691827584, 20443660574195181264682375102637916, + 37497940680292044387973737524883840, -2215090995399726959885384710076868, + -1487383814218449834259658212210068], + ![20443660574195181264682375102637916, 105879487787578960217221708185780505, + 20249686838657465620457623390132986, 15668766355533316139320066243769709, + 24483589223547230933205943117851905], + ![37497940680292044387973737524883840, 20249686838657465620457623390132986, + 105845230613133102216525870609458820, -2235648464679397203615324104118846, + -1544294435722564946115527023401438], + ![-2215090995399726959885384710076868, 15668766355533316139320066243769709, + -2235648464679397203615324104118846, 80243692350376820334814092439452993, + 16269499188964114464497532019095429], + ![-1487383814218449834259658212210068, 24483589223547230933205943117851905, + -1544294435722564946115527023401438, 16269499188964114464497532019095429, + 93123161648485719773585326557627457]] + +/-- Exact integer matrix after 7 fraction-free Schur steps in moment block 1. -/ +def momentBlock1Stage7 : Fin 4 → Fin 4 → ℤ := + ![![349323665451965264283586650187605360322, 44594290187816015560664354844532120032, + 55161268383475024443974654854009359762, 84888021525038038066651065966398066234], + ![44594290187816015560664354844532120032, 317237956968842946548522942445683365440, + -4974310683641765843566986833905578912, -3487862911296267424287321140207185056], + ![55161268383475024443974654854009359762, -4974310683641765843566986833905578912, + 274833209536585530728217894243784859874, 55648339062374115739709093375458375626], + ![84888021525038038066651065966398066234, -3487862911296267424287321140207185056, + 55648339062374115739709093375458375626, 319057804804681848889483082026913725522]] + +/-- Exact integer matrix after 8 fraction-free Schur steps in moment block 1. -/ +def momentBlock1Stage8 : Fin 3 → Fin 3 → ℤ := + ![![1027390765929250487667117036395703368307359, -39625952525742478153319454076821262737822, + -47238551950266101258519097711251342023780], + ![-39625952525742478153319454076821262737822, 877600291993785071511487467969136482002176, + 139308454171099711761775036613463008355896], + ![-47238551950266101258519097711251342023780, 139308454171099711761775036613463008355896, + 984138904257299960968477274638393989292742]] + +/-- Exact integer matrix after 9 fraction-free Schur steps in moment block 1. -/ +def momentBlock1Stage9 : Fin 2 → Fin 2 → ℤ := + ![![2576602472360758911423274480933654344737594750, + 404359511776974814588039016464831077827114632], + ![404359511776974814588039016464831077827114632, 2888048654047028442742867641207330953640496149]] + +/-- Exact integer matrix after 10 fraction-free Schur steps in moment block 1. -/ +def momentBlock1Stage10 : Fin 1 → Fin 1 → ℤ := + ![![7083815553830273222944915207836617157660525052714]] + +/-- Exact integer matrix after 11 fraction-free Schur steps in moment block 1. -/ +def momentBlock1Stage11 : Fin 0 → Fin 0 → ℤ := fun i => Fin.elim0 i + +theorem momentBlock1Stage10_psd : IsPSD (fun i j => (momentBlock1Stage10 i j : ℝ)) := by + apply integer_schur_step momentBlock1Stage10 momentBlock1Stage11 + (2576602472360758911423274480933654344737594750) + · decide + · decide + · decide +kernel + · decide +kernel + · exact quadraticForm_zero _ + +theorem momentBlock1Stage9_psd : IsPSD (fun i j => (momentBlock1Stage9 i j : ℝ)) := by + apply integer_schur_step momentBlock1Stage9 momentBlock1Stage10 + (1027390765929250487667117036395703368307359) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock1Stage10_psd + +theorem momentBlock1Stage8_psd : IsPSD (fun i j => (momentBlock1Stage8 i j : ℝ)) := by + apply integer_schur_step momentBlock1Stage8 momentBlock1Stage9 + (349323665451965264283586650187605360322) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock1Stage9_psd + +theorem momentBlock1Stage7_psd : IsPSD (fun i j => (momentBlock1Stage7 i j : ℝ)) := by + apply integer_schur_step momentBlock1Stage7 momentBlock1Stage8 + (105928609483909163009389834691827584) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock1Stage8_psd + +theorem momentBlock1Stage6_psd : IsPSD (fun i j => (momentBlock1Stage6 i j : ℝ)) := by + apply integer_schur_step momentBlock1Stage6 momentBlock1Stage7 (30910369735653223417949121811512) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock1Stage7_psd + +theorem momentBlock1Stage5_psd : IsPSD (fun i j => (momentBlock1Stage5 i j : ℝ)) := by + apply integer_schur_step momentBlock1Stage5 momentBlock1Stage6 (6388701539298208968258340727) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock1Stage6_psd + +theorem momentBlock1Stage4_psd : IsPSD (fun i j => (momentBlock1Stage4 i j : ℝ)) := by + apply integer_schur_step momentBlock1Stage4 momentBlock1Stage5 (1983609171847332477984066) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock1Stage5_psd + +theorem momentBlock1Stage3_psd : IsPSD (fun i j => (momentBlock1Stage3 i j : ℝ)) := by + apply integer_schur_step momentBlock1Stage3 momentBlock1Stage4 (490373567429017047174) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock1Stage4_psd + +theorem momentBlock1Stage2_psd : IsPSD (fun i j => (momentBlock1Stage2 i j : ℝ)) := by + apply integer_schur_step momentBlock1Stage2 momentBlock1Stage3 (394164000270807) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock1Stage3_psd + +theorem momentBlock1Stage1_psd : IsPSD (fun i j => (momentBlock1Stage1 i j : ℝ)) := by + apply integer_schur_step momentBlock1Stage1 momentBlock1Stage2 (148973087) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock1Stage2_psd + +theorem momentBlock1Stage0_psd : IsPSD (fun i j => (momentBlock1Stage0 i j : ℝ)) := by + apply integer_schur_step momentBlock1Stage0 momentBlock1Stage1 (1) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock1Stage1_psd + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/MomentBlock2.lean b/LeanPool/PersistentSOS/MomentBlock2.lean new file mode 100644 index 0000000000..28e2f09854 --- /dev/null +++ b/LeanPool/PersistentSOS/MomentBlock2.lean @@ -0,0 +1,336 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.PSD + +/-! +# Exact moment block certificate + +Generated by `scripts/generate_moments.py`; all identities below are checked +by the Lean kernel with integer arithmetic. No external verifier is trusted. +-/ + +@[expose] public section + + +namespace PersistentSOS + + +/-- Exact integer matrix after 0 fraction-free Schur steps in moment block 2. -/ +def momentBlock2Stage0 : Fin 11 → Fin 11 → ℤ := + ![![162381159, 86495040, 7457187, 4162390, 3349614, 30621436, 3504174, 3462345, 5800689, + 10073399, 5911137], + ![86495040, 48848306, 3269119, 1964655, 1411787, 15833908, 1503644, 1400984, 2688879, 4832959, + 2789333], + ![7457187, 3269119, 1189529, 623959, 608339, 604148, 604133, 583593, 883143, 1220643, 651390], + ![4162390, 1964655, 623959, 335974, 318998, 317179, 317183, 301842, 470216, 651390, 344016], + ![3349614, 1411787, 608339, 318998, 315848, 196997, 310742, 299603, 451763, 615867, 326209], + ![30621436, 15833908, 604148, 317179, 196997, 7147237, 236820, 297238, 449043, 1128524, 777072], + ![3504174, 1503644, 604133, 317183, 310742, 236820, 310383, 297238, 449043, 615337, 326753], + ![3462345, 1400984, 583593, 301842, 299603, 297238, 297238, 293173, 429020, 591740, 318788], + ![5800689, 2688879, 883143, 470216, 451763, 449043, 449043, 429020, 665471, 918271, 486284], + ![10073399, 4832959, 1220643, 651390, 615867, 1128524, 615337, 591740, 918271, 1311685, 705658], + ![5911137, 2789333, 651390, 344016, 326209, 777072, 326753, 318788, 486284, 705658, 389139]] + +/-- Exact integer matrix after 1 fraction-free Schur steps in moment block 2. -/ +def momentBlock2Stage1 : Fin 10 → Fin 10 → ℤ := + ![![450652598865054, -114166355723559, -41003133610455, -60477387593427, -77473999138068, + -58930214853564, -71982263608344, -65107538651799, -86517565621479, -58348905883533], + ![-114166355723559, 137547459731142, 70279464991551, 73804093909083, -130247522013000, + 71968535931609, 68945153600772, 100148961300894, 123090204996624, 61693009169391], + ![-41003133610455, 70279464991551, 37230357001766, 37856865141222, -75954465361579, + 36918804339237, 34601823590328, 52209489173634, 63844047897400, 31257259257114], + ![-60477387593427, 73804093909083, 37856865141222, 40067850358836, -70581389546181, + 38721015821142, 37052363095047, 53927730449271, 66263198931867, 33170168245113], + ![-77473999138068, -130247522013000, -75954465361579, -70581389546181, 222904285005587, + -68847733799484, -57756124888578, -104709304188567, -125210907701648, -54825651346284], + ![-58930214853564, 71968535931609, 36918804339237, 38721015821142, -68847733799484, + 38121115851621, 36133191610812, 52589499204951, 64620192368157, 32344878260889], + ![-71982263608344, 68945153600772, 34601823590328, 37052363095047, -57756124888578, + 36133191610812, 35617938628482, 49580778278475, 61209844366005, 31298769279027], + ![-65107538651799, 100148961300894, 52209489173634, 53927730449271, -104709304188567, + 52589499204951, 49580778278475, 74411959386168, 90677254484178, 44674692149763], + ![-86517565621479, 123090204996624, 63844047897400, 66263198931867, -125210907701648, + 64620192368157, 61209844366005, 90677254484178, 111519563129714, 55040322352959], + ![-58348905883533, 61693009169391, 31257259257114, 33170168245113, -54825651346284, + 32344878260889, 31298769279027, 44674692149763, 55040322352959, 28247301199332]] + +/-- Exact integer matrix after 2 fraction-free Schur steps in moment block 2. -/ +def momentBlock2Stage2 : Fin 9 → Fin 9 → ℤ := + ![![301464552398762538693, 166216606495192061751, 162306538172855483571, -415943012426799800868, + 158300138024355818790, 140732829332995712688, 232165477189856421765, 280780885444244985465, + 130191415672872290913], + ![166216606495192061751, 92970762535589386021, 89792019878802583017, -230357722404209330234, + 87579321004440436542, 77853264701328588888, 128455351615808365149, 155338186767095835545, + 72013755817882934199], + ![162306538172855483571, 89792019878802583017, 88675105989482017785, -224737352101169506590, + 85513498310660513760, 76021408781670853350, 125415646451687197179, 151676010996004736115, + 70324865261495286129], + ![-415943012426799800868, -230357722404209330234, -224737352101169506590, 581657227815938351686, + -219187803539929546632, -194632812111910900356, -321660848912406196050, + -388773446101504191796, -179995299502698325620], + ![158300138024355818790, 87579321004440436542, 85513498310660513760, -219187803539929546632, + 84410099003429300682, 74156303100508117848, 122322031513432057602, 147940555709351726958, + 68590407635016521166], + ![140732829332995712688, 77853264701328588888, 76021408781670853350, -194632812111910900356, + 74156303100508117848, 66940465272576884388, 108738715030495226766, 131521694732749968066, + 60997134478540724334], + ![232165477189856421765, 128455351615808365149, 125415646451687197179, -321660848912406196050, + 122322031513432057602, 108738715030495226766, 180408561406572771369, 216964793578562195949, + 100589333000663059065], + ![280780885444244985465, 155338186767095835545, 151676010996004736115, -388773446101504191796, + 147940555709351726958, 131521694732749968066, 216964793578562195949, 263400582007387595485, + 121663493096580428481], + ![130191415672872290913, 72013755817882934199, 70324865261495286129, -179995299502698325620, + 68590407635016521166, 60997134478540724334, 100589333000663059065, 121663493096580428481, + 57427382191535722521]] + +/-- Exact integer matrix after 3 fraction-free Schur steps in moment block 2. -/ +def momentBlock2Stage3 : Fin 8 → Fin 8 → ℤ := + ![![886334707026019035703788, 202082701617548993686740, -683567910157418986844061, + 199597330823719926200154, 172785604625233657970124, 299515224344444639160273, + 351736564527657982888305, 154485642415908136525986], + ![202082701617548993686740, 863167777918241564336166, -532727060453868102806523, + 191147454767044031940585, 168426044742867297975513, 280475105975236468929708, + 338103593232504908354670, 154300787453444143625631], + ![-683567910157418986844061, -532727060453868102806523, 5193460000564225186373481, + -518174772745356954162264, -306348184087754299282806, -891453591395931551050845, + -915484768111792786820352, -244074419308775174013744], + ![199597330823719926200154, 191147454767044031940585, -518174772745356954162264, + 860350115477851307537769, 171907171877892638350836, 274999845494127780767034, + 335470134866262316752936, 151463602138006344087792], + ![172785604625233657970124, 168426044742867297975513, -306348184087754299282806, + 171907171877892638350836, 830902006634885998653510, 238684026192585016762917, + 297436212462500259024867, 147047994033225375060117], + ![299515224344444639160273, 280475105975236468929708, -891453591395931551050845, + 274999845494127780767034, 238684026192585016762917, 1078385913600173673631398, + 487218154406696488537758, 217830993689687594508900], + ![351736564527657982888305, 338103593232504908354670, -915484768111792786820352, + 335470134866262316752936, 297436212462500259024867, 487218154406696488537758, + 1260467435463556324824720, 270650874018907705214922], + ![154485642415908136525986, 154300787453444143625631, -244074419308775174013744, + 151463602138006344087792, 147047994033225375060117, 217830993689687594508900, + 270650874018907705214922, 804423082903201858728546]] + +/-- Exact integer matrix after 4 fraction-free Schur steps in moment block 2. -/ +def momentBlock2Stage4 : Fin 7 → Fin 7 → ℤ := + ![![2402332663989154152910936856, -1108048128281066334499621088, 428194474090142027269377140, + 379364228163566411059252588, 623847724964937508678637388, 758275134558375396484602820, + 350101749678667532912443516], + ![-1108048128281066334499621088, 13719287151159723008777240999, -1070898560101111002294713366, + -508903392162286480742313148, -1941811258185411341087551299, -1894053847617048504396487447, + -367307533552242765544907182], + ![428194474090142027269377140, -1070898560101111002294713366, 2397360045548347288112323592, + 391023576059379220504185304, 610219233751525346744811750, 753432343745016656165615086, + 343033782003342887585190364], + ![379364228163566411059252588, -508903392162286480742313148, 391023576059379220504185304, + 2343898862502734248047864728, 530085597204807833532963408, 672891793237571033242217432, + 343791151413255532173931124], + ![623847724964937508678637388, -1941811258185411341087551299, 610219233751525346744811750, + 530085597204807833532963408, 2872979546968614039130329915, 1083005950488364968151665723, + 486957312091403513888767254], + ![758275134558375396484602820, -1894053847617048504396487447, 753432343745016656165615086, + 672891793237571033242217432, 1083005950488364968151665723, 3295503290176505346709408595, + 615491979143967927027674942], + ![350101749678667532912443516, -367307533552242765544907182, 343033782003342887585190364, + 343791151413255532173931124, 486957312091403513888767254, 615491979143967927027674942, + 2285914805949667393515520964]] + +/-- Exact integer matrix after 5 fraction-free Schur steps in moment block 2. -/ +def momentBlock2Stage5 : Fin 6 → Fin 6 → ℤ := + ![![35799704946405830565911300019550, -2367271064262160009575892059052, + -905077294721532914274365507288, -4483208518589852780080384399350, + -4185712296389158313621400084894, -557876492055224911276625008668], + ![-2367271064262160009575892059052, 6290970885966110286789468124004, + 876561683562026943594571963708, 1352560651669073078861560118360, + 1675784435893810102394884867232, 760626453452058176595203933588], + ![-905077294721532914274365507288, 876561683562026943594571963708, + 6190559319602646279128014743748, 1169734667935046779625707217108, + 1499261466953342762946024873964, 781967158784178070604701190572], + ![-4483208518589852780080384399350, 1352560651669073078861560118360, + 1169734667935046779625707217108, 7347863705533931156258537561242, + 2401680015108114280893343697506, 1073435654973543541900311282032], + ![-4185712296389158313621400084894, 1675784435893810102394884867232, + 1499261466953342762946024873964, 2401680015108114280893343697506, + 8283455403907247377602450418090, 1368718865410015303622369114664], + ![-557876492055224911276625008668, 760626453452058176595203933588, + 781967158784178070604701190572, 1073435654973543541900311282032, + 1368718865410015303622369114664, 6057482041198732628941501132156]] + +/-- Exact integer matrix after 6 fraction-free Schur steps in moment block 2. -/ +def momentBlock2Stage6 : Fin 5 → Fin 5 → ℤ := + ![![91415702972481670310185491673575191, 12170706741163621018320414139954879, + 15738162752188478863998161771749675, 20848017223827449016245220033373777, + 10785166483944262300604127038915419], + ![12170706741163621018320414139954879, 91911097699071194956417662364531101, + 15742409994617456735128328912757475, 20765119560881892639511834020129113, + 11442741726863052680874295279870811], + ![15738162752188478863998161771749675, 15742409994617456735128328912757475, + 101131786477869406359192854954129975, 27978645880542076162670654099710775, + 14955298915947280926716143519878925], + ![20848017223827449016245220033373777, 20765119560881892639511834020129113, + 27978645880542076162670654099710775, 116147557809548523302373193717115519, + 19424712381884582783143591279981743], + ![10785166483944262300604127038915419, 11442741726863052680874295279870811, + 14955298915947280926716143519878925, 19424712381884582783143591279981743, + 90139407775898496645471613298363621]] + +/-- Exact integer matrix after 7 fraction-free Schur steps in moment block 2. -/ +def momentBlock2Stage7 : Fin 4 → Fin 4 → ℤ := + ![![230560322128640981995614972808417029443, 34848301529441414263056591324712009048, + 45936772402500502713934200623612972472, 25552813405375944744383283128360491932], + ![34848301529441414263056591324712009048, 251324517908527565862701119650015994212, + 62279230976810031073860648408133374021, 33447495165776961090198579853398728287], + ![45936772402500502713934200623612972472, 62279230976810031073860648408133374021, + 284445663414725196401913767555511677148, 43320871027593036132592889310766056377], + ![25552813405375944744383283128360491932, 33447495165776961090198579853398728287, + 43320871027593036132592889310766056377, 226924705760351602730999289458383164531]] + +/-- Exact integer matrix after 8 fraction-free Schur steps in moment block 2. -/ +def momentBlock2Stage8 : Fin 3 → Fin 3 → ℤ := + ![![620583289781254120751888124686652423276532, 139563561238557148110195081821893729809417, + 74617301968294747570129174844580910506955], + ![139563561238557148110195081821893729809417, 694319407523906574871114096848460568837580, + 96419541925112656404259559654624399306477], + ![74617301968294747570129174844580910506955, 96419541925112656404259559654624399306477, + 565186125644920708018030247449874013176799]] + +/-- Exact integer matrix after 9 fraction-free Schur steps in moment block 2. -/ +def momentBlock2Stage9 : Fin 2 → Fin 2 → ℤ := + ![![1784370487759058228490618359410623583351466997, + 214358219480647245879310590684659113816959403], + ![214358219480647245879310590684659113816959403, 1497123703903514595754913732378980425045337201]] + +/-- Exact integer matrix after 10 fraction-free Schur steps in moment block 2. -/ +def momentBlock2Stage10 : Fin 1 → Fin 1 → ℤ := + ![![4230655176739430507011639448708130569138958702359]] + +/-- Exact integer matrix after 11 fraction-free Schur steps in moment block 2. -/ +def momentBlock2Stage11 : Fin 0 → Fin 0 → ℤ := fun i => Fin.elim0 i + +theorem momentBlock2Stage10_psd : IsPSD (fun i j => (momentBlock2Stage10 i j : ℝ)) := by + apply integer_schur_step momentBlock2Stage10 momentBlock2Stage11 + (1784370487759058228490618359410623583351466997) + · decide + · decide + · decide +kernel + · decide +kernel + · exact quadraticForm_zero _ + +theorem momentBlock2Stage9_psd : IsPSD (fun i j => (momentBlock2Stage9 i j : ℝ)) := by + apply integer_schur_step momentBlock2Stage9 momentBlock2Stage10 + (620583289781254120751888124686652423276532) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock2Stage10_psd + +theorem momentBlock2Stage8_psd : IsPSD (fun i j => (momentBlock2Stage8 i j : ℝ)) := by + apply integer_schur_step momentBlock2Stage8 momentBlock2Stage9 + (230560322128640981995614972808417029443) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock2Stage9_psd + +theorem momentBlock2Stage7_psd : IsPSD (fun i j => (momentBlock2Stage7 i j : ℝ)) := by + apply integer_schur_step momentBlock2Stage7 momentBlock2Stage8 + (91415702972481670310185491673575191) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock2Stage8_psd + +theorem momentBlock2Stage6_psd : IsPSD (fun i j => (momentBlock2Stage6 i j : ℝ)) := by + apply integer_schur_step momentBlock2Stage6 momentBlock2Stage7 (35799704946405830565911300019550) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock2Stage7_psd + +theorem momentBlock2Stage5_psd : IsPSD (fun i j => (momentBlock2Stage5 i j : ℝ)) := by + apply integer_schur_step momentBlock2Stage5 momentBlock2Stage6 (2402332663989154152910936856) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock2Stage6_psd + +theorem momentBlock2Stage4_psd : IsPSD (fun i j => (momentBlock2Stage4 i j : ℝ)) := by + apply integer_schur_step momentBlock2Stage4 momentBlock2Stage5 (886334707026019035703788) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock2Stage5_psd + +theorem momentBlock2Stage3_psd : IsPSD (fun i j => (momentBlock2Stage3 i j : ℝ)) := by + apply integer_schur_step momentBlock2Stage3 momentBlock2Stage4 (301464552398762538693) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock2Stage4_psd + +theorem momentBlock2Stage2_psd : IsPSD (fun i j => (momentBlock2Stage2 i j : ℝ)) := by + apply integer_schur_step momentBlock2Stage2 momentBlock2Stage3 (450652598865054) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock2Stage3_psd + +theorem momentBlock2Stage1_psd : IsPSD (fun i j => (momentBlock2Stage1 i j : ℝ)) := by + apply integer_schur_step momentBlock2Stage1 momentBlock2Stage2 (162381159) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock2Stage2_psd + +theorem momentBlock2Stage0_psd : IsPSD (fun i j => (momentBlock2Stage0 i j : ℝ)) := by + apply integer_schur_step momentBlock2Stage0 momentBlock2Stage1 (1) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock2Stage1_psd + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/MomentBlock3.lean b/LeanPool/PersistentSOS/MomentBlock3.lean new file mode 100644 index 0000000000..80a7def34d --- /dev/null +++ b/LeanPool/PersistentSOS/MomentBlock3.lean @@ -0,0 +1,873 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.PSD + +/-! +# Exact moment block certificate + +Generated by `scripts/generate_moments.py`; all identities below are checked +by the Lean kernel with integer arithmetic. No external verifier is trusted. +-/ + +@[expose] public section + + +namespace PersistentSOS + + +/-- Exact integer matrix after 0 fraction-free Schur steps in moment block 3. -/ +def momentBlock3Stage0 : Fin 16 → Fin 16 → ℤ := + ![![21035273, 11656848, -2998234, -1514923, 7457187, 10073398, 1370160, 455296, 1065984, 270523, + 2353567, 1717705, 2833858, 3953065, 1418658, 2037393], + ![11656848, 7733555, -1514923, -1319691, 4162390, 5911137, 455296, 126537, 270523, 19998, + 1717705, 1403748, 1418815, 2037568, 752865, 1065899], + ![-2998234, -1514923, 4872560, 2735066, 3269119, 4832959, -166144, 37680, -18413, 127362, + -416068, -377759, -906164, -1199593, -442446, -607622], + ![-1514923, -1319691, 2735066, 1803955, 1964655, 2789334, 37680, 78319, 127362, 131135, -377759, + -364529, -442523, -607709, -233311, -315518], + ![7457187, 4162390, 3269119, 1964655, 6925782, 9655915, 608339, 318998, 604148, 317179, 604133, + 317183, 583593, 883142, 301842, 470215], + ![10073398, 5911137, 4832959, 2789334, 9655915, 13722105, 615867, 326209, 615337, 326753, + 1128523, 777071, 591740, 918271, 318788, 486284], + ![1370160, 455296, -166144, 37680, 608339, 615867, 320428, 127678, 309873, 125148, -128470, + -210023, 312527, 399703, 124516, 197247], + ![455296, 126537, 37680, 78319, 318998, 326209, 127678, 149893, 125148, 156445, -210023, + -120298, 124519, 197239, 78020, 105630], + ![1065984, 270523, -18413, 127362, 604148, 615337, 309873, 125148, 323490, 131237, -195351, + -262558, 231540, 278253, 82775, 129317], + ![270523, 19998, 127362, 131135, 317179, 326753, 125148, 156445, 131237, 179693, -262558, + -143251, 79784, 130616, 54692, 68507], + ![2353567, 1717705, -416068, -377759, 604133, 1128523, -128470, -210023, -195351, -262558, + 947187, 739214, 231538, 278254, 79776, 130613], + ![1717705, 1403748, -377759, -364529, 317183, 777071, -210023, -120298, -262558, -143251, + 739214, 807060, 82777, 129312, 54684, 68496], + ![2833858, 1418815, -906164, -442523, 583593, 591740, 312527, 124519, 231540, 79784, 231538, + 82777, 673907, 920821, 305305, 478133], + ![3953065, 2037568, -1199593, -607709, 883142, 918271, 399703, 197239, 278253, 130616, 278254, + 129312, 920821, 1395424, 478133, 775732], + ![1418658, 752865, -442446, -233311, 301842, 318788, 124516, 78020, 82775, 54692, 79776, 54684, + 305305, 478133, 185908, 270806], + ![2037393, 1065899, -607622, -315518, 470215, 486284, 197247, 105630, 129317, 68507, 130613, + 68496, 478133, 775732, 270806, 469720]] + +/-- Exact integer matrix after 1 fraction-free Schur steps in moment block 3. -/ +def momentBlock3Stage1 : Fin 15 → Fin 15 → ℤ := + ![![26795335390411, 3083139127453, -10100833317939, 629714615894, 6918311205897, -6394471199872, + -2645575927407, -6735488300653, -2732782102050, 8697220831649, 9505196309364, -3188691098089, + -3219478703056, -700359862839, -1328104061837], + ![3083139127453, 93506222690124, 52990766337036, 91125202242245, 131865016341939, 613175900128, + 2157693033904, 2808746990507, 3490185696208, -1695559365886, -2796182160237, -10564837716000, + -13381552356679, -5053503747786, -6672913686844], + ![-10100833317939, 52990766337036, 35651694208786, 52624118377416, 73934824496536, + 2868295984320, 2337199928295, 4293978119058, 3168282039584, -4380790912866, -5065776219702, + -5015515450845, -6794735630562, -2758602945569, -3550513750675], + ![629714615894, 91125202242245, 52624118377416, 90076077155517, 127995595478369, 2579037601627, + 3314982604102, 4759176085396, 4654606256066, -4842886652720, -6137216399876, -8856570961557, + -10901611860389, -4229869122180, -5302119699796], + ![6918311205897, 131865016341939, 73934824496536, 127995595478369, 187174877543261, + -847236526989, 2275517554249, 2205700688369, 4148252711415, 30372281113, -957225486207, + -16099167064464, -20504715891887, -7584914050760, -10294353875882], + ![-6394471199872, 613175900128, 2868295984320, 2579037601627, -847236526989, 4862952031244, + 2061913218734, 5057694512889, 2261862551724, -5927164883030, -6771421824079, 2691251887591, + 2991530183519, 675439607588, 1357590100551], + ![-2645575927407, 2157693033904, 2337199928295, 3314982604102, 2275517554249, 2061913218734, + 2945745728173, 2147184094140, 3167695244677, -5489460782111, -3312565487034, 1329046946719, + 2349161529007, 995262686692, 1294339003662], + ![-6735488300653, 2808746990507, 4293978119058, 4759176085396, 2205700688369, 5057694512889, + 2147184094140, 5668378574514, 2472232933069, -6618126380751, -7354025255054, 1849659824148, + 1639223777109, 228927993103, 548390058829], + ![-2732782102050, 3490185696208, 3168282039584, 4654606256066, 4148252711415, 2261862551724, + 3167695244677, 2472232933069, 3706708617660, -6159673213875, -3478002602238, 911654453298, + 1678148215173, 766681532782, 889901780872], + ![8697220831649, -1695559365886, -4380790912866, -4842886652720, 30372281113, -5927164883030, + -5489460782111, -6618126380751, -6159673213875, 14385059503562, 11506834491687, + -1799209631612, -3450654479513, -1660796714238, -2047660818482], + ![9505196309364, -2796182160237, -5065776219702, -6137216399876, -957225486207, -6771421824079, + -3312565487034, -7354025255054, -3478002602238, 11506834491687, 14026216960355, + -3126495262769, -4070086293649, -1286543071158, -2058808083657], + ![-3188691098089, -10564837716000, -5015515450845, -8856570961557, -16099167064464, + 2691251887591, 1329046946719, 1849659824148, 911654453298, -1799209631612, -3126495262769, + 6145066557447, 8167296244363, 2401898700701, 4283975733115], + ![-3219478703056, -13381552356679, -6794735630562, -10901611860389, -20504715891887, + 2991530183519, 2349161529007, 1639223777109, 1678148215173, -3450654479513, -4070086293649, + 8167296244363, 13726401896527, 4449610898539, 8263787435291], + ![-700359862839, -5053503747786, -2758602945569, -4229869122180, -7584914050760, 675439607588, + 995262686692, 228927993103, 766681532782, -1660796714238, -1286543071158, 2401898700701, + 4449610898539, 1898035011920, 2806114261444], + ![-1328104061837, -6672913686844, -3550513750675, -5302119699796, -10294353875882, + 1357590100551, 1294339003662, 548390058829, 889901780872, -2047660818482, -2058808083657, + 4283975733115, 8263787435291, 2806114261444, 5729718197111]] + +/-- Exact integer matrix after 2 fraction-free Schur steps in moment block 3. -/ +def momentBlock3Stage2 : Fin 14 → Fin 14 → ℤ := + ![![118659018648966430435, 68981640077511674931, 115985604694961431281, 166959431578068198156, + 1718318476444000288, 3136293366358849355, 4565082904304963682, 4846442626646304506, + -3434603569415254191, -4955033455080728763, -12990427633413859171, -16573927169006313237, + -6334646615815648923, -8305489102607323651], + ![68981640077511674931, 40563879054196625525, 67336494464348910954, 97502377447074368123, + 583185450103498944, 1706825220686181264, 2235508862633783127, 2723606361325316938, + -1404097956594900555, -1888673812054102662, -7920071013358042842, -10201276582448330742, + -3850290384755568160, -5160482800251559016], + ![115985604694961431281, 67336494464348910954, 114722645032329551587, 162837361210126174717, + 3476677934988022305, 4301918426218506860, 6264009733475451306, 6010980155727389362, + -6429369335626137462, -8102311429053304324, -11186297602786373657, -13790407821202598655, + -5367162810025866018, -6714234186405479886], + ![166959431578068198156, 97502377447074368123, 162837361210126174717, 236153369176104660094, + 1023849553185396585, 3768725684591823866, 5024926175348594800, 6182950880952864855, + -2821748254979311270, -4345514512147742145, -19458850077320995527, -25060639042797472525, + -9431539510341298849, -12676442445897011281], + ![1718318476444000288, 583185450103498944, 3476677934988022305, 1023849553185396585, + 4250725376308211300, 1822300911760008490, 4395128830488757531, 2050492486281068868, + -4906341972749709474, -5736165858022746557, 2458870087212996741, 2832014148456096749, + 647493372147714220, 1325609555583905189], + ![3136293366358849355, 1706825220686181264, 4301918426218506860, 3768725684591823866, + 1822300911760008490, 3419645315446611998, 1888032175284726153, 3691403194610218289, + -5898796022358200086, -3024186312506851362, 1291941125646244382, 2587520290342265645, + 1179710969181372443, 1481732496503671551], + ![4565082904304963682, 2235508862633783127, 6264009733475451306, 5024926175348594800, + 4395128830488757531, 1888032175284726153, 5063842165285375765, 2274165337821461933, + -5645512034409182168, -6324207660228295174, 1335131888264034607, 1057214220558810847, + 67360033456640042, 273296485409884246], + ![4846442626646304506, 2723606361325316938, 6010980155727389362, 6182950880952864855, + 2050492486281068868, 3691403194610218289, 2274165337821461933, 4366684596270351120, + -6716475713664597975, -3195519062908657266, 747035176318268436, 1719417213303462111, + 885634234952285324, 961042800497108654], + ![-3434603569415254191, -1404097956594900555, -6429369335626137462, -2821748254979311270, + -4906341972749709474, -5898796022358200086, -5645512034409182168, -6716475713664597975, + 14728158926888832197, 10727728522277265777, -973492232437771827, -3064420739949797163, + -1826000574585630459, -2059252764811860593], + ![-4955033455080728763, -1888673812054102662, -8102311429053304324, -4345514512147742145, + -5736165858022746557, -3024186312506851362, -6324207660228295174, -3195519062908657266, + 10727728522277265777, 13571890929670193833, -2541747582984500431, -3729808984170345635, + -1322364349747401654, -2022439322705926983], + ![-12990427633413859171, -7920071013358042842, -11186297602786373657, -19458850077320995527, + 2458870087212996741, 1291941125646244382, 1335131888264034607, 747035176318268436, + -973492232437771827, -2541747582984500431, 7344395695941700252, 9915702972793790433, + 2953441583524119280, 5255727034010102164], + ![-16573927169006313237, -10201276582448330742, -13790407821202598655, -25060639042797472525, + 2832014148456096749, 2587520290342265645, 1057214220558810847, 1719417213303462111, + -3064420739949797163, -3729808984170345635, 9915702972793790433, 16992339457709127357, + 5560851181741029665, 10323381739859534673], + ![-6334646615815648923, -3850290384755568160, -5367162810025866018, -9431539510341298849, + 647493372147714220, 1179710969181372443, 67360033456640042, 885634234952285324, + -1826000574585630459, -1322364349747401654, 2953441583524119280, 5560851181741029665, + 2394453392150569063, 3530290384185808217], + ![-8305489102607323651, -5160482800251559016, -6714234186405479886, -12676442445897011281, + 1325609555583905189, 1481732496503671551, 273296485409884246, 961042800497108654, + -2059252764811860593, -2022439322705926983, 5255727034010102164, 10323381739859534673, + 3530290384185808217, 7214827227821685524]] + +/-- Exact integer matrix after 3 fraction-free Schur steps in moment block 3. -/ +def momentBlock3Stage3 : Fin 13 → Fin 13 → ℤ := + ![![2045259467160214510966274, -402864329999712810336111, 1955601838276526422475879, + -1841074678192509334874208, -515629092990198230308515, -1852696272849802631418627, + -415561243941962464055696, 2624176954431151504863636, 4392486661174064374444653, + -1630390139834101988315679, -2507032982343465570063993, -742568264525067764540317, + -1470836782400203469499389], + ![-402864329999712810336111, 5979248908801644913868344, -1596141638284529919911231, + 7958063643107878269831177, 5474704235930695290018395, 7978901683008548656262388, + 5640512631168687709920244, -13604535218525663449377609, -14431607806142715349428067, + 6693236185799259440879896, 10672779491943104285807352, 3652335187130854394928303, + 6217975400850230920882011], + ![1955601838276526422475879, -1596141638284529919911231, 5458981650379603594506814, + -6172734562270524449275023, -2852752738667884923339970, -6192527006716441674054872, + -2817521077156384244672601, 8905041767855117293254086, 11630945350504018482563523, + -5228284645080437638372179, -7706467315002287054513473, -2295482535499412990860957, + -4384885627635445354342189], + ![-1841074678192509334874208, 7958063643107878269831177, -6172734562270524449275023, + 18713491583760721757592196, 7868656389688212682286810, 19170404104903820121512179, + 8769500020622600310829732, -21506727662619807674031762, -25083973616689734132044741, + 11721771673206841250403853, 13603983664558948555123061, 3273549935629741785271084, + 6402868329820953677641773], + ![-515629092990198230308515, 5474704235930695290018395, -2852752738667884923339970, + 7868656389688212682286810, 14776281595648676425615555, 7826534089301146234008495, + 15779552988951529249780735, -25719902840971691132268055, -12812175570726373123112055, + 7241643193005342415104625, 13398351279807004257397610, 5965615049143858507102670, + 7533750608866159041144890], + ![-1852696272849802631418627, 7978901683008548656262388, -6192527006716441674054872, + 19170404104903820121512179, 7826534089301146234008495, 21646699007559827256825841, + 9245109689444057567874233, -24415132641714866631334238, -27161598299656663591592884, + 8125586620392760348663897, 7505386686133284350985589, 1377518209755597521390396, + 2625245702217475707036472], + ![-415561243941962464055696, 5640512631168687709920244, -2817521077156384244672601, + 8769500020622600310829732, 15779552988951529249780735, 9245109689444057567874233, + 18460619940090117140540324, -29121666008250811589488989, -13254652929358115101892712, + 5657694555052144406038526, 10611882335434034070659037, 5067635415139816270985798, + 5758034738534290997460136], + ![2624176954431151504863636, -13604535218525663449377609, 8905041767855117293254086, + -21506727662619807674031762, -25719902840971691132268055, -24415132641714866631334238, + -29121666008250811589488989, 64781140366423243184512874, 46870962609559295028030042, + -5976062614939904373666546, -15694747649785976076132852, -8898132179967734970144978, + -10183674537544774086969536], + ![4392486661174064374444653, -14431607806142715349428067, 11630945350504018482563523, + -25083973616689734132044741, -12812175570726373123112055, -27161598299656663591592884, + -13254652929358115101892712, 46870962609559295028030042, 59184737913451423427931526, + -13657947252291534733621978, -19581760398566192036801696, -7027299311665661550785649, + -10491924716650510782498738], + ![-1630390139834101988315679, 6693236185799259440879896, -5228284645080437638372179, + 11721771673206841250403853, 7241643193005342415104625, 8125586620392760348663897, + 5657694555052144406038526, -5976062614939904373666546, -13657947252291534733621978, + 26225742858312990029117889, 35875094245691292489791148, 10007813210204606870123197, + 19247661933708048133095129], + ![-2507032982343465570063993, 10672779491943104285807352, -7706467315002287054513473, + 13603983664558948555123061, 13398351279807004257397610, 7505386686133284350985589, + 10611882335434034070659037, -15694747649785976076132852, -19581760398566192036801696, + 35875094245691292489791148, 64996359904552638468975066, 20707155344096789459906084, + 40578248380123186626275388], + ![-742568264525067764540317, 3652335187130854394928303, -2295482535499412990860957, + 3273549935629741785271084, 5965615049143858507102670, 1377518209755597521390396, + 5067635415139816270985798, -8898132179967734970144978, -7027299311665661550785649, + 10007813210204606870123197, 20707155344096789459906084, 9105903636247343269596916, + 13669858904916925389458702], + ![-1470836782400203469499389, 6217975400850230920882011, -4384885627635445354342189, + 6402868329820953677641773, 7533750608866159041144890, 2625245702217475707036472, + 5758034738534290997460136, -10183674537544774086969536, -10491924716650510782498738, + 19247661933708048133095129, 40578248380123186626275388, 13669858904916925389458702, + 29375380373977915264293049]] + +/-- Exact integer matrix after 4 fraction-free Schur steps in moment block 3. -/ +def momentBlock3Stage4 : Fin 12 → Fin 12 → ℤ := + ![![101693203822505537150860699301, -20872257334551476142722120935, + 130918002411405796037088797286, 92613795600940191466894475299, 131237719133073628129985568489, + 95811487284022230539860337960, -225584346358402444771555356642, + -233836472035509823327579040225, 109832179568058272626876258421, + 175449025039382247516637378035, 60432143582516249842889822841, + 102182080370536466281440959841], + ![-20872257334551476142722120935, 61863442283627779166846834617, -76053509285885399653768029162, + -40673304052723766891301205637, -76203126843049496608139448457, + -41715239016526906484094868694, 110242574513558045658577153792, + 128084205263033203333742532249, -63246812574722269443869927343, + -91514046290934912196991009873, -27327796582180146996697212645, + -51339188510326072673366200933], + ![130918002411405796037088797286, -76053509285885399653768029162, + 293988524865756744772508744024, 127627318014472877456244558172, + 301683754830446471459299581698, 144707278481524061577149421080, + -329983620828227396260747154700, -364206101140903262368035253966, + 176745052531884300451650993854, 195585988356294622154277519982, 44902911123716690178757654568, + 87541653647461176360043522494], + ![92613795600940191466894475299, -40673304052723766891301205637, 127627318014472877456244558172, + 252449892157006527094763659487, 126850778085130924267661928135, + 270177564553732719254425047770, -431916371638773439629548376038, + -201748925117060486518501578765, 117735363635500353915661248599, + 220045690195910038484288201827, 99599179148255170155615380695, + 123463590772664053374760135615], + ![131237719133073628129985568489, -76203126843049496608139448457, + 301683754830446471459299581698, 126850778085130924267661928135, + 344184816826845931392615818003, 152864397127187803045402534870, + -379857164064447423926679130624, -399586756571317000575851776811, + 114599929959435940139846562407, 90222324725979154543104707765, 12149339511486376325512550827, + 22284819404932246184984141555], + ![95811487284022230539860337960, -41715239016526906484094868694, 144707278481524061577149421080, + 270177564553732719254425047770, 152864397127187803045402534870, + 316740075744564787686606066456, -492763698276674157255469277118, + -213079944994107839261881407360, 91808667562209919612272506884, + 174131113685647385256742474446, 84747428654895790784991852692, 94096954664069967158267464192], + ![-225584346358402444771555356642, 110242574513558045658577153792, + -329983620828227396260747154700, -431916371638773439629548376038, + -379857164064447423926679130624, -492763698276674157255469277118, + 1058562066076790443000142646508, 710747642306992691367828139920, + -66949537408236698126448995496, -215077904146926552087167964540, + -136950050146103218206668113056, -143002369002277192086275828116], + ![-233836472035509823327579040225, 128084205263033203333742532249, + -364206101140903262368035253966, -201748925117060486518501578765, + -399586756571317000575851776811, -213079944994107839261881407360, + 710747642306992691367828139920, 857534535670768806263355873089, + -175061105464266600455073775691, -244715254140662014732515777865, + -93637461149792676478293583395, -126396438962419096497386367897], + ![109832179568058272626876258421, -63246812574722269443869927343, + 176745052531884300451650993854, 117735363635500353915661248599, + 114599929959435940139846562407, 91808667562209919612272506884, -66949537408236698126448995496, + -175061105464266600455073775691, 429636764543137606015441424907, + 583912079128061251553359143003, 162296123433129225307575327581, + 311551750757775786112235452389], + ![175449025039382247516637378035, -91514046290934912196991009873, + 195585988356294622154277519982, 220045690195910038484288201827, 90222324725979154543104707765, + 174131113685647385256742474446, -215077904146926552087167964540, + -244715254140662014732515777865, 583912079128061251553359143003, + 1067337379772641970419107592161, 341228697453229607396167384081, + 668348779874180446341368994561], + ![60432143582516249842889822841, -27327796582180146996697212645, 44902911123716690178757654568, + 99599179148255170155615380695, 12149339511486376325512550827, 84747428654895790784991852692, + -136950050146103218206668113056, -93637461149792676478293583395, + 162296123433129225307575327581, 341228697453229607396167384081, + 152306400283558634677341312277, 226415252114957267510307690161], + ![102182080370536466281440959841, -51339188510326072673366200933, 87541653647461176360043522494, + 123463590772664053374760135615, 22284819404932246184984141555, 94096954664069967158267464192, + -143002369002277192086275828116, -126396438962419096497386367897, + 311551750757775786112235452389, 668348779874180446341368994561, + 226415252114957267510307690161, 488095339320032298625590038083]] + +/-- Exact integer matrix after 5 fraction-free Schur steps in moment block 3. -/ +def momentBlock3Stage5 : Fin 11 → Fin 11 → ℤ := + ![![2862932851840624615711760636137958, -2445445609947284576026664418405348, + -1077193216817131298059384864661778, -2449622038016415522861721252286983, + -1096366657442947208717958670106731, 3179286626705773707534522704210953, + 3982183338839158338709023125317451, -2023863257053246361199153882993692, + -2759717998130137642630491812277752, -742055450708193745052439707360565, + -1509869986851434762325464858479177], + ![-2445445609947284576026664418405348, 6237404999264556069143221458474122, + 417559611415939933289235610799917, 6599557541088701246680084817822906, + 1062113769334055736629828372310980, -1967495897249578200786024721946712, + -3140863821949115521652273304471184, 1757606386829039488578925472860652, + -1505760102270942134829196282117622, -1635652923185934258419174342445367, + -2188026843965878877853653575849368], + ![-1077193216817131298059384864661778, 417559611415939933289235610799917, + 8358412943182890047281001716199289, 364471475575458285742886049991476, + 9095059546021508781524657131888645, -11260545393249097090104726423087020, + 557380948747728943851467440818865, 880529503124779802951474892184330, + 2996270731597575232083006384892363, 2215713705260134356085140464559364, + 1511758212213681250471767522238444], + ![-2449622038016415522861721252286983, 6599557541088701246680084817822906, + 364471475575458285742886049991476, 8692255477793630712100044581339543, + 1452719952682770013068462163840195, -4412015719928159138355266122364839, + -4863486711799475799891225109835639, -1349506379427090704515022231923213, + -6772017357690976525550740975065025, -3273653800091152321765599299707253, + -5448662461238305343449566554858581], + ![-1096366657442947208717958670106731, 1062113769334055736629828372310980, + 9095059546021508781524657131888645, 1452719952682770013068462163840195, + 11260415783748299184111811415740444, -13933267602548440626502859250430227, + 359581706871611425963179699435860, -580301400405165713785231868061274, + 439024397020045535011350663407079, 1382780045585072546491489110531518, + -108150729967472961816046605203732], + ![3179286626705773707534522704210953, -1967495897249578200786024721946712, + -11260545393249097090104726423087020, -4412015719928159138355266122364839, + -13933267602548440626502859250430227, 27752112401260262892699614986414156, + 9548107450503338266743382514213655, 8785245966101821771174150364799489, + 8657381996222916917092806745370445, -143915116217339204911808886279591, + 4160014359299380218217894590834719], + ![3982183338839158338709023125317451, -3140863821949115521652273304471184, + 557380948747728943851467440818865, -4863486711799475799891225109835639, + 359581706871611425963179699435860, 9548107450503338266743382514213655, + 15903086717868967766308055607811986, 3852931539163610130345474643705791, + 7891665130335282812673136653586115, 2253477323906759544145961662035045, + 5397964672218368418730736042426322], + ![-2023863257053246361199153882993692, 1757606386829039488578925472860652, + 880529503124779802951474892184330, -1349506379427090704515022231923213, + -580301400405165713785231868061274, 8785245966101821771174150364799489, + 3852931539163610130345474643705791, 15464067960810640488785041901930959, + 19611174962420910373452752665965132, 4824335920542248578322356221758930, + 10003530319594263330435044068911522], + ![-2759717998130137642630491812277752, -1505760102270942134829196282117622, + 2996270731597575232083006384892363, -6772017357690976525550740975065025, + 439024397020045535011350663407079, 8657381996222916917092806745370445, + 7891665130335282812673136653586115, 19611174962420910373452752665965132, + 38018940173539025035655021637949614, 11782308892605273042945665493542029, + 24465738026011411105107772847663049], + ![-742055450708193745052439707360565, -1635652923185934258419174342445367, + 2215713705260134356085140464559364, -3273653800091152321765599299707253, + 1382780045585072546491489110531518, -143915116217339204911808886279591, + 2253477323906759544145961662035045, 4824335920542248578322356221758930, + 11782308892605273042945665493542029, 5787276391862792320450104924633004, + 8238470717230485147298948375015070], + ![-1509869986851434762325464858479177, -2188026843965878877853653575849368, + 1511758212213681250471767522238444, -5448662461238305343449566554858581, + -108150729967472961816046605203732, 4160014359299380218217894590834719, + 5397964672218368418730736042426322, 10003530319594263330435044068911522, + 24465738026011411105107772847663049, 8238470717230485147298948375015070, + 19163730522590933557431562057229623]] + +/-- Exact integer matrix after 6 fraction-free Schur steps in moment block 3. -/ +def momentBlock3Stage6 : Fin 10 → Fin 10 → ℤ := + ![![116793128793042370409386692146419042172, -14148165658318409599832213660116739858, + 126888249637802480421504543059857645664, 3536670689518734812582173995915077852, + 21062999329658724538072884678025586148, 7337073834903506737715185066240538876, + 812852238459915148188055314735423800, -108754861792982924665981477308718493972, + -63892379117197550470317137568374526406, -97907023173485957822067558624963547140], + ![-14148165658318409599832213660116739858, 223901194200475412726005396877377415178, + -15686976338336078217342010227766965966, 244436649676174943447108223466404573592, + -283337315221785827750023838391112098926, 57873337535435533414448862205849869148, + 3351306246998463987437638620965488564, 55120422918023840906480832589728060298, + 54517925000517615836793271893948833542, 26566579084180321292610560510719252846], + ![126888249637802480421504543059857645664, -15686976338336078217342010227766965966, + 185702632280053858407360774522424014405, 14488242044304210350753341186852335137, + -47626134091749474195994141722815078063, -40995776106487757764098297370283335129, + -86743713957878244575853423661533633290, -257127280984649057646493577354558777366, + -110036914707199107886338828848928083069, -189764554835767846928413614952412492889], + ![3536670689518734812582173995915077852, 244436649676174943447108223466404573592, + 14488242044304210350753341186852335137, 305190447921128477876376083349544450691, + -357982090567113574353694743230384477923, 53055574170608450358823748253230019261, + -38156533490858510609187031549156280144, -17393152753787355985702793332603465030, + 30928729226926479613777805172261667529, -19322819171493999357694379939633219743], + ![21062999329658724538072884678025586148, -283337315221785827750023838391112098926, + -47626134091749474195994141722815078063, -357982090567113574353694743230384477923, + 681899755738100870785883747372507442539, 144307463105421780632549760725060886587, + 310600998768941975820190030192203588538, 330006692595002629983502346366415885166, + 19147667527657098272982428851389670167, 164319252442806992473294793472676197583], + ![7337073834903506737715185066240538876, 57873337535435533414448862205849869148, + -40995776106487757764098297370283335129, 53055574170608450358823748253230019261, + 144307463105421780632549760725060886587, 291776482112982551948233601248927588087, + 187722267606104878167699259162691042870, 330238493105457660365387058182958608722, + 92499348631139910975436476850325755425, 211091682548322141147299930502129930403], + ![812852238459915148188055314735423800, 3351306246998463987437638620965488564, + -86743713957878244575853423661533633290, -38156533490858510609187031549156280144, + 310600998768941975820190030192203588538, 187722267606104878167699259162691042870, + 395076211533019498786899723519512871458, 497183521674785151920539828255220670472, + 121049692320997528331582136076768580960, 251576941578982863057606111681115494992], + ![-108754861792982924665981477308718493972, 55120422918023840906480832589728060298, + -257127280984649057646493577354558777366, -17393152753787355985702793332603465030, + 330006692595002629983502346366415885166, 330238493105457660365387058182958608722, + 497183521674785151920539828255220670472, 995441441322569620388537714473470290308, + 311565514953631968397606187361090998302, 647800907881957562976506477797519250438], + ![-63892379117197550470317137568374526406, 54517925000517615836793271893948833542, + -110036914707199107886338828848928083069, 30928729226926479613777805172261667529, + 19147667527657098272982428851389670167, 92499348631139910975436476850325755425, + 121049692320997528331582136076768580960, 311565514953631968397606187361090998302, + 157512368682744000536437827058173001507, 220917233081710343016794176846099460555], + ![-97907023173485957822067558624963547140, 26566579084180321292610560510719252846, + -189764554835767846928413614952412492889, -19322819171493999357694379939633219743, + 164319252442806992473294793472676197583, 211091682548322141147299930502129930403, + 251576941578982863057606111681115494992, 647800907881957562976506477797519250438, + 220917233081710343016794176846099460555, 517092237466849230879325785408671436005]] + +/-- Exact integer matrix after 7 fraction-free Schur steps in moment block 3. -/ +def momentBlock3Stage7 : Fin 9 → Fin 9 → ℤ := + ![![9064114236208252019014403923233385481674894, -12887159355932130420586861638567680995180, + 9989252277355036606814239894275566548006980, -11454634265596600917873831470031015152551136, + 2397197089729339600428259983531836117311308, 140733272873322111743027459258696245417776, + 1711183987094712866247801142927198535341160, 1908308491604406360156624105492793925914122, + 599940410231296225718673353007443764061824], + ![-12887159355932130420586861638567680995180, 1951901718321237668020827255388995590969458, + 434297704512162004627259879286205190791242, -2876439216749551101450420232010130341667926, + -1997606549337381399240649521118213713235194, -3574729720762369158476399083792195363580260, + -5669356017657567897623225809133995473443868, -1657168940221778799239068318939315272312898, + -3402086531402517055853407715896210248678906], + ![9989252277355036606814239894275566548006980, 434297704512162004627259879286205190791242, + 12445852241342092792946229670188294503462406, -14629872046996110336126904363349191509690694, + 2155334411476254239924994398853489061077130, -1557597034842641194721806545282455644850896, + -575204059216934781523275553114580980710452, 1340663424238298671180332076100357889002550, + -667325329602813484890148305397015024114702], + ![-11454634265596600917873831470031015152551136, -2876439216749551101450420232010130341667926, + -14629872046996110336126904363349191509690694, 27663085428002821751884574284915655411746838, + 5833032141241484044977935358533340544443302, 12664963945278492207921883321840924387295092, + 14262722824813893880648255333463788530718276, 1251192858350438566661999607829194281386314, + 7423707183190467415246991667943862052849262], + ![2397197089729339600428259983531836117311308, -1997606549337381399240649521118213713235194, + 2155334411476254239924994398853489061077130, 5833032141241484044977935358533340544443302, + 11884196159148205315653130648276756730633486, 7656032521635791699011269233284966294927980, + 13750769349429829952400279603235355604017532, 3937246182275209224344540965605675482646982, + 8862383589846809032749555374214389196765382], + ![140733272873322111743027459258696245417776, -3574729720762369158476399083792195363580260, + -1557597034842641194721806545282455644850896, 12664963945278492207921883321840924387295092, + 7656032521635791699011269233284966294927980, 16116873330862969684729526868433408391501172, + 20313442097045328358275821413557697677879648, 4956353537899980291138796601294120469381240, + 10290860319409777896266593693602206690022128], + ![1711183987094712866247801142927198535341160, -5669356017657567897623225809133995473443868, + -575204059216934781523275553114580980710452, 14262722824813893880648255333463788530718276, + 13750769349429829952400279603235355604017532, 20313442097045328358275821413557697677879648, + 36477663257650664476393207210897315247761424, 10283197678215509778612787270354125270911064, + 22707773272054186608308781723543044938937732], + ![1908308491604406360156624105492793925914122, -1657168940221778799239068318939315272312898, + 1340663424238298671180332076100357889002550, 1251192858350438566661999607829194281386314, + 3937246182275209224344540965605675482646982, 4956353537899980291138796601294120469381240, + 10283197678215509778612787270354125270911064, 4999812078583126687827898408776426429627896, + 6827300263263823654386247675026792236358890], + ![599940410231296225718673353007443764061824, -3402086531402517055853407715896210248678906, + -667325329602813484890148305397015024114702, 7423707183190467415246991667943862052849262, + 8862383589846809032749555374214389196765382, 10290860319409777896266593693602206690022128, + 22707773272054186608308781723543044938937732, 6827300263263823654386247675026792236358890, + 17746499038211815681228678785389221600138970]] + +/-- Exact integer matrix after 8 fraction-free Schur steps in moment block 3. -/ +def momentBlock3Stage8 : Fin 8 → Fin 8 → ℤ := + ![![151482319693558654989275257032404079755559095541, + 34807330997783075504088927600833052654107466609, + -224499434360850584307166720211448001163033640467, + -154766304217424891773141569112433939998546753593, + -277413108418882233195425363293067590533529673330, + -439800173348158827785261255675464832394379315286, + -128399470604199949204455537371790521394402093191, + -263963897131795618897588694380876333862233668277], + ![34807330997783075504088927600833052654107466609, + 111525956676198026379802567291872732841333639887, + -155690666558167933509153214660223025531926210123, + -37759149108940861220791575136632569868972449335, + -132919271748007221461317700684542655765567031032, + -190997227940186948799745243508241648375042280354, + -59169992168793474172685255473656022665684016755, + -103102547674301759478184046156684115856876152239], + ![-224499434360850584307166720211448001163033640467, + -155690666558167933509153214660223025531926210123, + 1023456786560088074690652658116758188144124155283, + 687799756948328606250551172713998971962804469883, + 996708705128567910787389942562381737149116100522, + 1274731975034411553876429341805903047182449499282, + 284262706033909216229279571492061556207138132589, + 634981087597745974024726285930960198730351583711], + ![-154766304217424891773141569112433939998546753593, + -37759149108940861220791575136632569868972449335, + 687799756948328606250551172713998971962804469883, + 873109221054574850781845539340491435278768378835, + 591282969244216847101149136102964122759362290646, + 1032051287526674623311315081794327995725694306374, + 266394589573585602301038330249930078881401674281, + 675480507058315144858996347141006092767167122603], + ![-277413108418882233195425363293067590533529673330, + -132919271748007221461317700684542655765567031032, + 996708705128567910787389942562381737149116100522, + 591282969244216847101149136102964122759362290646, + 1250633292016473141647106171239982673430737114986, + 1574429429843158777505372380377559569089958579216, + 382354618155800178368098738068761346559293947604, + 797933088269861269712867706669491035817685051064], + ![-439800173348158827785261255675464832394379315286, + -190997227940186948799745243508241648375042280354, + 1274731975034411553876429341805903047182449499282, + 1032051287526674623311315081794327995725694306374, + 1574429429843158777505372380377559569089958579216, + 2805897569370665822297677459442634578663201378648, + 770101909804685396056561869911379922282873871568, + 1753521330244704585588144067412031600863963095794], + ![-128399470604199949204455537371790521394402093191, + -59169992168793474172685255473656022665684016755, + 284262706033909216229279571492061556207138132589, + 266394589573585602301038330249930078881401674281, + 382354618155800178368098738068761346559293947604, + 770101909804685396056561869911379922282873871568, + 356846562562545304668778109095372221443189540245, + 520052495891652915858114228146450938675382043181], + ![-263963897131795618897588694380876333862233668277, + -103102547674301759478184046156684115856876152239, + 634981087597745974024726285930960198730351583711, + 675480507058315144858996347141006092767167122603, + 797933088269861269712867706669491035817685051064, + 1753521330244704585588144067412031600863963095794, + 520052495891652915858114228146450938675382043181, + 1374193565476639620293626747081504986440213854757]] + +/-- Exact integer matrix after 9 fraction-free Schur steps in moment block 3. -/ +def momentBlock3Stage9 : Fin 7 → Fin 7 → ℤ := + ![![1730192264073342495895793425776371098083210814673019, + -1739845371901611204078986234191356324644711107637310, + -36720799165155602958085510774896208535320113099867, + -1156087561942545080382320725378813191901092462865893, + -1503117964067782814963819303823594575028721097587110, + -495797457932080123876822486084970487609304698374244, + -709427769941451017622205243875961765430047197382749], + ![-1739845371901611204078986234191356324644711107637310, + 11543942339992765446837292188196223544666633513926981, + 7661482755243589482821369866474198461365360838438738, + 9786357329099774379222549559532772761832160790856818, + 10410776382356530192585678417326611687389042859904500, + 1570497151574305352368724767831583150035999915596458, + 4074161197743206567270512233856854322663023661916818], + ![-36720799165155602958085510774896208535320113099867, + 7661482755243589482821369866474198461365360838438738, + 11949099317107740285626129729893489888060673971832169, + 5144983065047880865696875729646046057753212196708634, + 9738544037912887313164037446591707224776483678846644, + 2259697784005702460959068902050273061470731114142257, + 6781758891067660276926035380267592900878195545078123], + ![-1156087561942545080382320725378813191901092462865893, + 9786357329099774379222549559532772761832160790856818, + 5144983065047880865696875729646046057753212196708634, + 12410567266314410044295467357747259746032872842098929, + 12851988183183376406689002084883444692273892109151854, + 2460281022833206465392599936413230838274847426041861, + 5256521345168040560919078359966284057190922012782281], + ![-1503117964067782814963819303823594575028721097587110, + 10410776382356530192585678417326611687389042859904500, + 9738544037912887313164037446591707224776483678846644, + 12851988183183376406689002084883444692273892109151854, + 25553482019066893726060715189285368128188133086863238, + 6640109855156910225040132383418583908950819200916173, + 16497597793288408346817684420277200365867985808879978], + ![-495797457932080123876822486084970487609304698374244, + 1570497151574305352368724767831583150035999915596458, + 2259697784005702460959068902050273061470731114142257, + 2460281022833206465392599936413230838274847426041861, + 6640109855156910225040132383418583908950819200916173, + 4144864025447724298910519591798734482335064443776556, + 4952048553232415488794374703987703955962867971495481], + ![-709427769941451017622205243875961765430047197382749, + 4074161197743206567270512233856854322663023661916818, + 6781758891067660276926035380267592900878195545078123, + 5256521345168040560919078359966284057190922012782281, + 16497597793288408346817684420277200365867985808879978, + 4952048553232415488794374703987703955962867971495481, + 15278833254786058031972090330293196860275458333437832]] + +/-- Exact integer matrix after 10 fraction-free Schur steps in moment block 3. -/ +def momentBlock3Stage10 : Fin 6 → Fin 6 → ℤ := + ![![111869014481148939340736808825730391515375768350704349879, + 87085738511665404535770771566630747257012572798410091372, + 98499060354312752800346060481295497539408424729813372432, + 101645208217655479629560967764489325863999215773801095400, + 12243350336667923282322610175478590010039342699999010782, + 38385915771919762985462510671177133210101718977991453472], + ![87085738511665404535770771566630747257012572798410091372, + 136470651002920961467529820237803461987206796041827785842, + 58484432088687442920006809552257295092362237888471578715, + 110866785634313930096066418276702734617150551040934687826, + 25689503263637291401809099752819005720022564082151158435, + 77287541141156073260121476552303774519816443307902774194], + ![98499060354312752800346060481295497539408424729813372432, + 58484432088687442920006809552257295092362237888471578715, + 132927255582005814343088979250403723233372245067412345322, + 135320574649124356099362460235404736755081400816921499756, + 24316857084352448932720080241787005087155946835732060487, + 54624407410444809379644542416010414865699538120718229402], + ![101645208217655479629560967764489325863999215773801095400, + 110866785634313930096066418276702734617150551040934687826, + 135320574649124356099362460235404736755081400816921499756, + 276950296117015774428421992034521050814121540879470452742, + 70921970697083477630225945184132112033404696374814852267, + 181391877996847949280700951526862927215234206953354503712], + ![12243350336667923282322610175478590010039342699999010782, + 25689503263637291401809099752819005720022564082151158435, + 24316857084352448932720080241787005087155946835732060487, + 70921970697083477630225945184132112033404696374814852267, + 45718844068296403828734933325405380281754357947235408708, + 54239092917351791826769910346599056268296104544731669363], + ![38385915771919762985462510671177133210101718977991453472, + 77287541141156073260121476552303774519816443307902774194, + 54624407410444809379644542416010414865699538120718229402, + 181391877996847949280700951526862927215234206953354503712, + 54239092917351791826769910346599056268296104544731669363, + 171188501689124517654902196807344400496355335844172970227]] + +/-- Exact integer matrix after 11 fraction-free Schur steps in moment block 3. -/ +def momentBlock3Stage11 : Fin 5 → Fin 5 → ℤ := + ![![4440495741836092287513057898722264213706671688021808838746986, + -1176324548242811518894330673122438728642172189730567105397801, + 2052205467291615237636430402776850445884213050471225149135066, + 1044761466238392748840809559337734685375988314812716544758919, + 3065101691763987457930591158770186348901808806094007986803418], + ![-1176324548242811518894330673122438728642172189730567105397801, + 2987168707362317681531002591701264828864822466237136998430706, + 2962804731304390729756056375686980809044778397288701129695196, + 875246274648012992025655357756492495304816695049952453657171, + 1346556702180804253997912165778153124068493575843379523296866], + ![2052205467291615237636430402776850445884213050471225149135066, + 2962804731304390729756056375686980809044778397288701129695196, + 11935325779717519825067446449660500618237364883329060001492222, + 3866329315877563462680873877287286955585171541859885666689047, + 9473158888447804320977131276344166181871564171181566194789792], + ![1044761466238392748840809559337734685375988314812716544758919, + 875246274648012992025655357756492495304816695049952453657171, + 3866329315877563462680873877287286955585171541859885666689047, + 2869405039404802707928011974758384041975132097472443381797832, + 3235306140513921906588049083540114497597342973630092159196367], + ![3065101691763987457930591158770186348901808806094007986803418, + 1346556702180804253997912165778153124068493575843379523296866, + 9473158888447804320977131276344166181871564171181566194789792, + 3235306140513921906588049083540114497597342973630092159196367, + 10216905260691079233007949535817007310431883187614834533558671]] + +/-- Exact integer matrix after 12 fraction-free Schur steps in moment block 3. -/ +def momentBlock3Stage12 : Fin 4 → Fin 4 → ℤ := + ![![106202513157848289971966274047979937573828660669068410859251719285, + 139184040680772946240676581739182279595812121761761574088515464718, + 45727639053160639506059182235273446177160128248399780487716983275, + 85679968751958751991351603849321807841563223928199535919958031986], + ![139184040680772946240676581739182279595812121761761574088515464718, + 436110179825547023074250878812727510697217863853600514288082035384, + 134303084194883061695797915919843893551408675016421153217358610672, + 319796356678147642914654323489995634799622156687908818782659813956], + ![45727639053160639506059182235273446177160128248399780487716983275, + 134303084194883061695797915919843893551408675016421153217358610672, + 104140135602129638537349255180156960892512490760589847600083056729, + 99795846549737578726595230236034884493517157067445758502514543680], + ![85679968751958751991351603849321807841563223928199535919958031986, + 319796356678147642914654323489995634799622156687908818782659813956, + 99795846549737578726595230236034884493517157067445758502514543680, + 321566039450976934075295382349335057368021699161188133137253788158]] + +/-- Exact integer matrix after 13 fraction-free Schur steps in moment block 3. -/ +def momentBlock3Stage13 : Fin 3 → Fin 3 → ℤ := + ![![6067745922401502328625444274038558155606757810069491076784132267901506, + 1778803077709926216723739900447799225314220890345630989561643918510495, + 4962935177262557428887450603830629645589413158884974175319040895960892], + ![1778803077709926216723739900447799225314220890345630989561643918510495, + 2019803118752815443652613167496359705142626603410529417400595263745490, + 1504477745171556409413805309857340656974253879999338968099304531060025], + ![4962935177262557428887450603830629645589413158884974175319040895960892, + 1504477745171556409413805309857340656974253879999338968099304531060025, + 6037628690414478021674404166227914552135933371853295248221183870072869]] + +/-- Exact integer matrix after 14 fraction-free Schur steps in moment block 3. -/ +def momentBlock3Stage14 : Fin 2 → Fin 2 → ℤ := + ![![85605429459877816923429548248790034896558658105883372936446071122404844919, + 2831423917173100249711044183552150263367900667872544338127280979443251446], + ![2831423917173100249711044183552150263367900667872544338127280979443251446, + 113030011593840958453271581116979686568293961304830837110433947447214542930]] + +/-- Exact integer matrix after 15 fraction-free Schur steps in moment block 3. -/ +def momentBlock3Stage15 : Fin 1 → Fin 1 → ℤ := + ![![1593337269982554074603871830129897271732730708218462268566114724191074361019709]] + +/-- Exact integer matrix after 16 fraction-free Schur steps in moment block 3. -/ +def momentBlock3Stage16 : Fin 0 → Fin 0 → ℤ := fun i => Fin.elim0 i + +theorem momentBlock3Stage15_psd : IsPSD (fun i j => (momentBlock3Stage15 i j : ℝ)) := by + apply integer_schur_step momentBlock3Stage15 momentBlock3Stage16 + (85605429459877816923429548248790034896558658105883372936446071122404844919) + · decide + · decide + · decide +kernel + · decide +kernel + · exact quadraticForm_zero _ + +theorem momentBlock3Stage14_psd : IsPSD (fun i j => (momentBlock3Stage14 i j : ℝ)) := by + apply integer_schur_step momentBlock3Stage14 momentBlock3Stage15 + (6067745922401502328625444274038558155606757810069491076784132267901506) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock3Stage15_psd + +theorem momentBlock3Stage13_psd : IsPSD (fun i j => (momentBlock3Stage13 i j : ℝ)) := by + apply integer_schur_step momentBlock3Stage13 momentBlock3Stage14 + (106202513157848289971966274047979937573828660669068410859251719285) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock3Stage14_psd + +theorem momentBlock3Stage12_psd : IsPSD (fun i j => (momentBlock3Stage12 i j : ℝ)) := by + apply integer_schur_step momentBlock3Stage12 momentBlock3Stage13 + (4440495741836092287513057898722264213706671688021808838746986) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock3Stage13_psd + +theorem momentBlock3Stage11_psd : IsPSD (fun i j => (momentBlock3Stage11 i j : ℝ)) := by + apply integer_schur_step momentBlock3Stage11 momentBlock3Stage12 + (111869014481148939340736808825730391515375768350704349879) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock3Stage12_psd + +theorem momentBlock3Stage10_psd : IsPSD (fun i j => (momentBlock3Stage10 i j : ℝ)) := by + apply integer_schur_step momentBlock3Stage10 momentBlock3Stage11 + (1730192264073342495895793425776371098083210814673019) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock3Stage11_psd + +theorem momentBlock3Stage9_psd : IsPSD (fun i j => (momentBlock3Stage9 i j : ℝ)) := by + apply integer_schur_step momentBlock3Stage9 momentBlock3Stage10 + (151482319693558654989275257032404079755559095541) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock3Stage10_psd + +theorem momentBlock3Stage8_psd : IsPSD (fun i j => (momentBlock3Stage8 i j : ℝ)) := by + apply integer_schur_step momentBlock3Stage8 momentBlock3Stage9 + (9064114236208252019014403923233385481674894) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock3Stage9_psd + +theorem momentBlock3Stage7_psd : IsPSD (fun i j => (momentBlock3Stage7 i j : ℝ)) := by + apply integer_schur_step momentBlock3Stage7 momentBlock3Stage8 + (116793128793042370409386692146419042172) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock3Stage8_psd + +theorem momentBlock3Stage6_psd : IsPSD (fun i j => (momentBlock3Stage6 i j : ℝ)) := by + apply integer_schur_step momentBlock3Stage6 momentBlock3Stage7 + (2862932851840624615711760636137958) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock3Stage7_psd + +theorem momentBlock3Stage5_psd : IsPSD (fun i j => (momentBlock3Stage5 i j : ℝ)) := by + apply integer_schur_step momentBlock3Stage5 momentBlock3Stage6 (101693203822505537150860699301) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock3Stage6_psd + +theorem momentBlock3Stage4_psd : IsPSD (fun i j => (momentBlock3Stage4 i j : ℝ)) := by + apply integer_schur_step momentBlock3Stage4 momentBlock3Stage5 (2045259467160214510966274) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock3Stage5_psd + +theorem momentBlock3Stage3_psd : IsPSD (fun i j => (momentBlock3Stage3 i j : ℝ)) := by + apply integer_schur_step momentBlock3Stage3 momentBlock3Stage4 (118659018648966430435) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock3Stage4_psd + +theorem momentBlock3Stage2_psd : IsPSD (fun i j => (momentBlock3Stage2 i j : ℝ)) := by + apply integer_schur_step momentBlock3Stage2 momentBlock3Stage3 (26795335390411) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock3Stage3_psd + +theorem momentBlock3Stage1_psd : IsPSD (fun i j => (momentBlock3Stage1 i j : ℝ)) := by + apply integer_schur_step momentBlock3Stage1 momentBlock3Stage2 (21035273) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock3Stage2_psd + +theorem momentBlock3Stage0_psd : IsPSD (fun i j => (momentBlock3Stage0 i j : ℝ)) := by + apply integer_schur_step momentBlock3Stage0 momentBlock3Stage1 (1) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock3Stage1_psd + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/MomentBlock4.lean b/LeanPool/PersistentSOS/MomentBlock4.lean new file mode 100644 index 0000000000..b6e9b611ce --- /dev/null +++ b/LeanPool/PersistentSOS/MomentBlock4.lean @@ -0,0 +1,336 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.PSD + +/-! +# Exact moment block certificate + +Generated by `scripts/generate_moments.py`; all identities below are checked +by the Lean kernel with integer arithmetic. No external verifier is trusted. +-/ + +@[expose] public section + + +namespace PersistentSOS + + +/-- Exact integer matrix after 0 fraction-free Schur steps in moment block 4. -/ +def momentBlock4Stage0 : Fin 11 → Fin 11 → ℤ := + ![![162381048, 86494935, 7457187, 4162390, 3462345, 5800689, 3349612, 3504174, 30621436, + 10073398, 5911137], + ![86494935, 48848296, 3269121, 1964657, 1400984, 2688879, 1411790, 1503645, 15833900, 4832959, + 2789334], + ![7457187, 3269121, 1189513, 623959, 583593, 883142, 608339, 604133, 604148, 1220643, 651390], + ![4162390, 1964657, 623959, 335978, 301842, 470215, 318997, 317182, 317179, 651390, 344016], + ![3462345, 1400984, 583593, 301842, 293178, 429020, 299603, 297238, 297238, 591740, 318788], + ![5800689, 2688879, 883142, 470215, 429020, 665467, 451763, 449043, 449043, 918271, 486285], + ![3349612, 1411790, 608339, 318997, 299603, 451763, 315841, 310741, 196996, 615867, 326209], + ![3504174, 1503645, 604133, 317182, 297238, 449043, 310741, 310382, 236820, 615337, 326753], + ![30621436, 15833900, 604148, 317179, 297238, 449043, 196996, 236820, 7147227, 1128523, 777071], + ![10073398, 4832959, 1220643, 651390, 591740, 918271, 615867, 615337, 1128523, 1311683, 705659], + ![5911137, 2789334, 651390, 344016, 318788, 486285, 326209, 326753, 777071, 705659, 389138]] + +/-- Exact integer matrix after 1 fraction-free Schur steps in moment block 4. -/ +def momentBlock4Stage1 : Fin 10 → Fin 10 → ℤ := + ![![450663716839983, -114165610829037, -41002589874114, -71982055571343, -65107228045023, + -60476532459300, -58929851438730, -77473840499460, -86516957878098, -58348432449063], + ![-114165610829037, 137544729596655, 70279395732102, 68945088821949, 100148700890973, + 73804041297828, 71968468872846, -130247589073428, 123090076962438, 61692936865101], + ![-41002589874114, 70279395732102, 37230969232844, 34601790085866, 52209274598610, + 37856675676176, 36918606750876, -75954500568448, 63843979755500, 31257221071338], + ![-71982055571343, 68945088821949, 34601790085866, 35618717991519, 49580730657255, + 37052336763804, 36133158617394, -57756157881996, 61209782145210, 31298733893559], + ![-65107228045023, 100148700890973, 52209274598610, 49580730657255, 74411235994695, + 53927691904956, 52589449361178, -104709354032340, 90677158356786, 44674800553287], + ![-60476532459300, 73804041297828, 37856675676176, 37052336763804, 53927691904956, + 40066692030824, 38720825956080, -70581512551024, 66263154067040, 33170143858188], + ![-58929851438730, 71968468872846, 36918606750876, 36133158617394, 52589449361178, + 38720825956080, 38120919018060, -68847760086504, 64620127569924, 32344841991306], + ![-77473840499460, -130247589073428, -75954500568448, -57756157881996, -104709354032340, + -70581512551024, -68847760086504, 222901867851800, -125211164727424, -54825899982324], + ![-86516957878098, 123090076962438, 63843979755500, 61209782145210, 90677158356786, + 66263154067040, 64620127569924, -125211164727424, 111519112917380, 55040412317106], + ![-58348432449063, 61692936865101, 31257221071338, 31298733893559, 44674800553287, + 33170143858188, 32344841991306, -54825899982324, 55040412317106, 28247095623855]] + +/-- Exact integer matrix after 2 fraction-free Schur steps in moment block 4. -/ +def momentBlock4Stage2 : Fin 9 → Fin 9 → ℤ := + ![![301467646494139068177, 166221910203131669376, 140737942788312597462, 232172287255321507596, + 162312435008134086663, 158305513534759209846, -415951933782137283828, 280789974004778874186, + 130196128546582263999], + ![166221910203131669376, 92975348943700200722, 77855887631207961837, 128458715051268809646, + 89794565865802467371, 87581649362299678206, -230362878584656375663, 155342918303117556986, + 72016154130202701939], + ![140737942788312597462, 77855887631207961837, 66945297180599639886, 108742273017031424037, + 76024381141666215759, 74158972804571326269, -194636821617598448226, 131526183145961558517, + 60999505569194539206], + ![232172287255321507596, 128458715051268809646, 108742273017031424037, 180412021015652939847, + 125419776107671465851, 122325835952209313358, -321668164606562255475, 216971292802753240008, + 100593062860996462014], + ![162312435008134086663, 89794565865802467371, 76024381141666215759, 125419776107671465851, + 88675332196361388479, 85516126679543412555, -224742212626590571804, 151681209065715587165, + 70327600363146480873], + ![158305513534759209846, 87581649362299678206, 74158972804571326269, 122325835952209313358, + 85516126679543412555, 84412484290926157710, -219192509261994438984, 147945315629744131599, + 68592870865680480246], + ![-415951933782137283828, -230362878584656375663, -194636821617598448226, + -321668164606562255475, -224742212626590571804, -219192509261994438984, 581666330266147416725, + -388782623702924620039, -179999583535656914739], + ![280789974004778874186, 155342918303117556986, 131526183145961558517, 216971292802753240008, + 151681209065715587165, 147945315629744131599, -388782623702924620039, 263407795751901091457, + 121668065098234498938], + ![130196128546582263999, 72016154130202701939, 60999505569194539206, 100593062860996462014, + 70327600363146480873, 68592870865680480246, -179999583535656914739, 121668065098234498938, + 57429125192725967802]] + +/-- Exact integer matrix after 3 fraction-free Schur steps in moment block 4. -/ +def momentBlock4Stage3 : Fin 8 → Fin 8 → ℤ := + ![![886106827615905712014446, 171528167614799773430739, 297395617506728451966162, + 200312204820271556888213, 197905556980256095676802, -680396155981087154300881, + 349302882677004825163142, 153310116932552493377613], + ![171528167614799773430739, 831379653163385438692566, 237043800298663621959459, + 167249024335820376576939, 170723064699066630779367, -302853479742210322436502, + 295310191126469178521319, 146100269762559952437828], + ![297395617506728451966162, 237043800298663621959459, 1074895509381609909128841, + 278601175312592252669913, 273216375861698075893050, -887652292848856375305789, + 484118172447509322358320, 216615969393407174389878], + ![200312204820271556888213, 167249024335820376576939, 278601175312592252669913, + 859659046372334890815458, 189480686254209732993039, -528852625576286422095568, + 335666489641388929834889, 153208499930871574458048], + ![197905556980256095676802, 170723064699066630779367, 273216375861698075893050, + 189480686254209732993039, 858727569902357783945238, -514719522635114957526960, + 333119967025495950033549, 150370118153814256626036], + ![-680396155981087154300881, -302853479742210322436502, -887652292848856375305789, + -528852625576286422095568, -514719522635114957526960, 5186946110304578660938427, + -910323765334336083392065, -241242803577322334119257], + ![349302882677004825163142, 295310191126469178521319, 484118172447509322358320, + 335666489641388929834889, 333119967025495950033549, -910323765334336083392065, + 1255745095030691045737571, 268975921542438195523164], + ![153310116932552493377613, 146100269762559952437828, 216615969393407174389878, + 153208499930871574458048, 150370118153814256626036, -241242803577322334119257, + 268975921542438195523164, 803240442981406599945591]] + +/-- Exact integer matrix after 4 fraction-free Schur steps in moment block 4. -/ +def momentBlock4Stage4 : Fin 7 → Fin 7 → ℤ := + ![![2346086828715395401650741595, 527533904253164843175290548, 377623662957745582018772731, + 389204271424284919437039452, -503050433579999206871716129, 669262839843382241884341968, + 342204028586809732604440753], + ![527533904253164843175290548, 2866072384790090226544849146, 621288665492953031333376196, + 607835211746114803037228488, -1937879334910464642461282436, 1078388594161744148288705908, + 485462152429667855192965866], + ![377623662957745582018772731, 621288665492953031333376196, 2393705524968747746081089587, + 425442772442903081504506184, -1102367939096235654614443275, 754531175531677494695725024, + 348459317326993426237871807], + ![389204271424284919437039452, 607835211746114803037228488, 425442772442903081504506184, + 2394146641148308792466498672, -1066258044057679985373884574, 749834678030268752135877610, + 341340324508954706656154590], + ![-503050433579999206871716129, -1937879334910464642461282436, -1102367939096235654614443275, + -1066258044057679985373884574, 13710424590531202892706739753, -1887365930553644700277870344, + -363074719300853474331593297], + ![669262839843382241884341968, 1078388594161744148288705908, 754531175531677494695725024, + 749834678030268752135877610, -1887365930553644700277870344, 3286295594657369124606046726, + 612967052696774031417746074], + ![342204028586809732604440753, 485462152429667855192965866, 348459317326993426237871807, + 341340324508954706656154590, -363074719300853474331593297, 612967052696774031417746074, + 2283007336916854296136585321]] + +/-- Exact integer matrix after 5 fraction-free Schur steps in moment block 4. -/ +def momentBlock4Stage5 : Fin 6 → Fin 6 → ℤ := + ![![7274250069042875989425952632721, 1420131106618857681271704119592, + 1377616893817306881960321986284, -4831310278387975520212698046468, + 2456740395492426831538448010226, 1081598859792268654731135672331], + ![1420131106618857681271704119592, 6176728586837242224744080109724, + 960553418233405247441952865758, -2704286977878420578831728391281, + 1712509282644435956538713923432, 776759025570355013254422210107], + ![1377616893817306881960321986284, 960553418233405247441952865758, + 6167874759097769380584711552416, -2602106770679170199090198499857, + 1691328019557818763424629473409, 753438241314064648908109763089], + ![-4831310278387975520212698046468, -2704286977878420578831728391281, + -2602106770679170199090198499857, 36014604350897634611060879883039, + -4617108526162142938943977697948, -767016922402567728966876654443], + ![2456740395492426831538448010226, 1712509282644435956538713923432, + 1691328019557818763424629473409, -4617108526162142938943977697948, + 8195425015101755722309954661751, 1364451159961743236261130886081], + ![1081598859792268654731135672331, 776759025570355013254422210107, + 753438241314064648908109763089, -767016922402567728966876654443, + 1364451159961743236261130886081, 5912413359815714063274479174991]] + +/-- Exact integer matrix after 6 fraction-free Schur steps in moment block 4. -/ +def momentBlock4Stage6 : Fin 5 → Fin 5 → ℤ := + ![![18291861777669679652713073591443732, 2144383193074229817466141101677562, + -5460397103244522935103362363162611, 3822674933091700570485120160319944, + 1753697757198164339454250060921481], + ![2144383193074229817466141101677562, 18315108614122175856555223169656624, + -5231128084125236348252753140876963, 3801519952853699270220994915265339, + 1700989608939627756772099350828807], + ![-5460397103244522935103362363162611, -5231128084125236348252753140876963, + 101717326170181956984857170530179501, -9256574234735785864629209937898492, + -150861088347112467547705315748221], + ![3822674933091700570485120160319944, 3801519952853699270220994915265339, + -9256574234735785864629209937898492, 22838028394896709791491841325412441, + 3097989062053094577789041462836401], + ![1753697757198164339454250060921481, 1700989608939627756772099350828807, + -150861088347112467547705315748221, 3097989062053094577789041462836401, + 17833320014099524905954597322277810]] + +/-- Exact integer matrix after 7 fraction-free Schur steps in moment block 4. -/ +def momentBlock4Stage7 : Fin 4 → Fin 4 → ℤ := + ![![45423109296167824139980454774235873244, -11544542362900320930730137549419872654, + 8432429056101463657713029984564110220, 3760341829890853752881814045833145762], + ![-11544542362900320930730137549419872654, 251680010557415297051367129707946526891, + -20407141890402219804025513434379043160, 937052742619550018215881104158270039], + ![8432429056101463657713029984564110220, -20407141890402219804025513434379043160, + 55419763027599888251155182389572298356, 6868635361847179347392441377103005708], + ![3760341829890853752881814045833145762, 937052742619550018215881104158270039, + 6868635361847179347392441377103005708, 44420959665162199676597844919062816679]] + +/-- Exact integer matrix after 8 fraction-free Schur steps in moment block 4. -/ +def momentBlock4Stage8 : Fin 3 → Fin 3 → ℤ := + ![![617696126625814500855683467684510473534684, -45353901758791832536527657931219662598630, + 4700192672754586381886367456171389178952], + ![-45353901758791832536527657931219662598630, 133733357660209025797556385252635052211752, + 15322986935732779436908292662371406642966], + ![4700192672754586381886367456171389178952, 15322986935732779436908292662371406642966, + 109534937426634636846251044113711090395776]] + +/-- Exact integer matrix after 9 fraction-free Schur steps in moment block 4. -/ +def momentBlock4Stage9 : Fin 2 → Fin 2 → ℤ := + ![![1773317632164501301514496095551643881856804297, + 213066034122946037123107539976065143447902666], + ![213066034122946037123107539976065143447902666, 1489048544133425418592595771616076190951643920]] + +/-- Exact integer matrix after 10 fraction-free Schur steps in moment block 4. -/ +def momentBlock4Stage10 : Fin 1 → Fin 1 → ℤ := + ![![4201352075396594638551035310421959745045825335501]] + +/-- Exact integer matrix after 11 fraction-free Schur steps in moment block 4. -/ +def momentBlock4Stage11 : Fin 0 → Fin 0 → ℤ := fun i => Fin.elim0 i + +theorem momentBlock4Stage10_psd : IsPSD (fun i j => (momentBlock4Stage10 i j : ℝ)) := by + apply integer_schur_step momentBlock4Stage10 momentBlock4Stage11 + (1773317632164501301514496095551643881856804297) + · decide + · decide + · decide +kernel + · decide +kernel + · exact quadraticForm_zero _ + +theorem momentBlock4Stage9_psd : IsPSD (fun i j => (momentBlock4Stage9 i j : ℝ)) := by + apply integer_schur_step momentBlock4Stage9 momentBlock4Stage10 + (617696126625814500855683467684510473534684) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock4Stage10_psd + +theorem momentBlock4Stage8_psd : IsPSD (fun i j => (momentBlock4Stage8 i j : ℝ)) := by + apply integer_schur_step momentBlock4Stage8 momentBlock4Stage9 + (45423109296167824139980454774235873244) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock4Stage9_psd + +theorem momentBlock4Stage7_psd : IsPSD (fun i j => (momentBlock4Stage7 i j : ℝ)) := by + apply integer_schur_step momentBlock4Stage7 momentBlock4Stage8 + (18291861777669679652713073591443732) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock4Stage8_psd + +theorem momentBlock4Stage6_psd : IsPSD (fun i j => (momentBlock4Stage6 i j : ℝ)) := by + apply integer_schur_step momentBlock4Stage6 momentBlock4Stage7 (7274250069042875989425952632721) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock4Stage7_psd + +theorem momentBlock4Stage5_psd : IsPSD (fun i j => (momentBlock4Stage5 i j : ℝ)) := by + apply integer_schur_step momentBlock4Stage5 momentBlock4Stage6 (2346086828715395401650741595) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock4Stage6_psd + +theorem momentBlock4Stage4_psd : IsPSD (fun i j => (momentBlock4Stage4 i j : ℝ)) := by + apply integer_schur_step momentBlock4Stage4 momentBlock4Stage5 (886106827615905712014446) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock4Stage5_psd + +theorem momentBlock4Stage3_psd : IsPSD (fun i j => (momentBlock4Stage3 i j : ℝ)) := by + apply integer_schur_step momentBlock4Stage3 momentBlock4Stage4 (301467646494139068177) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock4Stage4_psd + +theorem momentBlock4Stage2_psd : IsPSD (fun i j => (momentBlock4Stage2 i j : ℝ)) := by + apply integer_schur_step momentBlock4Stage2 momentBlock4Stage3 (450663716839983) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock4Stage3_psd + +theorem momentBlock4Stage1_psd : IsPSD (fun i j => (momentBlock4Stage1 i j : ℝ)) := by + apply integer_schur_step momentBlock4Stage1 momentBlock4Stage2 (162381048) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock4Stage2_psd + +theorem momentBlock4Stage0_psd : IsPSD (fun i j => (momentBlock4Stage0 i j : ℝ)) := by + apply integer_schur_step momentBlock4Stage0 momentBlock4Stage1 (1) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock4Stage1_psd + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/MomentBlock5.lean b/LeanPool/PersistentSOS/MomentBlock5.lean new file mode 100644 index 0000000000..5bceefb7ad --- /dev/null +++ b/LeanPool/PersistentSOS/MomentBlock5.lean @@ -0,0 +1,873 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.PSD + +/-! +# Exact moment block certificate + +Generated by `scripts/generate_moments.py`; all identities below are checked +by the Lean kernel with integer arithmetic. No external verifier is trusted. +-/ + +@[expose] public section + + +namespace PersistentSOS + + +/-- Exact integer matrix after 0 fraction-free Schur steps in moment block 5. -/ +def momentBlock5Stage0 : Fin 16 → Fin 16 → ℤ := + ![![21035497, 11656813, -2998344, -1514904, 7457187, 10073399, 1370265, 455102, 2353878, + 1717831, 1066067, 270288, 2833858, 3953065, 1418815, 2037568], + ![11656813, 7733193, -1514904, -1319551, 4162390, 5911137, 455102, 126242, 1717831, 1403322, + 270288, 19621, 1418658, 2037393, 752865, 1065899], + ![-2998344, -1514904, 4872616, 2735057, 3269121, 4832959, -166195, 37777, -416222, -377821, + -18453, 127480, -906164, -1199593, -442523, -607709], + ![-1514904, -1319551, 2735057, 1803902, 1964657, 2789333, 37777, 78463, -377821, -364320, + 127480, 131319, -442446, -607622, -233311, -315518], + ![7457187, 4162390, 3269121, 1964657, 6925775, 9655915, 608339, 318997, 604133, 317182, 604148, + 317179, 583593, 883143, 301842, 470216], + ![10073399, 5911137, 4832959, 2789333, 9655915, 13722116, 615867, 326209, 1128524, 777072, + 615337, 326753, 591740, 918271, 318788, 486285], + ![1370265, 455102, -166195, 37777, 608339, 615867, 320439, 127655, -128440, -210027, 309875, + 125128, 312527, 399703, 124519, 197239], + ![455102, 126242, 37777, 78463, 318997, 326209, 127655, 149877, -210027, -120319, 125128, + 156420, 124516, 197247, 78020, 105630], + ![2353878, 1717831, -416222, -377821, 604133, 1128524, -128440, -210027, 947241, 739234, + -195332, -262559, 231540, 278253, 79784, 130616], + ![1717831, 1403322, -377821, -364320, 317182, 777072, -210027, -120319, 739234, 807044, -262559, + -143279, 82775, 129317, 54692, 68507], + ![1066067, 270288, -18453, 127480, 604148, 615337, 309875, 125128, -195332, -262559, 323500, + 131225, 231538, 278254, 82777, 129312], + ![270288, 19621, 127480, 131319, 317179, 326753, 125128, 156420, -262559, -143279, 131225, + 179660, 79776, 130613, 54684, 68496], + ![2833858, 1418658, -906164, -442446, 583593, 591740, 312527, 124516, 231540, 82775, 231538, + 79776, 673877, 920821, 305316, 478132], + ![3953065, 2037393, -1199593, -607622, 883143, 918271, 399703, 197247, 278253, 129317, 278254, + 130613, 920821, 1395420, 478132, 775756], + ![1418815, 752865, -442523, -233311, 301842, 318788, 124519, 78020, 79784, 54692, 82777, 54684, + 305316, 478132, 185909, 270824], + ![2037568, 1065899, -607709, -315518, 470216, 486285, 197239, 105630, 130616, 68507, 129312, + 68496, 478132, 775756, 270824, 469789]] + +/-- Exact integer matrix after 1 fraction-free Schur steps in moment block 5. -/ +def momentBlock5Stage1 : Fin 15 → Fin 15 → ℤ := + ![![26790268834952, 3084376770384, -10098458460895, 630907992799, 6919976212702, -6399626109751, + -2649475697652, 8696713176193, 9495140988431, -6741301251335, -2737959185507, -3191576671528, + -3222565142524, -701971687690, -1329833933981], + ![3084376770384, 93507832507816, 52991079999353, 91126796886465, 131867209996879, 612531417245, + 2159210321257, -1697700654302, -2797004240173, 2808267566907, 3492021560632, -10564728972356, + -13381386228361, -5054595796571, -6674131058981], + ![-10098458460895, 52991079999353, 35651040980078, 52624458844577, 73935238392197, + 2870477899729, 2339944041319, -4381753314325, -5061303213816, 4296594320128, 3171820802895, + -5014048686030, -6793116777374, -2758444321807, -3550358028974], + ![630907992799, 91126796886465, 52624458844577, 90077481282206, 127997750946142, 2578390864928, + 3316479718435, -4845070512085, -6138105991943, 4758692468027, 4656429743107, -8856440236725, + -10901393001084, -4230972287931, -5303298343864], + ![6919976212702, 131867209996879, 73935238392197, 127997750946142, 187178162538451, + -848157649836, 2277544409175, 27510925106, -958301352785, 2205001365756, 4150692882329, + -16099037348562, -20504514152248, -7586425584549, -10295988794987], + ![-6399626109751, 612531417245, 2870477899729, 2578390864928, -848157649836, 4862967452958, + 2061676027505, -5927235872350, -6771906023634, 5057580335120, 2261763482296, 2691024338549, + 2991204645166, 675166514968, 1357012277263], + ![-2649475697652, 2159210321257, 2339944041319, 3316479718435, 2277544409175, 2061676027505, + 2945619353465, -5489276913975, -3312758287305, 2146960444782, 3167363831364, 1329561500936, + 2350140889129, 995483931810, 1294678276174], + ![8696713176193, -1697700654302, -4381753314325, -4845070512085, 27510925106, -5927235872350, + -5489276913975, 14384943574893, 11506589990680, -6618297357830, -6159284033687, + -1799997025944, -3451842589329, -1661421321922, -2048614012552], + ![9495140988431, -2797004240173, -5061303213816, -6138105991943, -958301352785, -6771906023634, + -3312758287305, 11506589990680, 14025628296307, -7354381997500, -3478254079991, + -3126875857823, -4070450236466, -1286810988341, -2059118682029], + ![-6741301251335, 2808267566907, 4296594320128, 4758692468027, 2205001365756, 5057580335120, + 2146960444782, -6618297357830, -7354381997500, 5668484431011, 2472237976529, 1849434407900, + 1638979036883, 228703484564, 547958183008], + ![-2737959185507, 3492021560632, 3171820802895, 4656429743107, 4150692882329, 2261763482296, + 3167363831364, -6159284033687, -3478254079991, 2472237976529, 3706181788076, 912169997568, + 1679043336941, 766816449228, 890117222928], + ![-3191576671528, -10564728972356, -5014048686030, -8856440236725, -16099037348562, + 2691024338549, 1329561500936, -1799997025944, -3126875857823, 1849434407900, 912169997568, + 6144586447705, 8167502508267, 2401753563782, 4283565874260], + ![-3222565142524, -13381386228361, -6793116777374, -10901393001084, -20504514152248, + 2991204645166, 2350140889129, -3451842589329, -4070450236466, 1638979036883, 1679043336941, + 8167502508267, 13726630329515, 4449076333629, 8263774264812], + ![-701971687690, -5054595796571, -2758444321807, -4230972287931, -7586425584549, 675166514968, + 995483931810, -1661421321922, -1286810988341, 228703484564, 766816449228, 2401753563782, + 4449076333629, 1897652207548, 2805985397608], + ![-1329833933981, -6674131058981, -3550358028974, -5303298343864, -10295988794987, + 1357012277263, 1294678276174, -2048614012552, -2059118682029, 547958183008, 890117222928, + 4283565874260, 8263774264812, 2805985397608, 5730561745509]] + +/-- Exact integer matrix after 2 fraction-free Schur steps in moment block 5. -/ +def momentBlock5Stage2 : Fin 14 → Fin 14 → ℤ := + ![![118636920772367302208, 68968787841361068088, 115964240288652338712, 166928035617574920920, + 1718463768643384792, 3138400118295891656, -3437322970280504128, -4954439052377648600, + 4564995828702946632, 4848808378371911216, -12986995476801093280, -16569674078794779848, + -6334475247966670456, -8305012066763362264], + ![68968787841361068088, 40556308644181710423, 67324037929696297697, 97484076807768057722, + 583514436761287879, 1708165471431006284, -1405479152838910945, -1887637211582176471, + 2235752559208415823, 2725144307423875075, -7917935891529853960, -10198587888005642324, + -3850077650949640062, -5160054872900767419], + ![115964240288652338712, 67324037929696297697, 114701444640470242263, 162807101244805542238, + 3475713442690353665, 4303247916458304644, -6431393914628983791, -8102117577917802465, + 6262737284630722377, 6012427705558695181, -11183611379890422224, -13787081287823658236, + -5367403749881507666, -6714259496033220597], + ![166928035617574920920, 97484076807768057722, 162807101244805542238, 236108860354147194484, + 1025071525342901890, 3772211125281425232, -2825891074903514142, -4344052372149923706, + 5025896163610300706, 6186913035806716626, -19453398410502040544, -25053906372578366584, + -9430951573220281244, -12675235985599141346], + ![1718463768643384792, 583514436761287879, 3475713442690353665, 1025071525342901890, + 4246393182712055495, 1819648053744123964, -4902975658575952081, -5735820299984151871, + 4390299374932328615, 2047554980078857155, 2456246604144594960, 2829120916795277164, + 646313995029614218, 1323680812232223285], + ![3138400118295891656, 1708165471431006284, 4303247916458304644, 3772211125281425232, + 1819648053744123964, 3417756799010562808, -5895628423949890212, -3023106124256953884, + 1885229222668463652, 3689020146145407012, 1291307983560893728, 2587188607455352280, + 1179407609294446920, 1481372956554250988], + ![-3437322970280504128, -1405479152838910945, -6431393914628983791, -2825891074903514142, + -4902975658575952081, -5895628423949890212, 14724809472199777871, 10728917956157010441, + -5641834943512233665, -6712350526770292109, -972935288148698072, -3063871807161579308, + -1825727123859429142, -2059268475544774443], + ![-4954439052377648600, -1887637211582176471, -8102117577917802465, -4344052372149923706, + -5735820299984151871, -3023106124256953884, 10728917956157010441, 13576700861738227999, + -6323419170987219295, -3193937057549382195, -2541673932070805024, -3729398251990407404, + -1321988835011707586, -2022171492324593901], + ![4564995828702946632, 2235752559208415823, 6262737284630722377, 5025896163610300706, + 4390299374932328615, 1885229222668463652, -5641834943512233665, -6323419170987219295, + 5058833610267148751, 2271137797781871579, 1332579171804116360, 1054617658196556308, + 66308165589504074, 271690080338120173], + ![4848808378371911216, 2725144307423875075, 6012427705558695181, 6186913035806716626, + 2047554980078857155, 3689020146145407012, -6712350526770292109, -3193937057549382195, + 2271137797781871579, 4363727938173126399, 746303868834869320, 1718940633982454612, + 885229809003550258, 960540588231399137], + ![-12986995476801093280, -7917935891529853960, -11183611379890422224, -19453398410502040544, + 2456246604144594960, 1291307983560893728, -972935288148698072, -2541673932070805024, + 1332579171804116360, 746303868834869320, 7341350725555851208, 9912983000841805496, + 2952306151193825952, 5253672607923241816], + ![-16569674078794779848, -10198587888005642324, -13787081287823658236, -25053906372578366584, + 2829120916795277164, 2587188607455352280, -3063871807161579308, -3729398251990407404, + 1054617658196556308, 1718940633982454612, 9912983000841805496, 16988198121865239432, + 5558689749681453584, 10320804764664156340], + ![-6334475247966670456, -3850077650949640062, -5367403749881507666, -9430951573220281244, + 646313995029614218, 1179407609294446920, -1825727123859429142, -1321988835011707586, + 66308165589504074, 885229809003550258, 2952306151193825952, 5558689749681453584, + 2393375756471677468, 3529253308247669358], + ![-8305012066763362264, -5160054872900767419, -6714259496033220597, -12675235985599141346, + 1323680812232223285, 1481372956554250988, -2059268475544774443, -2022171492324593901, + 271690080338120173, 960540588231399137, 5253672607923241816, 10320804764664156340, + 3529253308247669358, 7214226098176359431]] + +/-- Exact integer matrix after 3 fraction-free Schur steps in moment block 5. -/ +def momentBlock5Stage3 : Fin 13 → Fin 13 → ℤ := + ![![2044842456426383762347120, -403001992177180605199840, 1955427317642786796504808, + -1839996730631474301861232, -515118392608053160997528, 2625068087603435059244152, + 4395558338157005114904816, -1851397232280680918231616, -414841191281096369117304, + -1629778244365219166935520, -2506086352924550061634984, -742070857977776684578984, + -1470175836140347104838960], + ![-403001992177180605199840, 5976840902557179926120880, -1595716040543186312130968, + 7953171214751817382457408, 5471460461698703236794440, -13601738216042215692351096, + -14433319904201960220413760, 7973626363158679408205616, 5636655995545279557071128, + 6690408669604482886021984, 10669276882334837720573944, 3650592568975361662694872, + 6215889211870765498795296], + ![1955427317642786796504808, -1595716040543186312130968, 5459410849797712407720536, + -6168226711704645247256760, -2850417619655059153841432, 8903626802588287938328912, + 11633693689852587996553976, -6187655015210429046178696, -2814669255381112981350656, + -5225690093883678432326176, -7703362808214043782870056, -2294024937471303666969016, + -4382621840522140088323144], + ![-1839996730631474301861232, 7953171214751817382457408, -6168226711704645247256760, + 18694321320441055593936048, 7856741430538672472145480, -21491647706744616315760136, + -25082467019204026667689584, 19148998553754352955537888, 8756280792647565596170184, + 11710192865045911059002720, 13591225264185711364041464, 3268435601331525986195448, + 6394459086579858906100784], + ![-515118392608053160997528, 5471460461698703236794440, -2850417619655059153841432, + 7856741430538672472145480, 14767398928254352691745464, -25705285440079614773437664, + -12807000622338979121630536, 7813695628374742111068312, 15768281110584079693644400, + 7239762776329280442760352, 13398087161655350067217864, 5964904867295249772003448, + 7532958260969041519453944], + ![2625068087603435059244152, -13601738216042215692351096, 8903626802588287938328912, + -21491647706744616315760136, -25705285440079614773437664, 64765713111316727316219192, + 46875818608428150421573064, -24398357635374957460245512, -29102570117032409470486312, + -5974801729322088058076608, -15693893956580528245439904, -8897718902648307026752752, + -10184753329977934728062168], + ![4395558338157005114904816, -14433319904201960220413760, 11633693689852587996553976, + -25082467019204026667689584, -12807000622338979121630536, 46875818608428150421573064, + 59206256119799262222333296, -27158144252810963167346080, -13247188158041047530481480, + -13657184581673352591292896, -19579414022408087536045816, -7025702406558959680444344, + -10490782192913972965099504], + ![-1851397232280680918231616, 7973626363158679408205616, -6187655015210429046178696, + 19148998553754352955537888, 7813695628374742111068312, -24398357635374957460245512, + -27158144252810963167346080, 21624465916144855467494192, 9231187879476614186409960, + 8114090647855280876925920, 7493656963656579742025000, 1373015325012464568979592, + 2618294740152044275258816], + ![-414841191281096369117304, 5636655995545279557071128, -2814669255381112981350656, + 8756280792647565596170184, 15768281110584079693644400, -29102570117032409470486312, + -13247188158041047530481480, 9231187879476614186409960, 18446560056101307483689368, + 5655435799106131159531520, 10611054336843896335070032, 5066600720106790577754080, + 5756754092562278736092760], + ![-1629778244365219166935520, 6690408669604482886021984, -5225690093883678432326176, + 11710192865045911059002720, 7239762776329280442760352, -5974801729322088058076608, + -13657184581673352591292896, 8114090647855280876925920, 5655435799106131159531520, + 26214488447358537640375232, 35865840036727596385298464, 10003136258643038317502368, + 19239164413754011482689504], + ![-2506086352924550061634984, 10669276882334837720573944, -7703362808214043782870056, + 13591225264185711364041464, 13398087161655350067217864, -15693893956580528245439904, + -19579414022408087536045816, 7493656963656579742025000, 10611054336843896335070032, + 35865840036727596385298464, 64981558277619310521470776, 20698024664414378966341192, + 40567609108419496575702024], + ![-742070857977776684578984, 3650592568975361662694872, -2294024937471303666969016, + 3268435601331525986195448, 5964904867295249772003448, -8897718902648307026752752, + -7025702406558959680444344, 1373015325012464568979592, 5066600720106790577754080, + 10003136258643038317502368, 20698024664414378966341192, 9100959562370494335913304, + 13665105565032409720836040], + ![-1470175836140347104838960, 6215889211870765498795296, -4382621840522140088323144, + 6394459086579858906100784, 7532958260969041519453944, -10184753329977934728062168, + -10490782192913972965099504, 2618294740152044275258816, 5756754092562278736092760, + 19239164413754011482689504, 40567609108419496575702024, 13665105565032409720836040, + 29372618448217153934963376]] + +/-- Exact integer matrix after 4 fraction-free Schur steps in moment block 5. -/ +def momentBlock5Stage4 : Fin 12 → Fin 12 → ℤ := + ![![101648688693585509423120042500, -20861522597036660546788504430, + 130831613919669094321102198760, 92557028965549989882990664410, + -225524262955139856147363575230, -233843278969775694000428319720, + 131145454929668375670509919060, 95744997354007261069041833750, 109780561855224135648339627160, + 175384125111383512298586817590, 60401353941098410913385960510, + 102143837644876504442990346640], + ![-20861522597036660546788504430, 61868927905174918006141359257, -75988755699452843977421292268, + -40639780256446560280643395227, 110196591144005718121619286753, + 128070383422194134558879790124, -76135716421222815328430040374, + -41676430609436681008895839861, -63207979594789661505792908620, + -91469784801926187139052467181, -27308985599367121235893575081, + -51307376983538611041733873200], + ![130831613919669094321102198760, -75988755699452843977421292268, + 293680531613186283566517550192, 127430669892807387893647371188, + -329719590965191531923560070332, -364152071884662536644890921696, + 301340595773407511397988556056, 144490502433040134421112256844, + 176561501813521080223688802720, 195392156236743139179442541324, 44826078563907447852548947084, + 87414125608221485559413889920], + ![92557028965549989882990664410, -40639780256446560280643395227, 127430669892807387893647371188, + 252296310003761499825632323937, -431661896105017265421931905603, + -201657844038074966986516322084, 126639225784945225540096516674, + 269983055389688839936127874911, 117709103195142058011899947460, + 220049931498889868960493693991, 99589877221247442830639708251, + 123455650783924859106719448800], + ![-225524262955139856147363575230, 110196591144005718121619286753, + -329719590965191531923560070332, -431661896105017265421931905603, + 1058226196439169848935398903817, 710698015429267363974364314556, + -379567789477225595121328712326, -492436791290907994851825596429, + -66920561777959514612644757740, -215050198480631904452726588389, + -136942587043686677743157866609, -143015380341050208901979497280], + ![-233843278969775694000428319720, 128070383422194134558879790124, + -364152071884662536644890921696, -201657844038074966986516322084, + 710698015429267363974364314556, 857629584730228318880966987008, + -399506338800284640193884032168, -212960298969334148931673804892, + -175013017712502281403657614400, -244621725777214458052051188572, + -93601879984461906773045952492, -126349816536877870244893798640], + ![131145454929668375670509919060, -76135716421222815328430040374, + 301340595773407511397988556056, 126639225784945225540096516674, + -379567789477225595121328712326, -399506338800284640193884032168, + 343830183939523213184239413748, 152636202523947570837088044942, + 114421969424036955149807934760, 90052797273946956105396743182, 12085041384749881464549035062, + 22186354441506043553695668320], + ![95744997354007261069041833750, -41676430609436681008895839861, 144490502433040134421112256844, + 269983055389688839936127874911, -492436791290907994851825596429, + -212960298969334148931673804892, 152636202523947570837088044942, + 316496885786478981758166353393, 91778984251296494109427624540, 174130501978915847109296939513, + 84733813369824010191994599733, 94083406849685554850085757920], + ![109780561855224135648339627160, -63207979594789661505792908620, + 176561501813521080223688802720, 117709103195142058011899947460, + -66920561777959514612644757740, -175013017712502281403657614400, + 114421969424036955149807934760, 91778984251296494109427624540, 429447439238648094599510295680, + 583761167898852680870651411500, 162221226357591488673454042060, + 311412327509464490634687752160], + ![175384125111383512298586817590, -91469784801926187139052467181, + 195392156236743139179442541324, 220049931498889868960493693991, + -215050198480631904452726588389, -244621725777214458052051188572, + 90052797273946956105396743182, 174130501978915847109296939513, 583761167898852680870651411500, + 1067092601681830374616657914033, 341078525002469364457245973773, + 668172954466283833159588047280], + ![60401353941098410913385960510, -27308985599367121235893575081, 44826078563907447852548947084, + 99589877221247442830639708251, -136942587043686677743157866609, + -93601879984461906773045952492, 12085041384749881464549035062, 84733813369824010191994599733, + 162221226357591488673454042060, 341078525002469364457245973773, + 152223770066875741261282926953, 226337747237605137691720955520], + ![102143837644876504442990346640, -51307376983538611041733873200, 87414125608221485559413889920, + 123455650783924859106719448800, -143015380341050208901979497280, + -126349816536877870244893798640, 22186354441506043553695668320, 94083406849685554850085757920, + 311412327509464490634687752160, 668172954466283833159588047280, + 226337747237605137691720955520, 488051779270745368339675703440]] + +/-- Exact integer matrix after 5 fraction-free Schur steps in moment block 5. -/ +def momentBlock5Stage5 : Fin 11 → Fin 11 → ℤ := + ![![2862661741483201582491309929483230, -2442638398091412416238544285491360, + -1075926320714608506861293390938260, 3177046456589235716869936075448530, + 3980678150229254687302693091363920, -2446741972579037363500043969828660, + -1094934276226582539883827959990250, -2022071947855214938021244595613010, + -2757671513179788833283309819533240, -741308143730053003367607869991360, + -1508405502738816320318236884356290], + ![-2442638398091412416238544285491360, 6228024898674438391100930962376520, + 412635708010080036133482683131820, -1960963175979847622344934640581460, + -3140333368990886417676140766452940, 6588725132095764319293895057790620, + 1056706136771485799035786356043500, 1752935556146374509979529990772820, + -1508395755399548446427422160544820, -1636260291464019261947097825044480, + -2189954475750574414620652905897720], + ![-1075926320714608506861293390938260, 412635708010080036133482683131820, + 8352127768821044436374010612952370, -11249771290200480522360324943642860, + 560230804167116462974504330978960, 359087598791487815939270751022920, + 9087033085630345381832218778136500, 882226079533056673143924178214870, + 3000110554563088039826100471958630, 2216606245711271776271082674016070, + 1513551748069025757343309633021730], + ![3177046456589235716869936075448530, -1960963175979847622344934640581460, + -11249771290200480522360324943642860, 27731286510396576477103512999988830, + 9538235147431749777403953562649620, -4404293337831114458077383490256260, + -13919279722426884411092424919787250, 8781015325362951987759220591791390, + 8652893926042300937464079024090360, -145763586481911905612336706567460, + 4156108847837812648900796307593810], + ![3980678150229254687302693091363920, -3140333368990886417676140766452940, + 560230804167116462974504330978960, 9538235147431749777403953562649620, + 15890829854004197082333515357554180, -4861896440893642385847721703551640, + 362956564137404096819958442747000, 3854381432572983051070784732141460, + 7896413336553239388209914869864040, 2254424190791677095114098123233560, + 5400101469471385118566956290796340], + ![-2446741972579037363500043969828660, 6588725132095764319293895057790620, + 359087598791487815939270751022920, -4404293337831114458077383490256260, + -4861896440893642385847721703551640, 8680745514761471217278553283272220, + 1446932299942275778714358986398000, -1352856582448736077739444219917580, + -6771710982218044504033950802014920, -3273080725789734016574447182531880, + -5448090235664757904472210771106820], + ![-1094934276226582539883827959990250, 1056706136771485799035786356043500, + 9087033085630345381832218778136500, -13919279722426884411092424919787250, + 362956564137404096819958442747000, 1446932299942275778714358986398000, + 11249956604326017645907512260103250, -577905746167631031003146169253750, + 444036453827898070533546229059500, 1383946980798895645909331901037000, + -105781514004376252991485052881250], + ![-2022071947855214938021244595613010, 1752935556146374509979529990772820, + 882226079533056673143924178214870, 8781015325362951987759220591791390, + 3854381432572983051070784732141460, -1352856582448736077739444219917580, + -577905746167631031003146169253750, 15454000967587886894313442716371620, + 19602874199899449470870514079486630, 4821242015032157594245514518102570, + 9996489843708904891280305589312480], + ![-2757671513179788833283309819533240, -1508395755399548446427422160544820, + 3000110554563088039826100471958630, 8652893926042300937464079024090360, + 7896413336553239388209914869864040, -6771710982218044504033950802014920, + 444036453827898070533546229059500, 19602874199899449470870514079486630, + 38002425120957863687784679021613370, 11774377099748737650832534487006430, + 24453960687289218362679237777881770], + ![-741308143730053003367607869991360, -1636260291464019261947097825044480, + 2216606245711271776271082674016070, -145763586481911905612336706567460, + 2254424190791677095114098123233560, -3273080725789734016574447182531880, + 1383946980798895645909331901037000, 4821242015032157594245514518102570, + 11774377099748737650832534487006430, 5782852864880184866646845657711270, + 8234037328967523517523944817400030], + ![-1508405502738816320318236884356290, -2189954475750574414620652905897720, + 1513551748069025757343309633021730, 4156108847837812648900796307593810, + 5400101469471385118566956290796340, -5448090235664757904472210771106820, + -105781514004376252991485052881250, 9996489843708904891280305589312480, + 24453960687289218362679237777881770, 8234037328967523517523944817400030, + 19158669014084021699616762774201420]] + +/-- Exact integer matrix after 6 fraction-free Schur steps in moment block 5. -/ +def momentBlock5Stage6 : Fin 10 → Fin 10 → ℤ := + ![![116698468136343875412660313821044136732, -14233951353429830531657838647004212566, + 21119814083599694598774376195236514842, 7217457684001676112186163497615068742, + 126758009709268426447109075462931666610, 3447793844987239144007156872736286618, + 775917223771700453977928652212275558, -108747306920362662737617245867144891910, + -63894650837585740526857043154267083264, -97921460887782227658632662869036014868], + ![-14233951353429830531657838647004212566, 223826784866460536431350758510913106163, + -283191277114154432950727187143548736976, 57911890072284257361239349625440476104, + -15785425055805574444947305536294629480, 244322220677584187625770749638450388916, + 3442389849186471418708394747598478091, 55300765923283497229500771974618168965, + 54578185151553360268745782298265126637, 26659010903854200610478813012969594069], + ![21119814083599694598774376195236514842, -283191277114154432950727187143548736976, + 681677940351707439598024027661249834192, 144201972639320334618738716806050693102, + -47561746092777462120377666021412699380, -357776700666927063300398957450435177082, + 310493854331322568569221113963364907218, 329876945148379341466463704116874274560, + 19064668653000062671472646751345589906, 164191081697391325458486343951851846672], + ![7217457684001676112186163497615068742, 57911890072284257361239349625440476104, + 144201972639320334618738716806050693102, 291634575012820517160028114877470607262, + -41105032210504468192665647894180082660, 53100565178556937124120459215130284108, + 187734914541331213041086409500190849278, 330374779282640092589020398946150469100, + 92520259053575573015819093822387540916, 211150197597928801580980029263639248622], + ![126758009709268426447109075462931666610, -15785425055805574444947305536294629480, + -47561746092777462120377666021412699380, -41105032210504468192665647894180082660, + 185575357977736282632080520761837455470, 14393260803514385661848676468881998470, + -86771990864239396727617013626827217860, -257085742343755765724020101084117212340, + -110021219792568223046485273215481841900, -189738980255266459422795125514817172280], + ![3447793844987239144007156872736286618, 244322220677584187625770749638450388916, + -357776700666927063300398957450435177082, 53100565178556937124120459215130284108, + 14393260803514385661848676468881998470, 305030391378291799415825161316815299022, + -38056413753662302997405748929089422418, -17199856846431794226904278228907755970, + 30989955884763256420405799946046848124, -19227218822128793774562412413574144532], + ![775917223771700453977928652212275558, 3442389849186471418708394747598478091, + 310493854331322568569221113963364907218, 187734914541331213041086409500190849278, + -86771990864239396727617013626827217860, -38056413753662302997405748929089422418, + 394995772955691224523304685557135052157, 497204523113039430393466929683249104065, + 121030647997794822855736642679793090619, 251517898560413277692482535834700711303], + ![-108747306920362662737617245867144891910, 55300765923283497229500771974618168965, + 329876945148379341466463704116874274560, 330374779282640092589020398946150469100, + -257085742343755765724020101084117212340, -17199856846431794226904278228907755970, + 497204523113039430393466929683249104065, 995421953821309099632692452808382086915, + 311482370404568678983118984157375725985, 647757798435482104686936637809368274815], + ![-63894650837585740526857043154267083264, 54578185151553360268745782298265126637, + 19064668653000062671472646751345589906, 92520259053575573015819093822387540916, + -110021219792568223046485273215481841900, 30989955884763256420405799946046848124, + 121030647997794822855736642679793090619, 311482370404568678983118984157375725985, + 157452241584780133227304640220019986173, 220888932704640400758561366645681277761], + ![-97921460887782227658632662869036014868, 26659010903854200610478813012969594069, + 164191081697391325458486343951851846672, 211150197597928801580980029263639248622, + -189738980255266459422795125514817172280, -19227218822128793774562412413574144532, + 251517898560413277692482535834700711303, 647757798435482104686936637809368274815, + 220888932704640400758561366645681277761, 517168517560843356338109221534109040697]] + +/-- Exact integer matrix after 7 fraction-free Schur steps in moment block 5. -/ +def momentBlock5Stage7 : Fin 9 → Fin 9 → ℤ := + ![![9053684958684183794409184833136244792998952, -11439482823971434483630520003425852178545182, + 2396707127657573682742026072726714401570670, -13228101135916328074291760269456675584470, + 9977114725336695161261811283040763052906410, 144189578588406164543942934097887565809028, + 1713653667984912274043895116528951143433084, 1907217038591733476693678623867054440207082, + 599881012447755998860464452864987245280214], + ![-11439482823971434483630520003425852178545182, 27633276998165600723510332212328289789684946, + 5825249173926247107538516704132947861085930, -2874069398545466409253367804426308903997886, + -14610461676844878784641249152923726030820706, 12651781177589979792118715727976750483681938, + 14249974590231269160238797699981856620201618, 1248579502832393664611904526838897291502276, + 7415801335116934610013547429116369931083612], + ![2396707127657573682742026072726714401570670, 5825249173926247107538516704132947861085930, + 11870496598233477873380866472180839110304014, -1995263631771766590478839313783991446648338, + 2155990076611200710639241162727616650921350, 7651192760763854524833755592702020832563502, + 13742143952617785026217187263439371269626854, 3932748769664713547883527527626025402797480, + 8854573434004355488648652921176038738311232], + ![-13228101135916328074291760269456675584470, -2874069398545466409253367804426308903997886, + -1995263631771766590478839313783991446648338, 1952297364866037776727862957810609233038078, + 434084119535103769541785860603646791492822, -3571680155506072207018235262683355377348530, + -5664979515302657841245796076479810201813086, -1655853701593026766285067441362772381845912, + -3398906238409111317795163688270125479642276], + ![9977114725336695161261811283040763052906410, -14610461676844878784641249152923726030820706, + 2155990076611200710639241162727616650921350, 434084119535103769541785860603646791492822, + 12430631118869609613970770275174964805963566, -1552331638086307045698162099132588811375734, + -570189144959308662364733973857568591565842, 1340282684346168930580948174315293887525304, + -665874680651590935487717312085456260493100], + ![144189578588406164543942934097887565809028, 12651781177589979792118715727976750483681938, + 7651192760763854524833755592702020832563502, -3571680155506072207018235262683355377348530, + -1552331638086307045698162099132588811375734, 16102076926783351174782517043210229569894972, + 20298376250393033496651361527361883297885632, 4951220038885843034760610645639211857530854, + 10279849691114811135823208372639607942966018], + ![1713653667984912274043895116528951143433084, 14249974590231269160238797699981856620201618, + 13742143952617785026217187263439371269626854, -5664979515302657841245796076479810201813086, + -570189144959308662364733973857568591565842, 20298376250393033496651361527361883297885632, + 36447980872424677233911827810143719375133416, 10270561780468257926291933924967926515082386, + 22686455300823924299262663059062025969365290], + ![1907217038591733476693678623867054440207082, 1248579502832393664611904526838897291502276, + 3932748769664713547883527527626025402797480, -1655853701593026766285067441362772381845912, + 1340282684346168930580948174315293887525304, 4951220038885843034760610645639211857530854, + 10270561780468257926291933924967926515082386, 4992524539247681426672603852429221701472778, + 6819088067267859640306106141170251166283730], + ![599881012447755998860464452864987245280214, 7415801335116934610013547429116369931083612, + 8854573434004355488648652921176038738311232, -3398906238409111317795163688270125479642276, + -665874680651590935487717312085456260493100, 10279849691114811135823208372639607942966018, + 22686455300823924299262663059062025969365290, 6819088067267859640306106141170251166283730, + 17733202819483274798955349336730660117422986]] + +/-- Exact integer matrix after 8 fraction-free Schur steps in moment block 5. -/ +def momentBlock5Stage8 : Fin 8 → Fin 8 → ℤ := + ![![1022474578655993334024686563840258801350944067349, + 686873290863092480776531838661504834151042633275, + -224272365674804714556689415832811129960601662791, + -155490340872344793044162601925734996759609886431, + 995683122592599299635725581559330100378000753246, + 1273522220846298969893310077141199923251859669882, + 283823965712841739906207923158218110660246881893, + 634135637977702224523298690906940859183105693371], + ![686873290863092480776531838661504834151042633275, + 871712654607607279210834009193350999396904395629, + -154524602895689358972440310772275206198212846993, + -37640314548538696530659098523514594332732466625, + 590632505500030426496266883431731288802757536242, + 1030946832163462387846561225189753419962001259654, + 265940317875938489279290195677803747943452632235, + 674634213062227801182036328458039056320392475237], + ![-224272365674804714556689415832811129960601662791, + -154524602895689358972440310772275206198212846993, + 151461373801890196303224127196929261055376654133, + 34807990296189439606012759595174782923209606917, + -277081268187937702818112120567196783998318438450, + -439305436169231006849165488728552071756658905006, + -128248032138124104075374499676887042175377271087, + -263625491330498988311216228231570213923826984921], + ![-155490340872344793044162601925734996759609886431, + -37640314548538696530659098523514594332732466625, + 34807990296189439606012759595174782923209606917, + 111399917693369515909555604553306224062365356501, + -132760247994900937648391117893789965173533485514, + -190744852831278850263153638386132400192098884582, + -59075548553407465861342276678702470345323861391, + -102946520680033325466620530163909926433067737545], + ![995683122592599299635725581559330100378000753246, + 590632505500030426496266883431731288802757536242, + -277081268187937702818112120567196783998318438450, + -132760247994900937648391117893789965173533485514, + 1249051023280957850156678381659244127708047405580, + 1572668567759079071875338410988828696916233524316, + 381768383798093439342643537162170778383135956766, + 796788727568858290641280393313200232112851636242], + ![1273522220846298969893310077141199923251859669882, + 1030946832163462387846561225189753419962001259654, + -439305436169231006849165488728552071756658905006, + -190744852831278850263153638386132400192098884582, + 1572668567759079071875338410988828696916233524316, + 2802538306871115543788722245979750492323654731668, + 768802904339879624198690415868481717377855994162, + 1751248616107136989044086751165510552159871724022], + ![283823965712841739906207923158218110660246881893, + 265940317875938489279290195677803747943452632235, + -128248032138124104075374499676887042175377271087, + -59075548553407465861342276678702470345323861391, + 381768383798093439342643537162170778383135956766, + 768802904339879624198690415868481717377855994162, + 356159495135734178947423486050845544269111527101, + 519233651873677332134741322228172925836483820491], + ![634135637977702224523298690906940859183105693371, + 674634213062227801182036328458039056320392475237, + -263625491330498988311216228231570213923826984921, + -102946520680033325466620530163909926433067737545, + 796788727568858290641280393313200232112851636242, + 1751248616107136989044086751165510552159871724022, + 519233651873677332134741322228172925836483820491, + 1372691321190251487345052831034193550119487338493]] + +/-- Exact integer matrix after 9 fraction-free Schur steps in moment block 5. -/ +def momentBlock5Stage9 : Fin 7 → Fin 7 → ℤ := + ![![46335731079921027031830046106624895425141127726583023, + -436372636675539250139937328291149143744417111464541, + 7545645522863875421091771642991442702888739777493450, + -8836338047482530025427742294499406460166297119265746, + 19811660095489381197795313097578009070944394538969548, + 8501081434142796576973304439932029614789544533805720, + 28079782033122109336826469021622408994435097014647694], + ![-436372636675539250139937328291149143744417111464541, + 11549696154942146238004463516874073524264213720698193, + 79315618801918388239543545157372945301771624677706, + -6627615589832913131815078598913422216142083560382157, + -18065881493137646959008818393697188926686761605461366, + -7452930017577256549477981219051302077717426300769375, + -14064026312406173783749470730682056392655014124443334], + ![7545645522863875421091771642991442702888739777493450, + 79315618801918388239543545157372945301771624677706, + 9910477138391915210063954831768118864407768180769019, + 2106891236989175692591451027719341366632624086285570, + 330102186245018953900923322660248343886139913220937, + -1797208707155114924637902757704053858881365947270488, + -735417001844793507701151206202801350811414168506327], + ![-8836338047482530025427742294499406460166297119265746, + -6627615589832913131815078598913422216142083560382157, + 2106891236989175692591451027719341366632624086285570, + 31560413183938893723393746430047780613001555609114627, + 37552560221964728871365090720949752235500965598640056, + 11901202152743984343913931391296044942208147912544028, + 20245686388072022176903617222672222822212951298081746], + ![19811660095489381197795313097578009070944394538969548, + -18065881493137646959008818393697188926686761605461366, + 330102186245018953900923322660248343886139913220937, + 37552560221964728871365090720949752235500965598640056, + 137365650911359221481116121678981715826527444422876704, + 46900825517802555512514496107553206868591182176743731, + 108576935177978141205482518054356504725341499220821178], + ![8501081434142796576973304439932029614789544533805720, + -7452930017577256549477981219051302077717426300769375, + -1797208707155114924637902757704053858881365947270488, + 11901202152743984343913931391296044942208147912544028, + 46900825517802555512514496107553206868591182176743731, + 31325144126894258611271300294973506618037085773219025, + 38759943542797797692353061200642436751593809311053228], + ![28079782033122109336826469021622408994435097014647694, + -14064026312406173783749470730682056392655014124443334, + -735417001844793507701151206202801350811414168506327, + 20245686388072022176903617222672222822212951298081746, + 108576935177978141205482518054356504725341499220821178, + 38759943542797797692353061200642436751593809311053228, + 110608440372647356406811094567153773029786498584628033]] + +/-- Exact integer matrix after 10 fraction-free Schur steps in moment block 5. -/ +def momentBlock5Stage10 : Fin 6 → Fin 6 → ℤ := + ![![523214175862798823971454394623599203403817242218080306942, + 6814702840468964798109069869985341444213690357885391512, + -304116460492016271580637070665618503135774404340386391353, + -810240740971701075008643425068897413285234668930672350550, + -334118156933522509691795552173162265309051357133018994645, + -625359012279801235102687718936656250278289728594562513972], + ![6814702840468964798109069869985341444213690357885391512, + 393430257924153291302688896301402060415615250636697973613, + 160688807162558217920265031750208407133522389085490879690, + -131246527757866950536698318930672889835466774292602564301, + -144180725359502441889625949113758030123426424864027464376, + -240549908178259210535551529907166324442922075253004217329], + ![-304116460492016271580637070665618503135774404340386391353, + 160688807162558217920265031750208407133522389085490879690, + 1353866371712052531008281846062437388426798022918701319845, + 1872993126352712445175674415394083937974306938444795302304, + 612796977918208037861247055958189285007521902830250600836, + 1160147304502828652177869426421369424099625903714378664418], + ![-810240740971701075008643425068897413285234668930672350550, + -131246527757866950536698318930672889835466774292602564301, + 1872993126352712445175674415394083937974306938444795302304, + 5841158410371824749214926308655489125949092130595825591312, + 1960697649262904213271327228343023560854603766289515178697, + 4376328435055062255146906556601273659303368724058160448518], + ![-334118156933522509691795552173162265309051357133018994645, + -144180725359502441889625949113758030123426424864027464376, + 612796977918208037861247055958189285007521902830250600836, + 1960697649262904213271327228343023560854603766289515178697, + 1348889348981691899545874440656248121870796509340015607075, + 1523032297783300357572895186487987257145510749983461386036], + ![-625359012279801235102687718936656250278289728594562513972, + -240549908178259210535551529907166324442922075253004217329, + 1160147304502828652177869426421369424099625903714378664418, + 4376328435055062255146906556601273659303368724058160448518, + 1523032297783300357572895186487987257145510749983461386036, + 4241326757433120764385198150654513012157852506133078307327]] + +/-- Exact integer matrix after 11 fraction-free Schur steps in moment block 5. -/ +def momentBlock5Stage11 : Fin 5 → Fin 5 → ℤ := + ![![4441536654067207312744541410775295634779174124319286438449274, + 1859194256986982664664035953171611088757636099056216391607292, + -1362846608976616239147901145333646731194610678105415563954954, + -1578921530664455197607913696955116197388210270699205164158824, + -2624270369541152006467643218037039857497800202071457348872098], + ![1859194256986982664664035953171611088757636099056216391607292, + 13291583881545110131313818502232486630036767201567831155043147, + 15831605364018126484680920690785617971118008185161161374600966, + 4726659737432232512396053498168613399422612318851190099270949, + 8995726121912932528670829676928627113171947457131641121950680], + ![-1362846608976616239147901145333646731194610678105415563954954, + 15831605364018126484680920690785617971118008185161161374600966, + 51789121904591066615987676405955952412821330660594165936126148, + 16297329167566208154116986112483760011035374684022595189030688, + 38481441522825503972906030272608585765809244921043372079323972], + ![-1578921530664455197607913696955116197388210270699205164158824, + 4726659737432232512396053498168613399422612318851190099270949, + 16297329167566208154116986112483760011035374684022595189030688, + 12822136878344507769116920897258748700128599053415924971935375, + 12688443112688685896436934659058430585646946200997654714659564], + ![-2624270369541152006467643218037039857497800202071457348872098, + 8995726121912932528670829676928627113171947457131641121950680, + 38481441522825503972906030272608585765809244921043372079323972, + 12688443112688685896436934659058430585646946200997654714659564, + 39452240141902045184077140976948458238212777336704860071960750]] + +/-- Exact integer matrix after 12 fraction-free Schur steps in moment block 5. -/ +def momentBlock5Stage12 : Fin 4 → Fin 4 → ℤ := + ![![106225053294145294974465711642438576461932375035290680497149327017, + 139236388206500785427422012803240807054998893772191903038135984806, + 45734912051443112102300759669373460670261296594116725029809312127, + 85689336735430569264513363729262425837232874667270338269207765708], + ![139236388206500785427422012803240807054998893772191903038135984806, + 436085149958605965731216725424884963711533196626648964262814072958, + 134234430654369008871151518151385441594419393677189057602590124648, + 319831271342861214426805080909031448628100661845809081996233703158], + ![45734912051443112102300759669373460670261296594116725029809312127, + 134234430654369008871151518151385441594419393677189057602590124648, + 104081655736557013498277335227301228514711116001561460552008966797, + 99792151260427080563271797507101467390463236346005295009769153452], + ![85689336735430569264513363729262425837232874667270338269207765708, + 319831271342861214426805080909031448628100661845809081996233703158, + 99792151260427080563271797507101467390463236346005295009769153452, + 321745440909100621092871884785405228773806515212193450512486576588]] + +/-- Exact integer matrix after 13 fraction-free Schur steps in moment block 5. -/ +def momentBlock5Stage13 : Fin 3 → Fin 3 → ℤ := + ![![6064657030282673262377005217824827367722792214017459952890997666013225, + 1776658889881873302473752004110878021677626637595729306768381908408371, + 4962926528703179073707443205585342856417541491186736418246160385507387], + ![1776658889881873302473752004110878021677626637595729306768381908408371, + 2018309865572432249802512898586295888129377370350729704785643211845330, + 1504306465762595569907126354569822236561240459403940472122338096917532], + ![4962926528703179073707443205585342856417541491186736418246160385507387, + 1504306465762595569907126354569822236561240459403940472122338096917532, + 6041774788233781169079328957485057385885978179987736861803617778167718]] + +/-- Exact integer matrix after 14 fraction-free Schur steps in moment block 5. -/ +def momentBlock5Stage14 : Fin 2 → Fin 2 → ℤ := + ![![85515045865711073411531054772627787802830934486134692747902326566489360977, + 2877619137448483727317247820204600502072907251827294721231424271713012419], + ![2877619137448483727317247820204600502072907251827294721231424271713012419, + 113067980133485168793241219710718462563851970392321178078854433237250640693]] + +/-- Exact integer matrix after 15 fraction-free Schur steps in moment block 5. -/ +def momentBlock5Stage15 : Fin 1 → Fin 1 → ℤ := + ![![1592956166675066997824970032930007841490817345747039235160160057222186565737180]] + +/-- Exact integer matrix after 16 fraction-free Schur steps in moment block 5. -/ +def momentBlock5Stage16 : Fin 0 → Fin 0 → ℤ := fun i => Fin.elim0 i + +theorem momentBlock5Stage15_psd : IsPSD (fun i j => (momentBlock5Stage15 i j : ℝ)) := by + apply integer_schur_step momentBlock5Stage15 momentBlock5Stage16 + (85515045865711073411531054772627787802830934486134692747902326566489360977) + · decide + · decide + · decide +kernel + · decide +kernel + · exact quadraticForm_zero _ + +theorem momentBlock5Stage14_psd : IsPSD (fun i j => (momentBlock5Stage14 i j : ℝ)) := by + apply integer_schur_step momentBlock5Stage14 momentBlock5Stage15 + (6064657030282673262377005217824827367722792214017459952890997666013225) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock5Stage15_psd + +theorem momentBlock5Stage13_psd : IsPSD (fun i j => (momentBlock5Stage13 i j : ℝ)) := by + apply integer_schur_step momentBlock5Stage13 momentBlock5Stage14 + (106225053294145294974465711642438576461932375035290680497149327017) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock5Stage14_psd + +theorem momentBlock5Stage12_psd : IsPSD (fun i j => (momentBlock5Stage12 i j : ℝ)) := by + apply integer_schur_step momentBlock5Stage12 momentBlock5Stage13 + (4441536654067207312744541410775295634779174124319286438449274) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock5Stage13_psd + +theorem momentBlock5Stage11_psd : IsPSD (fun i j => (momentBlock5Stage11 i j : ℝ)) := by + apply integer_schur_step momentBlock5Stage11 momentBlock5Stage12 + (523214175862798823971454394623599203403817242218080306942) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock5Stage12_psd + +theorem momentBlock5Stage10_psd : IsPSD (fun i j => (momentBlock5Stage10 i j : ℝ)) := by + apply integer_schur_step momentBlock5Stage10 momentBlock5Stage11 + (46335731079921027031830046106624895425141127726583023) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock5Stage11_psd + +theorem momentBlock5Stage9_psd : IsPSD (fun i j => (momentBlock5Stage9 i j : ℝ)) := by + apply integer_schur_step momentBlock5Stage9 momentBlock5Stage10 + (1022474578655993334024686563840258801350944067349) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock5Stage10_psd + +theorem momentBlock5Stage8_psd : IsPSD (fun i j => (momentBlock5Stage8 i j : ℝ)) := by + apply integer_schur_step momentBlock5Stage8 momentBlock5Stage9 + (9053684958684183794409184833136244792998952) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock5Stage9_psd + +theorem momentBlock5Stage7_psd : IsPSD (fun i j => (momentBlock5Stage7 i j : ℝ)) := by + apply integer_schur_step momentBlock5Stage7 momentBlock5Stage8 + (116698468136343875412660313821044136732) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock5Stage8_psd + +theorem momentBlock5Stage6_psd : IsPSD (fun i j => (momentBlock5Stage6 i j : ℝ)) := by + apply integer_schur_step momentBlock5Stage6 momentBlock5Stage7 + (2862661741483201582491309929483230) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock5Stage7_psd + +theorem momentBlock5Stage5_psd : IsPSD (fun i j => (momentBlock5Stage5 i j : ℝ)) := by + apply integer_schur_step momentBlock5Stage5 momentBlock5Stage6 (101648688693585509423120042500) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock5Stage6_psd + +theorem momentBlock5Stage4_psd : IsPSD (fun i j => (momentBlock5Stage4 i j : ℝ)) := by + apply integer_schur_step momentBlock5Stage4 momentBlock5Stage5 (2044842456426383762347120) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock5Stage5_psd + +theorem momentBlock5Stage3_psd : IsPSD (fun i j => (momentBlock5Stage3 i j : ℝ)) := by + apply integer_schur_step momentBlock5Stage3 momentBlock5Stage4 (118636920772367302208) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock5Stage4_psd + +theorem momentBlock5Stage2_psd : IsPSD (fun i j => (momentBlock5Stage2 i j : ℝ)) := by + apply integer_schur_step momentBlock5Stage2 momentBlock5Stage3 (26790268834952) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock5Stage3_psd + +theorem momentBlock5Stage1_psd : IsPSD (fun i j => (momentBlock5Stage1 i j : ℝ)) := by + apply integer_schur_step momentBlock5Stage1 momentBlock5Stage2 (21035497) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock5Stage2_psd + +theorem momentBlock5Stage0_psd : IsPSD (fun i j => (momentBlock5Stage0 i j : ℝ)) := by + apply integer_schur_step momentBlock5Stage0 momentBlock5Stage1 (1) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock5Stage1_psd + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/MomentBlock6.lean b/LeanPool/PersistentSOS/MomentBlock6.lean new file mode 100644 index 0000000000..b015d8dd35 --- /dev/null +++ b/LeanPool/PersistentSOS/MomentBlock6.lean @@ -0,0 +1,866 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.PSD + +/-! +# Exact moment block certificate + +Generated by `scripts/generate_moments.py`; all identities below are checked +by the Lean kernel with integer arithmetic. No external verifier is trusted. +-/ + +@[expose] public section + + +namespace PersistentSOS + + +/-- Exact integer matrix after 0 fraction-free Schur steps in moment block 6. -/ +def momentBlock6Stage0 : Fin 16 → Fin 16 → ℤ := + ![![5373335, 6700445, -1192529, -868051, 4143478, 3462345, 412026, 549857, 487649, 555248, + 487668, 555251, 2833858, 1418658, 1418815, 752865], + ![6700445, 13951051, -868051, -2410969, 7594848, 5800689, 549857, 2599146, 555248, 390599, + 555251, 390534, 3953065, 2037393, 2037568, 1065899], + ![-1192529, -868051, 1188822, 1563499, 2022744, 1400984, -70012, -71505, -110636, -92651, + -110643, -92653, -906164, -442446, -442523, -233311], + ![-868051, -2410969, 1563499, 3215208, 3598238, 2688879, -71505, -742651, -92651, 72861, -92653, + 72892, -1199593, -607622, -607709, -315518], + ![4143478, 7594848, 2022744, 3598238, 12788775, 9655915, 331233, 900626, 297189, 454472, 297189, + 454472, 1220643, 651390, 651390, 344016], + ![3462345, 5800689, 1400984, 2688879, 9655915, 7390663, 299603, 451763, 297238, 449043, 297238, + 449043, 1201302, 630690, 630691, 338068], + ![412026, 549857, -70012, -71505, 331233, 299603, 194717, 89718, 153598, -9261, 153615, -9266, + 312527, 124516, 124519, 78020], + ![549857, 2599146, -71505, -742651, 900626, 451763, 89718, 1340107, -9261, -257922, -9266, + -257943, 399703, 197247, 197239, 105630], + ![487649, 555248, -110636, -92651, 297189, 297238, 153598, -9261, 200318, 77972, 195058, 78186, + 231540, 82775, 79784, 54692], + ![555248, 390599, -92651, 72861, 454472, 449043, -9261, -257922, 77972, 215330, 78186, 210862, + 278253, 129317, 130616, 68507], + ![487668, 555251, -110643, -92653, 297189, 297238, 153615, -9266, 195058, 78186, 200325, 77940, + 231538, 79776, 82777, 54684], + ![555251, 390534, -92653, 72892, 454472, 449043, -9266, -257943, 78186, 210862, 77940, 215328, + 278254, 130613, 129312, 68496], + ![2833858, 3953065, -906164, -1199593, 1220643, 1201302, 312527, 399703, 231540, 278253, 231538, + 278254, 2595168, 1338800, 1338790, 725460], + ![1418658, 2037393, -442446, -607622, 651390, 630690, 124516, 197247, 82775, 129317, 79776, + 130613, 1338800, 741344, 725460, 395345], + ![1418815, 2037568, -442523, -607709, 651390, 630691, 124519, 197239, 79784, 130616, 82777, + 129312, 1338790, 725460, 741348, 395329], + ![752865, 1065899, -233311, -315518, 344016, 338068, 78020, 105630, 54692, 68507, 54684, 68496, + 725460, 395345, 395329, 236319]] + +/-- Exact integer matrix after 1 fraction-free Schur steps in moment block 6. -/ +def momentBlock6Stage1 : Fin 15 → Fin 15 → ℤ := + ![![30067707427060, 3326146155320, -7138616128920, 13046516130370, 7969792984290, 193808311525, + 10281795585545, -283931791725, -1621589407695, -284042980175, -1621958775805, 2253032854965, + 1441955212845, 1441843576605, 682901878240], + ![3326146155320, 4965813445529, 7366027908186, 15810098807102, 11656903182145, 115155023734, + 271500099178, -12948716739, 164304481107, -12963672033, 164297312024, -1489664890058, + -685619771328, -685846291070, -355844816600], + ![-7138616128920, 7366027908186, 16522877140079, 22931288405108, 17453739681060, -26560737849, + -3513208692378, -74540658986, 873490143083, -74534912687, 873659320621, -3985881781897, + -2033489063812, -2033820259950, -1041858696415], + ![13046516130370, 15810098807102, 22931288405108, 51549962378141, 37538315690615, 72605205627, + 2561044825064, -423666847907, 141372431576, -423745573989, 141360001142, -5183104523719, + -2378041526874, -2378692052920, -1270966351110], + ![7969792984290, 11656903182145, 17453739681060, 37538315690615, 27724675272080, 183291125035, + 523679304940, -91249728175, 490398331845, -91315512730, 490387944810, -3356795994840, + -1522974781860, -1523512996690, -790125751645], + ![193808311525, 115155023734, -26560737849, 72605205627, 183291125035, 876514246519, + 255529489248, 624409442456, -278539067883, 624492960657, -278567170636, 511689091237, + 84542199752, 84493631675, 109027642210], + ![10281795585545, 271500099178, -3513208692378, 2561044825064, 523679304940, 255529489248, + 6898501126396, -317899671628, -1691208309406, -317936985586, -1691322799012, 589521461199, + 279815176839, 279685862610, 153617285745], + ![-283931791725, -12948716739, -74540658986, -423666847907, -91249728175, 624409442456, + -317899671628, 838574173329, 148203544668, 810301165898, 149351975411, -137786033942, + -247029350417, -263177556295, -73255426565], + ![-1621589407695, 164304481107, 873490143083, 141372431576, 490398331845, -278539067883, + -1691208309406, 148203544668, 848739884046, 149342888646, 824730157522, -78347403029, + -92843454989, -85950666760, -49915724675], + ![-284042980175, -12963672033, -74534912687, -423745573989, -91315512730, 624492960657, + -317936985586, 810301165898, 149342888646, 838593255651, 148019585232, -137850623914, + -263170936584, -247122122125, -73312717680], + ![-1621958775805, 164297312024, 873659320621, 141360001142, 490387944810, -278567170636, + -1691322799012, 149351975411, 824730157522, 148019585232, 848725805879, -78350531268, + -85883868803, -92961752045, -49977089955], + ![2253032854965, -1489664890058, -3985881781897, -5183104523719, -3356795994840, 511689091237, + 589521461199, -137786033942, -78347403029, -137850623914, -78350531268, 5913955881116, + 3173545575436, 3173046926380, 1764627105930], + ![1441955212845, -685619771328, -2033489063812, -2378041526874, -1522974781860, 84542199752, + 279815176839, -247029350417, -92843454989, -263170936584, -85883868803, 3173545575436, + 1970899141276, 1885326358830, 1056263170405], + ![1441843576605, -685846291070, -2033820259950, -2378692052920, -1523512996690, 84493631675, + 279685862610, -263177556295, -85950666760, -247122122125, -92961752045, 3173046926380, + 1885326358830, 1970475151355, 1056058997240], + ![682901878240, -355844816600, -1041858696415, -1270966351110, -790125751645, 109027642210, + 153617285745, -73255426565, -49915724675, -73312717680, -49977089955, 1764627105930, + 1056263170405, 1056058997240, 703015445640]] + +/-- Exact integer matrix after 2 fraction-free Schur steps in moment block 6. -/ +def momentBlock6Stage2 : Fin 14 → Fin 14 → ℤ := + ![![25728412163205291404, 45637142042029396536, 80393053077372379032, 60295451166344192540, + 524406684515691424, -4845290551983967632, 103299051883997796, 1923182239855237692, + 103284192886932812, 1923370766055225224, -9730404794597567968, -4729124180391900648, + -4730322618769265680, -2413932742278939680], + ![45637142042029396536, 82973645876364766804, 145649832211242161728, 108254413875179130240, + 108852815594141436, -5999316865856260368, -794319876525944896, 2733487073183239948, + -794435438579194732, 2733943029040870196, -19310687046217619012, -9463171286962337192, + -9465172881287238240, -4922702214112933460], + ![80393053077372379032, 145649832211242161728, 256782352770093271136, 190703364068084052760, + -64289902274196578, -10633408385736137886, -1681333869700537102, 4728318125560602226, + -1681504432469100554, 4729145398074312222, -34473618314809797914, -16807950522924751854, + -16811319634066885430, -8770071987830951240], + ![60295451166344192540, 108254413875179130240, 190703364068084052760, 143318781423214528420, + 738188071289062910, -12319713212937286990, -89477489837849150, 5149294702355302350, + -89680686144093830, 5149784430437077230, -22125433330706322150, -10660873498255641990, + -10663719620509140110, -5434214790107697980], + ![524406684515691424, 108852815594141436, -64289902274196578, 738188071289062910, + 4897742697666731109, 1059023582154334853, 3504264813491649991, -1500139800518645463, + 3504736168819069177, -1500283733242990521, 2782008081666452957, 421065729623602297, + 420797982554351725, 585457483569051960], + ![-4845290551983967632, -5999316865856260368, -10633408385736137886, -12319713212937286990, + 1059023582154334853, 18928057359309653241, -1235580077347711133, -6360650477185470551, + -1235576118587968071, -6360584349273067597, -1012344185680317591, -1193390672857213311, + -1193900665516168875, -447122301797428660], + ![103299051883997796, -794319876525944896, -1681333869700537102, -89477489837849150, + 3504264813491649991, -1235580077347711133, 4677427637992588269, 743620123212403323, + 4519213775381336803, 750026908613180821, -651960560950975537, -1306114230187537837, + -1396481055797569445, -373832113490010940], + ![1923182239855237692, 2733487073183239948, 4728318125560602226, 5149294702355302350, + -1500139800518645463, -6360650477185470551, 743620123212403323, 4259944765778299041, + 749962024355084481, 4125481458364547507, 241519916560970561, -84366699937120039, + -45830239492730075, -73225464872109220], + ![103284192886932812, -794435438579194732, -1681504432469100554, -89680686144093830, + 3504736168819069177, -1235576118587968071, 4519213775381336803, 749962024355084481, + 4677522664533907261, 742537656377259227, -652275367518940379, -1396408276903953099, + -1306609418613137975, -374138567802397280], + ![1923370766055225224, 2733943029040870196, 4729145398074312222, 5149784430437077230, + -1500283733242990521, -6360584349273067597, 750026908613180821, 4125481458364547507, + 742537656377259227, 4259643023663076629, 241657287395357847, -45323645013924373, + -84963234189457405, -73521904812879460], + ![-9730404794597567968, -19310687046217619012, -34473618314809797914, -22125433330706322150, + 2782008081666452957, -1012344185680317591, -651960560950975537, 241519916560970561, + -652275367518940379, 241657287395357847, 32148179505723164641, 17153679679142019641, + 17150936184867409385, 9588028881610922520], + ![-4729124180391900648, -9463171286962337192, -16807950522924751854, -10660873498255641990, + 421065729623602297, -1193390672857213311, -1306114230187537837, -84366699937120039, + -1396408276903953099, -45323645013924373, 17153679679142019641, 10641656236262896721, + 10162844397461189145, 5727299349570899900], + ![-4730322618769265680, -9465172881287238240, -16811319634066885430, -10663719620509140110, + 420797982554351725, -1193900665516168875, -1396481055797569445, -45830239492730075, + -1306609418613137975, -84963234189457405, 17150936184867409385, 10162844397461189145, + 10639343618783644165, 5726171040542763520], + ![-2413932742278939680, -4922702214112933460, -8770071987830951240, -5434214790107697980, + 585457483569051960, -447122301797428660, -373832113490010940, -73225464872109220, + -374138567802397280, -73521904812879460, 9588028881610922520, 5727299349570899900, + 5726171040542763520, 3847090821790192480]] + +/-- Exact integer matrix after 3 fraction-free Schur steps in moment block 6. -/ +def momentBlock6Stage3 : Fin 13 → Fin 13 → ℤ := + ![![1730475333139569419414492, 2608437385468790571892016, 1114222272562442921007192, + -702807565078369872091452, 2220731869742868697965168, -836474238594187754760344, + -580032881909511264367732, -836550569853641069831516, -579928875866701052280548, + -1754887693724726928091900, -919546638336413844828904, -919440362901560951039808, + -548373038487541331246956], + ![2608437385468790571892016, 4774531798062139466913232, 1967537626769512452257696, + -1457135753775875775887518, 3856196457754758945122238, -1714882222718453234927978, + -1096138586319456753555514, -1714988441294555975430430, -1095934772596151946554958, + -3481958572931514658097638, -1737849403902756506328738, -1737527987977832693770666, + -1050183284018522710038520], + ![1114222272562442921007192, 1967537626769512452257696, 1723551686057603456058568, + -419949898610158495182622, -825393138843145680029378, -283712241678964417384174, + 549560875730874187758462, -283856316128128864260830, 549601871661603711668666, + 580253055269026053020102, 361095993827340743207166, 361063872198216634702846, + 190751020561029527605788], + ![-702807565078369872091452, -1457135753775875775887518, -419949898610158495182622, + 4181766791803197857325371, 990694020765073817458843, 2996736580459310177791481, + -1317185382635830339902441, 2997140170135243645791687, -1317311831413623779668391, + 2550222362972844042246851, 442778585761996427311079, 442570381066900032779187, + 543066808366790892289736], + ![2220731869742868697965168, 3856196457754758945122238, -825393138843145680029378, + 990694020765073817458843, 15415608981176211340512999, -1040618066622712471519411, + -5132784424651847815826521, -1040617073648961276592425, -5132697459910430806472627, + -2434260977695280895537609, -1783242967342183191239553, -1783872482695913314399221, + -771590332704081475204940], + ![-836474238594187754760344, -1714882222718453234927978, -283712241678964417384174, + 2996736580459310177791481, -1040618066622712471519411, 4002038257543567039406751, + 629695568470426971494361, 3866657469295930300247201, 635177095163292346053923, + -524441993950639159966607, -1101372004591652582692139, -1178693201868401186668075, + -311588429375643125958308], + ![-580032881909511264367732, -1096138586319456753555514, 549560875730874187758462, + -1317185382635830339902441, -5132784424651847815826521, 629695568470426971494361, + 3522150302135410200033195, 635123172934530207487707, 3407080339698082921907797, + 829037787697845375061375, 230291797995090050539711, 263343428400834074076971, + 91741535126201369418628], + ![-836550569853641069831516, -1714988441294555975430430, -283856316128128864260830, + 2997140170135243645791687, -1040617073648961276592425, 3866657469295930300247201, + 635123172934530207487707, 4002119672185746360663535, 628769623312410769203597, + -524716177049186546755685, -1178637380592855805247997, -1101793949039690439001529, + -311851849907355226362816], + ![-579928875866701052280548, -1095934772596151946554958, 549601871661603711668666, + -1317311831413623779668391, -5132697459910430806472627, 635177095163292346053923, + 3407080339698082921907797, 628769623312410769203597, 3521867988575279735587899, + 829216343701811068990217, 263729910143301348139141, 229887667617270539950845, + 91503012138433065673508], + ![-1754887693724726928091900, -3481958572931514658097638, 580253055269026053020102, + 2550222362972844042246851, -2434260977695280895537609, -524441993950639159966607, + 829037787697845375061375, -524716177049186546755685, 829216343701811068990217, + 24359716713687777506350399, 13147681753270489331904295, 13144946358754720921520055, + 7423120525930932613938664], + ![-919546638336413844828904, -1737849403902756506328738, 361095993827340743207166, + 442778585761996427311079, -1783242967342183191239553, -1101372004591652582692139, + 230291797995090050539711, -1178637380592855805247997, 263729910143301348139141, + 13147681753270489331904295, 8362070930817650193127423, 7952171508617945910394599, + 4521080660247684488406916], + ![-919440362901560951039808, -1737527987977832693770666, 361063872198216634702846, + 442570381066900032779187, -1783872482695913314399221, -1178693201868401186668075, + 263343428400834074076971, -1101793949039690439001529, 229887667617270539950845, + 13144946358754720921520055, 7952171508617945910394599, 8359715029892159295962971, + 4520018971409600538745728], + ![-548373038487541331246956, -1050183284018522710038520, 190751020561029527605788, + 543066808366790892289736, -771590332704081475204940, -311588429375643125958308, + 91741535126201369418628, -311851849907355226362816, 91503012138433065673508, + 7423120525930932613938664, 4521080660247684488406916, 4520018971409600538745728, + 3098090109930416182002592]] + +/-- Exact integer matrix after 4 fraction-free Schur steps in moment block 6. -/ +def momentBlock6Stage4 : Fin 12 → Fin 12 → ℤ := + ![![56679125811396949140140088272, 19371436352667867181555643840, + -26752834455463947756942098806, 34219477368470585393461432902, -30537085022558188336731939618, + -14919744324653385541957667394, -30536490478096061731785764726, + -14916580453916353005634111942, -56277423755356015888481218974, + -23659668275865248411161004858, -23648824640799006557896539586, + -15038609108139312242300434536], + ![19371436352667867181555643840, 67671195346035577590480233848, 2190998079429596123603924690, + -151688777092462545474552263258, 17142961964902960006867447610, 62082614551601768098223153262, + 17136577299965337393659191378, 62080867712262885145941674522, 115026474799253877302344804646, + 64109943701344768710601148310, 64103180744412365335995891142, 36578214894796557448624812612], + ![-26752834455463947756942098806, 2190998079429596123603924690, 262064590922125788984144807107, + 127295796682414531630916138623, 178708980575965710902105538941, + -104437393733386565458168264809, 178734040645286233805610214143, + -104443057520807722742798993567, 123588992820946865829045090923, 4662280986383218362053609315, + 4651180343727936529097570247, 21546724013707867878885183500], + ![34219477368470585393461432902, -151688777092462545474552263258, + 127295796682414531630916138623, 845162185370152046458974940971, 2208496350049965555222685145, + -295162378566375724397837077189, 2215151621895826493231263947, + -295165506594391171781005052855, -12254683462461750355633235157, + -40569602037253261626732928701, -40621115905586988408034839297, + -4564158651200703505805226668], + ![-30537085022558188336731939618, 17142961964902960006867447610, 178708980575965710902105538941, + 2208496350049965555222685145, 241979151128176977028401333139, 23495040484271119207067157101, + 232871050624765859350402787397, 23867105617738956996106525551, -92327978366966404841463599211, + -103973542702192415109553370991, -109170658136467384306543429663, + -38785759674194325665028293100], + ![-14919744324653385541957667394, 62082614551601768098223153262, + -104437393733386565458168264809, -295162378566375724397837077189, + 23495040484271119207067157101, 223820888628120641846276799379, 23858376586921760761590965483, + 216083706737703331026569017797, 16197535735571552397422470175, -5241404326632533507851515829, + -3015978442565594526017602081, -6192295478809175004951270304], + ![-30536490478096061731785764726, 17136577299965337393659191378, 178734040645286233805610214143, + 2215151621895826493231263947, 232871050624765859350402787397, 23858376586921760761590965483, + 241979663477685318921828988391, 23434422923734800986925135589, -92351626148757279353010652605, + -109173086948462778986885941297, -104001195004721399320497132149, + -38805104075780058434274106492], + ![-14916580453916353005634111942, 62080867712262885145941674522, + -104443057520807722742798993567, -295165506594391171781005052855, + 23867105617738956996106525551, 216083706737703331026569017797, 23434422923734800986925135589, + 223806589509409179596436187651, 16216639350747236062030529041, -2988662637848644771918305255, + -5262473137496228050655485911, -6206121595817344965287512688], + ![-56277423755356015888481218974, 115026474799253877302344804646, + 123588992820946865829045090923, -12254683462461750355633235157, + -92327978366966404841463599211, 16197535735571552397422470175, -92351626148757279353010652605, + 16216639350747236062030529041, 1518720153807189410314903891127, + 821583459892297485353457081635, 821406727987727148019623782715, + 461870471945706524121519515372], + ![-23659668275865248411161004858, 64109943701344768710601148310, 4662280986383218362053609315, + -40569602037253261626732928701, -103973542702192415109553370991, + -5241404326632533507851515829, -109173086948462778986885941297, -2988662637848644771918305255, + 821583459892297485353457081635, 529562079977584683493304239475, + 501996324676907111947733005419, 284485646885935667613099838412], + ![-23648824640799006557896539586, 64103180744412365335995891142, 4651180343727936529097570247, + -40621115905586988408034839297, -109170658136467384306543429663, + -3015978442565594526017602081, -104001195004721399320497132149, -5262473137496228050655485911, + 821406727987727148019623782715, 501996324676907111947733005419, + 529411219937290858190529098767, 284416503568759214444478215232], + ![-15038609108139312242300434536, 36578214894796557448624812612, 21546724013707867878885183500, + -4564158651200703505805226668, -38785759674194325665028293100, -6192295478809175004951270304, + -38805104075780058434274106492, -6206121595817344965287512688, 461870471945706524121519515372, + 284485646885935667613099838412, 284416503568759214444478215232, + 196687440081329260708571858132]] + +/-- Exact integer matrix after 5 fraction-free Schur steps in moment block 6. -/ +def momentBlock6Stage5 : Fin 11 → Fin 11 → ℤ := + ![![1999619169481118721904681517406368, 371241746935773832425236688791160, + -5351401162167635840882247862487768, 903332897593601826325591839332120, + 2200438876840486185453431533118472, 903117121962294443830844683266168, + 2200346244461277108436365371717592, 4397505369435758143108142664775016, + 2364678215619047792748229664918120, 2364335318345690268650675392068392, + 1366411099810083604167144891684912], + ![371241746935773832425236688791160, 8169938916457071392479773397924629, + 4698409929868681877278084482906379, 5381247010574793244364884268912207, + -3651346833936464953482839451860361, 5382077007133499516478009083679845, + -3651483429937124269692173745757003, 3177933465088985306599928439440561, + -213068150119871725914578789821829, -213264094402537844990095839782921, + 473236483411846126548259959038252], + ![-5351401162167635840882247862487768, 4698409929868681877278084482906379, + 27005343739557163119367866052963749, 676194979436097408560595396735953, + -9372569158133048019148581876140935, 676401206004404999866771409369883, + -9372734176316805473659214193758453, 711480400342244029798927432662207, + -860935759294137795288736890270843, -862837447510108936885074749317911, + 147890476514540032820788140255028], + ![903332897593601826325591839332120, 5381247010574793244364884268912207, + 676194979436097408560595396735953, 7386787285585111337367242042882077, + 506261394090867649021692992998565, 7088475597001647555772593012655023, + 518503661573016310159843558214223, -4017172300993667431220728266386397, + -3823011332740136394652099582016463, -3993043705299775261692570960307627, + -1535750430142762906895930054208444], + ![2200438876840486185453431533118472, -3651346833936464953482839451860361, + -9372569158133048019148581876140935, 506261394090867649021692992998565, + 7202283266555911756279947734411581, 518167049566432437840122060407271, + 6948890748758730177939428476486983, 45315521469294960192870784149707, + -375662342184450537876251150527495, -302678361707497296997519815566323, + -332478646981215365868730890673516], + ![903117121962294443830844683266168, 5382077007133499516478009083679845, + 676401206004404999866771409369883, 7088475597001647555772593012655023, + 518167049566432437840122060407271, 7386825050051953137684350159971653, + 504336913391119088005618724956773, -4017927513242938790583630502247727, + -3993306482360605392679358541082101, -3823717563581404980815060441705817, + -1536378860163483054145573335971380], + ![2200346244461277108436365371717592, -3651483429937124269692173745757003, + -9372734176316805473659214193758453, 518503661573016310159843558214223, + 6948890748758730177939428476486983, 504336913391119088005618724956773, + 7201869470843335828855740511105349, 46044125152932989993623382075857, + -301833907138527478529244425850613, -376215690548520068945795500939337, + -332904005260533225647992247914244], + ![4397505369435758143108142664775016, 3177933465088985306599928439440561, + 711480400342244029798927432662207, -4017172300993667431220728266386397, + 45315521469294960192870784149707, -4017927513242938790583630502247727, + 46044125152932989993623382075857, 47913183538406836718482608989458829, + 26140290037106192824537706155174559, 26134854098304746801486964105333723, + 14638798904200816936036550460204860], + ![2364678215619047792748229664918120, -213068150119871725914578789821829, + -860935759294137795288736890270843, -3823011332740136394652099582016463, + -375662342184450537876251150527495, -3993306482360605392679358541082101, + -301833907138527478529244425850613, 26140290037106192824537706155174559, + 17021528876479458137812951741548933, 16118802136578149446505435597700665, + 9112287801263802136653872992022228], + ![2364335318345690268650675392068392, -213264094402537844990095839782921, + -862837447510108936885074749317911, -3993043705299775261692570960307627, + -302678361707497296997519815566323, -3823717563581404980815060441705817, + -376215690548520068945795500939337, 26134854098304746801486964105333723, + 16118802136578149446505435597700665, 17016884130023337645920834617808909, + 9110117351612043904486896261935124], + ![1366411099810083604167144891684912, 473236483411846126548259959038252, + 147890476514540032820788140255028, -1535750430142762906895930054208444, + -332478646981215365868730890673516, -1536378860163483054145573335971380, + -332904005260533225647992247914244, 14638798904200816936036550460204860, + 9112287801263802136653872992022228, 9110117351612043904486896261935124, + 6311510016249943090671490529719424]] + +/-- Exact integer matrix after 6 fraction-free Schur steps in moment block 6. -/ +def momentBlock6Stage6 : Fin 10 → Fin 10 → ℤ := + ![![285800915315320132474203561322721341926, 200809273518373236562537917107844476266, + 183931732288553701325850148885614811658, -143230824046951093410598400982982540494, + 183962427574107228899181937736122016390, -143235036373300425032564657706999035242, + 83313195696275153246217871181480057654, -23005337686961455096643904827421407126, + -23010004593114327505222658064657012734, 7745777548918287629121564185858346128], + ![200809273518373236562537917107844476266, 447482353662137221462125635084976143014, + 109144752545743266321609934013034797062, -122904820661270475924437582364482100322, + 109131655530673348834468472788217830794, -122919388397337113423168814557318644934, + 440294461754972466385451872283632422362, 192889321187123422223838604422980848838, + 192789855413834304096662596627261788014, 134228227242961782011013179146711479760], + ![183931732288553701325850148885614811658, 109144752545743266321609934013034797062, + 246206181437867829940224707517267850838, -17209136948358885178110853379530383010, + 235685291335755299889587870848253531082, -16775757811699679028448380492585913158, + -211810359384853919718003603619061443478, -172561912881791119835609728846671712922, + -178555128838322084132344267145874875058, -75958124549658361410658293013151597856], + ![-143230824046951093410598400982982540494, -122904820661270475924437582364482100322, + -17209136948358885178110853379530383010, 168666899784911338003120452262450252342, + -16780732705096928255316413263799898094, 159730899152381808156958169649544659810, + -169124485485425189172175146789290055358, -105056516174298891287171216184745067650, + -102468355386393570750086228126274204154, -64777547803621758487389704797283856016], + ![183962427574107228899181937736122016390, 109131655530673348834468472788217830794, + 235685291335755299889587870848253531082, -16780732705096928255316413263799898094, + 246214390852507803845513285486759448390, -17267178943112741685531312848167717386, + -211820261838100463976850586914272194442, -178560862245395477551090434019404717174, + -172572362520636872251154729329611302046, -75975093451077604784808284366974144048], + ![-143235036373300425032564657706999035242, -122919388397337113423168814557318644934, + -16775757811699679028448380492585913158, 159730899152381808156958169649544659810, + -17267178943112741685531312848167717386, 168659493554893982542316663004180056294, + -169091593635894619671869994550535426618, -102448010880272866416238649197712463142, + -105058861790916055330614614011347017390, -64790321124446738818213576230287309168], + ![83313195696275153246217871181480057654, 440294461754972466385451872283632422362, + -211810359384853919718003603619061443478, -169124485485425189172175146789290055358, + -211820261838100463976850586914272194442, -169091593635894619671869994550535426618, + 1349175127621193551112884463080425085878, 738754158685379260105974374711619585786, + 738588984740003048740163267460926776786, 410437218741823890115586009948580511904], + ![-23005337686961455096643904827421407126, 192889321187123422223838604422980848838, + -172561912881791119835609728846671712922, -105056516174298891287171216184745067650, + -178560862245395477551090434019404717174, -102448010880272866416238649197712463142, + 738754158685379260105974374711619585786, 501857993832039661226539009997395057702, + 470024425011637292019214364485604750190, 264470959799470341328772958577224748112], + ![-23010004593114327505222658064657012734, 192789855413834304096662596627261788014, + -178555128838322084132344267145874875058, -102468355386393570750086228126274204154, + -172572362520636872251154729329611302046, -105058861790916055330614614011347017390, + 738588984740003048740163267460926776786, 470024425011637292019214364485604750190, + 501722738425488750898368932640146297334, 264402653627943952609963734181787431824], + ![7745777548918287629121564185858346128, 134228227242961782011013179146711479760, + -75958124549658361410658293013151597856, -64777547803621758487389704797283856016, + -75975093451077604784808284366974144048, -64790321124446738818213576230287309168, + 410437218741823890115586009948580511904, 264470959799470341328772958577224748112, + 264402653627943952609963734181787431824, 189726587508852629583814088092802637104]] + +/-- Exact integer matrix after 7 fraction-free Schur steps in moment block 6. -/ +def momentBlock6Stage7 : Fin 9 → Fin 9 → ℤ := + ![![43791589553444026504852905105581378581835506, -2871310420520077769153450242569626610929662, + -3182722298567298520821872275213622264716926, -2876264882368878021417773880086885525216572, + -3184381413542049587040931001488615241958784, 54563638687203784932592723710966993844835036, + 29879504362472252525727265530128917201758928, 29865756619184928073225462412516539382112256, + 18407068109028552160895525904549899900742434], + ![-2871310420520077769153450242569626610929662, 18271014014155858534646724227467690334978443, + 10715193582588527204192339755956894890636244, 16764464215004690359452712173276393287424634, + 10777522918254229557662508373307007122734546, -37936991278221301694914514413924014495775595, + -22547763957089927831126412317100557786392948, -23403931091339823343056644152458162390380752, + -11569000816502831689443884303536024431298535], + ![-3182722298567298520821872275213622264716926, 10715193582588527204192339755956894890636244, + 13847679501863182688897858987145417934896942, 10778623078479154698783771523642015531800912, + 12570175998197401468198468231140883461003534, -18204924035535675568105866903942697054935474, + -16663333931471320234853728068386114025754908, -16293748418073633590582854053589670496173400, + -8703681490239584895138845856361753978496988], + ![-2876264882368878021417773880086885525216572, 16764464215004690359452712173276393287424634, + 10778623078479154698783771523642015531800912, 18266539983196016586768915061322216577982030, + 10709483978191607886683244900506042477517508, -37939685517512577139763606951054876109903914, + -23404826686731362422035001224895806372743788, -22548475005260415193507856140295195095206952, + -11571545044168209338837342295131992604687876], + ![-3184381413542049587040931001488615241958784, 10777522918254229557662508373307007122734546, + 12570175998197401468198468231140883461003534, 10709483978191607886683244900506042477517508, + 13846017487885345820089758785541673583302510, -18200047375409307908126013265469109936851750, + -16290554801312845994593892443836977890200538, -16664051943111110820470103449027411755245676, + -8705490834286566142854797777968511588208344], + ![54563638687203784932592723710966993844835036, -37936991278221301694914514413924014495775595, + -18204924035535675568105866903942697054935474, -37939685517512577139763606951054876109903914, + -18200047375409307908126013265469109936851750, 189363256562464430737122303946797896716022509, + 106546919632371080123340417844400643273413930, 106523506149132018004104754798102990122876554, + 58340112505225824127626498182465974256394319], + ![29879504362472252525727265530128917201758928, -22547763957089927831126412317100557786392948, + -16663333931471320234853728068386114025754908, -23404826686731362422035001224895806372743788, + -16290554801312845994593892443836977890200538, 106546919632371080123340417844400643273413930, + 71464722190324769665566305663467323580209082, 66914770574919363333824892985354869540835792, + 37889333013761252096450275122145531014043130], + ![29865756619184928073225462412516539382112256, -23403931091339823343056644152458162390380752, + -16293748418073633590582854053589670496173400, -22548475005260415193507856140295195095206952, + -16664051943111110820470103449027411755245676, 106523506149132018004104754798102990122876554, + 66914770574919363333824892985354869540835792, 71445283054677907499461363758036158056659496, + 37879588249445914140584270711424146020528682], + ![18407068109028552160895525904549899900742434, -11569000816502831689443884303536024431298535, + -8703681490239584895138845856361753978496988, -11571545044168209338837342295131992604687876, + -8705490834286566142854797777968511588208344, 58340112505225824127626498182465974256394319, + 37889333013761252096450275122145531014043130, 37879588249445914140584270711424146020528682, + 27087175461465478184084483310874801793199565]] + +/-- Exact integer matrix after 8 fraction-free Schur steps in moment block 6. -/ +def momentBlock6Stage8 : Fin 8 → Fin 8 → ℤ := + ![![2770713039979204806122917869763712593732481275339, + 1609850602281304862043870419028143930384506244102, + 2539823519659152969443728399077447451656509957890, + 1619384290609382012709971009732363126996635592118, + -5264685751423612513512455520847791659997118808213, + -3154675314199559819871297405593582996191410274252, + -3285998874620527684417503501963748679481993341040, + -1587722447727060215458389657231981009219007904427], + ![1609850602281304862043870419028143930384506244102, + 2086355024880047990268338540290518167444354081876, + 1619514356403202862419084807802300109074628431300, + 1890592217311301612229417007090474481208987732970, + -2181804249951776919738798084122488718837997598858, + -2220481745533344208274354265134444520639055879620, + -2164005432850137029171078210241781195987359483144, + -1128629909903360663962007071971195850782499039594], + ![2539823519659152969443728399077447451656509957890, + 1619514356403202862419084807802300109074628431300, + 2769927874299254162385034955980384985779155364946, + 1608903882491043950521478299304866669970249553100, + -5264152693491180447899812871456025454179813205542, + -3285480012191313222260928041192515857245066363812, + -3154404647524207436332698437793773837432783292280, + -1587793191576624092577265215270292887423502943608], + ![1619384290609382012709971009732363126996635592118, + 1890592217311301612229417007090474481208987732970, + 1608903882491043950521478299304866669970249553100, + 2086063402332331100570498993440333999562892514954, + -2180740278381451842941768177848259846058352354226, + -2163189542052993825486184015948959957695108546126, + -2220571484210606295249153848985868842327587725252, + -1128800289377029227985455701353879609600389766408], + ![-5264685751423612513512455520847791659997118808213, + -2181804249951776919738798084122488718837997598858, + -5264152693491180447899812871456025454179813205542, + -2180740278381451842941768177848259846058352354226, + 18598006711192337656437621331928656279633718795983, + 10621115363430046695952769022418717516475793409822, + 10620152501746332921980012409221443982298372260958, + 5424928909091217520896182714345888745730903792665], + ![-3154675314199559819871297405593582996191410274252, + -2220481745533344208274354265134444520639055879620, + -3285480012191313222260928041192515857245066363812, + -2163189542052993825486184015948959957695108546126, + 10621115363430046695952769022418717516475793409822, + 7826318534686327105658501516665895374786343682158, + 7130593548449109109139542903245027984983122479984, + 3881163385024633905222726812694621909236721362878], + ![-3285998874620527684417503501963748679481993341040, + -2164005432850137029171078210241781195987359483144, + -3154404647524207436332698437793773837432783292280, + -2220571484210606295249153848985868842327587725252, + 10620152501746332921980012409221443982298372260958, + 7130593548449109109139542903245027984983122479984, + 7826213887929412109922653882045002196110283608440, + 3880555678530882881416765496736733228457513003838], + ![-1587722447727060215458389657231981009219007904427, + -1128629909903360663962007071971195850782499039594, + -1587793191576624092577265215270292887423502943608, + -1128800289377029227985455701353879609600389766408, + 5424928909091217520896182714345888745730903792665, + 3881163385024633905222726812694621909236721362878, + 3880555678530882881416765496736733228457513003838, + 2964897130106491427795826250602926347363574648209]] + +/-- Exact integer matrix after 9 fraction-free Schur steps in moment block 6. -/ +def momentBlock6Stage9 : Fin 7 → Fin 7 → ℤ := + ![![72823849152673654694121963583888972873805321517023260, + 9099307126590346644300296808696064350318973213414320, + 60087376618606485649229349507354504614575783496641549, + 55494766609506289855738093695309398536608165951939144, + -24519817247292643104629800378325605894871150488907746, + -16118866914358395119825406211939521299491649436016956, + -13041629129580779823832263161267953893777437416085302], + ![9099307126590346644300296808696064350318973213414320, + 27949927887757047634059269497315033324408122046795849, + 7875043179557810537564376595893295282378926315299980, + -27724132181497235239583042039601076978088223603864028, + -24908978267301805524585970026034783786119844343967498, + -8999281984287110874064096863985930034563626544161220, + -8375683299094092736031618995106606020451427088410097], + ![60087376618606485649229349507354504614575783496641549, + 7875043179557810537564376595893295282378926315299980, + 72102374510513793300436279362113227423322788100949997, + 56708237815856436897708231677343927850275879498220420, + -20208122960343503143681604726087462469603029423404913, + -18982444333819274687039370163680476007029412999108118, + -12706752535964872812702327857402871156637712793072571], + ![55494766609506289855738093695309398536608165951939144, + -27724132181497235239583042039601076978088223603864028, + 56708237815856436897708231677343927850275879498220420, + 543776188393823388927519234826929650312115490959173478, + 292743168043706137448084936836628797523869873209013247, + 276894346434930675535082240276484222055388785312479957, + 152359427681254224504544052279436778356228733450755414], + ![-24519817247292643104629800378325605894871150488907746, + -24908978267301805524585970026034783786119844343967498, + -20208122960343503143681604726087462469603029423404913, + 292743168043706137448084936836628797523869873209013247, + 267916889994315008119505955970770481858581063194140093, + 214437728590925148129668779524150822068797531081057416, + 131185947989428910288426267593611125113534029096230923], + ![-16118866914358395119825406211939521299491649436016956, + -8999281984287110874064096863985930034563626544161220, + -18982444333819274687039370163680476007029412999108118, + 276894346434930675535082240276484222055388785312479957, + 214437728590925148129668779524150822068797531081057416, + 248595777864127067944408165559939747236805487444958260, + 126386187413348221198726434411838932660659622332968917], + ![-13041629129580779823832263161267953893777437416085302, + -8375683299094092736031618995106606020451427088410097, + -12706752535964872812702327857402871156637712793072571, + 152359427681254224504544052279436778356228733450755414, + 131185947989428910288426267593611125113534029096230923, + 126386187413348221198726434411838932660659622332968917, + 130025345680076109085531063817831445498564221367159337]] + +/-- Exact integer matrix after 10 fraction-free Schur steps in moment block 6. -/ +def momentBlock6Stage10 : Fin 6 → Fin 6 → ℤ := + ![![704736980685940358538302473262364204456102735698690035060, + 9650029400123665812086323716323834185897860794413634080, + -910935888615672562273219672466402938889160639175615768240, + -574167842396327754633055705466710670266656541515500364840, + -183596000661090989093343161785596062338292128294216869520, + -177311652687909104795565265905024970993472650820603463220], + ![9650029400123665812086323716323834185897860794413634080, + 592006314738855789014656859659427642625609068519657193321, + 286993710036016150417021940465152412660867871934580913496, + 612909171839932584820163065779413927570256191318298266, + -149360193493707048742664058520869725232514982402611090324, + -51148331359213422117757879938000669115876539087672521058], + ![-910935888615672562273219672466402938889160639175615768240, + 286993710036016150417021940465152412660867871934580913496, + 13180796953133106855447779114662789476045997294486818567096, + 8185404088511136386680651376998811354897992557138791723996, + 7600579551026193296183798695724852643441928885998507383556, + 4265740252657084748690734457757440952821949532310726436552], + ![-574167842396327754633055705466710670266656541515500364840, + 612909171839932584820163065779413927570256191318298266, + 8185404088511136386680651376998811354897992557138791723996, + 6824783899201900278312313635428665577436000729932736877176, + 5493513369644460343577555662792213965504636781558199824056, + 3332603265380985058024986068005410198697041317864155421592], + ![-183596000661090989093343161785596062338292128294216869520, + -149360193493707048742664058520869725232514982402611090324, + 7600579551026193296183798695724852643441928885998507383556, + 5493513369644460343577555662792213965504636781558199824056, + 6440177419708496795110920531421275113735956660635274558176, + 3245992000294834324087581520864848971388140107652151953772], + ![-177311652687909104795565265905024970993472650820603463220, + -51148331359213422117757879938000669115876539087672521058, + 4265740252657084748690734457757440952821949532310726436552, + 3332603265380985058024986068005410198697041317864155421592, + 3245992000294834324087581520864848971388140107652151953772, + 3356125999084470677066403336643336169443009573111891817544]] + +/-- Exact integer matrix after 11 fraction-free Schur steps in moment block 6. -/ +def momentBlock6Stage11 : Fin 5 → Fin 5 → ℤ := + ![![5727733765543955840299661389508292077093372067450334431748211, + 2898029165568474614299757091917757349535978648327834603210696, + 82015389030120329161304716807975374455254780654078969394366, + -1421072165196019866213508355656489187431629680534507687651484, + -471480955034531438056574652118318304159852819492958770797238], + ![2898029165568474614299757091917757349535978648327834603210696, + 116159622885120074998696771817896744800031337256796769616136616, + 72030343497865814813918304628397092958654716791261774753492116, + 71256399635866955434849795125392363104393419928283358233930156, + 39062826137918030998426353435245303156878355906936088413418632], + ![82015389030120329161304716807975374455254780654078969394366, + 72030343497865814813918304628397092958654716791261774753492116, + 61518430292297080809771232475828276827353383100796312493818296, + 51714749353792464663087513820934597649779246263346460507912456, + 30852559156860608609437821708791959687883724149832030132270672], + ![-1421072165196019866213508355656489187431629680534507687651484, + 71256399635866955434849795125392363104393419928283358233930156, + 51714749353792464663087513820934597649779246263346460507912456, + 61860554623306327044063965475303452384468341248567456292814816, + 30965362550210632265895448850614557700136557229899852705690292], + ![-471480955034531438056574652118318304159852819492958770797238, + 39062826137918030998426353435245303156878355906936088413418632, + 30852559156860608609437821708791959687883724149832030132270672, + 30965362550210632265895448850614557700136557229899852705690292, + 32046461542080902552327730684663189729021232963397899925644124]] + +/-- Exact integer matrix after 12 fraction-free Schur steps in moment block 6. -/ +def momentBlock6Stage12 : Fin 4 → Fin 4 → ℤ := + ![![932167374710573499987367421770086084450819519297600064050325156326, + 585087712022271841855730770394276404693765139834437919506535891679, + 584978518347801803709956978954548602081256600528878142039127542813, + 319421060588196264636832542788022726587800440315841231551748336250], + ![585087712022271841855730770394276404693765139834437919506535891679, + 499980096860331963457068301895797465749493446769815939633803102525, + 420475828511804016613183149765216908781748422426515527567687163256, + 250808341798809472067583590910377400680814560890785898952020992565], + ![584978518347801803709956978954548602081256600528878142039127542813, + 420475828511804016613183149765216908781748422426515527567687163256, + 499904717685721827821840853605793488001452448439161615788654604532, + 250719557823620187828492998990315124561253362047178020849581037857], + ![319421060588196264636832542788022726587800440315841231551748336250, + 250808341798809472067583590910377400680814560890785898952020992565, + 250719557823620187828492998990315124561253362047178020849581037857, + 260141457840598651584528201401595712397153407976701201042702166892]] + +/-- Exact integer matrix after 13 fraction-free Schur steps in moment block 6. -/ +def momentBlock6Stage13 : Fin 3 → Fin 3 → ℤ := + ![![21603221903004388993871617043925855814512118649515841070832975772677119, + 8675351953284917446100220227858187636087963532388357285566180040362239, + 8189280078100591395962043584006234244376119569193524367305905520084040], + ![8675351953284917446100220227858187636087963532388357285566180040362239, + 21613260397480008869661193988863928265585492667110750595514681723120533, + 8180920268144362646487778356436617868297653232112958316911976340987612], + ![8189280078100591395962043584006234244376119569193524367305905520084040, + 8180920268144362646487778356436617868297653232112958316911976340987612, + 24523759589936909462376167671515309103764349839267102272067328688364172]] + +/-- Exact integer matrix after 14 fraction-free Schur steps in moment block 6. -/ +def momentBlock6Stage14 : Fin 2 → Fin 2 → ℤ := + ![![420154512511679452042481743615683038481271574411451746971674212786787730231, + 113380227488413065142343366830880242204566135292774811775361694100652690418], + ![113380227488413065142343366830880242204566135292774811775361694100652690418, + 496400029300998729213289489577047492884001131389503486626029409738433307518]] + +/-- Exact integer matrix after 15 fraction-free Schur steps in moment block 6. -/ +def momentBlock6Stage15 : Fin 1 → Fin 1 → ℤ := + ![![9059280009950859153457221477598227105006560541472811809786935847679127895326386]] + +/-- Exact integer matrix after 16 fraction-free Schur steps in moment block 6. -/ +def momentBlock6Stage16 : Fin 0 → Fin 0 → ℤ := fun i => Fin.elim0 i + +theorem momentBlock6Stage15_psd : IsPSD (fun i j => (momentBlock6Stage15 i j : ℝ)) := by + apply integer_schur_step momentBlock6Stage15 momentBlock6Stage16 + (420154512511679452042481743615683038481271574411451746971674212786787730231) + · decide + · decide + · decide +kernel + · decide +kernel + · exact quadraticForm_zero _ + +theorem momentBlock6Stage14_psd : IsPSD (fun i j => (momentBlock6Stage14 i j : ℝ)) := by + apply integer_schur_step momentBlock6Stage14 momentBlock6Stage15 + (21603221903004388993871617043925855814512118649515841070832975772677119) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock6Stage15_psd + +theorem momentBlock6Stage13_psd : IsPSD (fun i j => (momentBlock6Stage13 i j : ℝ)) := by + apply integer_schur_step momentBlock6Stage13 momentBlock6Stage14 + (932167374710573499987367421770086084450819519297600064050325156326) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock6Stage14_psd + +theorem momentBlock6Stage12_psd : IsPSD (fun i j => (momentBlock6Stage12 i j : ℝ)) := by + apply integer_schur_step momentBlock6Stage12 momentBlock6Stage13 + (5727733765543955840299661389508292077093372067450334431748211) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock6Stage13_psd + +theorem momentBlock6Stage11_psd : IsPSD (fun i j => (momentBlock6Stage11 i j : ℝ)) := by + apply integer_schur_step momentBlock6Stage11 momentBlock6Stage12 + (704736980685940358538302473262364204456102735698690035060) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock6Stage12_psd + +theorem momentBlock6Stage10_psd : IsPSD (fun i j => (momentBlock6Stage10 i j : ℝ)) := by + apply integer_schur_step momentBlock6Stage10 momentBlock6Stage11 + (72823849152673654694121963583888972873805321517023260) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock6Stage11_psd + +theorem momentBlock6Stage9_psd : IsPSD (fun i j => (momentBlock6Stage9 i j : ℝ)) := by + apply integer_schur_step momentBlock6Stage9 momentBlock6Stage10 + (2770713039979204806122917869763712593732481275339) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock6Stage10_psd + +theorem momentBlock6Stage8_psd : IsPSD (fun i j => (momentBlock6Stage8 i j : ℝ)) := by + apply integer_schur_step momentBlock6Stage8 momentBlock6Stage9 + (43791589553444026504852905105581378581835506) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock6Stage9_psd + +theorem momentBlock6Stage7_psd : IsPSD (fun i j => (momentBlock6Stage7 i j : ℝ)) := by + apply integer_schur_step momentBlock6Stage7 momentBlock6Stage8 + (285800915315320132474203561322721341926) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock6Stage8_psd + +theorem momentBlock6Stage6_psd : IsPSD (fun i j => (momentBlock6Stage6 i j : ℝ)) := by + apply integer_schur_step momentBlock6Stage6 momentBlock6Stage7 + (1999619169481118721904681517406368) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock6Stage7_psd + +theorem momentBlock6Stage5_psd : IsPSD (fun i j => (momentBlock6Stage5 i j : ℝ)) := by + apply integer_schur_step momentBlock6Stage5 momentBlock6Stage6 (56679125811396949140140088272) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock6Stage6_psd + +theorem momentBlock6Stage4_psd : IsPSD (fun i j => (momentBlock6Stage4 i j : ℝ)) := by + apply integer_schur_step momentBlock6Stage4 momentBlock6Stage5 (1730475333139569419414492) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock6Stage5_psd + +theorem momentBlock6Stage3_psd : IsPSD (fun i j => (momentBlock6Stage3 i j : ℝ)) := by + apply integer_schur_step momentBlock6Stage3 momentBlock6Stage4 (25728412163205291404) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock6Stage4_psd + +theorem momentBlock6Stage2_psd : IsPSD (fun i j => (momentBlock6Stage2 i j : ℝ)) := by + apply integer_schur_step momentBlock6Stage2 momentBlock6Stage3 (30067707427060) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock6Stage3_psd + +theorem momentBlock6Stage1_psd : IsPSD (fun i j => (momentBlock6Stage1 i j : ℝ)) := by + apply integer_schur_step momentBlock6Stage1 momentBlock6Stage2 (5373335) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock6Stage2_psd + +theorem momentBlock6Stage0_psd : IsPSD (fun i j => (momentBlock6Stage0 i j : ℝ)) := by + apply integer_schur_step momentBlock6Stage0 momentBlock6Stage1 (1) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock6Stage1_psd + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/MomentBlock7.lean b/LeanPool/PersistentSOS/MomentBlock7.lean new file mode 100644 index 0000000000..b3dd9d8aff --- /dev/null +++ b/LeanPool/PersistentSOS/MomentBlock7.lean @@ -0,0 +1,344 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.PSD + +/-! +# Exact moment block certificate + +Generated by `scripts/generate_moments.py`; all identities below are checked +by the Lean kernel with integer arithmetic. No external verifier is trusted. +-/ + +@[expose] public section + + +namespace PersistentSOS + + +/-- Exact integer matrix after 0 fraction-free Schur steps in moment block 7. -/ +def momentBlock7Stage0 : Fin 11 → Fin 11 → ℤ := + ![![76574425, 39889758, 4143478, 7594848, 10073399, 5911137, 10073398, 5911137, 5506403, + 5975451, 5975450], + ![39889758, 22979581, 2022744, 3598238, 4832959, 2789333, 4832959, 2789334, 2769171, 2933691, + 2933688], + ![4143478, 2022744, 291310, 474628, 583593, 301842, 583593, 301842, 331233, 297189, 297189], + ![7594848, 3598238, 474628, 1305861, 883142, 470215, 883143, 470216, 900626, 454472, 454472], + ![10073399, 4832959, 583593, 883142, 1779888, 1136477, 1201302, 630691, 615867, 1128524, 615337], + ![5911137, 2789333, 301842, 470215, 1136477, 784189, 630690, 338068, 326209, 777072, 326753], + ![10073398, 4832959, 583593, 883143, 1201302, 630690, 1779896, 1136476, 615867, 615337, 1128523], + ![5911137, 2789334, 301842, 470216, 630691, 338068, 1136476, 784192, 326209, 326753, 777071], + ![5506403, 2769171, 331233, 900626, 615867, 326209, 615867, 326209, 635359, 323085, 323085], + ![5975451, 2933691, 297189, 454472, 1128524, 777072, 615337, 326753, 323085, 780189, 321057], + ![5975450, 2933688, 297189, 454472, 615337, 326753, 1128523, 777071, 323085, 321057, 780185]] + +/-- Exact integer matrix after 1 fraction-free Schur steps in moment block 7. -/ +def momentBlock7Stage1 : Fin 10 → Fin 10 → ℤ := + ![![168455408517361, -10391875976124, -27423642903634, -31744391873867, -22202253826321, + -31744351984109, -22202177251896, -7601406068799, -13713592878183, -13713782711700], + ![-10391875976124, 5138485810266, 4875280587556, 2949391267303, -1379288523636, 2949395410781, + -1379288523636, 2548316826391, -2002072967253, -2002068823775], + ![-27423642903634, 4875280587556, 42313839061821, -8879843405002, -8887743770801, + -8879759235729, -8887667196376, 27144624278306, -10581709997848, -10581702403000], + ![-31744391873867, 2949391267303, -8879843405002, 34820532751199, 27479831256062, + -9484347438452, -11250440866988, -8308533072322, 26222974270751, -13074015098325], + ![-22202253826321, -1379288523636, -8887743770801, 27479831256062, 25107281133556, + -11250511530276, -9054177921869, -7569835905386, 24182132085813, -10300780494625], + ![-31744351984109, 2949395410781, -8879759235729, -9484347438452, -11250511530276, + 34821165493396, 27479760592774, -8308527565919, -13074019196273, 26222913745175], + ![-22202177251896, -1379288523636, -8887667196376, -11250440866988, -9054177921869, + 27479760592774, 25107510856831, -7569835905386, -10300786405762, 24182061422525], + ![-7601406068799, 2548316826391, 27144624278306, -8308533072322, -7569835905386, -8308527565919, + -7569835905386, 18331776095166, -8163193211628, -8163187705225], + ![-13713592878183, -2002072967253, -10581709997848, 26222974270751, 24182132085813, + -13074019196273, -10300786405762, -8163193211628, 24036509412924, -11121253510725], + ![-13713782711700, -2002068823775, -10581702403000, -13074015098325, -10300780494625, + 26222913745175, 24182061422525, -8163187705225, -11121253510725, 24036215066125]] + +/-- Exact integer matrix after 2 fraction-free Schur steps in moment block 7. -/ +def momentBlock7Stage2 : Fin 9 → Fin 9 → ℤ := + ![![9893833875029145018, 7003438643456064652, 2180324925983571355, -6047341261341008688, + 2180339454603238121, -6047330869465032564, 4574436999171006619, -6265407490259369553, + -6265424137267631159], + ![7003438643456064652, 83264599832005116881, -30903327257132592048, -27503375811137748171, + -30903127808142322403, -27503179932086327176, 56992925852933960948, -28189868281960158598, + -28189919559307117216], + ![2180324925983571355, -30903327257132592048, 63441555766873110118, 51248561830954301019, + -34024346528629389531, -33953793677015775860, -21429078258417915247, 52002638961975797714, + -34446543305075431497], + ![-6047341261341008688, -27503375811137748171, 51248561830954301019, 48795890078770047051, + -33953969307183024905, -26355583022149733309, -18856793855488933409, 49221894508305678270, + -26636818636952146669], + ![2180339454603238121, -30903127808142322403, -34024346528629389531, -33953969307183024905, + 63442980803964933219, 51248449689530909950, -21429062185145208722, -34446466479686912540, + 52002434259547909595], + ![-6047330869465032564, -27503179932086327176, -33953793677015775860, -26355583022149733309, + 51248449689530909950, 48796439849426677351, -18856786254082864610, -26636762886230931706, + 49221697729551535829], + ![4574436999171006619, 56992925852933960948, -21429078258417915247, -18856793855488933409, + -21429062185145208722, -18856786254082864610, 39573336094096783653, -19319461235264931981, + -19319467966210431853], + ![-6265407490259369553, -28189868281960158598, 52002638961975797714, 49221894508305678270, + -34446466479686912540, -26636762886230931706, -19319461235264931981, 50421761349914856579, + -26921528125120539369], + ![-6265424137267631159, -28189919559307117216, -34446543305075431497, -26636818636952146669, + 52002434259547909595, 49221697729551535829, -19319467966210431853, -26921528125120539369, + 50421045824523165685]] + +/-- Exact integer matrix after 3 fraction-free Schur steps in moment block 7. -/ +def momentBlock7Stage3 : Fin 8 → Fin 8 → ℤ := + ![![4599187241270072192852714, -1905680326533233653882084, -1363931558032288793597982, + -1905669216383097589928186, -1363920485571362873267040, 3157166375776657593195716, + -1395185104918514435482128, -1395187424483406074231020], + ![-1905680326533233653882084, 3697871159083478034463859, 3088235222343942773237262, + -2026560522605467427981633, -1915925708041497382323660, -1317793838436131548050031, + 3135346616199209318255247, -1942043413686858048697741], + ![-1363931558032288793597982, 3088235222343942773237262, 2648820229754926728842334, + -1915935367206050940160122, -1765025155354050432527154, -943292979477174592158090, + 2666012293681509327233436, -1789372149647067899922594], + ![-1905669216383097589928186, -2026560522605467427981633, -1915935367206050940160122, + 3697954479209210453050541, 3088229023036252098287904, -1317793288937392085964695, + -1942038576623602020281487, 3135335349312733854291709], + ![-1363920485571362873267040, -1915925708041497382323660, -1765025155354050432527154, + 3088229023036252098287904, 2648853265357213416878502, -943292815219658915503224, + -1789367891144132644368600, 2666000525244090577343286], + ![3157166375776657593195716, -1317793838436131548050031, -943292979477174592158090, + -1317793288937392085964695, -943292815219658915503224, 2200027547931825465589913, + -964545036627336960549591, -964544979901144528428853], + ![-1395185104918514435482128, 3135346616199209318255247, 2666012293681509327233436, + -1942038576623602020281487, -1789367891144132644368600, -964545036627336960549591, + 2728373066253063538448733, -1814204512285870117416129], + ![-1395187424483406074231020, -1942043413686858048697741, -1789372149647067899922594, + 3135335349312733854291709, 2666000525244090577343286, -964544979901144528428853, + -1814204512285870117416129, 2728329803230044411039809]] + +/-- Exact integer matrix after 4 fraction-free Schur steps in moment block 7. -/ +def momentBlock7Stage4 : Fin 7 → Fin 7 → ℤ := + ![![1351911151605230695767042622515, 1172867327503107959798254545810, + -1309111088519443567579695336477, -1153334253646054024711090534700, + -4470537812606448185170567055, 1188747405346204363886085893367, + -1171497587617583630527542826653], + ![1172867327503107959798254545810, 1043287267654888419762554874564, + -1153339344836544999366198077320, -1008504437609954083858115134402, + -3256794334516494450583302286, 1046970553893971938679467647756, + -1024132590677206710895170279542], + ![-1309111088519443567579695336477, -1153339344836544999366198077320, + 1351954163195098442903185887371, 1172868110026403106893006930112, + -4473827674277759871619647003, -1171493325606991141583114352807, + 1188743287819220636729829797417], + ![-1153334253646054024711090534700, -1008504437609954083858115134402, + 1172868110026403106893006930112, 1043305677197438836281156829046, + -3260251250277770359800206072, -1024128729937966041956888335640, + 1046966324914865438526850827078], + ![-4470537812606448185170567055, -3256794334516494450583302286, -4473827674277759871619647003, + -3260251250277770359800206072, 15225554265289807332461836457, -3162750178435600547099153407, + -3161983625574637821083913429], + ![1188747405346204363886085893367, 1046970553893971938679467647756, + -1171493325606991141583114352807, -1024128729937966041956888335640, + -3162750178435600547099153407, 1071551963845590510848740303221, + -1040083256819220382737591520537], + ![-1171497587617583630527542826653, -1024132590677206710895170279542, + 1188743287819220636729829797417, 1046966324914865438526850827078, + -3161983625574637821083913429, -1040083256819220382737591520537, + 1071531198670407949687779621457]] + +/-- Exact integer matrix after 5 fraction-free Schur steps in moment block 7. -/ +def momentBlock7Stage5 : Fin 6 → Fin 6 → ℤ := + ![![7569581693416363876930222540246740, -5174544288946890700295012087857995, + -2326570173225783598465831944088395, 182739060917997807361209607584090, + 4602590352695387686511780760903255, -2288453316066993030805831250700300], + ![-5174544288946890700295012087857995, 24776131438071576460927018468625124, + 16474827641193189584677657661095770, -2587554609335360682307791005932770, + -5990728293146513931999896556415089, 15971262142923539975974403963486541], + ![-2326570173225783598465831944088395, 16474827641193189584677657661095770, + 17454535919436846022698798508500085, -2079409667857604810149355215446470, + -2937029621794626588700807799626050, 13975763710529654978785677680190255], + ![182739060917997807361209607584090, -2587554609335360682307791005932770, + -2079409667857604810149355215446470, 4471140184891289773888429390855345, + 225818809886653683822075708985470, -2068179590966685021676989050964525], + ![4602590352695387686511780760903255, -5990728293146513931999896556415089, + -2937029621794626588700807799626050, 225818809886653683822075708985470, + 7723681134625007859232039044001059, -2932134556523701541778935102262336], + ![-2288453316066993030805831250700300, 15971262142923539975974403963486541, + 13975763710529654978785677680190255, -2068179590966685021676989050964525, + -2932134556523701541778935102262336, 16569966601442685500125108339393689]] + +/-- Exact integer matrix after 6 fraction-free Schur steps in moment block 7. -/ +def momentBlock7Stage6 : Fin 5 → Fin 5 → ℤ := + ![![118919828553923542045657866871874361549, 83340249970189150008472059665458527285, + -13788712827292880004674803840797166350, -15926342177565356266252272197608128909, + 80666595856660628886820430817375857856], + ![83340249970189150008472059665458527285, 93727022401916105718616829219260715625, + -11328485668697969434292588996118033150, -8524107675506045215056302491437612585, + 74314379156844150137579732671808146680], + ![-13788712827292880004674803840797166350, -11328485668697969434292588996118033150, + 25009977384770728769526813169475526480, 642261800617824702506127280167591990, + -11270758838296314076536287610210428100], + ![-15926342177565356266252272197608128909, -8524107675506045215056302491437612585, + 642261800617824702506127280167591990, 27576662359394869706003978806578540009, + -8626468457430902091870858574192299876], + ![80666595856660628886820430817375857856, 74314379156844150137579732671808146680, + -11270758838296314076536287610210428100, -8626468457430902091870858574192299876, + 88904287182091225160992129928550702924]] + +/-- Exact integer matrix after 7 fraction-free Schur steps in moment block 7. -/ +def momentBlock7Stage7 : Fin 4 → Fin 4 → ℤ := + ![![554905718695829534725527603952408164455435, -26160864328293574657837594103920562163040, + 41431604485551872251751836462180786799835, 279365366691807318251466831034699541894814], + ![-26160864328293574657837594103920562163040, 367794910479969691613788459340577684618023, + -18921269531183719366623483494234533810086, -30124278055993018156976820471005183804745], + ![41431604485551872251751836462180786799835, -18921269531183719366623483494234533810086, + 399726656935802968526549109009978602494959, 34198145738249839003557025865289435728607], + ![279365366691807318251466831034699541894814, -30124278055993018156976820471005183804745, + 34198145738249839003557025865289435728607, 537068370084058385638680585514775226114171]] + +/-- Exact integer matrix after 8 fraction-free Schur steps in moment block 7. -/ +def momentBlock7Stage8 : Fin 3 → Fin 3 → ℤ := + ![![1710455781711110105489034302522637020408021345, + -79176317343238464616295111900358867098740490, -79109554926238300805467841257092545054874735], + ![-79176317343238464616295111900358867098740490, 1850776549840007637972874226273920889205468060, + 62245223098817672905271272081157383747663895], + ![-79109554926238300805467841257092545054874735, 62245223098817672905271272081157383747663895, + 1849794979175375364458536820010498274561964761]] + +/-- Exact integer matrix after 9 fraction-free Schur steps in moment block 7. -/ +def momentBlock7Stage9 : Fin 2 → Fin 2 → ℤ := + ![![5693584431832039955382298029046993389648193182760, + 180578601249692850469674007294113615470253140675], + ![180578601249692850469674007294113615470253140675, + 5690577856814233892476020259897020320265497075272]] + +/-- Exact integer matrix after 10 fraction-free Schur steps in moment block 7. -/ +def momentBlock7Stage10 : Fin 1 → Fin 1 → ℤ := + ![![18923129851434570969679744770567303891184915294505751]] + +/-- Exact integer matrix after 11 fraction-free Schur steps in moment block 7. -/ +def momentBlock7Stage11 : Fin 0 → Fin 0 → ℤ := fun i => Fin.elim0 i + +theorem momentBlock7Stage10_psd : IsPSD (fun i j => (momentBlock7Stage10 i j : ℝ)) := by + apply integer_schur_step momentBlock7Stage10 momentBlock7Stage11 + (5693584431832039955382298029046993389648193182760) + · decide + · decide + · decide +kernel + · decide +kernel + · exact quadraticForm_zero _ + +theorem momentBlock7Stage9_psd : IsPSD (fun i j => (momentBlock7Stage9 i j : ℝ)) := by + apply integer_schur_step momentBlock7Stage9 momentBlock7Stage10 + (1710455781711110105489034302522637020408021345) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock7Stage10_psd + +theorem momentBlock7Stage8_psd : IsPSD (fun i j => (momentBlock7Stage8 i j : ℝ)) := by + apply integer_schur_step momentBlock7Stage8 momentBlock7Stage9 + (554905718695829534725527603952408164455435) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock7Stage9_psd + +theorem momentBlock7Stage7_psd : IsPSD (fun i j => (momentBlock7Stage7 i j : ℝ)) := by + apply integer_schur_step momentBlock7Stage7 momentBlock7Stage8 + (118919828553923542045657866871874361549) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock7Stage8_psd + +theorem momentBlock7Stage6_psd : IsPSD (fun i j => (momentBlock7Stage6 i j : ℝ)) := by + apply integer_schur_step momentBlock7Stage6 momentBlock7Stage7 + (7569581693416363876930222540246740) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock7Stage7_psd + +theorem momentBlock7Stage5_psd : IsPSD (fun i j => (momentBlock7Stage5 i j : ℝ)) := by + apply integer_schur_step momentBlock7Stage5 momentBlock7Stage6 (1351911151605230695767042622515) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock7Stage6_psd + +theorem momentBlock7Stage4_psd : IsPSD (fun i j => (momentBlock7Stage4 i j : ℝ)) := by + apply integer_schur_step momentBlock7Stage4 momentBlock7Stage5 (4599187241270072192852714) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock7Stage5_psd + +theorem momentBlock7Stage3_psd : IsPSD (fun i j => (momentBlock7Stage3 i j : ℝ)) := by + apply integer_schur_step momentBlock7Stage3 momentBlock7Stage4 (9893833875029145018) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock7Stage4_psd + +theorem momentBlock7Stage2_psd : IsPSD (fun i j => (momentBlock7Stage2 i j : ℝ)) := by + apply integer_schur_step momentBlock7Stage2 momentBlock7Stage3 (168455408517361) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock7Stage3_psd + +theorem momentBlock7Stage1_psd : IsPSD (fun i j => (momentBlock7Stage1 i j : ℝ)) := by + apply integer_schur_step momentBlock7Stage1 momentBlock7Stage2 (76574425) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock7Stage2_psd + +theorem momentBlock7Stage0_psd : IsPSD (fun i j => (momentBlock7Stage0 i j : ℝ)) := by + apply integer_schur_step momentBlock7Stage0 momentBlock7Stage1 (1) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlock7Stage1_psd + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/MomentBlockFull0.lean b/LeanPool/PersistentSOS/MomentBlockFull0.lean new file mode 100644 index 0000000000..603d366b90 --- /dev/null +++ b/LeanPool/PersistentSOS/MomentBlockFull0.lean @@ -0,0 +1,7361 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.PSD + +/-! +# Exact moment block certificate + +Generated by `scripts/generate_moments.py`; all identities below are checked +by the Lean kernel with integer arithmetic. No external verifier is trusted. +-/ + +@[expose] public section + + +namespace PersistentSOS + + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger0 : ℤ := Int.ofNat (181355688403183751340640073158732082 * 10 ^ 60 + + 150306678330376594572253802493709192464704682258716141755016) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger1 : ℤ := Int.ofNat (94353158036457576410171530657379369 * 10 ^ 60 + + 721941356954919870268065016395429943807580456119752309555222) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger2 : ℤ := Int.ofNat (83355574141259580777961072865016599 * 10 ^ 60 + + 43795880563393368375055477538852588249585872321946119369163) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger3 : ℤ := Int.ofNat (53588648925373159441088575844936516 * 10 ^ 60 + + 676918229567509702495165670405410321022618435083364571634768) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger4 : ℤ := Int.ofNat (55722116089257953863020702891822085 * 10 ^ 60 + + 331377341314507836064106007752835074098072417965937108012110) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger5 : ℤ := Int.ofNat (53411055873977991097042500580422328 * 10 ^ 60 + + 715300727844299309186703955147407773716256133194575921301924) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger6 : ℤ := Int.ofNat (1277540979817846465782226392934510 * 10 ^ 60 + + 925997034375820374927659220928515962016249163559305543239859) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger7 : ℤ := Int.ofNat (18571477337002863093090802470203599 * 10 ^ 60 + + 894865097490924570229920729741178121698636405440829498847105) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger8 : ℤ := Int.ofNat (37104540634320479205280292071239648 * 10 ^ 60 + + 336360894653256094108512852601860584918331509245026951067641) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger9 : ℤ := Int.ofNat (20820886267387004914547629549922843 * 10 ^ 60 + + 201031015453911525318219285025079412739389178445293802992486) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger10 : ℤ := Int.ofNat (15772833310343474736617628872753760 * 10 ^ 60 + + 372143032272584796533272149827333985964188234489391976059634) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger11 : ℤ := Int.ofNat (10794253535614276429342207475969779 * 10 ^ 60 + + 18980416019609274867488027654664373724391152360715588036026) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger12 : ℤ := Int.ofNat (15093999109860459998616985432514850 * 10 ^ 60 + + 584303652356686212530693292594113360245598845616813933892687) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger13 : ℤ := Int.ofNat (3351895751375130471232363555496095 * 10 ^ 60 + + 38537446492317066548487997000778123136074348129292802299549) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger14 : ℤ := Int.ofNat (83251032693425950311280054782274428 * 10 ^ 60 + + 786316444549080230130264331030056531612104960243044169678758) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger15 : ℤ := Int.ofNat (41608816494757001909793743275950811 * 10 ^ 60 + + 738277425075496552291097298925085035089492797650625747800834) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger16 : ℤ := Int.ofNat (41095756611551676802424763741106662 * 10 ^ 60 + + 944308242811983472448689095141312330284198738824833745146372) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger17 : ℤ := Int.ofNat (32118749764848380578038228102443829 * 10 ^ 60 + + 883455047556994050788059107960088500551322268042250456908610) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger18 : ℤ := Int.ofNat (30902194650016455148172087437641909 * 10 ^ 60 + + 31554893557346870296823835756054153871258587479936802520713) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger19 : ℤ := Int.ofNat (9350585156974748475101212789860292 * 10 ^ 60 + + 915913043444274900195543236975972676259514527882506887692966) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger20 : ℤ := Int.ofNat (11720479407219885323620588096628365 * 10 ^ 60 + + 925859507810217238447550682111567823989902830927967054538587) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger21 : ℤ := Int.ofNat (15792204200890400559784873273347828 * 10 ^ 60 + + 49209840438891576374380807748446964975080615993275618388749) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger22 : ℤ := Int.ofNat (11779912097202474607128375009990054 * 10 ^ 60 + + 450044339954417775050339545752606552216165375392725755327807) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger23 : ℤ := Int.ofNat (12684218893533233775868564552173131 * 10 ^ 60 + + 726040998151113192402038793534323831312279741589752796425612) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger24 : ℤ := Int.ofNat (17253793520661376049866846273375003 * 10 ^ 60 + + 14451804070186120559106628373135945547300283816615092998117) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger25 : ℤ := Int.ofNat (16905249444988101346622237766742157 * 10 ^ 60 + + 185367663340328305178852872584090296118916851767627140187944) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger26 : ℤ := Int.ofNat (4142470543081585942876767376671185 * 10 ^ 60 + + 194893093753464006050568660955851807608253731945963854704120) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger27 : ℤ := Int.ofNat (128588641136858771057336097353332629 * 10 ^ 60 + + 301436131461483107490091560496180248170328608265283187298436) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger28 : ℤ := Int.ofNat (26393061377717783448333722884786090 * 10 ^ 60 + + 988463261954937989141919538318257786218849590731492105045764) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger29 : ℤ := Int.ofNat (31263360909780268954313365349560274 * 10 ^ 60 + + 296665351607625796092890006397890090066002989412843904075621) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger30 : ℤ := Int.ofNat (30931076240249347885828671890208589 * 10 ^ 60 + + 574792695582599007455200015059064681346832610795564246802243) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger31 : ℤ := Int.ofNat (5073972157739184413149596740828942 * 10 ^ 60 + + 651234006286558616862849738167822012163028570329054339488414) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger32 : ℤ := Int.ofNat (14923990043650759406482862284436719 * 10 ^ 60 + + 550203165788823785645852886792172817174036019576029706498041) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger33 : ℤ := Int.ofNat (19134506688726273759548712095983681 * 10 ^ 60 + + 854879703515769256985103004158086321028091996389739316536451) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger34 : ℤ := Int.ofNat (11315923482965386846312811813813634 * 10 ^ 60 + + 408242479466470936785136936862507485357766199715790927021529) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger35 : ℤ := Int.ofNat (4621278001948057118106753335060423 * 10 ^ 60 + + 723859996820863582386140841768997393051793911434946526479449) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger36 : ℤ := Int.ofNat (9080113026914863301798591614593211 * 10 ^ 60 + + 746480927443376003277828188624194982492426249324444155529453) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger37 : ℤ := Int.ofNat (2805981671281837526522144042126582 * 10 ^ 60 + + 955068126424696725656482956423549165991045578298153694589835) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger38 : ℤ := Int.ofNat (334217908068992489284535365834609 * 10 ^ 60 + + 275652687060040897586254589369150108880709596841681349812345) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger39 : ℤ := Int.ofNat (49996453488478404321363113060955169 * 10 ^ 60 + + 341971307813455858247207459637417122208819861911847040530326) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger40 : ℤ := Int.ofNat (6443567015217770180943072693713044 * 10 ^ 60 + + 140429886050022647809444932387399464788653997404713653291226) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger41 : ℤ := Int.ofNat (13731880090346459187708551620078330 * 10 ^ 60 + + 258899237238821902529706295847241955601096250563428069941431) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger42 : ℤ := Int.ofNat (3502867794645953462999766364439439 * 10 ^ 60 + + 405672870973124143829063500061988922170235225744580953131984) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger43 : ℤ := Int.ofNat (2378597139110949964413458575094080 * 10 ^ 60 + + 4228988885906453326424132670632788303433634901207729085438) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger44 : ℤ := Int.ofNat (14472148792462571089417384810388861 * 10 ^ 60 + + 652090369409440930267533615367518413731273320959228489287255) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger45 : ℤ := Int.ofNat (5198736568503684657393277550626734 * 10 ^ 60 + + 392892957367269747573090536162241754532539888345562415017865) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger46 : ℤ := Int.ofNat (186640103281238613670211054035811 * 10 ^ 60 + + 875481605838392354878513933890519648342525415042867204633618) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger47 : ℤ := Int.ofNat (12239564687288790540511752195933079 * 10 ^ 60 + + 486503149811282230740556134840383461365194682508424940286037) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger48 : ℤ := Int.ofNat (16088855179781632465238198665720787 * 10 ^ 60 + + 176492453309581443088334501108417402564184242623706003368672) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger49 : ℤ := Int.ofNat (1405177900810053685860928362556769 * 10 ^ 60 + + 45800620005621526737658481612550510353281548946065773972194) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger50 : ℤ := Int.ofNat (42872243609405267423658111480364412 * 10 ^ 60 + + 809358639999334403979655085901536012210346021024870133279436) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger51 : ℤ := Int.ofNat (18846017286384482482443461463433920 * 10 ^ 60 + + 693475148610640484023639326360971383227566280104797918507770) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger52 : ℤ := Int.ofNat (17674353038677596474356373892466596 * 10 ^ 60 + + 414018970160543067301112236062645538834517569110605178122214) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger53 : ℤ := Int.ofNat (8430649052924752813824133552199588 * 10 ^ 60 + + 536166047217541157676909212118587200223273549557758136900045) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger54 : ℤ := Int.ofNat (3512431270780799711157226281042933 * 10 ^ 60 + + 925402207029136929483914264939192248250983792358724272255097) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger55 : ℤ := Int.ofNat (11986013204895620981624324488891819 * 10 ^ 60 + + 926807645174817296989581820650715216860164437487672535972791) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger56 : ℤ := Int.ofNat (17401186876678960909749610742127864 * 10 ^ 60 + + 747467614482179565508925560511062807296672268411336364008957) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger57 : ℤ := Int.ofNat (11745040401157971123038727719696509 * 10 ^ 60 + + 276707659978603125808806198733033714272398606881643785247720) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger58 : ℤ := Int.ofNat (2489284403263345485175593774855300 * 10 ^ 60 + + 612613725147031205049900763095574621388419475396605864583637) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger59 : ℤ := Int.ofNat (276529053428823728201828553622385 * 10 ^ 60 + + 81838757984044757549393640887370875926278823550371778311145) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger60 : ℤ := Int.ofNat (20325313151936507116352037655565210 * 10 ^ 60 + + 819250831810695886120538974554444405298946998585128940309570) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger61 : ℤ := Int.ofNat (2342856839598661794209997169483123 * 10 ^ 60 + + 826107957401741534679715001847408706431401852132544619386968) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger62 : ℤ := Int.ofNat (7606454514383429583792389199328960 * 10 ^ 60 + + 873776347471858711602529277072105633127329709451855711918505) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger63 : ℤ := Int.ofNat (9169370951330358626393034156306859 * 10 ^ 60 + + 340213365926354077110543803465305012851417798285251283525284) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger64 : ℤ := Int.ofNat (4553408286307385939919604959200993 * 10 ^ 60 + + 615232406006140695514148683470317034365521593567177853518178) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger65 : ℤ := Int.ofNat (4528284768834545796709879939021070 * 10 ^ 60 + + 841035879779394332361123359067194243777024565725865985905469) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger66 : ℤ := Int.ofNat (4446528454854447996020258994371955 * 10 ^ 60 + + 282981543357431082016860976614862640502852139102494676829766) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger67 : ℤ := Int.ofNat (3509707191876428690465206477057279 * 10 ^ 60 + + 448269757950888380007164222173960659852474085213494735400043) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger68 : ℤ := Int.ofNat (1559347879160683819048283919246998 * 10 ^ 60 + + 586961821859645395822880410539444858335965491127551433734082) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger69 : ℤ := Int.ofNat (25756291124809538680885693480323994 * 10 ^ 60 + + 361619360473068567706878917644521261569055638596263853673622) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger70 : ℤ := Int.ofNat (2311290685033130537632021548765397 * 10 ^ 60 + + 48306576397413013774514475170069156017863991206400974792161) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger71 : ℤ := Int.ofNat (8148574034121854058671205861220021 * 10 ^ 60 + + 380863810642856344644476244118977625827948581702366335039145) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger72 : ℤ := Int.ofNat (5439074913649049080826465444740667 * 10 ^ 60 + + 164054365761290291428625099593134276839142132894358609965220) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger73 : ℤ := Int.ofNat (22360334888385646278434224517283785 * 10 ^ 60 + + 923045263436472608876863827266957614038775270343846401130348) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger74 : ℤ := Int.ofNat (7038102190302287778362128825831719 * 10 ^ 60 + + 884973079463994032426186343963071075426067610627195580977809) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger75 : ℤ := Int.ofNat (8543237462198106246089808297638342 * 10 ^ 60 + + 309368276202777761009268578706663781387888946114200529573161) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger76 : ℤ := Int.ofNat (784090705102246972926132438957031 * 10 ^ 60 + + 717529607755824533315541910851490356949040208696905014328713) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger77 : ℤ := Int.ofNat (6496095148746106252364565622317287 * 10 ^ 60 + + 961329055410338065797142077383626581482992808853472260313315) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger78 : ℤ := Int.ofNat (2042294376253905582479842559091346 * 10 ^ 60 + + 127504295171644381505531904207034915504598868366510003491840) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger79 : ℤ := Int.ofNat (555078857178626586543396876118905 * 10 ^ 60 + + 826830087871128040283710848858016715154023381729171647239381) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger80 : ℤ := Int.ofNat (1495047086755459961517470037542240 * 10 ^ 60 + + 73575338461511221404205504084606070559329220726861091507360) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger81 : ℤ := Int.ofNat (2045557990607204768243658976253782 * 10 ^ 60 + + 895165063319059196808016215049742107231165373290710236871173) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger82 : ℤ := Int.ofNat (276875609099720401317598495454175 * 10 ^ 60 + + 62699389653819284922853724428246898820141702211939135435410) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger83 : ℤ := Int.ofNat (915872201156981995639407422918014 * 10 ^ 60 + + 223552525684729685656191752896202732801624973981020227181186) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger84 : ℤ := Int.ofNat (20089335056365715692195595553350091 * 10 ^ 60 + + 860530851616027652066619467156863439831265135767433627841788) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger85 : ℤ := Int.ofNat (4985243499421685171919750482695491 * 10 ^ 60 + + 675536833000397366482592025568739510690600929195061954829876) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger86 : ℤ := Int.ofNat (10602381928485534353060984874291087 * 10 ^ 60 + + 630157505497983914058141665210942813309280554483771854417002) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger87 : ℤ := Int.ofNat (4231099609236402588730488742223890 * 10 ^ 60 + + 724188309609348045066018152263921595863622376246189167885966) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger88 : ℤ := Int.ofNat (9537712040817558997512570688484930 * 10 ^ 60 + + 507089841130126757597055496822990154016875635370450361795751) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger89 : ℤ := Int.ofNat (1674339649595103570773019291486236 * 10 ^ 60 + + 851676270021738996612813324419722805462258654044711435628611) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger90 : ℤ := Int.ofNat (13914545263894584530289227405533071 * 10 ^ 60 + + 622722051369617727804986656022766922308418968876908661048252) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger91 : ℤ := Int.ofNat (6698485123535062305188559050588588 * 10 ^ 60 + + 733433015398088100644249145601702988622402467032322061484069) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger92 : ℤ := Int.ofNat (1461613343752947897528635939753166 * 10 ^ 60 + + 423814145442567217942238042952318405103262448965390822399445) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger93 : ℤ := Int.ofNat (1510673425344664665208548606069363 * 10 ^ 60 + + 555358699414145170267475627302507603097259152124650772852801) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger94 : ℤ := Int.ofNat (790755951519150596712704392698716 * 10 ^ 60 + + 243714666077947953860645676166768605303325609733256260232520) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger95 : ℤ := Int.ofNat (49456923810312278856868438505046679 * 10 ^ 60 + + 261318893237088147674453645941926741936651957004114223877834) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger96 : ℤ := Int.ofNat (5186075732462513678556784009016675 * 10 ^ 60 + + 997958901439367770905803452087858130317564344107005066093534) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger97 : ℤ := Int.ofNat (7451526972952763143766732438816727 * 10 ^ 60 + + 286274189888238528960524603047420398208438445231948763467829) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger98 : ℤ := Int.ofNat (766955968074581024251218678959975 * 10 ^ 60 + + 605677791164662478426674211555562147151827673442772157909104) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger99 : ℤ := Int.ofNat (17742547222578322189231444011093840 * 10 ^ 60 + + 673207889673925840759749049012618093116075199884243156926721) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger100 : ℤ := Int.ofNat (3184409357839926498848025134570929 * 10 ^ 60 + + 705716720849729529299560199777433853661244008061894709713689) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger101 : ℤ := Int.ofNat (1744200229876833388163951675229390 * 10 ^ 60 + + 607529675470522768883532099895768468392412543482515131907151) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger102 : ℤ := Int.ofNat (18401002761339050191686303434484578 * 10 ^ 60 + + 894552703477537493916400946694519448735802803003735546171381) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger103 : ℤ := Int.ofNat (1281492204966407226442998876730433 * 10 ^ 60 + + 37163120005363907830622139863604542935080574148611707153700) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger104 : ℤ := Int.ofNat (9988286211928826034590750789048685 * 10 ^ 60 + + 767075837863828503454668765156055468622220764271628981474240) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger105 : ℤ := Int.ofNat (25607959669304851316835131443676007144328 * 10 + ^ 60 + 567389713490387291703358135791188393689548995967413900204764) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger106 : ℤ := Int.ofNat (1317968014386389709361921629728096381125 * 10 + ^ 60 + 578193823929956548651012624077258304112399693396440172833402) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger107 : ℤ := Int.ofNat (9906233454581196458236735776716851133584 * 10 + ^ 60 + 787721621117849148422453036583481559167950858238322762793536) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger108 : ℤ := Int.ofNat (2345068320728427353491828863089484553522 * 10 + ^ 60 + 735300528830603657387458638647172018803855474876106130650540) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger109 : ℤ := Int.ofNat (2334431859351207567596277017837018415198 * 10 + ^ 60 + 637746539433066238202766068880718983921341988921389053309680) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger110 : ℤ := Int.ofNat (7507395965681965697864450391397842403713 * 10 + ^ 60 + 239505594738728660984503340390927652478819140360849995920874) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger111 : ℤ := Int.ofNat (1542951480782576556032891832817991516947 * 10 + ^ 60 + 837280038316150571648865500911959716653832631123039110650842) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger112 : ℤ := Int.ofNat (2632597647516116959502574187272783871060 * 10 + ^ 60 + 546995404608858332981892596571969996715763368066181945827558) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger113 : ℤ := Int.ofNat (710256076882571546486915832598433139340 * 10 ^ + 60 + 296074776688528825922371601220614972638867922074937851971620) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger114 : ℤ := Int.ofNat (3356809376795372118190289974656739422440 * 10 + ^ 60 + 521689020117666166610736505587691020939785557135828783320964) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger115 : ℤ := Int.ofNat (8723741755817863884688990842341111413121 * 10 + ^ 60 + 607276741513806895944027653815139675009625811253059726055100) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger116 : ℤ := Int.ofNat (6785618443689050260860155040779439319819 * 10 + ^ 60 + 247157492966353990574425329259429755351704660802236104241790) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger117 : ℤ := Int.ofNat (1797978216130586353378088052103977853309 * 10 + ^ 60 + 96296792624134230685916342565656065241295747740947903504602) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger118 : ℤ := Int.ofNat (67670860338236638640122910071470703151701 * 10 + ^ 60 + 388653077382473127422304412456115356370700353621319088868667) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger119 : ℤ := Int.ofNat (1321080863639390077422868239097311230224 * 10 + ^ 60 + 633168823527457633220882155815745437793021392749221872960240) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger120 : ℤ := Int.ofNat (4236791198600282001591670726044168082554 * 10 + ^ 60 + 528253556044380740406412004076501203427521659935903192260086) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger121 : ℤ := Int.ofNat (4783948819979291505429092729039949491215 * 10 + ^ 60 + 851615279937688275940690001601215191876645618489630148348956) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger122 : ℤ := Int.ofNat (4243588465480053827707678424313186046695 * 10 + ^ 60 + 524021833715290524019771793101904472403937002798985588511021) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger123 : ℤ := Int.ofNat (4788482778284391169819060646462532347997 * 10 + ^ 60 + 378446571637337390556955023782060504212238920557661864480921) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger124 : ℤ := Int.ofNat (1559415514359543679632940797428287628293 * 10 + ^ 60 + 549726474334490387678124929942039868832450495787510272384673) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger125 : ℤ := Int.ofNat (15655867620539009609380201357532320497578 * 10 + ^ 60 + 919482847822783408550886939098929524144572448573861754977442) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger126 : ℤ := Int.ofNat (1970170817733039850497939071728644481405 * 10 + ^ 60 + 447275895336274462547145207189502256317075345459662659582598) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger127 : ℤ := Int.ofNat (3087443844274565270243593911730224295358 * 10 + ^ 60 + 527746015745205497903118010961246030273540905531918577251810) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger128 : ℤ := Int.ofNat (3097030100226785890817408472215965054402 * 10 + ^ 60 + 580135971080961817130906316272896808299827521378267606223401) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger129 : ℤ := Int.ofNat (1405368265512180924892256766079640281140 * 10 + ^ 60 + 158753680720153281038784112705724454013985480723191711122267) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger130 : ℤ := Int.ofNat (25607414212826262886108526057096931856026 * 10 + ^ 60 + 520304131791296207331692071444082162967261942142074170547952) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger131 : ℤ := Int.ofNat (7512246597753272435450490203529833977953 * 10 + ^ 60 + 767654181503049321397540617542242797414407912276480547138384) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger132 : ℤ := Int.ofNat (1537056077657685617090029383573656488162 * 10 + ^ 60 + 560755138579649042709532914804232387481397311479078454426216) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger133 : ℤ := Int.ofNat (2342765894874672618826718197257857793698 * 10 + ^ 60 + 359153950129722256041547537842163985961492640757426427155792) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger134 : ℤ := Int.ofNat (2330551807359891709576914398202845451687 * 10 + ^ 60 + 565890037172033744083195742568007521427769626265905798439392) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger135 : ℤ := Int.ofNat (2629703444375969690673011019547158487304 * 10 + ^ 60 + 286632321119222251322912910824492598420214933350620032257352) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger136 : ℤ := Int.ofNat (714823451825405730590603115591534698147 * 10 ^ + 60 + 229766079566398945191083590873069166181421041831613584929848) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger137 : ℤ := Int.ofNat (3353742335232401977390406837858177136533 * 10 + ^ 60 + 344780882515283497218934923891246377396016818331784242203344) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger138 : ℤ := Int.ofNat (6783835129688279093644204992396718239876 * 10 + ^ 60 + 309683799127433173120406767638910846684119079071243475203944) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger139 : ℤ := Int.ofNat (8716866827025602887902995969273466786468 * 10 + ^ 60 + 376677891076007728559286099437436763756583615631972042969616) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger140 : ℤ := Int.ofNat (1795754183346073499789954999063801873544 * 10 + ^ 60 + 41355267354744288367182376558980761679643315748168726765216) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger141 : ℤ := Int.ofNat (19303199743892698968084813203141360674303 * 10 + ^ 60 + 451366055283981877822818804553185750909469098642804432184556) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger142 : ℤ := Int.ofNat (1825492474196281947146685300993053996398 * 10 + ^ 60 + 143865195965673638378110251603725316216868464695444126457080) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger143 : ℤ := Int.ofNat (13542875923071948897171915904497092928947 * 10 + ^ 60 + 844231714609815755181277826475257985580248088357078170824434) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger144 : ℤ := Int.ofNat (2042278745366097241817205557404964170501 * 10 + ^ 60 + 508463015772514366691083795352902961984751152180882735794770) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger145 : ℤ := Int.ofNat (5912862481546519447981943307848767642805 * 10 + ^ 60 + 591301752923845375931863735750147763450735389409475895642398) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger146 : ℤ := Int.ofNat (4189293317709281151733896164411483104807 * 10 + ^ 60 + 84980665256475172669996009779857072050481166006954849867476) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger147 : ℤ := Int.ofNat (16676609280983535155736931709856174592369 * 10 + ^ 60 + 126047887097226994546444990073308462802993788506462445811412) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger148 : ℤ := Int.ofNat (6317954883971270117023379165424007896058 * 10 + ^ 60 + 527366621313125270880013941438091163458022214556840017827460) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger149 : ℤ := Int.ofNat (5342349107495013996661486916582175572070 * 10 + ^ 60 + 412586177926743091712823408143744560458278189220009491415922) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger150 : ℤ := Int.ofNat (564709957579648254874555557005544654082 * 10 ^ + 60 + 317944126146894673011678770934032497002894996973459865807670) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger151 : ℤ := Int.ofNat (3444566088900140226526394155580160283049 * 10 + ^ 60 + 250308937484951317303025452997461043770889299985469251915264) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger152 : ℤ := Int.ofNat (2038232583574299659342730865955503829507 * 10 + ^ 60 + 858329854322099895484385328657688056232721594269258010508924) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger153 : ℤ := Int.ofNat (1601865441193750580300877383346213321820 * 10 + ^ 60 + 964523800389663058333063048916332572498365160180665622811860) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger154 : ℤ := Int.ofNat (1318005258582600507338333512999272511600 * 10 + ^ 60 + 565706004948492196239236123053670172523502595296504091249940) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger155 : ℤ := Int.ofNat (1183275981291866599766233170550851005051 * 10 + ^ 60 + 978253504191969580162889288274723297315149985743736364669096) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger156 : ℤ := Int.ofNat (87681593024872011826564664021251158978 * 10 ^ + 60 + 639751513230810087665659995697631201803232276142700059005472) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger157 : ℤ := Int.ofNat (950123876997745217358856034531727501505 * 10 ^ + 60 + 335066516432404762205420707284184004477925055186691163109992) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger158 : ℤ := Int.ofNat (701342089272607445858575863532299017121 * 10 ^ + 60 + 770035245154796621947268301285575723024864005088409676602100) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger159 : ℤ := Int.ofNat (428905179950935745902553283548122243460 * 10 ^ + 60 + 375453897594461022628916284637258755735667982557062178237516) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger160 : ℤ := Int.ofNat (19300086400556571350043651619737117423939 * 10 + ^ 60 + 65052940707103239035430146844384596012166842035192747373851) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger161 : ℤ := Int.ofNat (1830601864161924493677880509623467680813 * 10 + ^ 60 + 451084491388990424662217132962303365608595355027617740559551) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger162 : ℤ := Int.ofNat (5912215838455859559587340281704869239138 * 10 + ^ 60 + 479363891678799163200110149016766923600066010157291852927881) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger163 : ℤ := Int.ofNat (4187056693528880416364613537601643809857 * 10 + ^ 60 + 869271812681738870028006947227713784767289719717618602403914) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger164 : ℤ := Int.ofNat (16677946864620783287053574789396574642976 * 10 + ^ 60 + 455380791797455996218598945590239382491232849408469848393122) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger165 : ℤ := Int.ofNat (5332737176074540018773202885287227193915 * 10 + ^ 60 + 198024895939861046981618034329278348974921285004300088764318) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger166 : ℤ := Int.ofNat (6324279943293263334148519623292565689651 * 10 + ^ 60 + 435189031315167901051399389784252863626657746948290291823183) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger167 : ℤ := Int.ofNat (570052317539154850136441919307011868070 * 10 ^ + 60 + 701394283074782296139150874399547271659357278070226119068877) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger168 : ℤ := Int.ofNat (3443879003020471426866110060389433906884 * 10 + ^ 60 + 930113031842304198527421869002550504482434984737774238164715) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger169 : ℤ := Int.ofNat (1317299792014964163698011122079630276410 * 10 + ^ 60 + 211556689419035877900188199168193510813683910333971289230565) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger170 : ℤ := Int.ofNat (1182155377593791811329769591368353084590 * 10 + ^ 60 + 361422845785640328997640040322189018804927429560891939238054) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger171 : ℤ := Int.ofNat (90062549552258785703168412219882608003 * 10 ^ + 60 + 901424370294041855745923488696792599940520007233748934897610) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger172 : ℤ := Int.ofNat (704761468862920866999293927332916156818 * 10 ^ + 60 + 309808214544449784985613919168735865011389209072562390569878) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger173 : ℤ := Int.ofNat (951091669587473164188114303674113458375 * 10 ^ + 60 + 829411536579067058801938913280858715473809335911222346153075) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger174 : ℤ := Int.ofNat (429238574602135183307285685139687064108 * 10 ^ + 60 + 272710000325202346012048437142954580100290392064006815125911) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger175 : ℤ := Int.ofNat (9368397736242216276866058997736728838884 * 10 + ^ 60 + 153160321777203660497777443342074542989038601062878093975587) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger176 : ℤ := Int.ofNat (543746866819163488993304071882798092949 * 10 ^ + 60 + 555294713015707492818946235872888208723248865973187768030690) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger177 : ℤ := Int.ofNat (5528525501463785738073111637002904634936 * 10 + ^ 60 + 149147296869565699124480267266414815453534614063898659427478) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger178 : ℤ := Int.ofNat (4827069037006282726168451450970341873903 * 10 + ^ 60 + 768384619583226748429512834100524170955949982994339574648082) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger179 : ℤ := Int.ofNat (4834561166843832863851743437112684231658 * 10 + ^ 60 + 6157140485484988952981137642218929023708244657838267399469) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger180 : ℤ := Int.ofNat (741019259038607306166450855384492621965 * 10 ^ + 60 + 466509183713490178817971581703368719470668857496767362985927) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger181 : ℤ := Int.ofNat (8638475735887402114780855153582562403550 * 10 + ^ 60 + 654048859350611182496098969332811501342091991466246834370316) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger182 : ℤ := Int.ofNat (6378555248818608454621174247280579138334 * 10 + ^ 60 + 773620694997903065973066619028488389788391894876740255755268) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger183 : ℤ := Int.ofNat (166679170381959693097917326071723255003 * 10 ^ + 60 + 992087897162449282411908975155573289548759057761682511144604) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger184 : ℤ := Int.ofNat (166576874822558770761705088901387347478 * 10 ^ + 60 + 113993671706452574134369088108852843351687113214628980319946) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger185 : ℤ := Int.ofNat (304287678312106116453109980313328756589 * 10 ^ + 60 + 6585355199226143753743153251916013414605010008217499880586) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger186 : ℤ := Int.ofNat (36044459098644809530276596877344356994830 * 10 + ^ 60 + 967320080431067476971502085906355788087192545942318487795228) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger187 : ℤ := Int.ofNat (4591183874306840168172000278176850258242 * 10 + ^ 60 + 587280791503922207583167155727209436511489958963164479790068) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger188 : ℤ := Int.ofNat (4601605466216281160475659542640567846069 * 10 + ^ 60 + 967771805001742827807031959448505994328912181660001282628786) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger189 : ℤ := Int.ofNat (356384919927947417520058250608795330112 * 10 ^ + 60 + 74673201460465841357494431326828840155968940880959728942238) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger190 : ℤ := Int.ofNat (12818161172420606123259033097273724880198 * 10 + ^ 60 + 45500974424077468677965960593268564270758367175193901264660) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger191 : ℤ := Int.ofNat (1713591398271466326951307093778323038098 * 10 + ^ 60 + 596969913937867867532413825226539782719026054922203579267322) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger192 : ℤ := Int.ofNat (1157899177533471893559478629935068309709 * 10 + ^ 60 + 839628657540292465261195367402273362999835520842491371398702) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger193 : ℤ := Int.ofNat (12851648136301329184544240702129477529702 * 10 + ^ 60 + 146489831737102005298112516375807195638508260050586450800987) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger194 : ℤ := Int.ofNat (1169720369950586450449684102498324310942 * 10 + ^ 60 + 792879771183234721840387485205564062544629160791982042251703) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger195 : ℤ := Int.ofNat (7440748561190181190834595864689426161512 * 10 + ^ 60 + 181334880177107012765988367442593900442355936783083662840459) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger196 : ℤ := Int.ofNat (9545747574198440209340581944733611071645914277 + * 10 ^ 60 + 824991268529697780085688875695314665617564289649094807997874) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger197 : ℤ := Int.ofNat (258532195626058046724603054195923720588353903 + * 10 ^ 60 + 193520920220610163548649133474741732819872766159522653894552) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger198 : ℤ := Int.ofNat (615289788601600451010707885290723875828886207 + * 10 ^ 60 + 73098773126926998838314613276876601800892243392810972122924) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger199 : ℤ := Int.ofNat (692472764820279048409149978482806047075479792 + * 10 ^ 60 + 521173228130485854429213470116950978526022980442739362586734) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger200 : ℤ := Int.ofNat (653765818294350815118469868181238345506365656 + * 10 ^ 60 + 178953849684821008023449198723382787962839987245955395695462) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger201 : ℤ := Int.ofNat (687361039846493719912511483543369404258328377 + * 10 ^ 60 + 44877428959732768734579663439929240139012988379431534174508) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger202 : ℤ := Int.ofNat (201062180217735290284457697163761203371000463 + * 10 ^ 60 + 899622603412606571492792467559728512662483572144477509350616) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger203 : ℤ := Int.ofNat (2205493168398252096819332693845382333784344364 + * 10 ^ 60 + 600180359708249476977578640209058319833255560809713418655778) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger204 : ℤ := Int.ofNat (253798972937715693805984777736118774264533336 + * 10 ^ 60 + 247476908561490388740712558592214501487641344460060005008584) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger205 : ℤ := Int.ofNat (499354339765896652884963198875541824803947072 + * 10 ^ 60 + 933884601879123791563094258448563335341695476526806157257690) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger206 : ℤ := Int.ofNat (387996618436275573982064041712770997290215159 + * 10 ^ 60 + 124003303762374169874698879836515007871053138022339777615174) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger207 : ℤ := Int.ofNat (185375691164386101896311092179693142193909734 + * 10 ^ 60 + 240586125416763248739114781037979765220731465644605572480874) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger208 : ℤ := Int.ofNat (3074732168868577314821281387372159963414208336 + * 10 ^ 60 + 872243574254746990976354486455034168484094548101332609543752) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger209 : ℤ := Int.ofNat (1188846647445065124299581484219406050085387325 + * 10 ^ 60 + 68532893323989061515782291087252125540113375423921441693176) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger210 : ℤ := Int.ofNat (344551072970733861851265828969771312307343360 + * 10 ^ 60 + 945736141919872472055828403790962634158090883484941053668844) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger211 : ℤ := Int.ofNat (740883689977718463039164617287453059957116937 + * 10 ^ 60 + 706877032871790038126864841508623823772728030450704065306472) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger212 : ℤ := Int.ofNat (413361802587415012546544763917646062711174888 + * 10 ^ 60 + 263860195323955031124290884409527087740310483787366476888800) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger213 : ℤ := Int.ofNat (515122891686742241328685025010311930083160589 + * 10 ^ 60 + 138929999896568168587575734255681747593260417336598931256876) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger214 : ℤ := Int.ofNat (139731666860178414823329904371982320888076819 + * 10 ^ 60 + 507932192294976311150874765132200761936704768003255463799012) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger215 : ℤ := Int.ofNat (656918108606966246930401615201027718328543834 + * 10 ^ 60 + 496195723630605553111039068433657402242147513204437668713720) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger216 : ℤ := Int.ofNat (481378636326956682376638311537335373582339009 + * 10 ^ 60 + 216020312142111025388099907770052498810168505481661327198476) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger217 : ℤ := Int.ofNat (860194985257152138510823296920698867641597106 + * 10 ^ 60 + 26327521959693667067939058955026731369050456691919327578824) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger218 : ℤ := Int.ofNat (351777180082280695357633631037324699019257747 + * 10 ^ 60 + 272015134349376811314931702354793301894727162895928502953856) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger219 : ℤ := Int.ofNat (2695345370223714551225912611420475176119928172 + * 10 ^ 60 + 319060870286338319685831372923687270013062463871845598750824) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger220 : ℤ := Int.ofNat (227578940693705219767746401177058107915614925 + * 10 ^ 60 + 84495007591417967379878696348585786951615218782940823762620) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger221 : ℤ := Int.ofNat (1815217746367429619820263728783219801958167673 + * 10 ^ 60 + 61222348215578628541044798218659018795840343881174943821976) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger222 : ℤ := Int.ofNat (268424252558237908274365466788358830011470956 + * 10 ^ 60 + 144444614892359625381094142671302041218393609267944093345600) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger223 : ℤ := Int.ofNat (800872163933872306103364969062459639477884048 + * 10 ^ 60 + 550519298372184348231742528417694694955300000616466057877672) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger224 : ℤ := Int.ofNat (582356452269028115035783593694986023552776025 + * 10 ^ 60 + 880486834149903493542676064478897991659491285390307282666304) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger225 : ℤ := Int.ofNat (2398192684474919707530897045157416794271420909 + * 10 ^ 60 + 872068447893160986967536562495928251322552587305558931271708) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger226 : ℤ := Int.ofNat (779309238523772212368096246864811980876918353 + * 10 ^ 60 + 783148696788166184318271131416265712984772104783393799410340) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger227 : ℤ := Int.ofNat (842098754539225023554142629390766559554910597 + * 10 ^ 60 + 286603320114034591189186153292005118506520291079879799311188) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger228 : ℤ := Int.ofNat (102987955542034409396823903633753232767342707 + * 10 ^ 60 + 920449158754750472467842561268589775410244449776732628764060) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger229 : ℤ := Int.ofNat (456333838246471845308834545861123043149633676 + * 10 ^ 60 + 320778857240974672458524820481533615115071571599327124383456) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger230 : ℤ := Int.ofNat (191168381753237342478990684509600159744219048 + * 10 ^ 60 + 887825314110533193305682977281061160600374962229888439182726) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger231 : ℤ := Int.ofNat (206327084907218843708200429247250519675166506 + * 10 ^ 60 + 646163137128530278618451045447955260600646650745521775237530) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger232 : ℤ := Int.ofNat (152219133171759137409830594355254626709435647 + * 10 ^ 60 + 275864446225555401582900954304983408037463610246150829825170) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger233 : ℤ := Int.ofNat (176224568979059728059655554827640866476479693 + * 10 ^ 60 + 301735423155702878399425598548398184057235781275785908039684) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger234 : ℤ := Int.ofNat (55590147414997365409636192105952900693257347 * + 10 ^ 60 + 946074748257273010025090975781658585961372392162487905660008) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger235 : ℤ := Int.ofNat (21867266863180116983793235424412176761188879 * + 10 ^ 60 + 967522160455966175936761045460500976104039409028032710480868) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger236 : ℤ := Int.ofNat (186376860381041312112647321399381154575856944 + * 10 ^ 60 + 209617680323442248882682233082469015061949163220987819573850) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger237 : ℤ := Int.ofNat (37418892011250956700774897857604649968376911 * + 10 ^ 60 + 820765963029047344631900030180960855695998056637469396613054) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger238 : ℤ := Int.ofNat (2414453297988346098287589786278912335413211214 + * 10 ^ 60 + 925952687099452448894547997432822533035011889356166847107018) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger239 : ℤ := Int.ofNat (194614413789311866686281507217906925290502133 + * 10 ^ 60 + 513564096360819965517998947996263283477934183467147191740316) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger240 : ℤ := Int.ofNat (725843412733370775580814556110517321223608622 + * 10 ^ 60 + 176249511084080182572741400566295417532190136609000022713712) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger241 : ℤ := Int.ofNat (561823046367717188023673265631799396867488162 + * 10 ^ 60 + 901022962028869899970698441448174677861463550369461951457526) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger242 : ℤ := Int.ofNat (2493933837043047062099813465227146383906799214 + * 10 ^ 60 + 606470290543288497317205843524581468742195077600226255263484) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger243 : ℤ := Int.ofNat (391870448037148567253367927715849156572310362 + * 10 ^ 60 + 154420302698783863458304066402059283774127981231488406440222) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger244 : ℤ := Int.ofNat (1173904343054057491055202970594020232995674029 + * 10 ^ 60 + 218077544761671578791946761082394486680855203349362908728642) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger245 : ℤ := Int.ofNat (154922138977174910241119090348180625163086966 + * 10 ^ 60 + 477579375523577282314012683700117906393136077214560177903886) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger246 : ℤ := Int.ofNat (473158664604415393046889246367618510452079450 + * 10 ^ 60 + 336276875454295560737226021609567949027735241996004806897706) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger247 : ℤ := Int.ofNat (163608816293640233837710293357205458197193197 + * 10 ^ 60 + 50013095980719835299002231085103948916340850986275476583614) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger248 : ℤ := Int.ofNat (172966605977625200520687059800066795593056240 + * 10 ^ 60 + 437334818451230144456139051593015340368058534165686689997706) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger249 : ℤ := Int.ofNat (41276412122449070281262870820584228135501862 * + 10 ^ 60 + 874701252086005297928194145200416656245097029918405251876608) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger250 : ℤ := Int.ofNat (25293902007747705964755748797511767878994009 * + 10 ^ 60 + 537296808931624568383960589230132028576762007063931940487162) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger251 : ℤ := Int.ofNat (192028148931842608800438024850719959924314835 + * 10 ^ 60 + 45131408409649542514582875044041264680215258372950219339780) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger252 : ℤ := Int.ofNat (45312783008264388794644141022990805150819309 * + 10 ^ 60 + 12967857517335013752933172131447763629716135421287126922820) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger253 : ℤ := Int.ofNat (1284630126980346795315061400346714987024613060 + * 10 ^ 60 + 506074902317388631141850012028134436637673710259907636367694) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger254 : ℤ := Int.ofNat (87088893941050650074080824344215145174523539 * + 10 ^ 60 + 997777207767928303538981856283280158904443813594387567547570) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger255 : ℤ := Int.ofNat (829372311754181668130641719240868460552495281 + * 10 ^ 60 + 219452703250608128950571026470868314135423121627944413856944) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger256 : ℤ := Int.ofNat (554960740867150047481407002132071373852007379 + * 10 ^ 60 + 799243959413203947389467608538219870028924653743932080064178) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger257 : ℤ := Int.ofNat (781155814733380245824287695283046357053915864 + * 10 ^ 60 + 188068122362135516211484961931502968178771368684183729571196) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger258 : ℤ := Int.ofNat (130733944606135674234219483853393826184526616 + * 10 ^ 60 + 887148926851137400807234609815851649188784286092714562209884) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger259 : ℤ := Int.ofNat (1216996701330102330118252656026109074095342132 + * 10 ^ 60 + 202356097770770666773151805844937225666833262768939935665064) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger260 : ℤ := Int.ofNat (913817378865716570284603389393060643220341399 + * 10 ^ 60 + 585823619020528960711197371637030161742973859802378765561152) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger261 : ℤ := Int.ofNat (10629813375821379710441640687493309473246336 * + 10 ^ 60 + 853713354360277333778974638722774023205972223161587357134284) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger262 : ℤ := Int.ofNat (50096143701506523101612418242197412487740784 * + 10 ^ 60 + 519490198811216831946929947791740910877170464549428892297034) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger263 : ℤ := Int.ofNat (35924771355885475513728036337176791877172017 * + 10 ^ 60 + 975800067355599680055634796194405300734365847028094097946654) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger264 : ℤ := Int.ofNat (5027451268475663025126246307491423890862183942 + * 10 ^ 60 + 996909572608304515344700022126351934546141029070651929181056) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger265 : ℤ := Int.ofNat (809761143459699760244686567050063219681683102 + * 10 ^ 60 + 334815903787721696564112657442315792654813471146524034858772) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger266 : ℤ := Int.ofNat (524161664907112179736944796244165205953801833 + * 10 ^ 60 + 985146454109840566631458826469189896141820522868446916933184) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger267 : ℤ := Int.ofNat (17042865036639719583876174040807040561590360 * + 10 ^ 60 + 877315234811796387806080994887177813099543276652544388132844) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger268 : ℤ := Int.ofNat (1390324650612777114215134569436861135686056863 + * 10 ^ 60 + 62585546029583626785177590434753285947235863334371394383140) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger269 : ℤ := Int.ofNat (84444020887881512319192774013534580531249832 * + 10 ^ 60 + 451400819825279920761930336295407652374146455823810948431062) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger270 : ℤ := Int.ofNat (77010751205330877299504422250391051015414692 * + 10 ^ 60 + 895968998600320223557077870045879365378202545064230764559758) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger271 : ℤ := Int.ofNat (1560799509447309337059170563132943002830027339 + * 10 ^ 60 + 46638447601224050623760167445369131609959721517277893712998) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger272 : ℤ := Int.ofNat (232441268172792407192498135043508507352175620 + * 10 ^ 60 + 816764256258196518892470512859090838128830293788028649045042) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger273 : ℤ := Int.ofNat (1032830373549109254137922492125744900940213991 + * 10 ^ 60 + 392610615525562321547488945157145023294381538179650897303642) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger274 : ℤ := Int.ofNat + (1143542032410067135723137509916790422516761985117949 * 10 ^ 60 + + 984583302732254426996802987019707457269628174726091525044396) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger275 : ℤ := Int.ofNat + (449372084677628046553253232165819568880607390197616 * 10 ^ 60 + + 737871798037601623403032747781805538303121083114159847140348) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger276 : ℤ := Int.ofNat + (135427582598665834940920485914059215256034679928723 * 10 ^ 60 + + 245154971711739042146349166875816890383207302579173399330166) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger277 : ℤ := Int.ofNat + (282775679605460399102752585073282291668630101060582 * 10 ^ 60 + + 557770858397429647836251221980861972174964929404478349368968) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger278 : ℤ := Int.ofNat + (161026197962860698519630203238302195248195799704107 * 10 ^ 60 + + 273040597270067726198824179747004781191484720363668371625544) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger279 : ℤ := Int.ofNat + (189989835568802405812907743396978320903583426354114 * 10 ^ 60 + + 327246413862903196331644076352512157509953166830809341431578) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger280 : ℤ := Int.ofNat + (29820893135048862817032016869307030437236086491492 * 10 ^ 60 + + 251125496595708551764616418791943086649924391943949790544538) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger281 : ℤ := Int.ofNat + (242313691371460733627956981533880962787717578284144 * 10 ^ 60 + + 354661042790383627814396466937315952915651030065938907166708) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger282 : ℤ := Int.ofNat + (174399672359963371933852638455894547378738872855706 * 10 ^ 60 + + 259283862182307629330865250166055829980264270740993240769046) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger283 : ℤ := Int.ofNat + (324567592219328186580842239322553713829681167749374 * 10 ^ 60 + + 241998743509895304924736103683659794630774125925839587109016) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger284 : ℤ := Int.ofNat + (129258661046080365273256568613488444727165784115159 * 10 ^ 60 + + 989748070971524007205349327484815801016447820495551426276764) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger285 : ℤ := Int.ofNat + (989946303135941232559993595485177303475098897978538 * 10 ^ 60 + + 211491859512950638769442339726463658062528284086941091595600) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger286 : ℤ := Int.ofNat + (68195190969478663158073431632052143234388274290623 * 10 ^ 60 + + 167340173238274956423180107695744857256999902982812939858476) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger287 : ℤ := Int.ofNat + (660941175535482235381570763084614360151992217392451 * 10 ^ 60 + + 954897497885127688368963582539921064096372864121605722987974) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger288 : ℤ := Int.ofNat + (83543708926490155070383356739381678437812594367945 * 10 ^ 60 + + 965683073594635775826811086691862514994049873226889123297572) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger289 : ℤ := Int.ofNat + (303367981002746174415774378939912492059605425177232 * 10 ^ 60 + + 232940667507667347821190042972399391718892589294778378059108) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger290 : ℤ := Int.ofNat + (270074039721402802054671642073942649993381347362026 * 10 ^ 60 + + 139534679884397169853887176202839906795552968126168105262362) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger291 : ℤ := Int.ofNat + (887863866449847353844838504583338950325391420501880 * 10 ^ 60 + + 268981698657499118652424671224339161975081410935051161689834) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger292 : ℤ := Int.ofNat + (278500971539154313749348301017722541329903873337138 * 10 ^ 60 + + 906946749655708993859629278086348564352102974883294853771900) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger293 : ℤ := Int.ofNat + (304582320761452260546065782140474467789144839294276 * 10 ^ 60 + + 44457322871003604842757909059769087334588323093471845110824) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger294 : ℤ := Int.ofNat + (33936216246087667663832917602348627361649017217310 * 10 ^ 60 + + 441072455683932334201751359086521761912899945477347484929776) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger295 : ℤ := Int.ofNat + (151379850230501086261401244200073073663615172406321 * 10 ^ 60 + + 194390829584348365754673613699431354388144254869340895968217) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger296 : ℤ := Int.ofNat + (53582171729590708957279642861929292615846217174509 * 10 ^ 60 + + 22540829454456654869626590723876280793574822232609643467994) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger297 : ℤ := Int.ofNat + (58324344845893787376347908173650436015646130344705 * 10 ^ 60 + + 436021023237332361133416537252607575761369367377023023927757) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger298 : ℤ := Int.ofNat + (62178928958782645592336728445753198804281701139781 * 10 ^ 60 + + 334257131147529795974185447928699888549734160038786709023891) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger299 : ℤ := Int.ofNat + (6050903771095186763634535791962986925495180355617 * 10 ^ 60 + + 218885261255001097185560042872348174345548577743095284039501) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger300 : ℤ := Int.ofNat + (13858997082173696261245864783343501616077263028049 * 10 ^ 60 + + 881037569435788308395838967788256124843069165233652857706024) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger301 : ℤ := Int.ofNat + (5351846552360032799520779553102558442020997910555 * 10 ^ 60 + + 522447474942459064841105383207581871444118363834598745043327) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger302 : ℤ := Int.ofNat + (58982808129381972888194479832067249344977333303769 * 10 ^ 60 + + 925570573645200436400838921836972377162269669438191023762656) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger303 : ℤ := Int.ofNat + (18961249600009453583150248036632773120552085745074 * 10 ^ 60 + + 5177506010007314834929526945142494344118888162209243405158) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger304 : ℤ := Int.ofNat + (883332848818550330277564435588018608918188939934494 * 10 ^ 60 + + 157731087228297762559042200046729505978426197104403138482092) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger305 : ℤ := Int.ofNat + (54997232651167621658013937908974236340793071511946 * 10 ^ 60 + + 906276831063721737730376528478385513982786631427865107929892) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger306 : ℤ := Int.ofNat + (275701995328753153039073573897068937434691180274557 * 10 ^ 60 + + 968297221001833575510636183737354539030818361117094195768420) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger307 : ℤ := Int.ofNat + (265733667025828391381474670045933700020052668630812 * 10 ^ 60 + + 385131015389154885495761004674251119675334266127402748103690) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger308 : ℤ := Int.ofNat + (923171470403285140487913366022547630724631492296101 * 10 ^ 60 + + 676104214059092411842657519642117718172382709487018490616622) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger309 : ℤ := Int.ofNat + (133327122671443285450733052270143175789926582588528 * 10 ^ 60 + + 688072866473767582626250659539161551833920222949963827695232) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger310 : ℤ := Int.ofNat + (427684819475473451741360251154256584166583869066268 * 10 ^ 60 + + 816996841407750834122717373545623078815522152096467910820480) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger311 : ℤ := Int.ofNat + (53016927527123441915449518049472224155100292590022 * 10 ^ 60 + + 341981025777218550010765191616240788108827408405174478737184) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger312 : ℤ := Int.ofNat + (157926989419907237134594454192123709141867856609445 * 10 ^ 60 + + 704157365452447131398234059152371766852189180094079089241695) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger313 : ℤ := Int.ofNat + (66384467660593876007161609694966630203872840821491 * 10 ^ 60 + + 533923382844201021940507351947495268233354815393762671884201) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger314 : ℤ := Int.ofNat + (5276698478468067356057907611063268638859392563774 * 10 ^ 60 + + 318962247350007167991225375859120189043969622085903088051505) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger315 : ℤ := Int.ofNat + (8574001512593101135813793182563997715813576625962 * 10 ^ 60 + + 761598295949336210440223463020192431898920637197169620987480) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger316 : ℤ := Int.ofNat + (3974838910062936541794907502818024910757647189488 * 10 ^ 60 + + 247970289352078555015881451591510758642255621187496039255263) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger317 : ℤ := Int.ofNat + (61166859756351366032772977771951877830554731160318 * 10 ^ 60 + + 680205708855521579997932082694898940242805486483518880047952) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger318 : ℤ := Int.ofNat + (21866811083490576410863162346677500901327953599516 * 10 ^ 60 + + 60991025220288426123403306752842097480763902808343930294048) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger319 : ℤ := Int.ofNat + (477286323310690981466239884487259364475215680146503 * 10 ^ 60 + + 273068250647894848808773201188163892501876082040968447756025) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger320 : ℤ := Int.ofNat + (49780219878231614874077156823228404525212966767686 * 10 ^ 60 + + 766214895446099942124410045152787610281820806035298299921227) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger321 : ℤ := Int.ofNat + (311153571419499555474611306711474851005282449591358 * 10 ^ 60 + + 249481682492177786595505993276414165228568621578551107598200) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger322 : ℤ := Int.ofNat + (210790570114523164104907983666506596301085949902675 * 10 ^ 60 + + 684426421529019142816340369083532254012557721099806724517883) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger323 : ℤ := Int.ofNat + (294233815067024948388503771942760985587658660028463 * 10 ^ 60 + + 144272356764696333216965010156693493541299798341263407422142) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger324 : ℤ := Int.ofNat + (50188507472340235140157031606520040171901799721682 * 10 ^ 60 + + 68879264508599313180143979028765752959207724602410440613750) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger325 : ℤ := Int.ofNat + (263704851182362131141562242730011606179629600397630 * 10 ^ 60 + + 775483844054931733391660390745850273215875621950267895935493) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger326 : ℤ := Int.ofNat + (362497522192497479635720935401432589836651577811747 * 10 ^ 60 + + 136977391115386075290646830004390772032868434419059928590300) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger327 : ℤ := Int.ofNat + (39044620603481973883349513087040612784667098011267 * 10 ^ 60 + + 476187513886694213103482896454635354506305675423975759432561) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger328 : ℤ := Int.ofNat + (52090406684649079210761225937278171140759926179216 * 10 ^ 60 + + 117768811181807768216999994724834323642656828972334224547792) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger329 : ℤ := Int.ofNat + (2574044253322183015205464001589541288906360731428 * 10 ^ 60 + + 776391587047855504849491995748499879357311097458952850329634) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger330 : ℤ := Int.ofNat + (1871541796015691395931615442535350840704700955811880 * 10 ^ 60 + + 233981790633782639461681427531194596035749884252022203126992) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger331 : ℤ := Int.ofNat + (296901430277143164131903705459888697072932595397232 * 10 ^ 60 + + 665595294451388288765229535587509572030270420589533273737162) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger332 : ℤ := Int.ofNat + (191543639608738870603984481457730538516835803636909 * 10 ^ 60 + + 957297919738938264518114096796919905347406790068408875712300) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger333 : ℤ := Int.ofNat + (4515733742519352767816529398272318548553585827461 * 10 ^ 60 + + 692353633175043752159959591164562924878256677156595314494910) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger334 : ℤ := Int.ofNat + (508526785126949484761583565315923097250465347983606 * 10 ^ 60 + + 212817515874133807187343331611096440205529300209095700431215) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger335 : ℤ := Int.ofNat + (23911843045011822035138161137317539745379295636697 * 10 ^ 60 + + 412900318629152469882275167332999018354992885722805096437652) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger336 : ℤ := Int.ofNat + (32321721764020335689783456502862473269121960333486 * 10 ^ 60 + + 752583229113871217201762477656506830411947416847375423851968) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger337 : ℤ := Int.ofNat + (575932520421653041481224247436823256764959055608784 * 10 ^ 60 + + 517719928831745490163806549247108212186991985561206159573534) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger338 : ℤ := Int.ofNat + (89454639990781260025259324116933011313467954242758 * 10 ^ 60 + + 124190389666280757306491624298601270828755513747056555479056) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger339 : ℤ := Int.ofNat + (383660940303913952939922287093352502449853222392958 * 10 ^ 60 + + 26100802546382426946304368006889280359829152418320495393588) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger340 : ℤ := Int.ofNat + (97437097487410880174382323349241979676611915925700224410 * 10 ^ 60 + + 161988218205652118446438839723347673122850228620643781732504) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger341 : ℤ := Int.ofNat + (1794169815773102647599302047599934872275904909945367574 * 10 ^ 60 + + 456625072143388374823361585866356718807959245747079849346772) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger342 : ℤ := Int.ofNat + (65866241868196610113772492582518052253143420415945549131 * 10 ^ 60 + + 906894208542014835593368544135675921900470382673770447924660) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger343 : ℤ := Int.ofNat + (2427789364264275933779526435121673500268777590562887229 * 10 ^ 60 + + 404816822161206973120216749851874143726589282099535625517800) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger344 : ℤ := Int.ofNat + (27398368441443720426271607952170541511496251704422169226 * 10 ^ 60 + + 657690156599698833726862276571544379524285619003166662088876) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger345 : ℤ := Int.ofNat + (30949942586762013457819221356447328982147401679301434644 * 10 ^ 60 + + 140027017452662068291989018301909412030641056732789978517872) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger346 : ℤ := Int.ofNat + (117769577525775177537316350367076229523765493680163785439 * 10 ^ 60 + + 134991697164837615394677727351146725631414031035310207184852) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger347 : ℤ := Int.ofNat + (41573266868087939587054487355514429661654226710596597876 * 10 ^ 60 + + 783370535768806729270345379491080729001677931146994876464092) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger348 : ℤ := Int.ofNat + (21208508711516834467681581922241952812470395247670575049 * 10 ^ 60 + + 470855078151574927958833311143251512676228265495561651599264) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger349 : ℤ := Int.ofNat + (10150354691671259122374004239097961443361472407636984403 * 10 ^ 60 + + 337355272262146515142813242445089007238286002619714156497832) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger350 : ℤ := Int.ofNat + (16213354718108214599735229018500185813619740385449308739 * 10 ^ 60 + + 157210003146531381272663276893481263488553878060644304487124) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger351 : ℤ := Int.ofNat + (2407128271026850884446462614084650697361106335936238873 * 10 ^ 60 + + 868110122623459060443671827128387915170803961983719564178564) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger352 : ℤ := Int.ofNat + (4702507663226566423256461118168742359631180980553359863 * 10 ^ 60 + + 672722640632792034021433499378433999470330040769565702873782) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger353 : ℤ := Int.ofNat + (4753357900207900548299051905647277431544166549241726944 * 10 ^ 60 + + 37338960506746266606840905227189795480900957389056918916612) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger354 : ℤ := Int.ofNat + (1147949301964324815886823865823017674403579142593064801 * 10 ^ 60 + + 509257694392315975349399453320735349357817141693327809188796) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger355 : ℤ := Int.ofNat + (5098008591285903227115409237021589468910474549056337777 * 10 ^ 60 + + 434959956382097498515573937547355493852901584959173296675468) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger356 : ℤ := Int.ofNat + (1833116203216378062120148902046006202660531762605460624 * 10 ^ 60 + + 764649617364752092551282675273614585175783577005188935634856) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger357 : ℤ := Int.ofNat + (2461191823770400214721299628878911203863567470303461099 * 10 ^ 60 + + 204469623841662606927750385024305250583521109571302480005880) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger358 : ℤ := Int.ofNat + (437660631264827423612041200614643874253395986841926109 * 10 ^ 60 + + 42005042314918496120732679623340900152542106415808379874256) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger359 : ℤ := Int.ofNat + (97442986945348384943840839113246287612881063512192547469 * 10 ^ 60 + + 444798904384066551639856550523013333658619863223605533295592) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger360 : ℤ := Int.ofNat + (1818333714012094354970734459077339431300911917524739912 * 10 ^ 60 + + 570824318477474973284324731422230450055600689056181875218360) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger361 : ℤ := Int.ofNat + (27399877607660087655322535794098822617918430367927883218 * 10 ^ 60 + + 756920002290444843080073461420289325952226286822500531931184) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger362 : ℤ := Int.ofNat + (30950430236219525059743891030742138050673174776572850883 * 10 ^ 60 + + 21424463629582175914510180894724654088345545584259793457044) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger363 : ℤ := Int.ofNat + (117770325429712128286106220946631284713801334757474182728 * 10 ^ 60 + + 929728005912603324455272318213239572622329851558905822863844) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger364 : ℤ := Int.ofNat + (21138329202738267379753924847351872023327573415512809176 * 10 ^ 60 + + 541178553745339992307151005968870795825507203180845228840600) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger365 : ℤ := Int.ofNat + (41620181461748758762402079616740934405022248406319516220 * 10 ^ 60 + + 661958080391396108496350193411330738525847347138124127893408) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger366 : ℤ := Int.ofNat + (10180270327005928284673642079139071341791757716759471693 * 10 ^ 60 + + 975748475167186805054525038485537474537632130842001333553584) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger367 : ℤ := Int.ofNat + (16202682170364944619221038318313352180216845209576890438 * 10 ^ 60 + + 760473511006294904739097029017229890549388931010637554389466) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger368 : ℤ := Int.ofNat + (4747673018121695990550600101354282710066641295415218222 * 10 ^ 60 + + 410190641131386077473993596583774038479371004511759753483086) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger369 : ℤ := Int.ofNat + (1135172647259749392146790877739188094992988885381352957 * 10 ^ 60 + + 725974839305099910994052464318807033832706464088244257259598) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger370 : ℤ := Int.ofNat + (5114694597985931409983682883778042388649105175093913942 * 10 ^ 60 + + 657372736030119541588247991313792443743789833487074601516768) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger371 : ℤ := Int.ofNat + (2465759817910749081134502959102370069608648572064030672 * 10 ^ 60 + + 713257763575006516354314688303340668304534483665180016625374) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger372 : ℤ := Int.ofNat + (1852446822779707282054078373407401124214667694089285295 * 10 ^ 60 + + 874467633023071007236377920915250054008222519696727573539712) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger373 : ℤ := Int.ofNat + (439105142278321493871403220734517940836090637744384546 * 10 ^ 60 + + 859266350858129041300405522674504533794985861181504937462608) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger374 : ℤ := Int.ofNat + (53395591138243056973481277662243132315841826969991010602 * 10 ^ 60 + + 319123831009730548396980506030397854184314429249981289005684) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger375 : ℤ := Int.ofNat + (6556997229404695720720964647179987962463291228642359244 * 10 ^ 60 + + 326252492247338691281944380474480770128559962702159137716644) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger376 : ℤ := Int.ofNat + (42097732284334232300718216201672795137972746146083594890 * 10 ^ 60 + + 15855684604430523589600375214072046972429169417829562021076) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger377 : ℤ := Int.ofNat + (28722951230939520705143360804644899175644544281368729750 * 10 ^ 60 + + 115278805750564783075020936950806858706025373092255329525744) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger378 : ℤ := Int.ofNat + (28788126783446468313690667410199034865894015829027103503 * 10 ^ 60 + + 431954272890700788693133214963055233067108407909307589019516) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger379 : ℤ := Int.ofNat + (8585026888626643735523176991995767265745202785861634904 * 10 ^ 60 + + 170645226654178129846161716894297420915263384656256002459408) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger380 : ℤ := Int.ofNat + (31497616448897969676225631917422677199178345104237025301 * 10 ^ 60 + + 376889240935769056324421546963681270508821289320010856214716) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger381 : ℤ := Int.ofNat + (44182727511793084861745013400365953204654266578730801790 * 10 ^ 60 + + 158436895886460079883608487110870501203792108342916233258796) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger382 : ℤ := Int.ofNat + (5222212132087064570824073361551883087762260680978180605 * 10 ^ 60 + + 847650229183234905190458860295692783511808819574911135484596) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger383 : ℤ := Int.ofNat + (5226272081759612426250533356987254117773424154409992904 * 10 ^ 60 + + 364319940027312385512207580331960544215505724032953375631976) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger384 : ℤ := Int.ofNat + (712163867937080938022527621104388660167333813112950982 * 10 ^ 60 + + 464791923737898182338279890983629467059319987664109889882904) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger385 : ℤ := Int.ofNat + (218052150232444140276577739546210159227349780327408012693 * 10 ^ 60 + + 181553067151806840795202119059588955457413220599402231577432) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger386 : ℤ := Int.ofNat + (31140550733243657344617181599253411898106813090755541059 * 10 ^ 60 + + 725200628133859420850220126425439691998546656253617807192416) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger387 : ℤ := Int.ofNat + (31185129502925059374686971778339451362585205959596399630 * 10 ^ 60 + + 426005222542337913607268877794139040304406259434051873786872) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger388 : ℤ := Int.ofNat + (2740195228791318871741105408422713112502224794038390325 * 10 ^ 60 + + 252183530146132711813140702500709342534193084275026320486948) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger389 : ℤ := Int.ofNat + (57733195163192166191980630115187073714630485401201812425 * 10 ^ 60 + + 128994810506561059903111007083417512305323693583869136829976) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger390 : ℤ := Int.ofNat + (8794353578234607817014568902861105849444494522904527419 * 10 ^ 60 + + 853396965489638496207534670592725900054647943280384170155072) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger391 : ℤ := Int.ofNat + (6233552172904703681660607609790390601555448607383744101 * 10 ^ 60 + + 267764508865347472308348481690824720825307785697775679347028) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger392 : ℤ := Int.ofNat + (57958679371577123961070760757596022208052325294019623632 * 10 ^ 60 + + 394468603319721666200652121357351657553951854366168760502292) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger393 : ℤ := Int.ofNat + (6321345496024729608997972489614657336695366293503355909 * 10 ^ 60 + + 109103359918026250867138950226579113643822036537611435932048) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger394 : ℤ := Int.ofNat + (44210744805024583304970508818060561101651472605183581337 * 10 ^ 60 + + 112800373013017885032128132243037079694504424628384928276848) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger395 : ℤ := Int.ofNat ((1 * 10 ^ 60 + + 378666576527819410258279082118088862266702632052782853471949) * 10 ^ 60 + + 867874629822963585044343081689610788042459563045788650384572) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger396 : ℤ := Int.ofNat + (101761339480600880240184586493303786886796832728116099534736 * 10 ^ 60 + + 735827847111627696807118489822268009308449396565550023505916) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger397 : ℤ := Int.ofNat + (396874638935825757510685615805957336005377354923015963206947 * 10 ^ 60 + + 744235607298174140537448846338131590460344055068284019047668) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger398 : ℤ := Int.ofNat + (362029606015904425310306262625151909025465229823360148693241 * 10 ^ 60 + + 418108766065378318398992312938657353652946190755916866509556) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger399 : ℤ := Int.ofNat + (146371795781232665644531355571238788748447465628377967930676 * 10 ^ 60 + + 457567208033428283184847200147118549124502213529383016475208) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger400 : ℤ := Int.ofNat + (249607387221365200811030426242562564883030437902590768563249 * 10 ^ 60 + + 571418130490420595740583426990469781700478676435032348196268) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger401 : ℤ := Int.ofNat + (90966504678020421571457042078570319230167019110537346674081 * 10 ^ 60 + + 247860608247519786116378297103184942826384197987548415577900) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger402 : ℤ := Int.ofNat + (176434023220775560004530514922612488148163008559076968941895 * 10 ^ 60 + + 182272721332721939664712045965534291910081778108211750432272) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger403 : ℤ := Int.ofNat + (53216969623655876836527134125289676349098403020728835951247 * 10 ^ 60 + + 847614846893656306315562967298263653475549065209325624190968) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger404 : ℤ := Int.ofNat ((4 * 10 ^ 60 + + 508972870679456282764513078633053617977682814678127936839204) * 10 ^ 60 + + 948136927569896581923525341713921287444715568738876410347108) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger405 : ℤ := Int.ofNat + (15096775978397581701108415422227820334973998639532658237804 * 10 ^ 60 + + 490306078175208517725834163194980565205012142697952183647640) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger406 : ℤ := Int.ofNat + (756541481225040345535278102919799703219417302355871178703390 * 10 ^ 60 + + 367147309937392353298240221835007487521565069908164540630956) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger407 : ℤ := Int.ofNat + (854506136445154217839222077961475546593057864498481124513960 * 10 ^ 60 + + 531982690893151962619332243008525183386919713454864877630936) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger408 : ℤ := Int.ofNat ((3 * 10 ^ 60 + + 251440783645473168743579654707805417640296373097182638327106) * 10 ^ 60 + + 830767734000552144376874171988445822989947991470596100795836) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger409 : ℤ := Int.ofNat + (593434599081727423171404840560047292588642157241560012656873 * 10 ^ 60 + + 154500098779024815873655291856341824588625254911406945550420) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger410 : ℤ := Int.ofNat ((2 * 10 ^ 60 + + 324728640251963557117266495280188318417657657519238253516205) * 10 ^ 60 + + 165910990079493051016546688430985758221698694990474789136352) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger411 : ℤ := Int.ofNat + (282779527088787325610349872124906877727788243659138236356156 * 10 ^ 60 + + 473105612206268555701999994985839018343259207097377006596296) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger412 : ℤ := Int.ofNat ((1 * 10 ^ 60 + + 375417882698460185175795416341916958213339876220104384763923) * 10 ^ 60 + + 605900179578478707447301944891695030000598923364699366051684) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger413 : ℤ := Int.ofNat + (346364191240073554288369301353128786562528670729414528605787 * 10 ^ 60 + + 255393949461546775270518183620198111144474747163842756471764) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger414 : ℤ := Int.ofNat + (162432043657677490971625416024674502981506276505535549764128 * 10 ^ 60 + + 154111706075906554213627228752808946812699412538443898143452) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger415 : ℤ := Int.ofNat + (185774779055200299597637039066872805891913616382330005365634 * 10 ^ 60 + + 322564858489359681439405230930929128070675736295524367569832) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger416 : ℤ := Int.ofNat + (121836662465839858902779587245156883972307161284612775045891 * 10 ^ 60 + + 342635862568551119743852788950609840464213046754190196993876) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger417 : ℤ := Int.ofNat + (112813736726244676487288216958483448288164060770360077954480 * 10 ^ 60 + + 941444678910888265899961313774305659928111270410636962381888) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger418 : ℤ := Int.ofNat + (58964211028813698998227126495156531254882169068355671522414 * 10 ^ 60 + + 860945372332043774086866986840665952113513163598556586826192) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger419 : ℤ := Int.ofNat ((3 * 10 ^ 60 + + 893202610575618597626468742037582266067694574960710376009259) * 10 ^ 60 + + 64709942214534649472914462100244564709169493407850507473660) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger420 : ℤ := Int.ofNat ((1 * 10 ^ 60 + + 300234417589506104231193829533435852355713730358649472891315) * 10 ^ 60 + + 945009588151173829646616090633240007684800718424875671789688) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger421 : ℤ := Int.ofNat + (765329601832601589942873200498890773513036380395169846751740 * 10 ^ 60 + + 736461669445744476224466946438674496965816359955080350616212) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger422 : ℤ := Int.ofNat ((1 * 10 ^ 60 + + 451316409201937263044429231346018891457792810086189539754687) * 10 ^ 60 + + 260641044820470408070139970164079694507089967247121034988804) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger423 : ℤ := Int.ofNat ((1 * 10 ^ 60 + + 944793385005558614457395913671527408085041817940581097650695) * 10 ^ 60 + + 443240309377523953237668342327316075536410826439942970939800) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger424 : ℤ := Int.ofNat + (488304695760561475717048499440944896231240868894641070555525 * 10 ^ 60 + + 991514228508188165238879425005181785221417409673870691559800) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger425 : ℤ := Int.ofNat ((1 * 10 ^ 60 + + 846138855061728230222545005074548039152384445581207361674791) * 10 ^ 60 + + 905331530540480590392556056807256156358035809001907471237880) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger426 : ℤ := Int.ofNat + (577219766504949089074986957520579443044645876935175955706458 * 10 ^ 60 + + 135921156452568255155581968400173303852926577313567256626440) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger427 : ℤ := Int.ofNat + (680213763947083940685083916540602658582545564403971324489310 * 10 ^ 60 + + 200261587052671132116756948252525972937006827864408543308040) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger428 : ℤ := Int.ofNat + (128696051806663149747866291512777027257298658727954665126972 * 10 ^ 60 + + 218628421990143290473714149488188699366387748157904680971824) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger429 : ℤ := Int.ofNat + (214038231895553885034008501039160062967457519663418314467531 * 10 ^ 60 + + 130058044667775699592394718284173455847413006261264826505328) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger430 : ℤ := Int.ofNat ((6 * 10 ^ 60 + + 450742534921895559638763328931395870259937572220587012921018) * 10 ^ 60 + + 470952991363455707404211697355516486261679406193071076781444) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger431 : ℤ := Int.ofNat ((1 * 10 ^ 60 + + 628117852293040139609920264618396570250304544591467243777664) * 10 ^ 60 + + 626341081790592202732837069303358688247992236100152709390820) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger432 : ℤ := Int.ofNat + (472979022456280823144937229464759192523090564008574680368320 * 10 ^ 60 + + 378253166257844411184399023327924926876041682815715407161360) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger433 : ℤ := Int.ofNat ((1 * 10 ^ 60 + + 278833319607061484487327438571062301379390838145341964432826) * 10 ^ 60 + + 655635672384411295254432532952962404933964501482957323139936) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger434 : ℤ := Int.ofNat ((3 * 10 ^ 60 + + 407848891288473567507071368768427075411119325829848153764705) * 10 ^ 60 + + 298396287945235612531669165017366976349411395277644114215140) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger435 : ℤ := Int.ofNat + (21696365235094477746853394780764025445199098532962468644623 * 10 ^ 60 + + 631479864822067721920887142958058256180613577016823207108000) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger436 : ℤ := Int.ofNat + (900152863640129110277273318583294880846465029860788914244602 * 10 ^ 60 + + 934434395291130095681460274448212162002340869824954108277936) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger437 : ℤ := Int.ofNat ((4 * 10 ^ 60 + + 545110282872107304610860918776216708223825817467251434277202) * 10 ^ 60 + + 653565247837926359703153734774048540336757625017725644345832) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger438 : ℤ := Int.ofNat + (726870914835771478434282344508496148799017807483044294833998 * 10 ^ 60 + + 791187249816686044712450584385613377274076209386200084323040) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger439 : ℤ := Int.ofNat ((3 * 10 ^ 60 + + 676941320932310874526281473228705104983902788042954480423110) * 10 ^ 60 + + 845877158206684156589222811777808747775058197465359213897008) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger440 : ℤ := Int.ofNat ((63692 * 10 ^ 60 + + 525548243131165413465595470183476032531233223882882838324350) * 10 ^ 60 + + 172745283848530356016273405642961526809019461494324723542180) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger441 : ℤ := Int.ofNat ((200 * 10 ^ 60 + + 879079056860662798170415880804865578340224377888486190565800) * 10 ^ 60 + + 652435879404779069967334959472567127245556288918777893769702) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger442 : ℤ := Int.ofNat ((10326 * 10 ^ 60 + + 434820290085359750314163917246317833083758358294629792069995) * 10 ^ 60 + + 788063202684089395483596178886156356828398588358673870611884) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger443 : ℤ := Int.ofNat ((12243 * 10 ^ 60 + + 530139122514105392136046096128731809145892538427524095726969) * 10 ^ 60 + + 839973342181767058761209831561000101663758360825303223262480) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger444 : ℤ := Int.ofNat ((45744 * 10 ^ 60 + + 921255268549037038970802554413251385867964724422706779114989) * 10 ^ 60 + + 294392872917491761899607979067821326724101331373606539175176) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger445 : ℤ := Int.ofNat ((8491 * 10 ^ 60 + + 686860643306399624092254792448709336573075078619274235853839) * 10 ^ 60 + + 166555796344029620905825354070597652737388364202965341944160) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger446 : ℤ := Int.ofNat ((32709 * 10 ^ 60 + + 15307965504895064710907300253488741839522856055744046126044) * 10 ^ 60 + + 889559915273627253817630274198245079152031845636451496295048) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger447 : ℤ := Int.ofNat ((4056 * 10 ^ 60 + + 710665942468992684190304325211763074480579080318336041007150) * 10 ^ 60 + + 943411494685530356688456685333649130498673237045905900628000) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger448 : ℤ := Int.ofNat ((17844 * 10 ^ 60 + + 673429739988605132829524984676177625894641791310240610635871) * 10 ^ 60 + + 639976298922571640001879369773210262803533208059368085552756) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger449 : ℤ := Int.ofNat ((3426 * 10 ^ 60 + + 214175153060606144335199265653013238556596855769354786700933) * 10 ^ 60 + + 698338002862972625569100602423995852043900547552583153989900) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger450 : ℤ := Int.ofNat ((1702 * 10 ^ 60 + + 107105235871997806522041980783242077102140857271474381773020) * 10 ^ 60 + + 28507920485300309928704911064886577871929809989136888820650) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger451 : ℤ := Int.ofNat ((1611 * 10 ^ 60 + + 897737269352239879478181993406809677637007414570460488068991) * 10 ^ 60 + + 664240228261441411044836250823540744984181358477545512050970) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger452 : ℤ := Int.ofNat ((1353 * 10 ^ 60 + + 384275994565292472818848055078328451077938205343086943831663) * 10 ^ 60 + + 650188396360381357223346303433020781663565150810694248620968) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger453 : ℤ := Int.ofNat ((877 * 10 ^ 60 + + 595301389085732763512656542723529774584437729265717390114020) * 10 ^ 60 + + 781818007477766806310555552592496539025210867437894901547560) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger454 : ℤ := Int.ofNat ((617 * 10 ^ 60 + + 542218556803321769644903206360520243083010871298396225879543) * 10 ^ 60 + + 50344508641396018976972463897629340874613118092329401999300) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger455 : ℤ := Int.ofNat ((53740 * 10 ^ 60 + + 957132841295423774264615881107703094983186667282395284862724) * 10 ^ 60 + + 521880127106619461972101297067941067684506556003987892434096) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger456 : ℤ := Int.ofNat ((17853 * 10 ^ 60 + + 557366566753564382598644667310953187904575895211402803621423) * 10 ^ 60 + + 668968163163426650786767165547047478397984314154824474891472) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger457 : ℤ := Int.ofNat ((9901 * 10 ^ 60 + + 455430198877246433574365169998434374592811921386746334543230) * 10 ^ 60 + + 251667216323937908294123630262593723753947661899127269741064) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger458 : ℤ := Int.ofNat ((20197 * 10 ^ 60 + + 121098954317967012426018769539997398644480880057546020998598) * 10 ^ 60 + + 899368985324882182117181821035016381535132991212846653419872) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger459 : ℤ := Int.ofNat ((26861 * 10 ^ 60 + + 917747327320849522707262640681174392040127765833634800049144) * 10 ^ 60 + + 299254165760548794900416830815999318845970922160118597521092) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger460 : ℤ := Int.ofNat ((7106 * 10 ^ 60 + + 897676650864720555871133218134414762789524458299097921341746) * 10 ^ 60 + + 859652962381339972143975193840488000377853569090569242363952) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger461 : ℤ := Int.ofNat ((25901 * 10 ^ 60 + + 687320158501376950549308886424688164875200858272103824135812) * 10 ^ 60 + + 587527328723060506299385781216461256729391222648560116253524) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger462 : ℤ := Int.ofNat ((8542 * 10 ^ 60 + + 219568957882817091322657240630646969775821590023612909695346) * 10 ^ 60 + + 291380967488974004126229556095764684505605698067535325096856) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger463 : ℤ := Int.ofNat ((9487 * 10 ^ 60 + + 896031814874189745638129869121935119541212074769376647409707) * 10 ^ 60 + + 53361883397468272083953481965767808991869145688207156363920) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger464 : ℤ := Int.ofNat ((1555 * 10 ^ 60 + + 916424550661198026694958889552065499996509844351156647597799) * 10 ^ 60 + + 544070550498568751260477803959980220099544940034520746431688) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger465 : ℤ := Int.ofNat ((3108 * 10 ^ 60 + + 434340036586888309452167053138867728996783027686958322582293) * 10 ^ 60 + + 522943354574596572807355604156064032148417565674328673930240) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger466 : ℤ := Int.ofNat ((90634 * 10 ^ 60 + + 55269028141293590498275191557905953477970409252114285819876) * 10 ^ 60 + + 813259812353422815550837653174731645149166387838898020496036) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger467 : ℤ := Int.ofNat ((23269 * 10 ^ 60 + + 756957353518597166757007622444852950662100595343655037656086) * 10 ^ 60 + + 345026202367074946791977832405054915069793563149875156126560) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger468 : ℤ := Int.ofNat ((6240 * 10 ^ 60 + + 345307748358278459815435175257621387874937742412421659530519) * 10 ^ 60 + + 301452623610356325474842540664059835428413023065788151964256) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger469 : ℤ := Int.ofNat ((17958 * 10 ^ 60 + + 266933955554691411011535019958988630230030910511427794036090) * 10 ^ 60 + + 223626144355274524039970752103321515029736854482077207417492) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger470 : ℤ := Int.ofNat ((48133 * 10 ^ 60 + + 745567589696039490880088663816701698297475875211833953411115) * 10 ^ 60 + + 748838064250967235270563746866436968293659364543334135440020) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger471 : ℤ := Int.ofNat ((471 * 10 ^ 60 + + 705758542098458521627946726638243766276816071328641653918492) * 10 ^ 60 + + 628688249508340123849356325174991787011992379012764859066200) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger472 : ℤ := Int.ofNat ((12686 * 10 ^ 60 + + 848613383067416414161370337642316919287153407101265476691777) * 10 ^ 60 + + 42310423394699603417873122321971537414128795370812808771548) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger473 : ℤ := Int.ofNat ((63990 * 10 ^ 60 + + 644527197598171231861768474023526024149025002830068584782543) * 10 ^ 60 + + 320758857303970176574573962662275130380082879461159485842980) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger474 : ℤ := Int.ofNat ((10188 * 10 ^ 60 + + 351021111032246582631086981708240511867496052024469744219380) * 10 ^ 60 + + 804709150371810329482013073137098780798500755717612684924896) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger475 : ℤ := Int.ofNat ((51997 * 10 ^ 60 + + 74911042988067647865429882655723898654783908254596977296145) * 10 ^ 60 + + 873710175188654785772288826736528964118893211706977844105888) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger476 : ℤ := Int.ofNat ((824370435 * 10 ^ 60 + + 367868201637367006372351242391115826788265017771082444623617) * 10 ^ 60 + + 824379136436328275094595028259813269387693701872032696329733) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger477 : ℤ := Int.ofNat ((159791063 * 10 ^ 60 + + 591425476576835497545554009139259012768890319027093233858982) * 10 ^ 60 + + 989888172574177029409204131743893649084850444436683814598994) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger478 : ℤ := Int.ofNat ((76851091 * 10 ^ 60 + + 504786427443198758092403074318829615248470464931477307053084) * 10 ^ 60 + + 57643386039933252069119022359804400188466206268045706003070) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger479 : ℤ := Int.ofNat ((81132767 * 10 ^ 60 + + 972933739054888093715624191000339976072314361812784069844420) * 10 ^ 60 + + 839116300886284572116585983917380106789541316139682219388266) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger480 : ℤ := Int.ofNat ((61287233 * 10 ^ 60 + + 460007026234593765939187958194740613964847715029533427011716) * 10 ^ 60 + + 404793711888996954527132744681919574243640006534530255752360) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger481 : ℤ := Int.ofNat ((45309590 * 10 ^ 60 + + 505912185563779680242063633424398552371145408376246589751959) * 10 ^ 60 + + 262888807309993740502670277583863078778924819092152728289868) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger482 : ℤ := Int.ofNat ((27938528 * 10 ^ 60 + + 347427474276426042351321773480220129639417166191470852749113) * 10 ^ 60 + + 516910647511098237737184874439269110727255697329681388831500) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger483 : ℤ := Int.ofNat ((2405412654 * 10 ^ 60 + + 178402395729491149863887705344933156816571640297912441156959) * 10 ^ 60 + + 351477896702557210551507272594256273811948442439495877528692) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger484 : ℤ := Int.ofNat ((916516144 * 10 ^ 60 + + 49341296833424251324666648054577564792502892394560369986600) * 10 ^ 60 + + 556958218666646368121437570647704432044794379184452746282240) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger485 : ℤ := Int.ofNat ((114796976 * 10 ^ 60 + + 981552219977473993833023737095763178825980155396860165197128) * 10 ^ 60 + + 666775463898037790960901351333708489771009040341877608079888) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger486 : ℤ := Int.ofNat ((996683698 * 10 ^ 60 + + 488956565290680056158561913667608170804137423323313472777719) * 10 ^ 60 + + 378598274226623328270133270956761772785157840705111538947200) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger487 : ℤ := Int.ofNat ((995988363 * 10 ^ 60 + + 800858947427127856176725299228525532508071726056603289044334) * 10 ^ 60 + + 30094130238242264860108342376664267160658699120631542140724) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger488 : ℤ := Int.ofNat ((297943614 * 10 ^ 60 + + 907034663034209243695576755353036274678382335521135514137777) * 10 ^ 60 + + 276010028339653826460364307927121744095122862271875188360880) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger489 : ℤ := Int.ofNat ((1087891645 * 10 ^ 60 + + 920332237898473246751926491321388411509034948552167897354944) * 10 ^ 60 + + 182051192339278390953623053763375877122265048294096102030860) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger490 : ℤ := Int.ofNat ((11608161 * 10 ^ 60 + + 275962636433821609774921642091424454528521419111050234867712) * 10 ^ 60 + + 545580962479332966261645077380571554675138038826134683318200) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger491 : ℤ := Int.ofNat ((362915765 * 10 ^ 60 + + 793985961280091537520682155294677374332822640095968027416456) * 10 ^ 60 + + 686190249656082089547018118373231687227898679693436573100400) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger492 : ℤ := Int.ofNat ((362360319 * 10 ^ 60 + + 653138980597628629221288242923903958759358187446372349723349) * 10 ^ 60 + + 881610053585108926239337125907384870746952990008619252478040) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger493 : ℤ := Int.ofNat ((179631897 * 10 ^ 60 + + 326253718521882474807774607744571777171800645741169757979081) * 10 ^ 60 + + 443576952946122386073437248986516319394804670656262237385600) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger494 : ℤ := Int.ofNat ((2669328554 * 10 ^ 60 + + 682978807711618729877302125736873493598036723810266223948861) * 10 ^ 60 + + 810222962826643007567003478143893618725647691945222469957132) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger495 : ℤ := Int.ofNat ((793272326 * 10 ^ 60 + + 582040933610054051240630276236160215486725762310624341624450) * 10 ^ 60 + + 882406766997493127278933245775307620638946355915784598465120) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger496 : ℤ := Int.ofNat ((797007772 * 10 ^ 60 + + 121370369364070471739808096381957203590772900022587053874832) * 10 ^ 60 + + 987341132244244147190853744164869168305622330779036388856144) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger497 : ℤ := Int.ofNat ((964251478 * 10 ^ 60 + + 998015284760020213063840016022992895694557906080194663252449) * 10 ^ 60 + + 273699599686867942136315136870008340010069964908523874555980) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger498 : ℤ := Int.ofNat ((2171410495 * 10 ^ 60 + + 129756819362150922956744886681831124124565531475752479355805) * 10 ^ 60 + + 393754187929373666184956296228111947543140291065950121391500) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger499 : ℤ := Int.ofNat ((179674033 * 10 ^ 60 + + 341619211150642037579505314487845793260307425661041205774132) * 10 ^ 60 + + 504475218007358116793145078206148362069706538601679205236440) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger500 : ℤ := Int.ofNat ((561128503 * 10 ^ 60 + + 400378531612058853137058011265908531094009771502855870727767) * 10 ^ 60 + + 637224364712615327429034857702190916188742633046733189215620) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger501 : ℤ := Int.ofNat ((2180256002 * 10 ^ 60 + + 543122762872618883138253207381693049863330995717920496253113) * 10 ^ 60 + + 779936089788484389267562434947794018381296195390238711190668) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger502 : ℤ := Int.ofNat ((566933899 * 10 ^ 60 + + 962512657232062592801225126259056107024793795299771359108079) * 10 ^ 60 + + 266976045313356094009745426612408944984721704092249985430240) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger503 : ℤ := Int.ofNat ((2390257497 * 10 ^ 60 + + 267941136638350902697699908900993808491743808403957407226073) * 10 ^ 60 + + 453910038052493190035459729111729945278657164319382237562720) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger504 : ℤ := Int.ofNat ((30732301413893 * 10 ^ 60 + + 967027742630606931275267866529153057914728920668080573945085) * 10 ^ 60 + + 195612097360829355928010775436494092124348781079810565015040) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger505 : ℤ := Int.ofNat ((11669637663825 * 10 ^ 60 + + 147666668109825945026757566962950493493235866232066950828139) * 10 ^ 60 + + 922498392758319280733466415175727566374455218183991171094913) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger506 : ℤ := Int.ofNat ((1282268867558 * 10 ^ 60 + + 490195371040694296372545290130076917308848833276388603290516) * 10 ^ 60 + + 813064857762581152093628733618793740249337932571963057606975) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger507 : ℤ := Int.ofNat ((12746290325908 * 10 ^ 60 + + 441613879783052664412859205816565565943944295044654535136147) * 10 ^ 60 + + 433103037375936791796495001763460767641164497364439071737932) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger508 : ℤ := Int.ofNat ((12777375153911 * 10 ^ 60 + + 781132514490053782168498187579176285834115600298547849597561) * 10 ^ 60 + + 76857229228157214166890721803345954207475454737197756826355) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger509 : ℤ := Int.ofNat ((3926367066515 * 10 ^ 60 + + 254085977316806188321365183003334288827820192048489585920859) * 10 ^ 60 + + 872586972994154197870996318250893630026370896406210678843778) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger510 : ℤ := Int.ofNat ((13987820577786 * 10 ^ 60 + + 912943382319655931698601286193440709803874350837968160861401) * 10 ^ 60 + + 551940918172557279617285191069707317463089956245101411790686) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger511 : ℤ := Int.ofNat ((52349677778 * 10 ^ 60 + + 685322681142002794950374321811478242124851669777932658150439) * 10 ^ 60 + + 528128294986012388015560725833199382885259688000017553295011) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger512 : ℤ := Int.ofNat ((4623258922896 * 10 ^ 60 + + 703197990186456365110807413733211791785623276440943457845328) * 10 ^ 60 + + 78469783004754902756483824446696338899415211024427230573600) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger513 : ℤ := Int.ofNat ((4635348346531 * 10 ^ 60 + + 809163007427918081576484116676362980149561542715654168720751) * 10 ^ 60 + + 206821676529321296636911882571175950360100054236958987336692) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger514 : ℤ := Int.ofNat ((2358680716617 * 10 ^ 60 + + 949982989353448703389091714741897479433199377297536666111621) * 10 ^ 60 + + 109078638238230693324509982324655894229680264922587399889610) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger515 : ℤ := Int.ofNat ((34445690414068 * 10 ^ 60 + + 629739127107936649902285522938259183823737119123324172464370) * 10 ^ 60 + + 857598511706561117512548525093233669538531964391349904624550) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger516 : ℤ := Int.ofNat ((10345368635486 * 10 ^ 60 + + 743367782441624708856897351403853225053056697782959258646622) * 10 ^ 60 + + 550146731702744991038131123781281057035898268401003196401404) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger517 : ℤ := Int.ofNat ((10373363764454 * 10 ^ 60 + + 434234590208150647284287720937469783131006667491784728610763) * 10 ^ 60 + + 841392033320164887841455916963479617415913856013685188225458) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger518 : ℤ := Int.ofNat ((12444689146568 * 10 ^ 60 + + 961941383417466997388555160466859258330824920572191581916467) * 10 ^ 60 + + 652994888921070086539332750729679254837381907404698462390713) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger519 : ℤ := Int.ofNat ((28045527711007 * 10 ^ 60 + + 320752381801104217318197938655370596405654081977467744046890) * 10 ^ 60 + + 951200060932591337095311348780686700254961493260849550506055) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger520 : ℤ := Int.ofNat ((2281917075634 * 10 ^ 60 + + 432386509439243830479231895970443362030089907610606601502767) * 10 ^ 60 + + 678975668104840566245174223591067035435749795972311381949478) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger521 : ℤ := Int.ofNat ((7235785825246 * 10 ^ 60 + + 568157229015670674527673277405395167438742996760460551766888) * 10 ^ 60 + + 646925959958750120505859446827011911013648523467718664316197) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger522 : ℤ := Int.ofNat ((28186755283840 * 10 ^ 60 + + 193981676196634835644801088518156271681198034392086602462362) * 10 ^ 60 + + 326945823203532450652283892995913323247146414822222327496979) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger523 : ℤ := Int.ofNat ((7317933441108 * 10 ^ 60 + + 411001080937674236671247075971953564746165674212360625756805) * 10 ^ 60 + + 87672228760050914889111477820154787059506900043650764394644) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger524 : ℤ := Int.ofNat ((30924775479439 * 10 ^ 60 + + 195185670687618096908840696847542279343553783593502345361021) * 10 ^ 60 + + 260180050634025319805299993627739582936908227322278569945332) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger525 : ℤ := Int.ofNat ((356268811100666722 * 10 ^ 60 + + 70883563822424175759238872955201227053952706517808674362099) * 10 ^ 60 + + 918663592210428608141965402686833957751080971370196688180787) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger526 : ℤ := Int.ofNat ((16199982947759078 * 10 ^ 60 + + 818145523937936059563943476458763972604501281225421846242681) * 10 ^ 60 + + 809964914537601169859085721083953914780468119907371700855795) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger527 : ℤ := Int.ofNat ((8080351553804220 * 10 ^ 60 + + 903370971952557336862702994415070967046956402886662260901115) * 10 ^ 60 + + 686811740962684317508934753476314549890158450360002882770652) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger528 : ℤ := Int.ofNat ((8069692351270942 * 10 ^ 60 + + 887620822204506324909403557616993183390591661332087840335488) * 10 ^ 60 + + 13266213147513064094895198796279000737759991933337892540695) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger529 : ℤ := Int.ofNat ((32350026852834242 * 10 ^ 60 + + 609137318094999721336050028490828123042049345444171947479285) * 10 ^ 60 + + 510042868647798551462915673356547465408386562200712476167142) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger530 : ℤ := Int.ofNat ((1282131286397322282 * 10 ^ 60 + + 463175332293781005555979547121210605627977469212983200372047) * 10 ^ 60 + + 169684365559117521296936707579516221757010613475332367805875) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger531 : ℤ := Int.ofNat ((405498722496310550 * 10 ^ 60 + + 161599405023106518171485251047638278943640573204668473442157) * 10 ^ 60 + + 626582113247510879239397949349636633203048728290184007888420) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger532 : ℤ := Int.ofNat ((406590724113710002 * 10 ^ 60 + + 286348293053969419866817406485759633786128342950041185597414) * 10 ^ 60 + + 905700663944604881177586689895441648814577767741551280474665) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger533 : ℤ := Int.ofNat ((470041839787301730 * 10 ^ 60 + + 15227634216705067517676889587812692898208553058273541332474) * 10 ^ 60 + + 637401588367001760879952068334437939739384117443597079442790) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger534 : ℤ := Int.ofNat ((848448299267220129 * 10 ^ 60 + + 617898792312990841995108252813512995897274036318552968058560) * 10 ^ 60 + + 271610737245031878970164657419928076435648040340423545450672) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger535 : ℤ := Int.ofNat ((112492595520504467 * 10 ^ 60 + + 531237059055993762009449963375095330407035846467535118195813) * 10 ^ 60 + + 534430676984860715678130625477680253652916051546383976429780) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger536 : ℤ := Int.ofNat ((330456981250405111 * 10 ^ 60 + + 925062328233890561814173038390779386546597616646349376420589) * 10 ^ 60 + + 110597947012660284052636082592611189579683260503855561132472) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger537 : ℤ := Int.ofNat ((852750794156201423 * 10 ^ 60 + + 861137854564905111163362844727322202350525492228294117619688) * 10 ^ 60 + + 407029827623194454024490869329502049198475975166043206439595) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger538 : ℤ := Int.ofNat ((333667474521986954 * 10 ^ 60 + + 43552502454941929287095474866467238157361302810717813826459) * 10 ^ 60 + + 966898486693728857168773553956380146730982155878107949535150) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger539 : ℤ := Int.ofNat ((1134166295559693795 * 10 ^ 60 + + 983842464905537558618945402845059317602167472515340731579523) * 10 ^ 60 + + 714898022073390902101361704883429276050049533825560590110412) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger540 : ℤ := Int.ofNat ((14854759605665041796197 * 10 ^ 60 + + 4766872138831741654745337406891746376339001616175844108610) * 10 ^ 60 + + 411005911836905430582702546059142356913025381027955121594790) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger541 : ℤ := Int.ofNat ((4705064140058552846302 * 10 ^ 60 + + 439219317259458749604213582320940000339263301293820627193142) * 10 ^ 60 + + 199038450969750302976808005013556206237905120047725986270872) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger542 : ℤ := Int.ofNat ((4717717713698040313866 * 10 ^ 60 + + 298268294871788044460586574890045085250128105420075279973306) * 10 ^ 60 + + 949744858062255494006057813871563200637093649387286456615847) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger543 : ℤ := Int.ofNat ((5431977751908448636028 * 10 ^ 60 + + 267279260007584947589945180195906660786947594902279936942161) * 10 ^ 60 + + 262222602804899633599836727174022950038026611592942678708071) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger544 : ℤ := Int.ofNat ((9833639554324228577640 * 10 ^ 60 + + 285205870967928751284756486256082355519633567995626464487368) * 10 ^ 60 + + 788595244481282027329437070669993124802669258655800377739969) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger545 : ℤ := Int.ofNat ((1306209016832667234116 * 10 ^ 60 + + 807985920213494868736436981467044355853855029432481134476060) * 10 ^ 60 + + 590570722030478596643149483549482631327777455764610289026750) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger546 : ℤ := Int.ofNat ((3822366397433008497221 * 10 ^ 60 + + 38000633494975132944105922468097999326515237269324702818165) * 10 ^ 60 + + 998986071481053127709479582106954287236986682843464102442347) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger547 : ℤ := Int.ofNat ((9883522472782131462275 * 10 ^ 60 + + 626348296409668354755574312097948144409580854311735784240070) * 10 ^ 60 + + 725771045291584864539447210668649658822826780848142306662831) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger548 : ℤ := Int.ofNat ((3859595742251423914292 * 10 ^ 60 + + 520094081324385441558550755740858703305597719459179369790703) * 10 ^ 60 + + 185455465198850773890239913247603826857955675696245561020234) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger549 : ℤ := Int.ofNat ((13113939891592881047541 * 10 ^ 60 + + 825373974826945522092601858404863363419060551630784009551030) * 10 ^ 60 + + 446664139484803535199556222528581064132968970132652342170652) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger550 : ℤ := Int.ofNat ((347879800882038721138416467 * 10 ^ 60 + + 602112353797827659734543032430433224591094935550996586948404) * 10 ^ 60 + + 888233554945759499605303834492224251047973128576337014292098) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger551 : ℤ := Int.ofNat ((116767407309438697386302376 * 10 ^ 60 + + 949424061466275506305182453930905897378473156547979139763470) * 10 ^ 60 + + 53561838348687572727652010710329673001428849165176044615732) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger552 : ℤ := Int.ofNat ((231112393572600023752114090 * 10 ^ 60 + + 652688292331552153429360578499527327212621779003017447184934) * 10 ^ 60 + + 834671716597071926877651823781894578046544279411160969676366) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger553 : ℤ := Int.ofNat ((349625019320118944189646863 * 10 ^ 60 + + 23471245748607380243598702338854465215957806785107824142699) * 10 ^ 60 + + 596352555762941666313925972089079534948261566185170933620563) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger554 : ℤ := Int.ofNat ((232857612010680246803344486 * 10 ^ 60 + + 74047184282331873938416248407948567837484650237128684379229) * 10 ^ 60 + + 542790717414254093586273961378749861946832717019994889004831) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger555 : ℤ := Int.ofNat ((463970005583280270555458576 * 10 ^ 60 + + 726735476613884027367776826907475895050106429240146131564164) * 10 ^ 60 + + 377462434011326020463925785160644439993376996431155858681197) + +/-- Exact large integer shared by the full moment block and its Schur certificates. -/ +def certificateInteger556 : ℤ := Int.ofNat ((7269916010859521645129260034464 * 10 ^ 60 + + 214540054238893602061737799320457649585412425541137343178541) * 10 ^ 60 + + 446966955557984065288865193392562072663210906085748331482665) + +/-- Exact integer matrix after 0 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage0 : Fin 28 → Fin 28 → ℤ := + ![![1000000000, 423308963, 71951457, 76482650, 76482117, 28193221, 31705948, 31706168, + 148973087, 162381159, 162381048, 76574425, 23640856, -826062, -826189, 25184767, -1528158, + 25184690, 21035273, 11656848, 21035497, 11656813, 5373335, 6700445, 13951051, 7733193, + 7733555, 298818064], + ![423308963, 298818064, 28193221, 31705948, 31706168, 20333252, 21494722, 21494568, 79751621, + 86495040, 86494935, 39889758, -9137, 1864327, 1864389, 591274, 2284387, 591309, -2998234, + -1514923, -2998344, -1514904, -1192529, -868051, -2410969, -1319551, -1319691, 141743481], + ![71951457, 28193221, 23640856, -826062, -826189, -9137, 1864327, 1864389, 27438237, 3349614, + 3349612, 5506403, 7589636, -681088, -681283, -809987, 957561, -809686, 1370160, 455296, + 1370265, 455102, 412026, 549857, 2599146, 126242, 126537, 20333252], + ![76482650, 31705948, -826062, 25184767, -1528158, 1864327, 591274, 2284387, 3349856, 30621436, + 3504174, 5975451, -681088, -809987, 957561, 7109900, -612941, -613231, 1065984, 270523, + 2353878, 1717831, 487649, 555248, 390599, 1403322, 19998, 21494722], + ![76482117, 31706168, -826189, -1528158, 25184690, 1864389, 2284387, 591309, 3349854, 3504174, + 30621436, 5975450, -681283, 957561, -809686, -612941, -613231, 7109654, 2353567, 1717705, + 1066067, 270288, 487668, 555251, 390534, 19621, 1403748, 21494568], + ![28193221, 20333252, -9137, 1864327, 1864389, 6095189, -273910, -273940, 14265654, 1411787, + 1411790, 2769171, -1081254, 457322, 457423, 519327, -320360, 519176, -166144, 37680, -166195, + 37777, -70012, -71505, -742651, 78463, 78319, 9365790], + ![31705948, 21494722, 1864327, 591274, 2284387, -273910, 6477974, -467041, 1432129, 15833908, + 1503645, 2933691, 457322, 519327, -320360, -486932, 437258, 437401, -18413, 127362, -416222, + -377821, -110636, -92651, 72861, -364320, 131135, 10300379], + ![31706168, 21494568, 1864389, 2284387, 591309, -273940, -467041, 6477980, 1432127, 1503644, + 15833900, 2933688, 457423, -320360, 519176, 437258, 437401, -486807, -416068, -377759, -18453, + 127480, -110643, -92653, 72892, 131319, -364529, 10300417], + ![148973087, 79751621, 27438237, 3349856, 3349854, 14265654, 1432129, 1432127, 65363241, + 6925782, 6925775, 12788775, 6365418, 202667, 202668, 307820, 305587, 307807, 1189529, 623959, + 1189513, 623959, 291310, 474628, 1305861, 335978, 335974, 45340304], + ![162381159, 86495040, 3349614, 30621436, 3504174, 1411787, 15833908, 1503644, 6925782, + 72654288, 7390663, 13722116, 315848, 196997, 310742, 7147237, 236820, 310383, 1203533, 630687, + 1779888, 1136477, 293178, 429020, 665467, 784189, 340281, 48848306], + ![162381048, 86494935, 3349612, 3504174, 30621436, 1411790, 1503645, 15833900, 6925775, 7390663, + 72654222, 13722105, 315841, 310741, 196996, 310382, 236820, 7147227, 1779896, 1136476, + 1203525, 630686, 293173, 429020, 665471, 340280, 784192, 48848296], + ![76574425, 39889758, 5506403, 5975451, 5975450, 2769171, 2933691, 2933688, 12788775, 13722116, + 13722105, 6719268, 635359, 323085, 323085, 780189, 321057, 780185, 1311683, 705659, 1311685, + 705658, 305822, 461335, 739380, 389139, 389138, 22979581], + ![23640856, -9137, 7589636, -681088, -681283, -1081254, 457322, 457423, 6365418, 315848, 315841, + 635359, 4795194, -1025445, -1025493, 1321273, 113560, 1321273, 320428, 127678, 320439, 127655, + 194717, 89718, 1340107, 149877, 149893, 6095189], + ![-826062, 1864327, -681088, -809987, 957561, 457322, 519327, -320360, 202667, 196997, 310741, + 323085, -1025445, 1321273, 113560, -1027707, 354183, 354275, 309873, 125148, -128440, -210027, + 153598, -9261, -257922, -120319, 156445, -273910], + ![-826189, 1864389, -681283, 957561, -809686, 457423, -320360, 519176, 202668, 310742, 196996, + 323085, -1025493, 113560, 1321273, 354183, 354275, -1027629, -128470, -210023, 309875, 125128, + 153615, -9266, -257943, 156420, -120298, -273940], + ![25184767, 591274, -809987, 7109900, -612941, 519327, -486932, 437258, 307820, 7147237, 310382, + 780189, 1321273, -1027707, 354183, 4647223, -1001747, 1519553, 323490, 131237, 947241, 739234, + 200318, 77972, 215330, 807044, 179693, 6477974], + ![-1528158, 2284387, 957561, -612941, -613231, -320360, 437258, 437401, 305587, 236820, 236820, + 321057, 113560, 354183, 354275, -1001747, 1519553, -1001921, -195351, -262558, -195332, + -262559, 195058, 78186, 210862, -143279, -143251, -467041], + ![25184690, 591309, -809686, -613231, 7109654, 519176, 437401, -486807, 307807, 310383, 7147227, + 780185, 1321273, 354275, -1027629, 1519553, -1001921, 4647222, 947187, 739214, 323500, 131225, + 200325, 77940, 215328, 179660, 807060, 6477980], + ![21035273, -2998234, 1370160, 1065984, 2353567, -166144, -18413, -416068, 1189529, 1203533, + 1779896, 1311683, 320428, 309873, -128470, 323490, -195351, 947187, 2804403, 1488164, 2595168, + 1338800, 673877, 920821, 1395420, 741344, 876755, 4872560], + ![11656848, -1514923, 455296, 270523, 1717705, 37680, 127362, -377759, 623959, 630687, 1136476, + 705659, 127678, 125148, -210023, 131237, -262558, 739214, 1488164, 876755, 1338790, 725460, + 305316, 478132, 775756, 395345, 523501, 2735066], + ![21035497, -2998344, 1370265, 2353878, 1066067, -166195, -416222, -18453, 1189513, 1779888, + 1203525, 1311685, 320439, -128440, 309875, 947241, -195332, 323500, 2595168, 1338790, 2804463, + 1488200, 673907, 920821, 1395424, 876780, 741348, 4872616], + ![11656813, -1514904, 455102, 1717831, 270288, 37777, -377821, 127480, 623959, 1136477, 630686, + 705658, 127655, -210027, 125128, 739234, -262559, 131225, 1338800, 725460, 1488200, 876780, + 305305, 478133, 775732, 523496, 395329, 2735057], + ![5373335, -1192529, 412026, 487649, 487668, -70012, -110636, -110643, 291310, 293178, 293173, + 305822, 194717, 153598, 153615, 200318, 195058, 200325, 673877, 305316, 673907, 305305, + 311051, 206949, 375018, 185908, 185909, 1188822], + ![6700445, -868051, 549857, 555248, 555251, -71505, -92651, -92653, 474628, 429020, 429020, + 461335, 89718, -9261, -9266, 77972, 78186, 77940, 920821, 478132, 920821, 478133, 206949, + 375018, 507092, 270806, 270824, 1563499], + ![13951051, -2410969, 2599146, 390599, 390534, -742651, 72861, 72892, 1305861, 665467, 665471, + 739380, 1340107, -257922, -257943, 215330, 210862, 215328, 1395420, 775756, 1395424, 775732, + 375018, 507092, 1483528, 469720, 469789, 3215208], + ![7733193, -1319551, 126242, 1403322, 19621, 78463, -364320, 131319, 335978, 784189, 340280, + 389139, 149877, -120319, 156420, 807044, -143279, 179660, 741344, 395345, 876780, 523496, + 185908, 270806, 469720, 433053, 236319, 1803902], + ![7733555, -1319691, 126537, 19998, 1403748, 78319, 131135, -364529, 335974, 340281, 784192, + 389138, 149893, 156445, -120298, 179693, -143251, 807060, 876755, 523501, 741348, 395329, + 185909, 270824, 469789, 236319, 433249, 1803955], + ![298818064, 141743481, 20333252, 21494722, 21494568, 9365790, 10300379, 10300417, 45340304, + 48848306, 48848296, 22979581, 6095189, -273910, -273940, 6477974, -467041, 6477980, 4872560, + 2735066, 4872616, 2735057, 1188822, 1563499, 3215208, 1803902, 1803955, 95993371]] + +/-- Exact integer matrix after 1 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage1 : Fin 27 → Fin 27 → ℤ := + ![![119627585843864631, -2264475649009091, -669843258991950, -669397635314671, 8398808854860177, + 8073310031188076, 8073062903216216, 16689978027121219, 17757639972971883, 17757581960266776, + 7475117560928725, -10016523237792328, 2214006448593706, 2214122208832007, -10069663602166621, + 2931269978280154, -10069596007376470, -11902653600051899, -6449371238728624, + -11902858421259611, -6449337422914919, -3467109866701605, -3704409424588535, + -8316573931570113, -4593080909508859, -4593374147353465, 15251116202492368], + ![-2264475649009091, 18463843835577151, -6329100102721050, -6329188752594469, -2037680328472997, + -416962154166236, -416915983486776, 16719406336562241, -8333946979398663, -8333940992786936, + -3238447687225, 5888641966072808, -621651635527666, -621837497692627, -2622067679855519, + 1067514194626206, -2621761139593330, -143358540742761, -383431197627536, -143269657869129, + -383622679326541, 25406717800905, 67750219701635, 1595347553868693, -430172503612201, + -429903550039635, -1167143082719248], + ![-669843258991950, -6329100102721050, 19335171248977500, -7377712985770050, -291965254115650, + -1833680923802200, -140584749985200, -8044000472440550, 18202094649608650, -8915158860817200, + 118836053773750, -2489203315148400, -746807589175700, 1020750124120850, 5183702280207450, + -496063426541300, -2539422830628500, -542849422513450, -621023625687200, 745027445372950, + 826287051205550, 76682099862250, 42780210220750, -676414350765150, 811866906398550, + -571484780320750, -1359675402589600], + ![-669397635314671, -6329188752594469, -7377712985770050, 19335175779198311, -291888227128857, + -140551024531916, -1833645850597656, -8043923069785179, -8915080801233603, 18202189688281384, + 118875867942275, -2489385714572152, 1020739970533254, -746497316237887, -2539125296311739, + -496354241049514, 5183475592811270, 744744789287059, 826164587412784, -542772342707149, + -621249735713121, 76703963849805, 42786781557935, -676471914854967, -571829971809581, + 812269341664065, -1359670132561488], + ![8398808854860177, -2037680328472997, -291965254115650, -291888227128857, 5300331289645159, + -1167802798978508, -1167839001487128, 10065622835156773, -3166260901923139, -3166254772475608, + 610291313027075, -1747765877837176, 480611348525702, 480715929064769, -190712701864507, + -277276303783082, -190861530986490, -759196100484333, -290964091827408, -759253415765837, + -290866105064673, -221503621162035, -260412126683345, -1135976064025271, -139560619284653, + -139714825230655, 941146282855856], + ![8073310031188076, -416962154166236, -1833680923802200, -140551024531916, -1167802798978508, + 5472706861421296, -1472315113887264, -3291203949821476, 10685459416566268, -3644800064073504, + 505826262820100, -292233751011488, 545518078816776, -294164894527828, -1285438912894116, + 485709698083784, -361103471536120, -685356271903804, -242229416531904, -1083172374036156, + -747411306823724, -281002680096580, -305094960746860, -369470297551348, -609508215131964, + -114064692685140, 826069001355328], + ![8073062903216216, -416915983486776, -140584749985200, -1833645850597656, -1167839001487128, + -1472315113887264, 5472698910755776, -3291238723900616, -3644840307288712, 10685419212095936, + 505806416446600, -292137951999808, -294168739449584, 545371287233752, -361254453542856, + 485853034278544, -1285317012167920, -1083015899663864, -747352981038464, -685408001845496, + -242112871322584, -281010862230280, -305098434844760, -369442366782568, -113870916434424, + -609730394067240, 826041261381248], + ![16689978027121219, 16719406336562241, -8044000472440550, -8043923069785179, 10065622835156773, + -3291203949821476, -3291238723900616, 43170260349690431, -17264640526867833, + -17264630990855176, 1381246522500025, 2843566702357528, 325728006193394, 325747925775443, + -3444032485365729, 533241414683746, -3444034014438030, -1944160554697751, -1112597631249776, + -1944209924669239, -1112592417191731, -509172302435145, -523557975923715, -772470134364437, + -816059633576791, -816117561834285, 824454554556432], + ![17757639972971883, -8333946979398663, 18202094649608650, -8915080801233603, -3166260901923139, + 10685459416566268, -3644840307288712, -17264640526867833, 46286647201816719, + -18976959773874632, 1287872118741425, -3522981597032104, 331133904965858, 444899527373051, + 3057705345395047, 484964067175122, -3779136151255710, -2212199009621407, -1262165488526832, + -1635880383001023, -756369805186267, -579350364995265, -659006024915755, -1599920830648109, + -471535842110687, -915502624090245, 325882437543824], + ![17757581960266776, -8333940992786936, -8915158860817200, 18202189688281384, -3166254772475608, + -3644800064073504, 10685419212095936, -17264630990855176, -18976959773874632, + 46286617250421696, 1287869618502600, -3522985972897088, 444877813272976, 331153435666072, + -3779146859095816, 484963897549584, 3057710644244880, -1635833674706104, -756375194616704, + -2212241048060856, -1262159511280024, -579354768555080, -659005281166360, -1599915282081448, + -915443983726264, -471590765665640, 325905606348928], + ![7475117560928725, -3238447687225, 118836053773750, 118875867942275, 610291313027075, + 505826262820100, 505806416446600, 1381246522500025, 1287872118741425, 1287869618502600, + 855625435919375, -1174925954707800, 386340222664350, 386349947616325, -1148320051783975, + 438074820159150, -1148318155553250, -299080934693025, -186957432912400, -299096087364225, + -186955752807525, -105638037957375, -51747723119125, -328913708470675, -203025807389025, + -203054527330875, 97759569586800], + ![-10016523237792328, 5888641966072808, -2489203315148400, -2489385714572152, -1747765877837176, + -292233751011488, -292137951999808, 2843566702357528, -3522981597032104, -3522985972897088, + -1174925954707800, 4236303927587264, -1005916187210928, -1005961184822216, 725883549959448, + 149686963223248, 725885370305360, -176863859913688, -147899864981888, -176858155465432, + -147922037551928, 67686761025240, -68686255380920, 1010292212260344, -32942302133208, + -32934860123080, -969125821222784], + ![2214006448593706, -621651635527666, -746807589175700, 1020739970533254, 480611348525702, + 545518078816776, -294168739449584, 325728006193394, 331133904965858, 444877813272976, + 386340222664350, -1005916187210928, 1320590621572156, 112877516662282, -1006902821002446, + 352920646746204, 375079115390780, 327249439684926, 134777279172576, -111063375277186, + -200397749739594, 158036707856770, -3726017002410, -246397566908838, -113930903124034, + 162833395910410, -27067752416032], + ![2214122208832007, -621837497692627, 1020750124120850, -746497316237887, 480715929064769, + -294164894527828, 545371287233752, 325747925775443, 444899527373051, 331153435666072, + 386349947616325, -1005961184822216, 112877516662282, 1320590411736279, 374990377462963, + 353012452670138, -1006821686153590, -111090888835403, -200392240407728, 327254296230933, + 134758730675657, 158054390270315, -3730166045895, -246416795125361, 162809078991477, + -113908621928105, -27059802521904], + ![-10069663602166621, -2622067679855519, 5183702280207450, -2539125296311739, -190712701864507, + -1285438912894116, -361254453542856, -3444032485365729, 3057705345395047, -3779146859095816, + -1148320051783975, 725883549959448, -1006902821002446, 374990377462963, 4012950511155711, + -963260696830814, 885282450382770, -206278449286391, -162338000834416, 417466909325801, + 445659880632429, 64991810012055, -90777146121315, -136023968840117, 612285336128969, + -15074780756685, -1047689317231088], + ![2931269978280154, 1067514194626206, -496063426541300, -496354241049514, -277276303783082, + 485709698083784, 485853034278544, 533241414683746, 484964067175122, 484963897549584, + 438074820159150, 149686963223248, 352920646746204, 353012452670138, -963260696830814, + 1517217733127036, -963434814498980, -163205779282866, -244744494474016, -163186436975474, + -244745547959546, 203269304866930, 88425338630310, 232181410194058, -131461459251506, + -131432906058310, -10399784953888], + ![-10069596007376470, -2621761139593330, -2539422830628500, 5183475592811270, -190861530986490, + -361103471536120, -1285317012167920, -3444034014438030, -3779136151255710, 3057710644244880, + -1148318155553250, 725885370305360, 375079115390780, -1006821686153590, 885282450382770, + -963434814498980, 4012953389603900, 417420170429630, 445639896742880, -206272470940930, + -162348221792970, 64999223758850, -90808630187050, -136024894609190, -15098068415170, + 612292814727050, -1047660308240160], + ![-11902653600051899, -143358540742761, -542849422513450, 744744789287059, -759196100484333, + -685356271903804, -1083015899663864, -1944160554697751, -2212199009621407, -1635833674706104, + -299080934693025, -176863859913688, 327249439684926, -111090888835403, -206278449286391, + -163205779282866, 417420170429630, 2361920289815471, 1242959020000496, 2152680577914319, + 1093595756235051, 560847431354545, 779875310203515, 1101955833578077, 578674174083311, + 714077559314485, -1413159553571472], + ![-6449371238728624, -383431197627536, -621023625687200, 826164587412784, -290964091827408, + -242229416531904, -747352981038464, -1112597631249776, -1262165488526832, -756375194616704, + -186957432912400, -147899864981888, 134777279172576, -200392240407728, -162338000834416, + -244744494474016, 445639896742880, 1242959020000496, 740872894704896, 1093582408866544, + 589578302694576, 242679850651920, 400025931102640, 613130719052752, 305200344644336, + 433352124865360, -748210751702272], + ![-11902858421259611, -143269657869129, 745027445372950, -542772342707149, -759253415765837, + -1083172374036156, -685408001845496, -1944209924669239, -1635880383001023, -2212241048060856, + -299096087364225, -176858155465432, -111063375277186, 327254296230933, 417466909325801, + -163186436975474, -206272470940930, 2152680577914319, 1093582408866544, 2361970865962991, + 1242993145108939, 560876227727505, 779873809303835, 1101956708542653, 714108441848079, + 578668826998165, -1413170488817808], + ![-6449337422914919, -383622679326541, 826287051205550, -621249735713121, -290866105064673, + -747411306823724, -242112871322584, -1112592417191731, -756369805186267, -1262159511280024, + -186955752807525, -147922037551928, -200397749739594, 134758730675657, 445659880632429, + -244745547959546, -162348221792970, 1093595756235051, 589578302694576, 1242993145108939, + 740898710683031, 242669038718645, 400027165618215, 613107207339537, 433351615306091, + 305180395539785, -748209293070032], + ![-3467109866701605, 25406717800905, 76682099862250, 76703963849805, -221503621162035, + -281002680096580, -281010862230280, -509172302435145, -579350364995265, -579354768555080, + -105638037957375, 67686761025240, 158036707856770, 158054390270315, 64991810012055, + 203269304866930, 64999223758850, 560847431354545, 242679850651920, 560876227727505, + 242669038718645, 282178270977775, 170945264365925, 300054329374915, 144354963391345, + 144354018244075, -416827561923440], + ![-3704409424588535, 67750219701635, 42780210220750, 42786781557935, -260412126683345, + -305094960746860, -305098434844760, -523557975923715, -659006024915755, -659005281166360, + -51747723119125, -68686255380920, -3726017002410, -3730166045895, -90777146121315, + 88425338630310, -90808630187050, 779875310203515, 400025931102640, 779873809303835, + 400027165618215, 170945264365925, 330122036801975, 413613750082305, 218990165629115, + 219005740068025, -438715002838480], + ![-8316573931570113, 1595347553868693, -676414350765150, -676471914854967, -1135976064025271, + -369470297551348, -369442366782568, -772470134364437, -1599920830648109, -1599915282081448, + -328913708470675, 1010292212260344, -246397566908838, -246416795125361, -136023968840117, + 232181410194058, -136024894609190, 1101955833578077, 613130719052752, 1101956708542653, + 613107207339537, 300054329374915, 413613750082305, 1288896175995399, 361833830064157, + 361897779783695, -953618050585264], + ![-4593080909508859, -430172503612201, 811866906398550, -571829971809581, -139560619284653, + -609508215131964, -113870916434424, -816059633576791, -471535842110687, -915443983726264, + -203025807389025, -32942302133208, -113930903124034, 162809078991477, 612285336128969, + -131461459251506, -15098068415170, 578674174083311, 305200344644336, 714108441848079, + 433351615306091, 144354963391345, 218990165629115, 361833830064157, 373250726024751, + 176513926608885, -506915760798352], + ![-4593374147353465, -429903550039635, -571484780320750, 812269341664065, -139714825230655, + -114064692685140, -609730394067240, -816117561834285, -915502624090245, -471590765665640, + -203054527330875, -32934860123080, 162833395910410, -113908621928105, -15074780756685, + -131432906058310, 612292814727050, 714077559314485, 433352124865360, 578668826998165, + 305180395539785, 144354018244075, 219005740068025, 361897779783695, 176513926608885, + 373441127061975, -506970932937520], + ![15251116202492368, -1167143082719248, -1359675402589600, -1359670132561488, 941146282855856, + 826069001355328, 826041261381248, 824454554556432, 325882437543824, 325905606348928, + 97759569586800, -969125821222784, -27067752416032, -27059802521904, -1047689317231088, + -10399784953888, -1047660308240160, -1413159553571472, -748210751702272, -1413170488817808, + -748209293070032, -416827561923440, -438715002838480, -953618050585264, -506915760798352, + -506970932937520, 6701135627291904]] + +/-- Exact integer matrix after 2 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage2 : Fin 26 → Fin 26 → ℤ := + ![![2203657213483261276564022, -758651809601315023516104, -758661405467691682490696, + -224743880284244927617440, -31598361918637892483861, -31593398246991787750253, + 2037896265610466542347083, -956758214393564617542501, -956757629598014379910143, + 16539814011498954316646, 681761849340444211512049, -69353120704475167227421, + -69375092810328409679849, -336474134481158542216838, 134341935443677289236358, + -336437310742872630028997, -44102905375063724192359, -60473392630924453281617, + -44092736344105527197314, -60496222549223016567427, -4811841550846333461108, + -283749712642486387999, 172014897300002206360272, -61861417977050082645464, + -61829907740418407603909, -105086728059317669737417], + ![-758651809601315023516104, 2312571168401262239073177, -883026385030202177252190, + -29301213005155683094659, -213950969820261257499054, -11410127482055396361771, + -951104687770778629611726, 2189367475665709088551632, -1054604135362018247641404, + 19223227332525845085381, -304486883835119057576334, -87855751688010441110235, + 123592987934572946950305, 613368693230325646329708, -57379378707334561304313, + -310530073671193979550651, -72912678170131111369944, -78611624941962505223085, + 81152785201171428393246, 94526679952061629205973, 6850874311564563631509, + 2636319588994467178218, -86488616798150362233057, 94045033753746227490264, + -71442185324915255714892, -152438828562736155783732], + ![-758661405467691682490696, -883026385030202177252190, 2312572307138093281970750, + -29295741160767475479033, -11409525108595394100733, -213950537182457745379165, + -951102865727360843706683, -1054602671647885661677302, 2189370892854297892967709, + 19224659116013277728368, -304504240237923045825124, 123590709130490756288056, + -87819543609572547974791, -310490038356565323043885, -57415474388187391601852, + 613346107692695447890253, 81124413038364129744571, 94514881245412431339530, + -72898290301551481487435, -78635777309745258070208, 6855034873861018454709, + 2638756474747606872880, -86491796988988720390149, -71481236540379531636742, + 94095026605903392892607, -152444994380480551910897], + ![-224743880284244927617440, -29301213005155683094659, -29295741160767475479033, + 563525846172470268301227, -207507617361480761434668, -207509872599590122329300, + 1063950224543073468460041, -527915171695297846952895, -527913951206665809722469, + 10225592877062291342835, -124954148521461260946633, 38899358388127607741319, + 38910896857427959759512, 61758679713528569654883, -57789071082845285417715, + 61740307929240418687443, 9147315769432428728790, 19359704395549153924587, + 9142179534847138403247, 19371142302864217676811, 2621649593938315741281, + -39847362333524412888, -66044759337188189993136, 21881108649974503870356, + 21865124213537372246856, -15504152064021399520599], + ![-31598361918637892483861, -213950969820261257499054, -11409525108595394100733, + -207507617361480761434668, 589508375003301051558794, -241305842394715813046887, + -528462150063601273390379, 1134912780712392643128534, -579381097118142588247593, + 161833088636725654363, 45907279397695924402178, 47384650332487328680417, + -53065531211218871264770, -72478437729223654987978, 34439227282945821779374, + 38097033916659130952207, 14106296456252519468803, 23090453196404079600242, + -33481829866546217546780, -37343509756794419057165, -5624619369536434423422, + -6590927840117236433675, 22943440009780157778249, -35832630147443411747542, + 23438449764883081133471, -24306349051806602174111], + ![-31593398246991787750253, -11410127482055396361771, -213950537182457745379165, + -207509872599590122329300, -241305842394715813046887, 589511414104775216433668, + -528462185442318504651815, -579381991261827052478388, 1134912827898435749840076, + 161306225529412390000, 45916264239116586814097, -53064509458709885988176, + 47366702613025798990184, 38077029521841507386558, 34457098644693713059783, + -72466889232172348181881, -33467706278897245783028, -37337853198397319449825, + 14098820184061900363765, 23102528401211535945760, -5626454998267590913749, + -6592258901250036307787, 22944726042171539693988, 23458128271147974260081, + -35857976628300487909783, -24305898540521440829921], + ![2037896265610466542347083, -951104687770778629611726, -951102865727360843706683, + 1063950224543073468460041, -528462150063601273390379, -528462185442318504651815, + 4885798659338788480682657, -2361701887653776148044973, -2361699778652829884904900, + 40475639099862859980398, 507344572535933290458241, 2014336043717473088054, + 2014786939395355734322, -243938827531483995814601, 14867551581527779243754, + -243940138606274313227504, -33920206602059218019740, -25457504378884731908894, + -33922694151105306177826, -25457445018896064452980, -3045065826013546578114, + -805464809210820366088, 46394698868330981266707, -20964824412927480195398, + -20966860097340434648552, -155913286309105284776395], + ![-956758214393564617542501, 2189367475665709088551632, -1054602671647885661677302, + -527915171695297846952895, 1134912780712392643128534, -579381991261827052478388, + -2361701887653776148044973, 5221826084150317310179104, -2585500631645711185315740, + 21324586038047630282082, -243575969987690541006477, 297220230152178436038, + 13904671362114414039699, 544599369587703766314453, 5962643639301554590347, + -273276673777728158837814, -53276989574477895019143, -36464197818524331826782, + 15670253546235638853048, 24042318220710112863891, -7738596762519732478335, + -13053730942906333830267, -43711940826318497719152, 25153582727233358813184, + -27951884383779585122616, -231839301437535960897621], + ![-956757629598014379910143, -1054604135362018247641404, 2189370892854297892967709, + -527913951206665809722469, -579381097118142588247593, 1134912827898435749840076, + -2361699778652829884904900, -2585500631645711185315740, 5221824561471334875379506, + 21324720592303664746572, -243577074547463347086969, 13904257825881811561173, + 297629459252456748675, -273277338575267170869171, 5962793398308785152494, + 544598218987865764670223, 15671513500397012500869, 24041899839731229656988, + -53279071907251966289280, -36464457407473915421901, -7739324686171790513778, + -13053856872773281391619, -43711759531634941276872, -27950343047722832129475, + 25151953092959475678183, -231835645050807674589168], + ![16539814011498954316646, 19223227332525845085381, 19224659116013277728368, + 10225592877062291342835, 161833088636725654363, 161306225529412390000, + 40475639099862859980398, 21324586038047630282082, 21324720592303664746572, + 46479022735934118003008, -65678866752719869674722, 29666989667825053368812, + 29667287718962089043104, -62098836345818036707073, 30494245464159135141260, + -62099114783317087028030, 53195404758146339402465, 25844541848692287949396, + 53195123143278216148373, 25844490058399585367600, 13279830396127110316797, + 21500440752953967057890, 22820214947342261382759, 10046332563485637663706, + 10045088853538289187523, -102309145246211133703858], + ![681761849340444211512049, -304486883835119057576334, -304504240237923045825124, + -124954148521461260946633, 45907279397695924402178, 45916264239116586814097, + 507344572535933290458241, -243575969987690541006477, -243577074547463347086969, + -65678866752719869674722, 406448073984912617918438, -98158677996347372964209, + -98162901436837542692356, -14027322782430493006270, 47267823896382683198266, + -14026427954057338510735, -140381002960814316227879, -82293180676291549216246, + -140382372147827519641178, -82295494410433607428502, -26631182732755638392610, + -45322073995562583531845, 37555662305172269741220, -49947509739490672018336, + -49949556693469929922990, 36828977472701487370267], + ![-69353120704475167227421, -87855751688010441110235, 123590709130490756288056, + 38899358388127607741319, 47384650332487328680417, -53064509458709885988176, + 2014336043717473088054, 297220230152178436038, 13904257825881811561173, + 29666989667825053368812, -98158677996347372964209, 153077243392311128569523, + 8601183966030796508485, -98159053505533346208038, 35729194330222350295949, + 67163959569716281681981, 65500612264157080327304, 30402030045939795323938, + 13066761841285756526117, -9694224366400238292316, 26581753438477727052927, + 7755851935458814896020, -11062997772403856186349, -3460168141174144368566, + 29649126030564755650936, -37004119496319397966180], + ![-69375092810328409679849, 123592987934572946950305, -87819543609572547974791, + 38910896857427959759512, -53065531211218871264770, 47366702613025798990184, + 2014786939395355734322, 13904671362114414039699, 297629459252456748675, + 29667287718962089043104, -98162901436837542692356, 8601183966030796508485, + 153076705688923128541673, 67154659387598230217756, 35739837526757529909742, + -98148331535904773039992, 13064394839280755335987, -9692743849148401883908, + 65503024594233428593924, 30400482842439695867635, 26584270096386393381273, + 7755784418720897970346, -11064335268946419344397, 29646099521919331012556, + -3456321734930611261036, -37004933942523107769515], + ![-336474134481158542216838, 613368693230325646329708, -310490038356565323043885, + 61758679713528569654883, -72478437729223654987978, 38077029521841507386558, + -243938827531483995814601, 544599369587703766314453, -273277338575267170869171, + -62098836345818036707073, -14027322782430493006270, -98159053505533346208038, + 67154659387598230217756, 378661456699661018963525, -85715649091737656464322, + 4506757925230479406892, -144532310625387120902822, -84363101950026346670284, + -69917221673955242838875, -11629442678095070972468, -27137816698072666665561, + -48161607590590820507909, -100017320822703585552045, 26995436952420032345975, + -48057092091786097189258, 28241065981889112514831], + ![134341935443677289236358, -57379378707334561304313, -57415474388187391601852, + -57789071082845285417715, 34439227282945821779374, 34457098644693713059783, + 14867551581527779243754, 5962643639301554590347, 5962793398308785152494, + 30494245464159135141260, 47267823896382683198266, 35729194330222350295949, + 35739837526757529909742, -85715649091737656464322, 172908750927921662897051, + -85736676506612175938567, 15365977788324450627044, -10373344731634898279492, + 15368892048119486793605, -10373569880845078204804, 34479651281052680527719, + 21436733921324641622105, 52153425067098040020591, -2262856823914223094146, + -2258581515053663003852, -45949240226956876794193], + ![-336437310742872630028997, -310530073671193979550651, 613346107692695447890253, + 61740307929240418687443, 38097033916659130952207, -72466889232172348181881, + -243940138606274313227504, -273276673777728158837814, 544598218987865764670223, + -62099114783317087028030, -14026427954057338510735, 67163959569716281681981, + -98148331535904773039992, 4506757925230479406892, -85736676506612175938567, + 378663162350495949253142, -69919945897236601728872, -11631737872530543408640, + -144532853359795348075901, -84363548203145014077014, -27136695450877652970210, + -48165123554589559648715, -100016869413153157695705, -48056614663359782483959, + 26993689280764927490975, 28243505361442319737498], + ![-44102905375063724192359, -72912678170131111369944, 81124413038364129744571, + 9147315769432428728790, 14106296456252519468803, -33467706278897245783028, + -33920206602059218019740, -53276989574477895019143, 15671513500397012500869, + 53195404758146339402465, -140381002960814316227879, 65500612264157080327304, + 13064394839280755335987, -144532310625387120902822, 15365977788324450627044, + -69919945897236601728872, 140877659503437453545705, 71927555072790758248435, + 115844379990151548579194, 54059990912686925488322, 25825016503005489417126, + 49202298445236639050972, 32835017430808032312375, 14555543412883481001613, + 30750033194688849985426, 12475887366456945153683], + ![-60473392630924453281617, -78611624941962505223085, 94514881245412431339530, + 19359704395549153924587, 23090453196404079600242, -37337853198397319449825, + -25457504378884731908894, -36464197818524331826782, 24041899839731229656988, + 25844541848692287949396, -82293180676291549216246, 30402030045939795323938, + -9692743849148401883908, -84363101950026346670284, -10373344731634898279492, + -11631737872530543408640, 71927555072790758248435, 47034446435762442081845, + 54056670733292230713697, 28935657733071733577791, 6670526010621243159765, + 23963024813336395838623, 19710675007965015025209, 6887896513577430897518, + 22216493403290944262792, 8853464266296363117046], + ![-44092736344105527197314, 81152785201171428393246, -72898290301551481487435, + 9142179534847138403247, -33481829866546217546780, 14098820184061900363765, + -33922694151105306177826, 15670253546235638853048, -53279071907251966289280, + 53195123143278216148373, -140382372147827519641178, 13066761841285756526117, + 65503024594233428593924, -69917221673955242838875, 15368892048119486793605, + -144532853359795348075901, 115844379990151548579194, 54056670733292230713697, + 140878833932144146749209, 71930718913967285291816, 25827751205953585745298, + 49201360154619122883290, 32833418689991267766405, 30756277145735208783079, + 14550472625069058352987, 12477702961376712045467], + ![-60496222549223016567427, 94526679952061629205973, -78635777309745258070208, + 19371142302864217676811, -37343509756794419057165, 23102528401211535945760, + -25457445018896064452980, 24042318220710112863891, -36464457407473915421901, + 25844490058399585367600, -82295494410433607428502, -9694224366400238292316, + 30400482842439695867635, -11629442678095070972468, -10373569880845078204804, + -84363548203145014077014, 54059990912686925488322, 28935657733071733577791, + 71930718913967285291816, 47037970919232067334612, 6669349848286597109664, + 23963297763073308671174, 19708143590188785120597, 22218478964435226081895, + 6883774179323583472450, 8853123030045571556630], + ![-4811841550846333461108, 6850874311564563631509, 6855034873861018454709, + 2621649593938315741281, -5624619369536434423422, -5626454998267590913749, + -3045065826013546578114, -7738596762519732478335, -7739324686171790513778, + 13279830396127110316797, -26631182732755638392610, 26581753438477727052927, + 26584270096386393381273, -27137816698072666665561, 34479651281052680527719, + -27136695450877652970210, 25825016503005489417126, 6670526010621243159765, + 25827751205953585745298, 6669349848286597109664, 21735454506887453246691, + 7606174821243501613149, 7060299509820779461896, 1344119635169113382262, + 1342989881658612588339, 3013220517788883440199], + ![-283749712642486387999, 2636319588994467178218, 2638756474747606872880, -39847362333524412888, + -6590927840117236433675, -6592258901250036307787, -805464809210820366088, + -13053730942906333830267, -13053856872773281391619, 21500440752953967057890, + -45322073995562583531845, 7755851935458814896020, 7755784418720897970346, + -48161607590590820507909, 21436733921324641622105, -48165123554589559648715, + 49202298445236639050972, 23963024813336395838623, 49201360154619122883290, + 23963297763073308671174, 7606174821243501613149, 25769053111499342274188, + 18671619541778060420394, 9182612628676791084352, 9183389488169262640144, + 4013961932956054526252], + ![172014897300002206360272, -86488616798150362233057, -86491796988988720390149, + -66044759337188189993136, 22943440009780157778249, 22944726042171539693988, + 46394698868330981266707, -43711940826318497719152, -43711759531634941276872, + 22820214947342261382759, 37555662305172269741220, -11062997772403856186349, + -11064335268946419344397, -100017320822703585552045, 52153425067098040020591, + -100016869413153157695705, 32835017430808032312375, 19710675007965015025209, + 32833418689991267766405, 19708143590188785120597, 7060299509820779461896, + 18671619541778060420394, 85022135978446882846710, 5086610609600546551734, + 5091822025950069646671, 12758010228347091267297], + ![-61861417977050082645464, 94045033753746227490264, -71481236540379531636742, + 21881108649974503870356, -35832630147443411747542, 23458128271147974260081, + -20964824412927480195398, 25153582727233358813184, -27950343047722832129475, + 10046332563485637663706, -49947509739490672018336, -3460168141174144368566, + 29646099521919331012556, 26995436952420032345975, -2262856823914223094146, + -48056614663359782483959, 14555543412883481001613, 6887896513577430897518, + 30756277145735208783079, 22218478964435226081895, 1344119635169113382262, + 9182612628676791084352, 5086610609600546551734, 23554691027515971145889, 18195801601278895145, + 9408501987856138244581], + ![-61829907740418407603909, -71442185324915255714892, 94095026605903392892607, + 21865124213537372246856, 23438449764883081133471, -35857976628300487909783, + -20966860097340434648552, -27951884383779585122616, 25151953092959475678183, + 10045088853538289187523, -49949556693469929922990, 29649126030564755650936, + -3456321734930611261036, -48057092091786097189258, -2258581515053663003852, + 26993689280764927490975, 30750033194688849985426, 22216493403290944262792, + 14550472625069058352987, 6883774179323583472450, 1342989881658612588339, + 9183389488169262640144, 5091822025950069646671, 18195801601278895145, 23574774427660801873889, + 9406374082484683184278], + ![-105086728059317669737417, -152438828562736155783732, -152444994380480551910897, + -15504152064021399520599, -24306349051806602174111, -24305898540521440829921, + -155913286309105284776395, -231839301437535960897621, -231835645050807674589168, + -102309145246211133703858, 36828977472701487370267, -37004119496319397966180, + -37004933942523107769515, 28241065981889112514831, -45949240226956876794193, + 28243505361442319737498, 12475887366456945153683, 8853464266296363117046, + 12477702961376712045467, 8853123030045571556630, 3013220517788883440199, + 4013961932956054526252, 12758010228347091267297, 9408501987856138244581, + 9406374082484683184278, 569044132083316681008941]] + +/-- Exact integer matrix after 3 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage3 : Fin 25 → Fin 25 → ℤ := + ![![37788621552805100777283433380138, -21077473840285744387634383688844, + -1965033225563004981192544151918, -4141576116672760456246136690372, + -410544090961015979697289231254, -4596389807751681367748133179140, + 34262741750597587364517890553800, -25494386564690546883991555644960, + 459002520369411821506903422386, -1285362871534693009447285466292, + -2058211153726586844886464940534, 1836742237554947830439977400194, + 9165006771804483927433990580904, -205017339361234745601809974234, + -7853879227219077700399677518710, -1622813808420736909995783952184, + -1831612011339570271227908808298, 1215287304007280352265398614876, + 1357620236890384158916961618458, 95684170290134722657346906786, 46764108854176328047273499900, + -502324365676267836532635705786, 1340090073707269789011145628592, + -1708146636844367809719413129360, -3474509308638796459558191110912], + ![-21077473840285744387634383688844, 37788520818938857899346904994764, + -1964950456550798420998707919786, -410567007811636955453112908522, + -4141539202796801110316766361578, -4596192775109010322522813548918, + -25494440056165198286874946021140, 34262731661370474976754929824970, + 459030221955396357692777083952, -1285627906279049852813448941104, + 1836834038885351074277771984536, -2057689072629583382751674726926, + -7853402255683186244020143648578, -205671480959709904064312369096, + 9164797264987694909817782582234, 1214696633552308710487286691158, + 1357542824638713888145159475788, -1622487816921040192788216254894, + -1832206556581652843660389953128, 95760425940232750893738754530, + 46808975913944793828320361176, -502369149815930306887972290786, + -1709070791618667094698125081628, 1341205862301062708397337170990, + -3474631318515088113438186320786], + ![-1965033225563004981192544151918, -1964950456550798420998707919786, + 9958472168216062466912083067774, -3881857123871640251675078455256, + -3881889342334250066988635225320, 23427592237039905463222237696362, + -11522172081690683925054563616230, -11522148500442435896434385378498, + 219438713074654168142332663310, -1020954376299541495808528622186, + 586270815048129992159201182838, 586442086035789506275065440784, + 505522677071082339214734745326, -812143577172122506697153792910, + 505253431437518909515086355886, 85646552350314184779055305820, 243013575198883333725366675614, + 85571042401216564430095897254, 243181382167446608102885116702, 39253363380469006927599177402, + -1267106895320986701530864016, -893445387920481586501507843552, + 286852631501461217178367071112, 286617380696971997201867667312, + -483027682600450946812391119318], + ![-4141576116672760456246136690372, -410567007811636955453112908522, + -3881857123871640251675078455256, 10850974859620585918117733366837, + -4453434850521494800563644725037, -9196501271228758472864562598125, + 20653486619623945932142357066877, -10925484273957944371745172231799, + 7349940869863278984887810032, 1025737200899943118004045354455, 854552742030476474741246326803, + -995843718581514180799731357759, -1423999844182544122912919708214, + 669889274790231984639852536286, 612918292864942123114327541127, + 248202470744521340296033875657, 409375339781341125630955178577, + -628414705661081872459806487294, -703883436192254862399721593067, + -104881990797433691726107564712, -121486290992319218861594587019, + 468076536569404751230114048570, -676412156993139299707354185988, + 415427468041818053047552605223, -475504286793536765403395525809], + ![-410544090961015979697289231254, -4141539202796801110316766361578, + -3881889342334250066988635225320, -4453434850521494800563644725037, + 10851033464840985525395993719177, -9196586480759694322972390364301, + -10925461200944810421830047882319, 20653527341762820329055407847603, + 7339549254216932142302009698, 1025874422332039089129141564901, + -995816215552549028224828440335, 854219202332694827412316421021, + 612554026953175903657085417002, 670212908554982495516828191800, + -1423763423270243028227599914833, -628155391446852472688410810053, + -703770697364454916680920298021, 248069266062301549396100867148, + 409594256742317105660781328719, -104915605218930645125758145342, + -121510798667583224647181114531, 468093089182028654691167277592, + 415784209088503372852660668690, -676868175391998822834977946013, + -475491627602556117244680589773], + ![-4596389807751681367748133179140, -4596192775109010322522813548918, + 23427592237039905463222237696362, -9196501271228758472864562598125, + -9196586480759694322972390364301, 55284943044170582253028299275115, + -27206161402173066677870681934033, -27206132514500912102329079661301, + 463839577413643556930745454398, -2268259431151116024661135669315, + 1218559839830417589706232696501, 1218942448002739597892835937321, + 1238358394932541490072501267972, -2014685321666925539172242019146, + 1237706938852340289936636368673, 126464461338285070557618059107, + 561232489780188669851711683153, 126245405378666401677023609190, + 561622498606187613541270582751, 25878250675336804761727326576, -10003678071578783341674729149, + -2075696021589457795648577816962, 667637531681720614661647774876, + 667063244875575068146528208113, -1081887479904138949263252262409], + ![34262741750597587364517890553800, -25494440056165198286874946021140, + -11522172081690683925054563616230, 20653486619623945932142357066877, + -10925461200944810421830047882319, -27206161402173066677870681934033, + 88539180677836578136972603053777, -55279413958284565509541179258133, + 525101968113930592097960846950, 965691194945953003090918343905, + -549197711884081665763855743035, -298710872749696809448292540141, + 7340998574532434107797468952688, 1184278458359536931654071754832, + -7724784109033499345008993543755, -1334140769111495682319701409355, + -1155360669811966588332467732991, -63983740656849317455425912918, + -40954014521506734148972598075, -181036701153223568253029453538, + -242731875083617750477082385083, 570525032258457683809329801488, + -31402002767686070960766201736, -1009404669724016098839809242431, + -5111170094782951253518694042909], + ![-25494386564690546883991555644960, 34262731661370474976754929824970, + -11522148500442435896434385378498, -10925484273957944371745172231799, + 20653527341762820329055407847603, -27206132514500912102329079661301, + -55279413958284565509541179258133, 88539161982759211071502343382093, + 525104365880676916937073742702, 965667515103323888403735494719, + -298542422823077981273855425587, -549365562983947993923341472947, + -7725089219524093871995386084516, 1184280560340854502837374436802, + 7341273533132217834950931915785, -64041645408446772874171926349, + -40778836630662610522386364145, -1334097582237307838184901426802, + -1155547745216420799456882491293, -181050086696799490137080574760, + -242734193447916137514890408725, 570527530994753004821037981952, + -1009627987154895945436393806342, -31179707215375215387492231431, + -5111102226847785970729437547617], + ![459002520369411821506903422386, 459030221955396357692777083952, + 219438713074654168142332663310, 7349940869863278984887810032, 7339549254216932142302009698, + 463839577413643556930745454398, 525101968113930592097960846950, + 525104365880676916937073742702, 853902279809299969553743981060, + -1304129992933940981925447224798, 556083808196459530370484675930, + 556092336472568861163999341082, -1097400136701939030110987081918, + 543159614083048572734968714492, -1097410357075251079901392684058, + 986009125233641099141628241024, 484442859328777960364843186674, + 986002531633087133321696838550, 484445061785248137576931448382, + 245292762564501291069111202842, 396098393121753562575069187114, + 396587764759556065402514345206, 193616291819474370915701043796, + 193589024832288330697559681120, -1870105205348968234129908386874], + ![-1285362871534693009447285466292, -1285627906279049852813448941104, + -1020954376299541495808528622186, 1025737200899943118004045354455, + 1025874422332039089129141564901, -2268259431151116024661135669315, + 965691194945953003090918343905, 965667515103323888403735494719, + -1304129992933940981925447224798, 3601786393060666249018989277685, + -1412933027205166061094067809599, -1412885607302987857022295812601, + 1659180996954964589102872776062, 105100129323632949296516602010, + 1658987620780473418837272158093, -2334611448611350270513310532437, + -1171280923487996580810712971509, -2334694624043840403204231224630, + -1171193436222300602245997284791, -463149595031564699287466591688, + -833259861079232972802425318169, -288506936823651597393919642248, + -567531601772102616389696418776, -567748886622564712848271315769, + 1277318796144750157769690569197], + ![-2058211153726586844886464940534, 1836834038885351074277771984536, + 586270815048129992159201182838, 854552742030476474741246326803, + -995816215552549028224828440335, 1218559839830417589706232696501, + -549197711884081665763855743035, -298542422823077981273855425587, + 556083808196459530370484675930, -1412933027205166061094067809599, + 2779625735356288966852912836815, 118222580568834545785967377311, + -2003253981080437091635266494814, 736050373842379303947499270516, + 1042179073421952609855068763995, 1181017083868796098594442543779, + 524976190681435331495230201209, 215140136290510897774361667980, + -213649294169677141641156129849, 486872288469201883993022839946, + 142705881889923047036504009331, -104067007794845885830699561986, + -99603338043010574006981075716, 510320533223328942235422734713, + -742575274470048292924309812107], + ![1836742237554947830439977400194, -2057689072629583382751674726926, + 586442086035789506275065440784, -995843718581514180799731357759, + 854219202332694827412316421021, 1218942448002739597892835937321, + -298710872749696809448292540141, -549365562983947993923341472947, + 556092336472568861163999341082, -1412885607302987857022295812601, + 118222580568834545785967377311, 2779590349998371738292239022355, + 1041924606196335313675141863070, 736271106642921068182714274086, + -2003096917385272439952682149067, 215082537963746440889357290133, + -213619893335478845377217637239, 1181059318210478972161507367082, + 524923342823693066735444745137, 486917763975741808338017712094, + 142704586048966548704035548931, -104060051659921720835253703426, + 510235152026302555385830195216, -99525572026370689139817095443, + -742609578739716039185006932373], + ![9165006771804483927433990580904, -7853402255683186244020143648578, + 505522677071082339214734745326, -1423999844182544122912919708214, + 612554026953175903657085417002, 1238358394932541490072501267972, + 7340998574532434107797468952688, -7725089219524093871995386084516, + -1097400136701939030110987081918, 1659180996954964589102872776062, + -2003253981080437091635266494814, 1041924606196335313675141863070, + 6028920522485261590452402301926, -1201105254803082460022933538680, + -863271649256609475753067184602, -2786473984690152354082511170946, + -1724143216246365269623604988674, -1411962416488666701371198361522, + -384382239628402461517526725062, -513439315127046563049705361266, + -887982045859988472577461210360, -1358594053962280194561613719634, + 323285988151631349766189745478, -1059166424243270545040154288278, + 224652722937225608773188208556], + ![-205017339361234745601809974234, -205671480959709904064312369096, + -812143577172122506697153792910, 669889274790231984639852536286, + 670212908554982495516828191800, -2014685321666925539172242019146, + 1184278458359536931654071754832, 1184280560340854502837374436802, + 543159614083048572734968714492, 105100129323632949296516602010, + 736050373842379303947499270516, 736271106642921068182714274086, + -1201105254803082460022933538680, 3034282252520758398418698363618, + -1201533953471361831407912901508, 332583970340823267497859211790, + -123175463526983419500080439198, 332626234023427242287672756662, + -123153972967669764195926742762, 640552626974191662517758190622, + 395204270748485286303167060992, 767544178717962711071819176646, 27786415932251968567966187900, + 27829785268834804478731523738, -728417443423194782341650096160], + ![-7853879227219077700399677518710, 9164797264987694909817782582234, + 505253431437518909515086355886, 612918292864942123114327541127, + -1423763423270243028227599914833, 1237706938852340289936636368673, + -7724784109033499345008993543755, 7341273533132217834950931915785, + -1097410357075251079901392684058, 1658987620780473418837272158093, + 1042179073421952609855068763995, -2003096917385272439952682149067, + -863271649256609475753067184602, -1201533953471361831407912901508, + 6029159077702382242252869257165, -1412027625832105921039529440997, + -384341691191559954409457935059, -2786441807540937413619200075480, + -1724197027988798478184174593317, -513417179476271267759924483216, + -888046726014222386232073251643, -1358638688146024291323779076346, + -1059227215592401993351783883326, 323361455015110694925731634967, + 224730006470576306854229037097], + ![-1622813808420736909995783952184, 1214696633552308710487286691158, + 85646552350314184779055305820, 248202470744521340296033875657, + -628155391446852472688410810053, 126464461338285070557618059107, + -1334140769111495682319701409355, -64041645408446772874171926349, + 986009125233641099141628241024, -2334611448611350270513310532437, + 1181017083868796098594442543779, 215082537963746440889357290133, + -2786473984690152354082511170946, 332583970340823267497859211790, + -1412027625832105921039529440997, 2578845022614731645896592025459, + 1302681335347298493864238874157, 2117711262339869852831021530882, + 973534899458291739595657359361, 473948105803753325216951057000, + 906249883229882758959039065353, 668269606805511938675937316358, + 245321008256938586813476443610, 543650976780425633344592898111, + 191075904480393848351406908533], + ![-1831612011339570271227908808298, 1357542824638713888145159475788, + 243013575198883333725366675614, 409375339781341125630955178577, + -703770697364454916680920298021, 561232489780188669851711683153, + -1155360669811966588332467732991, -40778836630662610522386364145, + 484442859328777960364843186674, -1171280923487996580810712971509, + 524976190681435331495230201209, -213619893335478845377217637239, + -1724143216246365269623604988674, -123175463526983419500080439198, + -384341691191559954409457935059, 1302681335347298493864238874157, + 835850403974312718799441774171, 973487295757985046085360093516, + 502441461536373151620079955553, 120445165519404927413865575574, + 441278930830425992851290789533, 450045825191069180504461734362, 95609996132224349588253611268, + 377993682145884009746933727741, 109966688165718366278961505933], + ![1215287304007280352265398614876, -1622487816921040192788216254894, + 85571042401216564430095897254, -628414705661081872459806487294, + 248069266062301549396100867148, 126245405378666401677023609190, + -63983740656849317455425912918, -1334097582237307838184901426802, + 986002531633087133321696838550, -2334694624043840403204231224630, + 215140136290510897774361667980, 1181059318210478972161507367082, + -1411962416488666701371198361522, 332626234023427242287672756662, + -2786441807540937413619200075480, 2117711262339869852831021530882, + 973487295757985046085360093516, 2578874153876368865576379694542, + 1302736342255764178049260618854, 473998890742704883049277598524, + 906232623118734851657324625074, 668225534182027340340563306178, + 543759638218021847737898381382, 245244472106432481301001601048, + 191118282490422868000094441056], + ![1357620236890384158916961618458, -1832206556581652843660389953128, + 243181382167446608102885116702, -703883436192254862399721593067, + 409594256742317105660781328719, 561622498606187613541270582751, + -40954014521506734148972598075, -1155547745216420799456882491293, + 484445061785248137576931448382, -1171193436222300602245997284791, + -213649294169677141641156129849, 524923342823693066735444745137, + -384382239628402461517526725062, -123153972967669764195926742762, + -1724197027988798478184174593317, 973534899458291739595657359361, + 502441461536373151620079955553, 1302736342255764178049260618854, + 835892242376008822970422720585, 120422581158587283286398662332, + 441283904680476649620210897105, 450032021594015995711174696338, + 378002523535610115330329502302, 95538187841647520056339491147, + 109940347342076492406191331071], + ![95684170290134722657346906786, 95760425940232750893738754530, 39253363380469006927599177402, + -104881990797433691726107564712, -104915605218930645125758145342, + 25878250675336804761727326576, -181036701153223568253029453538, + -181050086696799490137080574760, 245292762564501291069111202842, + -463149595031564699287466591688, 486872288469201883993022839946, + 486917763975741808338017712094, -513439315127046563049705361266, + 640552626974191662517758190622, -513417179476271267759924483216, + 473948105803753325216951057000, 120445165519404927413865575574, + 473998890742704883049277598524, 120422581158587283286398662332, + 400194795837591413826767348798, 140101771133837855956050436606, + 136976670211739562273546600848, 22271715755311377645050769692, 22252172042291679307581915506, + 51279513851675251337192644682], + ![46764108854176328047273499900, 46808975913944793828320361176, -1267106895320986701530864016, + -121486290992319218861594587019, -121510798667583224647181114531, + -10003678071578783341674729149, -242731875083617750477082385083, + -242734193447916137514890408725, 396098393121753562575069187114, + -833259861079232972802425318169, 142705881889923047036504009331, + 142704586048966548704035548931, -887982045859988472577461210360, + 395204270748485286303167060992, -888046726014222386232073251643, + 906249883229882758959039065353, 441278930830425992851290789533, + 906232623118734851657324625074, 441283904680476649620210897105, + 140101771133837855956050436606, 474690506034330216917081401585, + 344357515682877180173143007316, 169005980147582922812221323368, + 169020365400222589640395096867, 73691847721664781172364561431], + ![-502324365676267836532635705786, -502369149815930306887972290786, + -893445387920481586501507843552, 468076536569404751230114048570, + 468093089182028654691167277592, -2075696021589457795648577816962, + 570525032258457683809329801488, 570527530994753004821037981952, + 396587764759556065402514345206, -288506936823651597393919642248, + -104067007794845885830699561986, -104060051659921720835253703426, + -1358594053962280194561613719634, 767544178717962711071819176646, + -1358638688146024291323779076346, 668269606805511938675937316358, + 450045825191069180504461734362, 668225534182027340340563306178, + 450032021594015995711174696338, 136976670211739562273546600848, + 344357515682877180173143007316, 1318847298042506642928589495356, + 182652115463568487057629276476, 182702805654047707752243506710, + 386121342149245445866498624618], + ![1340090073707269789011145628592, -1709070791618667094698125081628, + 286852631501461217178367071112, -676412156993139299707354185988, + 415784209088503372852660668690, 667637531681720614661647774876, + -31402002767686070960766201736, -1009627987154895945436393806342, + 193616291819474370915701043796, -567531601772102616389696418776, + -99603338043010574006981075716, 510235152026302555385830195216, + 323285988151631349766189745478, 27786415932251968567966187900, + -1059227215592401993351783883326, 245321008256938586813476443610, + 95609996132224349588253611268, 543759638218021847737898381382, 378002523535610115330329502302, + 22271715755311377645050769692, 169005980147582922812221323368, 182652115463568487057629276476, + 401910892214912968861575371002, -31638091081253815878261463806, + 118971716806760838557732967674], + ![-1708146636844367809719413129360, 1341205862301062708397337170990, + 286617380696971997201867667312, 415427468041818053047552605223, + -676868175391998822834977946013, 667063244875575068146528208113, + -1009404669724016098839809242431, -31179707215375215387492231431, + 193589024832288330697559681120, -567748886622564712848271315769, + 510320533223328942235422734713, -99525572026370689139817095443, + -1059166424243270545040154288278, 27829785268834804478731523738, + 323361455015110694925731634967, 543650976780425633344592898111, + 377993682145884009746933727741, 245244472106432481301001601048, 95538187841647520056339491147, + 22252172042291679307581915506, 169020365400222589640395096867, 182702805654047707752243506710, + -31638091081253815878261463806, 402313428738603417830747581067, + 118960198841705374688001515073], + ![-3474509308638796459558191110912, -3474631318515088113438186320786, + -483027682600450946812391119318, -475504286793536765403395525809, + -475491627602556117244680589773, -1081887479904138949263252262409, + -5111170094782951253518694042909, -5111102226847785970729437547617, + -1870105205348968234129908386874, 1277318796144750157769690569197, + -742575274470048292924309812107, -742609578739716039185006932373, + 224652722937225608773188208556, -728417443423194782341650096160, + 224730006470576306854229037097, 191075904480393848351406908533, + 109966688165718366278961505933, 191118282490422868000094441056, + 109940347342076492406191331071, 51279513851675251337192644682, 73691847721664781172364561431, + 386121342149245445866498624618, 118971716806760838557732967674, + 118960198841705374688001515073, 10390036522711088707443257323323]] + +/-- Exact integer matrix after 4 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage4 : Fin 24 → Fin 24 → ℤ := + ![![446401646662782787320944432891295635868, -52490335099291021886211310136469513330, + -46653682300468541543456813588450077182, -74946452155801075965392686047874490370, + -122779565551077798800254046235992244402, -109466981780307364166115779741710130460, + 343694168762422042902411852809204962710, 12261767750971196369706280115382885780, + -34340326728282266228348580120104465400, 11811970773416417501119776495469830876, + -17717522914471228614010986069681024366, -47010058837353755244521112043978147854, + -5487826913999620125204918492470187852, 82038676610945027505764655604531207866, + 5307947043924786374677434174560313114, 5760386737904003847789985510587013056, + -16198704367725575584634935774683305274, -18433608864658029845136956554731406596, + 2557310210195013679951842498105487842, 1249974787490027459015432097103271904, + -13419313211756437451456287622060965266, -16489731550308235635102049418921340228, + 6661156105235035790042733750245753490, -92816344456881669512122007994580011918], + ![-52490335099291021886211310136469513330, 169017022317442123714572874920774279004, + -70259731642551184666401935389373570492, -66933268542927034788064229514638661606, + 397640954721799535526936727457676474338, -167031229753144483501535586305255325970, + -220317126843871462188437019743803357182, 4172264919108111348086395074210665324, + -18653644971015599992931503792931336442, 8218116930439204158200544924633620156, + 11694240564166662528397948281078336922, 16841343436823817152411100931478963130, + -14109568392814025879782722956488790836, 1660737911237652119858475993854243204, + 21592333566315497220793063737806284, 2533955613693555068639232311094560144, + 2551073567050725634612752054912701510, 5380718026401929661880860501052633060, + 758445123412802647232392614660748592, 19971710871719612401708835410808636, + -15768856198765553630790942294727385442, 6113966805218491479861479434966139496, + 3391775630233711800225335104755510208, -11381296681654063892750399593535847050], + ![-46653682300468541543456813588450077182, -70259731642551184666401935389373570492, + 178290310904561611545012589059594610051, -77139703370515349881469408565009871527, + -166341390192736243056204841065481355515, 418562622579095160993461390072277140483, + -235266142956858608922846676263890365881, 988691887508876505515697360728914364, + 15173760475469499946881334077783635553, 10785766435328840697059224537774318553, + -13624874794485085865810237698138094117, -7194139792168018953178810345894348602, + 11102043104270985103166812880989035110, -4250253243340621659056912281612168027, + 1206277595448716793492392714562636919, 3577674957173216817986997803946948035, + -8492119601347425546171462774928017850, -9518765945354984153639889724166012585, + -1618701203484083868698705360884220812, -1995374929871398706287314552445731901, + 7082568199339366730701545362800045194, -9080630984001297186300740698801970460, + 3913499796962987158463984318846426857, -14684042559888308936058195115506352223], + ![-74946452155801075965392686047874490370, -66933268542927034788064229514638661606, + -77139703370515349881469408565009871527, 185998551907805531621084022752478757905, + -158560662083232752863773152462145709959, -180968142416382675330863148952290061401, + 349419934271200649662561460344875815517, 211372358078045547160324541679609744, + 17352373109843102005929507861648495735, -17459842800122790149601209013091182903, + 14990457513181131888674798836885288917, 12211614181330010143678570182917917086, + 11454709538998561046643053594441126862, -25878081464585692483115971974252041877, + -11074028589474946068601481980068190275, -12409589778086200365138084923744257845, + 4480335950247172665450831995673550224, 7276705844333967165262865899892623707, + -1781281365301767181538645206866395616, -2074971927980390189287819282814448849, + 7933341987828993097247521767046500366, 7379586120061226050954607924895256254, + -11925259821938704239795676648169118147, -8801102237672661005294747394945627651], + ![-122779565551077798800254046235992244402, 397640954721799535526936727457676474338, + -166341390192736243056204841065481355515, -158560662083232752863773152462145709959, + 938446768556570590974601221109278490285, -395069802524797081671215152830665816207, + -519710768562083861514957881323507537179, 8911373619409198539721234779629454862, + -41577440206550958928931207375730677925, 16603015947192664458385270686220818199, + 24733673562702644126655044762840540339, 40351920390642769824934462023683578668, + -34975730483819486193795205575940059314, 4842744420036638437129585688979369067, + -1216235974957053557708246974740836227, 5803715432923204496921339014019367427, + 4699720973342136362559870747166356130, 12462506285902902897531878478223434989, + 643341966994380606803067436875002524, -74003856171116913597827046732550571, + -36642073694144560828992277487497084218, 14243902446974285260167654848454789444, + 7876040163804874240856657521336667327, -25799491575241357744968988163261756551], + ![-109466981780307364166115779741710130460, -167031229753144483501535586305255325970, + 418562622579095160993461390072277140483, -180968142416382675330863148952290061401, + -395069802524797081671215152830665816207, 985560778542816796501021939285941346783, + -551549153533448358719096120952185362107, 1867892477203172123987878151940359650, + 36544792326658383155244193268941931295, 22583608935082462848338741553036906835, + -33680236934168764167568809567617770939, -16614218848609208088765906267038829648, + 23495807928845053568312250778334114728, -10352566375211659371861701224093343645, + 2353682675039248049561074021800458555, 8665849709499545553838271726921440711, + -19992643203139718538321846331490306522, -21810736730604829404521157473029526125, + -4592152237381267813466037887087908502, -4889494375658219685543865630725625157, + 17593645830846906473354636458928136552, -21374376299709137060141622280916025144, + 9249068279679662855388121055249716751, -33624947109947737895689454469324357811], + ![343694168762422042902411852809204962710, -220317126843871462188437019743803357182, + -235266142956858608922846676263890365881, 349419934271200649662561460344875815517, + -519710768562083861514957881323507537179, -551549153533448358719096120952185362107, + 1223334156494299022097979124729461398147, 14314820677846430755778023957680304338, + 1688877166784152868126968137738349041, -28931150012032674077328867067638724893, + 11828903837985412845079092131349556707, -26439796132250384913316692758296649244, + 17936337086859304305333269438729056638, 35026670089961271681938030113781146215, + -19872731470396319810678147508250687491, -21889430163312260684417200474164484095, + -8817480420850987896706097516298420078, -4109015343878095639140603946330196307, + -1997690001808883869627356059082253560, -3621419999815985516713508587565377275, + 3972032193231919948556038073078788128, -1809571616093474911643553241721664858, + -20296436556154612836920969486658323049, -127842928329035912879431366165739088303], + ![12261767750971196369706280115382885780, 4172264919108111348086395074210665324, + 988691887508876505515697360728914364, 211372358078045547160324541679609744, + 8911373619409198539721234779629454862, 1867892477203172123987878151940359650, + 14314820677846430755778023957680304338, 14547229299067731072317970049544738422, + -22095673348421732988260440483972650246, 9964510157132204005334301894086541112, + 9153371682153234067391571491972904656, -20727361490623274572975177578595642074, + 9356880211984408181373175743298851010, -17182651675585779640026623981080530452, + 17246240057975584911501364166813597288, 8688802544935003491124223939333961820, + 16654975355474887862726058501324906262, 8024551134493015806745744885070122724, + 4186384362514857426664867229439756400, 6782609990371263397954972018920027106, + 6905372129455160228831774858476297992, 3041030163705552386003397942845437788, + 3675483626980877899662084864902782160, -31345115255002666005932412458948812390], + ![-34340326728282266228348580120104465400, -18653644971015599992931503792931336442, + 15173760475469499946881334077783635553, 17352373109843102005929507861648495735, + -41577440206550958928931207375730677925, 36544792326658383155244193268941931295, + 1688877166784152868126968137738349041, -22095673348421732988260440483972650246, + 61014201477081873289850687875803513603, -25429699002376030772333016368104783845, + -23157013224567353823753770931697467195, 33797689471699804229272718894480029842, + 1682687903289930694610421765482587866, 23867491860560360734798328721783343887, + -40980807980761843101697065892359809547, -21153642834702575897760747434054299239, + -39326809033768580081174330788779939234, -19291907389349410855774388827297522701, + -7886342659268682668176466884061184156, -14261579570512109889108799105284008751, + -5240356108671721059873120153934181988, -8950455076536604427708233833626589192, + -10732175555725466936276139936415187511, 19877007666921015914804108450133052131], + ![11811970773416417501119776495469830876, 8218116930439204158200544924633620156, + 10785766435328840697059224537774318553, -17459842800122790149601209013091182903, + 16603015947192664458385270686220818199, 22583608935082462848338741553036906835, + -28931150012032674077328867067638724893, 9964510157132204005334301894086541112, + -25429699002376030772333016368104783845, 45743045334694719738253112312521095787, + 3742810662884738322155060782082138387, -25791982099453174962004442043161958618, + 12430408812562722731521084560384108466, 10535925745734298474099598086588072735, + 18736541189878650859162196900585444693, 7291643284872159214658742923738109805, + 4824328852120664829606886365977112592, -2395673508569140075012867656812462845, + 8438322787346844678583934573867472376, 2490817964314506681623436836150862649, + -2253725468520334039029452807473984536, -456370665930930691767740871613100940, + 7155642422045973279749020686755632007, -15978968788220618890796431589125447717], + ![-17717522914471228614010986069681024366, 11694240564166662528397948281078336922, + -13624874794485085865810237698138094117, 14990457513181131888674798836885288917, + 24733673562702644126655044762840540339, -33680236934168764167568809567617770939, + 11828903837985412845079092131349556707, 9153371682153234067391571491972904656, + -23157013224567353823753770931697467195, 3742810662884738322155060782082138387, + 46133883772241879895733124897298063607, 10228060628917588868342460435661790922, + 12796561118167966085303411303908833512, -27803198820803924117417491569765519523, + 5040876243081351025243176400221218275, -2136540171745910599348017922720782235, + 19240031446731814883891614662048539426, 7869886027840562720089330824825225457, + 8269981302751523514849024749192846204, 2408140408431237911678482348297923449, + -1365750314130874710592144107733562832, 7632622224291971810748340658026579680, + -282942871734538458869609827466944877, -9838378763210085863998499287032710843], + ![-47010058837353755244521112043978147854, 16841343436823817152411100931478963130, + -7194139792168018953178810345894348602, 12211614181330010143678570182917917086, + 40351920390642769824934462023683578668, -16614218848609208088765906267038829648, + -26439796132250384913316692758296649244, -20727361490623274572975177578595642074, + 33797689471699804229272718894480029842, -25791982099453174962004442043161958618, + 10228060628917588868342460435661790922, 65267522547923714371108989466861792026, + -19744053816102583226339592232627502832, 17860768185973794785097913058180577762, + -41033564919885382587600360919137419646, -21948177202149001991579280757570480710, + -29266906567761897662379283568128086270, -12237780669593858979751370591058776754, + -9202479366687135464534721990239532966, -15421731947727357362315894333713017240, + -21208194291766825643176034198934670134, -29679180758375030882058293881183782, + -11058554626439946007446945324090636042, 18302854828542346760663097455136671508], + ![-5487826913999620125204918492470187852, -14109568392814025879782722956488790836, + 11102043104270985103166812880989035110, 11454709538998561046643053594441126862, + -34975730483819486193795205575940059314, 23495807928845053568312250778334114728, + 17936337086859304305333269438729056638, 9356880211984408181373175743298851010, + 1682687903289930694610421765482587866, 12430408812562722731521084560384108466, + 12796561118167966085303411303908833512, -19744053816102583226339592232627502832, + 52013221890479753322298996546918618024, -21334757958607098578514074972274038102, + 5552217806651429798701554783817692362, -2282634143977606907466011445542735048, + 5816985403737569806394889680629727470, -1985555267669429782900879234159538272, + 10993187856609781056939447111207968080, 6781368710662779028930645864898300068, + 13115220966695036084770579290455038692, 601160674756020466074856858618895124, + 318311550636495287164977585018088982, -12814255131535861251026550254750420704], + ![82038676610945027505764655604531207866, 1660737911237652119858475993854243204, + -4250253243340621659056912281612168027, -25878081464585692483115971974252041877, + 4842744420036638437129585688979369067, -10352566375211659371861701224093343645, + 35026670089961271681938030113781146215, -17182651675585779640026623981080530452, + 23867491860560360734798328721783343887, 10535925745734298474099598086588072735, + -27803198820803924117417491569765519523, 17860768185973794785097913058180577762, + -21334757958607098578514074972274038102, 75397475948894210932256661006345617485, + -29997388355054776707309739231938021283, -13118647522266892261607985900294761351, + -43450984411809531547843378633685505740, -24728185156365426008596016170955740753, + -8463129139328687665016685936003755534, -15061681002094719091649054024500955897, + -25088420184403825147889009261566335264, -13387667834838987134910293771880209394, + -542822056219392629873617528220286007, -8529520472973636726489469020602067097], + ![5307947043924786374677434174560313114, 21592333566315497220793063737806284, + 1206277595448716793492392714562636919, -11074028589474946068601481980068190275, + -1216235974957053557708246974740836227, 2353682675039248049561074021800458555, + -19872731470396319810678147508250687491, 17246240057975584911501364166813597288, + -40980807980761843101697065892359809547, 18736541189878650859162196900585444693, + 5040876243081351025243176400221218275, -41033564919885382587600360919137419646, + 5552217806651429798701554783817692362, -29997388355054776707309739231938021283, + 43027324470418326287114074376694219613, 20989728547008457082839098119452761947, + 37209768364656217158040503630986895950, 17694088950187294572425633213605091095, + 8197791874411322822274784812310995392, 15574937472685837870310843694133503287, + 11089659589687972284318299798362145490, 5193665941366104137847260593359489414, + 8064692167434891374612411815456680049, 717903560065708739723787310642292443], + ![5760386737904003847789985510587013056, 2533955613693555068639232311094560144, + 3577674957173216817986997803946948035, -12409589778086200365138084923744257845, + 5803715432923204496921339014019367427, 8665849709499545553838271726921440711, + -21889430163312260684417200474164484095, 8688802544935003491124223939333961820, + -21153642834702575897760747434054299239, 7291643284872159214658742923738109805, + -2136540171745910599348017922720782235, -21948177202149001991579280757570480710, + -2282634143977606907466011445542735048, -13118647522266892261607985900294761351, + 20989728547008457082839098119452761947, 12810899924783431334211542163364524127, + 17703605438453870305829400637453570648, 9744348460267227429348594479864504309, + 2144940249488643068748395404801344520, 7605981600632299010044917410835250807, + 7299932098956733867887929745821070624, 2753375161372864200896983267715138700, + 5062129553786615577887308844152006499, -1002181013994206810607736133586637501], + ![-16198704367725575584634935774683305274, 2551073567050725634612752054912701510, + -8492119601347425546171462774928017850, 4480335950247172665450831995673550224, + 4699720973342136362559870747166356130, -19992643203139718538321846331490306522, + -8817480420850987896706097516298420078, 16654975355474887862726058501324906262, + -39326809033768580081174330788779939234, 4824328852120664829606886365977112592, + 19240031446731814883891614662048539426, -29266906567761897662379283568128086270, + 5816985403737569806394889680629727470, -43450984411809531547843378633685505740, + 37209768364656217158040503630986895950, 17703605438453870305829400637453570648, + 43552679434274591565743034197188239610, 21590795379570868383449274803355573302, + 8075430621647629937150942473115229808, 15514413764936368767422897572701287446, + 11735849881273733711235079635773662050, 8585424545954287599450696526084707642, + 5147506334507003048028708874623915272, 5193468126200228481490042252118345120], + ![-18433608864658029845136956554731406596, 5380718026401929661880860501052633060, + -9518765945354984153639889724166012585, 7276705844333967165262865899892623707, + 12462506285902902897531878478223434989, -21810736730604829404521157473029526125, + -4109015343878095639140603946330196307, 8024551134493015806745744885070122724, + -19291907389349410855774388827297522701, -2395673508569140075012867656812462845, + 7869886027840562720089330824825225457, -12237780669593858979751370591058776754, + -1985555267669429782900879234159538272, -24728185156365426008596016170955740753, + 17694088950187294572425633213605091095, 9744348460267227429348594479864504309, + 21590795379570868383449274803355573302, 13497599679508530774891966305612315953, + 2006074516866522363579607139973653174, 7538387762457802069696597423836071195, + 8026681902593316601732304039194506756, 5656442766281553263559310410421947570, + 2690650265234650292486694576051476053, 4025834088661496706273089462775956977], + ![2557310210195013679951842498105487842, 758445123412802647232392614660748592, + -1618701203484083868698705360884220812, -1781281365301767181538645206866395616, + 643341966994380606803067436875002524, -4592152237381267813466037887087908502, + -1997690001808883869627356059082253560, 4186384362514857426664867229439756400, + -7886342659268682668176466884061184156, 8438322787346844678583934573867472376, + 8269981302751523514849024749192846204, -9202479366687135464534721990239532966, + 10993187856609781056939447111207968080, -8463129139328687665016685936003755534, + 8197791874411322822274784812310995392, 2144940249488643068748395404801344520, + 8075430621647629937150942473115229808, 2006074516866522363579607139973653174, + 6858441564500400910339894233756244924, 2400454204462151417637698153384603374, + 2370706301495630760579204521594417310, 323730944553188198280834054309588372, + 455752144920445251480158904586581854, 1030213623436801567247515090486818134], + ![1249974787490027459015432097103271904, 19971710871719612401708835410808636, + -1995374929871398706287314552445731901, -2074971927980390189287819282814448849, + -74003856171116913597827046732550571, -4889494375658219685543865630725625157, + -3621419999815985516713508587565377275, 6782609990371263397954972018920027106, + -14261579570512109889108799105284008751, 2490817964314506681623436836150862649, + 2408140408431237911678482348297923449, -15421731947727357362315894333713017240, + 6781368710662779028930645864898300068, -15061681002094719091649054024500955897, + 15574937472685837870310843694133503287, 7605981600632299010044917410835250807, + 15514413764936368767422897572701287446, 7538387762457802069696597423836071195, + 2400454204462151417637698153384603374, 8139066682251106345054440417338702215, + 5915750648765775153954978780660918864, 2869699909397769043533120638216905272, + 2934633634723993393136578585944510893, 1337411126636349414977859284559778649], + ![-13419313211756437451456287622060965266, -15768856198765553630790942294727385442, + 7082568199339366730701545362800045194, 7933341987828993097247521767046500366, + -36642073694144560828992277487497084218, 17593645830846906473354636458928136552, + 3972032193231919948556038073078788128, 6905372129455160228831774858476297992, + -5240356108671721059873120153934181988, -2253725468520334039029452807473984536, + -1365750314130874710592144107733562832, -21208194291766825643176034198934670134, + 13115220966695036084770579290455038692, -25088420184403825147889009261566335264, + 11089659589687972284318299798362145490, 7299932098956733867887929745821070624, + 11735849881273733711235079635773662050, 8026681902593316601732304039194506756, + 2370706301495630760579204521594417310, 5915750648765775153954978780660918864, + 22501272593543694836627922073573362606, 3437617936649047074879758407290748500, + 2743640647315012446071025272167000410, 5829247175487854915476702002687712566], + ![-16489731550308235635102049418921340228, 6113966805218491479861479434966139496, + -9080630984001297186300740698801970460, 7379586120061226050954607924895256254, + 14243902446974285260167654848454789444, -21374376299709137060141622280916025144, + -1809571616093474911643553241721664858, 3041030163705552386003397942845437788, + -8950455076536604427708233833626589192, -456370665930930691767740871613100940, + 7632622224291971810748340658026579680, -29679180758375030882058293881183782, + 601160674756020466074856858618895124, -13387667834838987134910293771880209394, + 5193665941366104137847260593359489414, 2753375161372864200896983267715138700, + 8585424545954287599450696526084707642, 5656442766281553263559310410421947570, + 323730944553188198280834054309588372, 2869699909397769043533120638216905272, + 3437617936649047074879758407290748500, 6077087269413716785345772882625841446, + 496225318192947369656375063589085086, 4153065441127449753654011103465984678], + ![6661156105235035790042733750245753490, 3391775630233711800225335104755510208, + 3913499796962987158463984318846426857, -11925259821938704239795676648169118147, + 7876040163804874240856657521336667327, 9249068279679662855388121055249716751, + -20296436556154612836920969486658323049, 3675483626980877899662084864902782160, + -10732175555725466936276139936415187511, 7155642422045973279749020686755632007, + -282942871734538458869609827466944877, -11058554626439946007446945324090636042, + 318311550636495287164977585018088982, -542822056219392629873617528220286007, + 8064692167434891374612411815456680049, 5062129553786615577887308844152006499, + 5147506334507003048028708874623915272, 2690650265234650292486694576051476053, + 455752144920445251480158904586581854, 2934633634723993393136578585944510893, + 2743640647315012446071025272167000410, 496225318192947369656375063589085086, + 5574871126091816641530925563882953893, -653291014388112716768796660410950193], + ![-92816344456881669512122007994580011918, -11381296681654063892750399593535847050, + -14684042559888308936058195115506352223, -8801102237672661005294747394945627651, + -25799491575241357744968988163261756551, -33624947109947737895689454469324357811, + -127842928329035912879431366165739088303, -31345115255002666005932412458948812390, + 19877007666921015914804108450133052131, -15978968788220618890796431589125447717, + -9838378763210085863998499287032710843, 18302854828542346760663097455136671508, + -12814255131535861251026550254750420704, -8529520472973636726489469020602067097, + 717903560065708739723787310642292443, -1002181013994206810607736133586637501, + 5193468126200228481490042252118345120, 4025834088661496706273089462775956977, + 1030213623436801567247515090486818134, 1337411126636349414977859284559778649, + 5829247175487854915476702002687712566, 4153065441127449753654011103465984678, + -653291014388112716768796660410950193, 172691533334808017836221223273616155765]] + +/-- Exact integer matrix after 5 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage5 : Fin 23 → Fin 23 → ℤ := + ![![1923707158678150201899330964651535171639857294, + -894791234171852184305653449108956190939741182, + -894795424993105032342605450176293933993091566, + 4526834517904046072289984285664981115023436498, + -2125215772944969175557793157929800909173154520, + -2125224546994467504007364623868093087548231302, 66319704857700685235536409920524468905517164, + -268058285072826285560419569351482822353869012, 113489062529105826170030334411058941076609076, + 113534957167186455305979496155155014305948982, 133649482126362859106350485453033522222488790, + -174300944762753624939821886996275361137313716, 133574434770245853272083992624908956525427354, + 7628083810397709758064129757653491474591914, 37935403033797238464363970487941044686253344, + 7635314779870835229843317460795218168904770, 37957856674248098591248001466353472823135300, + 12511840931273934358217122986875574317075882, 1972207426954768608229892897355577641395336, + -204919557851143459457531837687939234766462822, 49319960298465810273090492587122388556035676, + 49320151568777033148253242402155044071996538, -263375328183734368088314290020733725423756930], + ![-894791234171852184305653449108956190939741182, + 2048566979122219741928391051956942636084742088, + -1003789421720384140546545398828275696825558752, + -2116594520989776638779373593762896508885168168, + 4809384377952799415353266532239624096095791598, + -2354904503135334355350552435041619809570567076, 26817869032505402697872347655946697776970724, + 136853072605840496920350101606116626902030958, 141996601319744139484870581186257432988427322, + -182826309749913396624828783872667912341042936, + -143023692777941336595856941630801425750861478, 124374555000225413574558396753942819813336032, + 51075859057196778683025353224379813277433052, 20803076367768506465358395032266203683983880, + 49375266104826414910191813413638299459681794, -120317312305147162424242809255335037262342186, + -135204416405807729870543645020238351456875154, -15964671898844591762568925396620929030093794, + -22028396209738955578330332734850489558332830, 67099820721736990454077119177379041282220710, + -127628770851667811012141736003373524463059252, 54454492641144116767407002936610620079050812, + -288055096420279811416620410781675864135389780], + ![-894795424993105032342605450176293933993091566, + -1003789421720384140546545398828275696825558752, + 2048581979885667715855442820287012112127734780, + -2116606274547814718158518115041752702770515204, + -2354905657420314654169331770160355555027586386, + 4809391958287908324226618934433158437320519612, 26815822254398192951799589585732762343019684, + 136878299949557502882299581109959114139442210, -182828507368502285259644081030603650086243918, + 141944829270588846337912827330606722503669272, 51021907501096935810972836777784605198650686, + 124431848789001653532410729187591242717440152, -142993054646528978827825449739160396108926332, + -120291574859572642754916866275305966491057040, + -135171396902063346850714092404882838057889230, 20799751131772769478338101280005398872986254, + 49401110960051925427028910270472609352567262, -15970564220798298926208294844225520036108646, + -22032815054115465277391370073551967291548054, 67102924296242645644778720800621404954337386, + 54471754575953013073137105187002577169166624, -127663444862902990773993443493478295566572792, + -288051847438997100457150929619985863997356056], + ![4526834517904046072289984285664981115023436498, + -2116594520989776638779373593762896508885168168, + -2116606274547814718158518115041752702770515204, + 10687062519805801792257641856870132938199445252, + -5022679077980144107465365185180244338327461142, + -5022705628099748786446668751108433824585812804, + 145111045329383217879354416550746996819585752, -602735088840983896660589973831085460290518150, + 234511922745684653372605019463363688343293318, 234615672020246895329657749942176971401731740, + 323941139019898083889118167108629714139648482, -431003196630814523205526216508449088632802312, + 323761006710772021039073482082633935896426676, 2878583171335458888435192580081434245309984, + 87276163341828730579735216524053527548518146, 2886935064392558132730262641214445401965034, + 87328214262056438676396172636724383676152970, 15908872176789375220828811325300884164140082, + 3187094769660999072140983926025698752091310, -476458223150030429795289715163819824520702262, + 114687947147701793412209447491576808014655172, 114683493943209943305188163220202437955559332, + -606343524298377023656666174586936147112241408], + ![-2125215772944969175557793157929800909173154520, + 4809384377952799415353266532239624096095791598, + -2354905657420314654169331770160355555027586386, + -5022679077980144107465365185180244338327461142, + 11325444452363424774126545694007155012788659138, + -5519896690367567642177883604477612209554531502, 57585825975727098416701799151586770772382500, + 332230259675696348523442995458608125264833370, 301000156614813279030673238472685098909630730, + -449193336193978711436190522721505896487123974, + -332445677827119117718804352856834945143989908, 261661608547524165386032779652620625026817768, + 115355455204399283171124286845193154958922750, 43180531523945175176698175170966054214076110, + 119057577261758791383982779942315057093472666, -283100353580252212018563844367874121570204472, + -311051841379769419330318895359319425109862070, -46839583387126192517982263017754479257111032, + -54139243224191221482900043816111228830299822, 168962520792514208867761355188755228703425252, + -300265991547331039811709527659808121517215144, 128556580381335602554771155919069941370156886, + -666088251227502179126736684181206072701942806], + ![-2125224546994467504007364623868093087548231302, + -2354904503135334355350552435041619809570567076, + 4809391958287908324226618934433158437320519612, + -5022705628099748786446668751108433824585812804, + -5519896690367567642177883604477612209554531502, + 11325438257612766917816673464689744726600887192, 57579804664339852642916066825004729487591968, + 332282234233508143093024149557463246763118526, -449199197645109755509641334692348558318877218, + 300880291339093686249358003251360118982834772, 115228192661840488521600529325457231332735946, + 261796914353376681220699994458450000391219208, -332381839897062558921040081025872791012679980, + -283035740910082568256651382774925899835066856, + -310974269982977504045089752943065389777307690, 43168085692923038900040660001465465457071122, + 119116614350975161037038853378964530797571418, -46858145138095186336570415788838502567797550, + -54149021918579804261637474511630699095633330, 168973123362303323689979852154064271439050478, + 128600320134185390461714859341936808255417472, -300348696095719303885142013035226568628083764, + -666043277853591109101993333684226683151900248], + ![66319704857700685235536409920524468905517164, 26817869032505402697872347655946697776970724, + 26815822254398192951799589585732762343019684, 145111045329383217879354416550746996819585752, + 57585825975727098416701799151586770772382500, 57579804664339852642916066825004729487591968, + 167869477753820490049624322236550423823418492, -249876059724195783552905058424537558585995156, + 113879202870989771648898723269222399950834072, 113878944658408803638098159934934645095882876, + -229600909491809851378093678315644393052326624, 112314686774230487748428332001930357356022980, + -229600944535403481231843087657785097698484332, 202009621760554279964853136452337313812866428, + 100772748059346242363582951066481822010413160, 202003483084688217251590714800791833110168472, + 100776406081829587765570517156792731431317024, 48624470902113692470383905223118776880532380, + 79718212627175954063142076465309398302824876, 85928352449975236061955678946119865165706772, + 41274702994804333764196149051151516707422448, 41257509011605475160073219331107900085748860, + -340166380175602777498807584170549077328617960], + ![-268058285072826285560419569351482822353869012, 136853072605840496920350101606116626902030958, + 136878299949557502882299581109959114139442210, -602735088840983896660589973831085460290518150, + 332230259675696348523442995458608125264833370, 332282234233508143093024149557463246763118526, + -249876059724195783552905058424537558585995156, 689561590198959635426216502483800449557213858, + -289670067955230569828480203088835595442859870, + -289657413029530201788723962600059892610816570, 356535986229261367930679585423598774007114212, + 14890749079239500961499843091135696205912876, 356502091737199837993436669710329254533358082, + -479287753408251791586209593617415989922150842, + -244655852787528691468878685006949813644961754, + -479292982040123662401643259704580704599900324, + -244649182668557421276273410425957937268427086, -90838388383235679743102445137313269024196816, + -167337886428275550734729018722508601437077386, -74099744343901389659238324138680890746342768, + -120717836909502917187003159865039787146578912, + -120727202418141635661176594599905868976126946, + 150462893993711423485068506684759679166171866], + ![113489062529105826170030334411058941076609076, 141996601319744139484870581186257432988427322, + -182828507368502285259644081030603650086243918, 234511922745684653372605019463363688343293318, + 301000156614813279030673238472685098909630730, -449199197645109755509641334692348558318877218, + 113879202870989771648898723269222399950834072, -289670067955230569828480203088835595442859870, + 536676048870604353761389738814779638371670730, 49752428870014657089595655799225597345280214, + -289989456840509082018799224752010244661789640, 148557337713224395904258278838818883685604180, + 98818533149621037409668103848399217955495278, 219677913177570906855487121759134614769199570, + 84336499149604053858290917889359788099229918, 62053784177109200300218923853297861923983260, + -22538407460658417613370851962730678415426278, 98883583479243190888881521854512388700281252, + 29033622557964263147225680100219365840631206, -22428926750672267151463557865863212518103364, + -236801165502436347311157516216202364516784, 82448341613771018994303107348622164941948622, + -159748987471778947645040281953963622188519226], + ![113534957167186455305979496155155014305948982, -182826309749913396624828783872667912341042936, + 141944829270588846337912827330606722503669272, 234615672020246895329657749942176971401731740, + -449193336193978711436190522721505896487123974, 300880291339093686249358003251360118982834772, + 113878944658408803638098159934934645095882876, -289657413029530201788723962600059892610816570, + 49752428870014657089595655799225597345280214, 536678244172364068497977850179128455207751840, + 98784267826171440029654723740215465229638114, 148594339378723877162870435571568407221279468, + -289978071522401994217225641069542647741334116, 62037169724184711021897806336152030675363648, + -22538405260784284360611657679585961740480018, 219689961229311621017458260279523130193453518, + 84325176825189983403237202548677778432256330, 98893326088785086369875843158870146533191038, + 29033721146076423788871807780603317875579142, -22425538261558805510402779055727650751110214, + 82433753989409219504221358412633394815710484, -219298232692684322131641912704612581503992, + -159739729635449065885547357696325202755917324], + ![133649482126362859106350485453033522222488790, -143023692777941336595856941630801425750861478, + 51021907501096935810972836777784605198650686, 323941139019898083889118167108629714139648482, + -332445677827119117718804352856834945143989908, 115228192661840488521600529325457231332735946, + -229600909491809851378093678315644393052326624, 356535986229261367930679585423598774007114212, + -289989456840509082018799224752010244661789640, 98784267826171440029654723740215465229638114, + 712531518766216172659664618092453518233309154, -240065946537542328895636181851104489476576868, + 313049771523671066081020014543067743775191210, -478131334338110163935975359844312820030699894, + -252110448418933889060313735648219461049660612, + -365885199349486651900609221006828217126614162, + -167498316149803068557787051856531794127589112, + -105528661151355708598241414491934745803104590, + -180623819210091134118160100776838657716023408, + -267229000245998276771766135035486989712655402, -20864272184487060703747898888492848589958576, + -122349412720984182845746665310178336002233942, + 100747859108463834770901811256506313973584094], + ![-174300944762753624939821886996275361137313716, 124374555000225413574558396753942819813336032, + 124431848789001653532410729187591242717440152, -431003196630814523205526216508449088632802312, + 261661608547524165386032779652620625026817768, 261796914353376681220699994458450000391219208, + 112314686774230487748428332001930357356022980, 14890749079239500961499843091135696205912876, + 148557337713224395904258278838818883685604180, 148594339378723877162870435571568407221279468, + -240065946537542328895636181851104489476576868, 613641638753756461460547267582191288459536456, + -240116115738710078774074382978232731617585208, 66359876680371036951625879282006732007148488, + -26128490393471000115449712031492914941488304, 66364320104566960427266760636964252004068424, + -26132617579005169742629931190157019681760376, 130235267517916252341400939466554034917861948, + 80290671627388908244648788965722860373195864, 152982912054354040082535238633581784961736348, + 4706875117554629525152297903797935469437952, 4727615477027516450351419798199219456498912, + -164855566799094340219756703587454328069760516], + ![133574434770245853272083992624908956525427354, 51075859057196778683025353224379813277433052, + -142993054646528978827825449739160396108926332, 323761006710772021039073482082633935896426676, + 115355455204399283171124286845193154958922750, -332381839897062558921040081025872791012679980, + -229600944535403481231843087657785097698484332, 356502091737199837993436669710329254533358082, + 98818533149621037409668103848399217955495278, -289978071522401994217225641069542647741334116, + 313049771523671066081020014543067743775191210, -240116115738710078774074382978232731617585208, + 712574628320356781012611461868804486772155348, -365886341976336432860793437687402958892001836, + -167477936495507515079981680198058653278188378, + -478124630615676751801670926947828119754793022, + -252097941255976278498878782213335128143912786, + -105527880223726924251291489520744725748034918, + -180639176495726210716910698260014497403161670, + -267239422095717121523616138483306354342664542, + -122351147578344359246923916615762821141446888, -20873719625135700149710632670268022827061532, + 100742973051004340689623795558942315481112984], + ![7628083810397709758064129757653491474591914, 20803076367768506465358395032266203683983880, + -120291574859572642754916866275305966491057040, 2878583171335458888435192580081434245309984, + 43180531523945175176698175170966054214076110, -283035740910082568256651382774925899835066856, + 202009621760554279964853136452337313812866428, -479287753408251791586209593617415989922150842, + 219677913177570906855487121759134614769199570, 62037169724184711021897806336152030675363648, + -478131334338110163935975359844312820030699894, 66359876680371036951625879282006732007148488, + -365886341976336432860793437687402958892001836, 507541513957229123464512513969988477693468276, + 247145123978167611393414317608419408155641874, 441838919992251883358750587525747455323254622, + 211611716295848664956148165843190174146987358, 96482315965683834816585239774528618230891886, + 183813080474299177432776476898748429968721370, 132888448938077469222482035470051138618581838, + 63669632588151734607271935333552917204488488, 94333549439801232886493060067632940455952244, + 21518053295750764253547897579171318881029552], + ![37935403033797238464363970487941044686253344, 49375266104826414910191813413638299459681794, + -135171396902063346850714092404882838057889230, 87276163341828730579735216524053527548518146, + 119057577261758791383982779942315057093472666, -310974269982977504045089752943065389777307690, + 100772748059346242363582951066481822010413160, -244655852787528691468878685006949813644961754, + 84336499149604053858290917889359788099229918, -22538405260784284360611657679585961740480018, + -252110448418933889060313735648219461049660612, -26128490393471000115449712031492914941488304, + -167477936495507515079981680198058653278188378, 247145123978167611393414317608419408155641874, + 150458644233429888387913762450403084493457450, 211604157358089909976378302002756498494075216, + 117921155396687059871899549657972936353040526, 24948614815919718704873510476430011944492016, + 89659856157653618950701059909796686615671354, 88280598928328361162045604755904225612918656, + 35039606697507467684059550129922187853139336, 58784153585461584535609659496026533305732034, + 2309763658539181870581961793984045731715330], + ![7635314779870835229843317460795218168904770, -120317312305147162424242809255335037262342186, + 20799751131772769478338101280005398872986254, 2886935064392558132730262641214445401965034, + -283100353580252212018563844367874121570204472, 43168085692923038900040660001465465457071122, + 202003483084688217251590714800791833110168472, -479292982040123662401643259704580704599900324, + 62053784177109200300218923853297861923983260, 219689961229311621017458260279523130193453518, + -365885199349486651900609221006828217126614162, 66364320104566960427266760636964252004068424, + -478124630615676751801670926947828119754793022, 441838919992251883358750587525747455323254622, + 211604157358089909976378302002756498494075216, 507549336406524574171282689260714837388391858, + 247152863639649442458239512378822110396760064, 96492290251730715264963343743806400653916754, + 183809505038941963531750543161529961007178948, 132884636118194347842607354484335634502265482, + 94352088581590531069435120968520911741625368, 63663539541002954872316240239083587837750162, + 21563850852240457258770278361430591635103106], + ![37957856674248098591248001466353472823135300, -135204416405807729870543645020238351456875154, + 49401110960051925427028910270472609352567262, 87328214262056438676396172636724383676152970, + -311051841379769419330318895359319425109862070, 119116614350975161037038853378964530797571418, + 100776406081829587765570517156792731431317024, -244649182668557421276273410425957937268427086, + -22538407460658417613370851962730678415426278, 84325176825189983403237202548677778432256330, + -167498316149803068557787051856531794127589112, -26132617579005169742629931190157019681760376, + -252097941255976278498878782213335128143912786, 211611716295848664956148165843190174146987358, + 117921155396687059871899549657972936353040526, 247152863639649442458239512378822110396760064, + 150456739450196005623615672475620653286965326, 24945483192620417368668762573275389843901528, + 89661652567358566125029246705077623753509138, 88274128838407996745897918044005667735202244, + 58776425605696768059557077893208254711676644, 35034351633460357708203065028843790681735138, + 2281077553561352887538094921317251228486666], + ![12511840931273934358217122986875574317075882, -15964671898844591762568925396620929030093794, + -15970564220798298926208294844225520036108646, 15908872176789375220828811325300884164140082, + -46839583387126192517982263017754479257111032, -46858145138095186336570415788838502567797550, + 48624470902113692470383905223118776880532380, -90838388383235679743102445137313269024196816, + 98883583479243190888881521854512388700281252, 98893326088785086369875843158870146533191038, + -105528661151355708598241414491934745803104590, 130235267517916252341400939466554034917861948, + -105527880223726924251291489520744725748034918, 96482315965683834816585239774528618230891886, + 24948614815919718704873510476430011944492016, 96492290251730715264963343743806400653916754, + 24945483192620417368668762573275389843901528, 80846552398138501530247499001882922894165486, + 28272270657744156532471482539565570533662228, 28913585585675040891631799619865582155832254, + 4940200989346794134806584834021546609577644, 4933068680011796128149524040136748565517034, + 18451301334049940989591320393924242245671386], + ![1972207426954768608229892897355577641395336, -22028396209738955578330332734850489558332830, + -22032815054115465277391370073551967291548054, 3187094769660999072140983926025698752091310, + -54139243224191221482900043816111228830299822, -54149021918579804261637474511630699095633330, + 79718212627175954063142076465309398302824876, -167337886428275550734729018722508601437077386, + 29033622557964263147225680100219365840631206, 29033721146076423788871807780603317875579142, + -180623819210091134118160100776838657716023408, 80290671627388908244648788965722860373195864, + -180639176495726210716910698260014497403161670, 183813080474299177432776476898748429968721370, + 89659856157653618950701059909796686615671354, 183809505038941963531750543161529961007178948, + 89661652567358566125029246705077623753509138, 28272270657744156532471482539565570533662228, + 96106451705596473071635250546844862676008858, 70327376994208448234848743581251658289172032, + 34445567480006254005525849048163971937136016, 34446850830129635032742913239334909719658878, + 18869188404697333408938267227174085971749958], + ![-204919557851143459457531837687939234766462822, 67099820721736990454077119177379041282220710, + 67102924296242645644778720800621404954337386, -476458223150030429795289715163819824520702262, + 168962520792514208867761355188755228703425252, 168973123362303323689979852154064271439050478, + 85928352449975236061955678946119865165706772, -74099744343901389659238324138680890746342768, + -22428926750672267151463557865863212518103364, -22425538261558805510402779055727650751110214, + -267229000245998276771766135035486989712655402, 152982912054354040082535238633581784961736348, + -267239422095717121523616138483306354342664542, 132888448938077469222482035470051138618581838, + 88280598928328361162045604755904225612918656, 132884636118194347842607354484335634502265482, + 88274128838407996745897918044005667735202244, 28913585585675040891631799619865582155832254, + 70327376994208448234848743581251658289172032, 261044906253230937810697558552202613476120154, + 34753250610931525179259925152336935395573604, 34776442985742251156710750384890529942991190, + 35901122739002877026824002868672259922817950], + ![49319960298465810273090492587122388556035676, -127628770851667811012141736003373524463059252, + 54471754575953013073137105187002577169166624, 114687947147701793412209447491576808014655172, + -300265991547331039811709527659808121517215144, 128600320134185390461714859341936808255417472, + 41274702994804333764196149051151516707422448, -120717836909502917187003159865039787146578912, + -236801165502436347311157516216202364516784, 82433753989409219504221358412633394815710484, + -20864272184487060703747898888492848589958576, 4706875117554629525152297903797935469437952, + -122351147578344359246923916615762821141446888, 63669632588151734607271935333552917204488488, + 35039606697507467684059550129922187853139336, 94352088581590531069435120968520911741625368, + 58776425605696768059557077893208254711676644, 4940200989346794134806584834021546609577644, + 34445567480006254005525849048163971937136016, 34753250610931525179259925152336935395573604, + 64593796150187820522079998271483253991594588, 8768683840030690524003926888042652146943336, + 8558625182734763274406555696480228327901400], + ![49320151568777033148253242402155044071996538, 54454492641144116767407002936610620079050812, + -127663444862902990773993443493478295566572792, 114683493943209943305188163220202437955559332, + 128556580381335602554771155919069941370156886, -300348696095719303885142013035226568628083764, + 41257509011605475160073219331107900085748860, -120727202418141635661176594599905868976126946, + 82448341613771018994303107348622164941948622, -219298232692684322131641912704612581503992, + -122349412720984182845746665310178336002233942, 4727615477027516450351419798199219456498912, + -20873719625135700149710632670268022827061532, 94333549439801232886493060067632940455952244, + 58784153585461584535609659496026533305732034, 63663539541002954872316240239083587837750162, + 35034351633460357708203065028843790681735138, 4933068680011796128149524040136748565517034, + 34446850830129635032742913239334909719658878, 34776442985742251156710750384890529942991190, + 8768683840030690524003926888042652146943336, 64682450682841547998413795345681579530707348, + 8643712354399327955656070179730478542179792], + ![-263375328183734368088314290020733725423756930, + -288055096420279811416620410781675864135389780, + -288051847438997100457150929619985863997356056, + -606343524298377023656666174586936147112241408, + -666088251227502179126736684181206072701942806, + -666043277853591109101993333684226683151900248, + -340166380175602777498807584170549077328617960, 150462893993711423485068506684759679166171866, + -159748987471778947645040281953963622188519226, + -159739729635449065885547357696325202755917324, 100747859108463834770901811256506313973584094, + -164855566799094340219756703587454328069760516, 100742973051004340689623795558942315481112984, + 21518053295750764253547897579171318881029552, 2309763658539181870581961793984045731715330, + 21563850852240457258770278361430591635103106, 2281077553561352887538094921317251228486666, + 18451301334049940989591320393924242245671386, 18869188404697333408938267227174085971749958, + 35901122739002877026824002868672259922817950, 8558625182734763274406555696480228327901400, + 8643712354399327955656070179730478542179792, 1812051041643715359679813538043300552119130292]] + +/-- Exact integer matrix after 6 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage6 : Fin 22 → Fin 22 → ℤ := + ![![7034453464707846749569596351075403408014983448443661, + -6119269540000899916633437118317706335534204419688575, + -47347914233495692599974333113570402476926851635267, + 16465491933770114760078747756231841101844476442224779, + -14408053809982905152504887600991027325154482434869581, + 248502706088040234581701094867536577763700379258328, + 52439393769385147040919245900346681113843349884701, + 839398554179715691959825715888932350971364026278375, + -560289591862284148924794716872825500423675992818345, + -348447004535212670074988476064323650154103315496464, + 186597126046630738906980824990015540754021323382022, + 487848175905928798474677456576256622390053181929987, + 104938164562066621991339273723437043154939580330401, + 288815733388870970192637588719687796916980873430833, + -503186455378015690054900567269681166765483640329708, + -506560287120773056516292845554496480465782775593207, + -43718181093183246333750085870682284842753502036084, + -90975178673442719736425919876648252350964215874251, + -121594127201221143738072394909952513177563992931448, + -451139267745594930151505373021358525086065973946492, + 333524165335784458807278023945044592333114799925283, + -1769257779261691495516584020003866750942748022308435], + ![-6119269540000899916633437118317706335534204419688575, + 7034501307806959680648149370605873679506436522996023, + -47356066643907348575296906941648166379604984872681, + -14408061148582915025717901260978092009398147698017653, + 16465487061400400208550889703420141034433941111063947, + 248494508386047371531393674873478267249430841774440, + 52545591041951583100055626392701661440789425854311, + -560389990421342711755684864819808990477135112585357, + 839268509101584844744692225943618190528664114505335, + 487767362635033882322988605390293670584858481167418, + 186842389495660196629153465078908057748205963011474, + -348464148596288467517679559321934030306497007359233, + -503089965885970951084894431446138047584308040313027, + -506462645196964049209987244357508129491693928024887, + 104938400730660674529171308079619109617221127318072, + 288972471897293877192471563597006922043807724896721, + -43743455791695321763561506146940034912041695489934, + -90994202566958488223062405359982205045083651604775, + -121582676555162675114999155987355734143380723114926, + 333598632918852291892532012270469388428711498335454, + -451287844268983242852151291608371910905904140250255, + -1769246250788022979300546817996223198125068196095933], + ![-47347914233495692599974333113570402476926851635267, + -47356066643907348575296906941648166379604984872681, + 149076336526341646928767148029759183202462998458363, + -93332046159393374626717770119075824275387560711191, + -93357485100090268157581577621073209789550317502485, + -47193312616874042494371650958104515089379467530238, + 120899402794297306101796793435346825764139818257107, + -140263687529305538083977388879690558799343937858467, + -140281998863343314618456905398883074586238741816807, + 40678163418671119897117377034120355553889661902316, + -89812396115176077080199544957502890337620380639870, + 40662942035690276785774811153425501019011478677239, + -64949406574942494885283119121558092811986599812107, + -8587584140906210283981838438728724273105803901391, + -64986742471597439281458448122232105616531014171898, + -8590973883751123829444182639792894370254513848665, + -58321967026473258499190292103516499766780086414946, + -6265253844674471910637257686273928519033495260741, + 24800162078634170431751522734102712929541044501346, + -5907849530423258683370146227631265352066921444560, + -5928979628122582670531162475078309128268096651937, + 57860782254282199153296514361515243360905062442991], + ![16465491933770114760078747756231841101844476442224779, + -14408061148582915025717901260978092009398147698017653, + -93332046159393374626717770119075824275387560711191, + 38687797448236948688378251618959500358930882637536529, + -33904949992668195814698231959576852709845689003135571, + 563891173722965210270215056419911375795194157003210, + 155537135405636695374558581761363909586925733630405, + 1837414597187545941941410355887714406122318360426605, + -1395223694560058803081001270200866527437457271600487, + -796354909316251992971999243828390059802020034792014, + 297788311174213958748633904228738375736469682745004, + 1133025862217060345445818287867967923956021928082435, + 222396181513954098244123215556027606445470133064715, + 693664176350335404475977735299670622617234733360813, + -1183632473928140702115716868871170834141731277254376, + -1159726945770131210145263799530076026761974917460435, + -142282808879455566590581092759567755582307080501176, + -223916475603906525514115081550040466529657709246311, + -247453983557411768485540540599787988729309850863914, + -1059154426141800398948798295604909878597737595010812, + 788799012380786444677598945908551760833829026815983, + -4124286172826701863952979935113567884574141213864223], + ![-14408053809982905152504887600991027325154482434869581, + 16465487061400400208550889703420141034433941111063947, + -93357485100090268157581577621073209789550317502485, + -33904949992668195814698231959576852709845689003135571, + 38687687210158053880513816515482394228683769791404733, + 563866529218337185208087597871213166497038207890590, + 155755843990158935881594482209548163778695629182765, + -1395465216889551645901590349743229934386417335223855, + 1837118779464001708773860879371775866108395188528049, + 1132837351729539175037892811040113974370273847972828, + 298367967239881917300205160371994600089074855562690, + -796434466265595247290771585459267037407434157292309, + -1183388309472726068905629632682274638051751144380427, + -1159498813395763076736458728997143813394304618342629, + 222377122956959963102356030651050644886591876459406, + 694026231345698482836546945495694136764855485126519, + -142362552298798056481121605035143371088745904994702, + -223958576793032413129902261906158389099026595780261, + -247412320930943025392777494259774986758046515726184, + 788987561686990369759953002823168512204047849217190, + -1059508950155856875332312928112174671494938831232105, + -4124097542847834153245273657330928065984261327863729], + ![248502706088040234581701094867536577763700379258328, + 248494508386047371531393674873478267249430841774440, + -47193312616874042494371650958104515089379467530238, + 563891173722965210270215056419911375795194157003210, + 563866529218337185208087597871213166497038207890590, + 713557880459160650126690117598093360620441941651714, + -1036982775452711633047484703661699657954592110727622, + 473886416498323534878612631808940325885602780332328, + 473878485424885533577289893156354011803944829491072, + -1009289528400336269292704015874340205604279563912462, + 509899898190367965958532124344576529329451578757958, + -1009278529998039138256474366194573301774589012375048, + 869399712427326378082386108423653098642843362346652, + 428630569665250998998726693402754484202588892085268, + 869372184369216580618311534659036593512689853036466, + 428642997588112865390589005955940875869866295288092, + 207681718597195915709699600446594604297155417068204, + 343241789628071251675412612806391167148583171046830, + 400740437843481919400631469216492347570933131743032, + 170540491913420299808190913328733177756366278396236, + 170466368366153413906674571104787710943445220348556, + -1426772350449296470039852232379797755213267414939290], + ![52439393769385147040919245900346681113843349884701, + 52545591041951583100055626392701661440789425854311, + 120899402794297306101796793435346825764139818257107, + 155537135405636695374558581761363909586925733630405, + 155755843990158935881594482209548163778695629182765, + -1036982775452711633047484703661699657954592110727622, + 2810606395829063501980175425156775447732388930824181, + -1180145064075343023162179138215861327737273374027251, + -1180062970271670401364466431058854866040204411947547, + 1616698068679946126410272991069092222160167426411956, + -40495755051548729857079735590924703007810000754886, + 1616506940033274822784259468613641072420593481065967, + -2060844797753551506698302206216820334658219712727935, + -1031531401780290872666420378705777789029291398697261, + -2060862987729655615080094219149261408446087045579212, + -1031489174695986664183781750435868860824727725061563, + -383942480216582453924074573028055542565700975824490, + -719935569015143511144741718614690169245626062614989, + -442374250593254232629002872523167713188105500926442, + -490601109343408630775327966992799831969859940181212, + -490641353873319435931509238499760340213194757330851, + 490245968230106119553138037825797187552849023925383], + ![839398554179715691959825715888932350971364026278375, + -560389990421342711755684864819808990477135112585357, + -140263687529305538083977388879690558799343937858467, + 1837414597187545941941410355887714406122318360426605, + -1395465216889551645901590349743229934386417335223855, + 473886416498323534878612631808940325885602780332328, + -1180145064075343023162179138215861327737273374027251, + 2283879993300998585576032825669705004491929608175433, + 185537236129984174104936594096232942044105571315513, + -1283647927338774752048246781360485096810214803784150, + 684500308492331712085437918511940575795649684497702, + 391886283480088692414571386232896135160755113649721, + 944732783257887420221392523079776804469955327393787, + 353792319104688382253525031294165252936957102172911, + 265471207407111533653945801236297337844760803368440, + -106776257890587483364660389528252747534784743572799, + 422944453113967048660163267225629444846673054175492, + 124615050148189939691478774655724533389674155905371, + -44557538230490742085326719803447919953198442278208, + -13559116998684229885914089562224906290127126985804, + 342761207002903386335847190002584818889391163430985, + -621458396885677626938708687908899529242881582619623], + ![-560289591862284148924794716872825500423675992818345, + 839268509101584844744692225943618190528664114505335, + -140281998863343314618456905398883074586238741816807, + -1395223694560058803081001270200866527437457271600487, + 1837118779464001708773860879371775866108395188528049, + 473878485424885533577289893156354011803944829491072, + -1180062970271670401364466431058854866040204411947547, + 185537236129984174104936594096232942044105571315513, + 2283866113272653552252097628162910813718606519852177, + 391705801850328634284742028786103036037548222840002, + 684677682048574837133134174864796580705515411784328, + -1283593517320625373054739176124351445391477077368699, + 265400663773451519407682951978514450284485260319023, + -106774440148802390660638087833234329179298627592825, + 944782079374044502048740833883005853653906790235514, + 353733916225974467209814254714172217041122683306315, + 422985151219461294905587517162703279477773836275886, + 124615272237225195569568611867265156629279027096047, + -44521868179031638784081227395652976185163663340684, + 342693321652839854152109682187800351170070054260148, + -13488809732158731759214131651296665421855317262773, + -621391423832124784488054644696351293473727698612697], + ![-348447004535212670074988476064323650154103315496464, + 487767362635033882322988605390293670584858481167418, + 40678163418671119897117377034120355553889661902316, + -796354909316251992971999243828390059802020034792014, + 1132837351729539175037892811040113974370273847972828, + -1009289528400336269292704015874340205604279563912462, + 1616698068679946126410272991069092222160167426411956, + -1283647927338774752048246781360485096810214803784150, + 391705801850328634284742028786103036037548222840002, + 3030543927145706440240907303864098006119420358348082, + -982347068353676579557497201939588386605498304352064, + 1309054159721135532065825237066250113421928082904060, + -2062725724667905048004465506270919544886709455621372, + -1097793265402038933493324738641933118233982689242866, + -1579018443096522081623180136440107896895149918707046, + -733175516214642345581015053745353742401258550665046, + -458507363253775241670772295121533134122649274664680, + -778964238019889564953747342842439113524257117822444, + -1090235557224343449703748546870621874691082219436206, + -104677787959839336448133058104664087973564047101838, + -542014250251550071462548998641886589797898281617076, + 513011893475525097525536081078788722147673418313452], + ![186597126046630738906980824990015540754021323382022, + 186842389495660196629153465078908057748205963011474, + -89812396115176077080199544957502890337620380639870, + 297788311174213958748633904228738375736469682745004, + 298367967239881917300205160371994600089074855562690, + 509899898190367965958532124344576529329451578757958, + -40495755051548729857079735590924703007810000754886, + 684500308492331712085437918511940575795649684497702, + 684677682048574837133134174864796580705515411784328, + -982347068353676579557497201939588386605498304352064, + 2576348009883559210937698503028185152313803429639656, + -982592568515524083826188353685058607733675263994366, + 288947303394131062232003878726730872413710953491122, + -97785005393587937719425471650575634338097100179704, + 288969275113587705132916250793872572754496211586682, + -97794023742071692435634833840173653602743992550608, + 566116509696762006330913154437363928797948259495468, + 346771788499715007427261260240355661220003446291844, + 579246632429881307038804464248676256225193352283820, + 39540994452607598695960962501731762895549486282228, + 39630446892772244592736330544955654009666571350702, + -813259550548280295709741394025565964566957001814488], + ![487848175905928798474677456576256622390053181929987, + -348464148596288467517679559321934030306497007359233, + 40662942035690276785774811153425501019011478677239, + 1133025862217060345445818287867967923956021928082435, + -796434466265595247290771585459267037407434157292309, + -1009278529998039138256474366194573301774589012375048, + 1616506940033274822784259468613641072420593481065967, + 391886283480088692414571386232896135160755113649721, + -1283593517320625373054739176124351445391477077368699, + 1309054159721135532065825237066250113421928082904060, + -982592568515524083826188353685058607733675263994366, + 3030774626577780507758620448076172913302270862725947, + -1579019919785974249839825404675030962342609803071005, + -733074592850412903639540585864179029782931866566781, + -2062697717168850308878485692464480322540456626677386, + -1097739708614190587027503589547763486656685222843263, + -458501894509046809248521609795042110136454461680090, + -779030086592762684234960615808458149374080315669743, + -1090314919068568378914305557427463923397762265414270, + -542013377633175807087325894525421223555663396695982, + -104710266167558496658056126836863599869311891285645, + 512946560011866951333467984600684956904455781036087], + ![104938164562066621991339273723437043154939580330401, + -503089965885970951084894431446138047584308040313027, + -64949406574942494885283119121558092811986599812107, + 222396181513954098244123215556027606445470133064715, + -1183388309472726068905629632682274638051751144380427, + 869399712427326378082386108423653098642843362346652, + -2060844797753551506698302206216820334658219712727935, + 944732783257887420221392523079776804469955327393787, + 265400663773451519407682951978514450284485260319023, + -2062725724667905048004465506270919544886709455621372, + 288947303394131062232003878726730872413710953491122, + -1579019919785974249839825404675030962342609803071005, + 2187050749839103207929434548738114284161955167760411, + 1064390047275985094100075171143407426773221700406905, + 1903914237110084933228010897930804712428473219171916, + 911263277874539931072498959135879660208277978659689, + 415563611659170823277367095998959901901839140064952, + 792083759652105894090477885076662007040582757851457, + 576166342602644625081457504039424031097483086941760, + 273532842278677636360448581229761166363448423999306, + 405674816535695306231927299564399701973570886904803, + 97229664288442359898350617485459069736193295358331], + ![288815733388870970192637588719687796916980873430833, + -506462645196964049209987244357508129491693928024887, + -8587584140906210283981838438728724273105803901391, + 693664176350335404475977735299670622617234733360813, + -1159498813395763076736458728997143813394304618342629, + 428630569665250998998726693402754484202588892085268, + -1031531401780290872666420378705777789029291398697261, + 353792319104688382253525031294165252936957102172911, + -106774440148802390660638087833234329179298627592825, + -1097793265402038933493324738641933118233982689242866, + -97785005393587937719425471650575634338097100179704, + -733074592850412903639540585864179029782931866566781, + 1064390047275985094100075171143407426773221700406905, + 645157289061434778219435880091324955751223836974773, + 911230472856283216742518358632685384101593227971768, + 504939499865337774039396762996920761093634140237383, + 106449399430559124914948810219779406687888486009672, + 386209351918363680691137738487264318018780513078269, + 397847381332738552018841991247876115335007364404624, + 146807186218187729004341608175048864003115860870180, + 249131064083529377427139133665937538422039101462993, + 32335360356542499137156768860602632570927010178705], + ![-503186455378015690054900567269681166765483640329708, + 104938400730660674529171308079619109617221127318072, + -64986742471597439281458448122232105616531014171898, + -1183632473928140702115716868871170834141731277254376, + 222377122956959963102356030651050644886591876459406, + 869372184369216580618311534659036593512689853036466, + -2060862987729655615080094219149261408446087045579212, + 265471207407111533653945801236297337844760803368440, + 944782079374044502048740833883005853653906790235514, + -1579018443096522081623180136440107896895149918707046, + 288969275113587705132916250793872572754496211586682, + -2062697717168850308878485692464480322540456626677386, + 1903914237110084933228010897930804712428473219171916, + 911230472856283216742518358632685384101593227971768, + 2187084212378165204586810671091784017321260372882914, + 1064422401753062482635590426751063707448956509776562, + 415606391816623259979672757852972757545297188916102, + 792068319853406027515618468672878636026676352421894, + 576153231132558439641458670865995669335002982826586, + 405753912811299157830398948889478857899116073002154, + 273505782947591064142943031382018779156478796882126, + 97431288872267543848972821724110535555045519212248], + ![-506560287120773056516292845554496480465782775593207, + 288972471897293877192471563597006922043807724896721, + -8590973883751123829444182639792894370254513848665, + -1159726945770131210145263799530076026761974917460435, + 694026231345698482836546945495694136764855485126519, + 428642997588112865390589005955940875869866295288092, + -1031489174695986664183781750435868860824727725061563, + -106776257890587483364660389528252747534784743572799, + 353733916225974467209814254714172217041122683306315, + -733175516214642345581015053745353742401258550665046, + -97794023742071692435634833840173653602743992550608, + -1097739708614190587027503589547763486656685222843263, + 911263277874539931072498959135879660208277978659689, + 504939499865337774039396762996920761093634140237383, + 1064422401753062482635590426751063707448956509776562, + 645145263287898745793947623773077734271271315600683, + 106435274790598821364815334276469179497326434122374, + 386216994101134219394106288772887752949527904383729, + 397829806647962167110856194466729011932679495129452, + 249095296906471882255883588049677280026728598765102, + 146782043216863031451253897500101857461976058398779, + 32224989055392266648974024267299301804234074612403], + ![-43718181093183246333750085870682284842753502036084, + -43743455791695321763561506146940034912041695489934, + -58321967026473258499190292103516499766780086414946, + -142282808879455566590581092759567755582307080501176, + -142362552298798056481121605035143371088745904994702, + 207681718597195915709699600446594604297155417068204, + -383942480216582453924074573028055542565700975824490, + 422944453113967048660163267225629444846673054175492, + 422985151219461294905587517162703279477773836275886, + -458507363253775241670772295121533134122649274664680, + 566116509696762006330913154437363928797948259495468, + -458501894509046809248521609795042110136454461680090, + 415563611659170823277367095998959901901839140064952, + 106449399430559124914948810219779406687888486009672, + 415606391816623259979672757852972757545297188916102, + 106435274790598821364815334276469179497326434122374, + 348046532983837729978671196222675409472788948089720, + 121780226209258366442959601603206438268944643584510, + 130342692328173120240490386805503996968193370720760, + 19906773590459142482253714311687745717706548983628, + 19876032512840049426531738700369976548216175978110, + 86895312695831345319574977504094020811440994258608], + ![-90975178673442719736425919876648252350964215874251, + -90994202566958488223062405359982205045083651604775, + -6265253844674471910637257686273928519033495260741, + -223916475603906525514115081550040466529657709246311, + -223958576793032413129902261906158389099026595780261, + 343241789628071251675412612806391167148583171046830, + -719935569015143511144741718614690169245626062614989, + 124615050148189939691478774655724533389674155905371, + 124615272237225195569568611867265156629279027096047, + -778964238019889564953747342842439113524257117822444, + 346771788499715007427261260240355661220003446291844, + -779030086592762684234960615808458149374080315669743, + 792083759652105894090477885076662007040582757851457, + 386209351918363680691137738487264318018780513078269, + 792068319853406027515618468672878636026676352421894, + 386216994101134219394106288772887752949527904383729, + 121780226209258366442959601603206438268944643584510, + 414148964102578853825492209806781582501797312830717, + 303971599260794414703012669466312461644737758219700, + 148220590243485609188561835118594652097700048195776, + 148226119821194749872897348670407496485866007118323, + 82477795201092857399163856993607357578590557955999], + ![-121594127201221143738072394909952513177563992931448, + -121582676555162675114999155987355734143380723114926, + 24800162078634170431751522734102712929541044501346, + -247453983557411768485540540599787988729309850863914, + -247412320930943025392777494259774986758046515726184, + 400740437843481919400631469216492347570933131743032, + -442374250593254232629002872523167713188105500926442, + -44557538230490742085326719803447919953198442278208, + -44521868179031638784081227395652976185163663340684, + -1090235557224343449703748546870621874691082219436206, + 579246632429881307038804464248676256225193352283820, + -1090314919068568378914305557427463923397762265414270, + 576166342602644625081457504039424031097483086941760, + 397847381332738552018841991247876115335007364404624, + 576153231132558439641458670865995669335002982826586, + 397829806647962167110856194466729011932679495129452, + 130342692328173120240490386805503996968193370720760, + 303971599260794414703012669466312461644737758219700, + 1030869695813478586910375795582785996520616962096094, + 172404609213550094664476146881462491729261435060536, + 172504641399388958266892236313869708854749508045772, + 33809218962610940487841279241179531758524830431130], + ![-451139267745594930151505373021358525086065973946492, + 333598632918852291892532012270469388428711498335454, + -5907849530423258683370146227631265352066921444560, + -1059154426141800398948798295604909878597737595010812, + 788987561686990369759953002823168512204047849217190, + 170540491913420299808190913328733177756366278396236, + -490601109343408630775327966992799831969859940181212, + -13559116998684229885914089562224906290127126985804, + 342693321652839854152109682187800351170070054260148, + -104677787959839336448133058104664087973564047101838, + 39540994452607598695960962501731762895549486282228, + -542013377633175807087325894525421223555663396695982, + 273532842278677636360448581229761166363448423999306, + 146807186218187729004341608175048864003115860870180, + 405753912811299157830398948889478857899116073002154, + 249095296906471882255883588049677280026728598765102, + 19906773590459142482253714311687745717706548983628, + 148220590243485609188561835118594652097700048195776, + 172404609213550094664476146881462491729261435060536, + 272909140204182233047576407117836038161474212679122, + 32338393162046542129547535419191955770620980410522, + 65980825748021955860110111454106341846850098685710], + ![333524165335784458807278023945044592333114799925283, + -451287844268983242852151291608371910905904140250255, + -5928979628122582670531162475078309128268096651937, + 788799012380786444677598945908551760833829026815983, + -1059508950155856875332312928112174671494938831232105, + 170466368366153413906674571104787710943445220348556, + -490641353873319435931509238499760340213194757330851, + 342761207002903386335847190002584818889391163430985, + -13488809732158731759214131651296665421855317262773, + -542014250251550071462548998641886589797898281617076, + 39630446892772244592736330544955654009666571350702, + -104710266167558496658056126836863599869311891285645, + 405674816535695306231927299564399701973570886904803, + 249131064083529377427139133665937538422039101462993, + 273505782947591064142943031382018779156478796882126, + 146782043216863031451253897500101857461976058398779, + 19876032512840049426531738700369976548216175978110, + 148226119821194749872897348670407496485866007118323, + 172504641399388958266892236313869708854749508045772, + 32338393162046542129547535419191955770620980410522, + 273291142585815836748043717534487282889011475056251, + 66347610186089846524799378638086633533689787675491], + ![-1769257779261691495516584020003866750942748022308435, + -1769246250788022979300546817996223198125068196095933, + 57860782254282199153296514361515243360905062442991, + -4124286172826701863952979935113567884574141213864223, + -4124097542847834153245273657330928065984261327863729, + -1426772350449296470039852232379797755213267414939290, + 490245968230106119553138037825797187552849023925383, + -621458396885677626938708687908899529242881582619623, + -621391423832124784488054644696351293473727698612697, + 513011893475525097525536081078788722147673418313452, + -813259550548280295709741394025565964566957001814488, + 512946560011866951333467984600684956904455781036087, + 97229664288442359898350617485459069736193295358331, + 32335360356542499137156768860602632570927010178705, + 97431288872267543848972821724110535555045519212248, + 32224989055392266648974024267299301804234074612403, + 86895312695831345319574977504094020811440994258608, + 82477795201092857399163856993607357578590557955999, + 33809218962610940487841279241179531758524830431130, + 65980825748021955860110111454106341846850098685710, + 66347610186089846524799378638086633533689787675491, + 7653396941398788127733018020910471462564042145327811]] + +/-- Exact integer matrix after 7 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage7 : Fin 21 → Fin 21 → ℤ := + ![![6257923582445758747145390762296215429555519566979662217587, + -323780412013314989896590739249078277837655577950392545839, + -309845712343866232781617866802006316453881522230062478482, + 14377935629273965625552165495539063311899131479958990016418, + 1699155758039323149984457677068191647469830187597077386760, + 358952919021090121802125730072585697221160483102940142009, + 620920231760472992120048074028993615807168231094779257992, + 1286699083819100599535584082320464793066935390054851683990, + 675225263389406347517164544137784108595380915789237451767, + 1276791112790068296033233656703843710206156334224190719806, + 277599240163697348492403765144554424142456148014990400648, + -1505851879029537234876545555827166900765608392008021428188, + -933274371388727472350802125992420013826005717318302340178, + -1216894807598246481848571963960771888540879983847314605682, + -554666298451752121696422225710636608933017409638525179226, + -299024014889672708275058330828797440921071552369127013271, + -622130098060439114001920388372315657651872309281384359400, + -831381695468819025452788255148865731315793217349793582169, + -215188012577004755954613078137948528897071569970171852649, + -589299191818758691485585797982524102669218310082816259445, + -12097603084148262472776945624025020001926779088655535631877], + ![-323780412013314989896590739249078277837655577950392545839, + 543964668572764499696795363918713867295627609631450748941, + 63973751858785418097310606543636697584847247396375639693, + -696005197332330422636287609782781545209784725253389634948, + -166456248389797638125769503122798105758608902735797215193, + 443385634314628626317898924672768435215517878693465146401, + -492244678557454764712633970793385837955983096026178550223, + -526761951220321659540208501051414755109008495352830430893, + 140172274920501936771719464353948446012831358351766378602, + -323825865852623020359316155701511908351792183666564507334, + 160700221801097108155649290217564399883539281868334274182, + -234918798767087301532188045391960024389333862448343940890, + -24293790366617011233713706173684995345486081455667037160, + -250023005166021753528554762752500490633909982272548716781, + -43882655761630223548248636733637479589440591657719609411, + -214342981387107436726102027794310940263038363470374587261, + -25149421186016361295960936242457945498756475925512395047, + 87694406600463525853026157174355006361641070114637770735, + -32707159024179619669330706490556246828543675930869128046, + -13471623056141063069169388207713528544433203510017898734, + 168034055054424120395002236661634029273648269565311163299], + ![-309845712343866232781617866802006316453881522230062478482, + 63973751858785418097310606543636697584847247396375639693, + 538068476767705404890754128555648157130152135321464246462, + -658675698822293242343706471700015693622480020775619184428, + -65006298559970895269485214385358282011552082185861730533, + 119913431149165211438806171587443247264461257713035166679, + -465716748899197217566761072792987646719715895983669557630, + -306279671621929450479786307362487629471688171431928612708, + 70400419800459472238104690593729321740271145371533076283, + -508203887523247167544523018128326993049453121624433307301, + -32459463970621014026296085872167582156425098008650945627, + -84952073820327813474322939332416220727373158589843401506, + 64487590874392563038106906140561912154726441607580616369, + -21310434267763246856097262344235416828458533974981895966, + 94982798677718971601094511004195331134272523948161337397, + -146093150651190545015982309144838930880102604369320730850, + -40119909440497545845332642239514320420437518499989329143, + 135885333406956954387489433289687572602112637769983691877, + -11614318978332412599615809565323900614544721144901203556, + 29698122860673992711728104510792982376191363306190519399, + 62171903226752715821312957263418048142900432170596752073], + ![14377935629273965625552165495539063311899131479958990016418, + -696005197332330422636287609782781545209784725253389634948, + -658675698822293242343706471700015693622480020775619184428, + 33557457253537893318379047031186707080610493037990341974408, + 3923119580488199316955244513428753192697814623469082309257, + 962312187302605887558585126693548979714618514168322227959, + 1184049451882445995609439695958347239037311492991505599380, + 2521404545735623018537443913951905529588142060010026998476, + 1532690892817389151668821976823841908288294683370942757346, + 2488610073617447988919160421449930597156502258042028968588, + 741517009220904945684654265097808209630445378550530640317, + -3541357758742877186741462101701985757076895250207441467239, + -2076806648744375292981182054018729335542411657521373220734, + -2955562117048767124355606959793491335949032879412064971653, + -1256143709944419825074510626872319544950234114716556667232, + -848017146252678498448715435988537719647458852948694691979, + -1500333064288107185425251533839098871159343276131817104008, + -1815424541163999589088715275761352552804171728364526151248, + -493808298351975783724996685599427058066515864157381669273, + -1376317737489997370590545560474329082816208134771413341153, + -28331928428162073402316316812428738625749118781658688797366], + ![1699155758039323149984457677068191647469830187597077386760, + -166456248389797638125769503122798105758608902735797215193, + -65006298559970895269485214385358282011552082185861730533, + 3923119580488199316955244513428753192697814623469082309257, + 2577178177648979440745608256479170410263028098004290685355, + -3798727044247390285874101271663731389563794611887819610405, + 1624435984509113264658085777179579956846387494735327099632, + 1805217398995676852871636475762811787141573509300767161108, + -3645674532506733679912483802635353496674267572909971359885, + 1840455392982671525321141633098366513817914881364236218313, + -3753666150015509259960304409525002166792795713218774826056, + 3165593252571386598008619240711663002840047309639686642726, + 1530071919353885355513800943887127913803918235404699601146, + 3244049564473782263541522757555330254346391222936390647875, + 1632863301195543976981250477312273064543261328853208950982, + 765080830837449206647807072279690266117888847014823277634, + 1266890318193513334261029080377305870926935522126437124857, + 1481101953713335479182862736700746274253165476249813745684, + 681896138480901369938778071028033056536657564624268320338, + 580262995280828038466217089138823607914636782312212694118, + -4988752219775459954344515535989966624168611041312343580915], + ![358952919021090121802125730072585697221160483102940142009, + 443385634314628626317898924672768435215517878693465146401, + 119913431149165211438806171587443247264461257713035166679, + 962312187302605887558585126693548979714618514168322227959, + -3798727044247390285874101271663731389563794611887819610405, + 10276163874461242852531402391951118452937683586132248608460, + -4338338633562800309272395512675453405923433830967737355319, + -4299883569052282589083534044104546802260215406142609098363, + 5921306488310722898510870743694153229200453241353333820470, + -153168086560423945759044626960035274625081858623789967922, + 5897810553577895896168856710024099202572234456676564921450, + -7538787624765436624682597501540041124132015845695501274344, + -3779891826245908995568694757169927407357739956402862830141, + -7522276936159748940285203176917275428946642021779225240496, + -3758055820383881664166437231474193878039758711487832331694, + -1402777415014194087442738908392765633832021808160222553449, + -2630120988936756599896708755529340362830814731490899412387, + -1614323023885193362406034034592491070170040905861693636531, + -1781691765424026170854896015449175944573205431312594654960, + -1803228501319486983869406559183914923232422004923724999401, + 1840920141699215082888557399116263967545173694883812078167], + ![620920231760472992120048074028993615807168231094779257992, + -492244678557454764712633970793385837955983096026178550223, + -465716748899197217566761072792987646719715895983669557630, + 1184049451882445995609439695958347239037311492991505599380, + 1624435984509113264658085777179579956846387494735327099632, + -4338338633562800309272395512675453405923433830967737355319, + 7985237009592161705936721163863240038511781627805286887502, + 922936382935754443105460573277577768451058850874437193022, + -4541894881818645853390529652748257810720614256497400414225, + 2421603614580733268435658741625801991778284846880314667438, + 1220147651109327362303001409349704571810263705430310819624, + 3408831654660902250945281301577007663136248308614656611428, + 1167695449771858610414314309569568380074087416730647446234, + 1190315702430338765273327142143966065655387354707861721610, + -169415933804023238548067358929786806718934955844215679631, + 1565664523313969098106629947578962217682802138809975938448, + 495378519758288945313524069567878505221442957108276922474, + -109877427892985503972087978787045159407545769946912802852, + 147270165446722008934229737135347969974582974902674050524, + 1107849522931844747721021733898826228342132193034305641840, + -1500492285553579844636608557024612051757822813804718802237], + ![1286699083819100599535584082320464793066935390054851683990, + -526761951220321659540208501051414755109008495352830430893, + -306279671621929450479786307362487629471688171431928612708, + 2521404545735623018537443913951905529588142060010026998476, + 1805217398995676852871636475762811787141573509300767161108, + -4299883569052282589083534044104546802260215406142609098363, + 922936382935754443105460573277577768451058850874437193022, + 8188265763648825770508876642209981311753268998761498437738, + 1330870446401390219766324511032974221838561499817365131443, + 2558020173752118866648169645271517724888013702236763502617, + -4551650478776671117340392264512550771532099052268013380046, + 1001059008135846162042524475573100374727816223285456062842, + -306324888590653421628422934749697227576839963180692812010, + 3308245441216352766397239501438326289077155162809078277301, + 1145966685267594326833719156961612558933396683999040087200, + 1534004023097659954768701242140272884584277698667584362839, + 429185847799952020694017816066190767295969350089245381488, + -198218804795472866149615651869673667601845907476142231686, + 1121736007427241301762300019692874908900889394849667352252, + 47815861006740821411484284211421816112095008768157791203, + -2787558256549853414964117654903014185995653524836579383768], + ![675225263389406347517164544137784108595380915789237451767, + 140172274920501936771719464353948446012831358351766378602, + 70400419800459472238104690593729321740271145371533076283, + 1532690892817389151668821976823841908288294683370942757346, + -3645674532506733679912483802635353496674267572909971359885, + 5921306488310722898510870743694153229200453241353333820470, + -4541894881818645853390529652748257810720614256497400414225, + 1330870446401390219766324511032974221838561499817365131443, + 11018727469858239302820260693035168768691587377608357121299, + -3558366718146391110854443710502818184198337689560571191184, + 4875206583598326934664649934635208551543648146597073542162, + -7523797302638517620182706661260730938533036076802865366962, + -3962005665880817959930322659976912371483556252000730964731, + -5865167949330682850151332662474465957278089739311766991697, + -2772770502452136057853387235092881958445392910607073372641, + -1684550668048118684796473295184635815494762938609451084124, + -2864930707699473817465421939642571098182526409636386808442, + -4008708065293951381485638473094544405436462323554469383677, + -464493335503412799352219277384865879014250028962169560749, + -1921580687359775815735772783764841127196293509573476126646, + 1555468411375553134942199452663387394150076237071163177578], + ![1276791112790068296033233656703843710206156334224190719806, + -323825865852623020359316155701511908351792183666564507334, + -508203887523247167544523018128326993049453121624433307301, + 2488610073617447988919160421449930597156502258042028968588, + 1840455392982671525321141633098366513817914881364236218313, + -153168086560423945759044626960035274625081858623789967922, + 2421603614580733268435658741625801991778284846880314667438, + 2558020173752118866648169645271517724888013702236763502617, + -3558366718146391110854443710502818184198337689560571191184, + 9402876947964833529075159981910968624960441450169384782878, + -3640384002299699827775865623006402302054801558005999505060, + 1046419768454858977972393304969207045960768082046591182030, + -385586887509687989094522243646224439250710044099108139305, + 1105487420661941726790120432606819868939010814304191993787, + -308469411634250778054372977936827157734052427854561750661, + 2074368706282030376658337044964034887736837581785210321334, + 1276870912953628338453546567016589218454165831516181773549, + 2129935721563817727849610287783339370620847135006819308554, + 188350173049321799907631107786155868869628455726174935978, + 112565929152552825679008089214091583866268710109189786734, + -2802244625382257876804209187572851074688311506903084236517], + ![277599240163697348492403765144554424142456148014990400648, + 160700221801097108155649290217564399883539281868334274182, + -32459463970621014026296085872167582156425098008650945627, + 741517009220904945684654265097808209630445378550530640317, + -3753666150015509259960304409525002166792795713218774826056, + 5897810553577895896168856710024099202572234456676564921450, + 1220147651109327362303001409349704571810263705430310819624, + -4551650478776671117340392264512550771532099052268013380046, + 4875206583598326934664649934635208551543648146597073542162, + -3640384002299699827775865623006402302054801558005999505060, + 10958969058695018589061419068850827946789471593370854588717, + -5800641738742215998426787899899615801501578050830146901218, + -2753889704248334481210423376576647217649606323874968353498, + -7415095610804033628603229478197750003768250821820163106025, + -3885661261294303734015502763247623029823564887261890392961, + -1665525020817417648911550366964299750835054922105191263053, + -2825621764858745917101255483060587338647698963448994685719, + -3956137529860821820119711515868909251475952580279507541001, + -1867581766358416922525518024109153293838713922428712205767, + -467476895459705410390902848191361654318935751902830777839, + 2324380749135498229229071359802751194268368003530619599758], + ![-1505851879029537234876545555827166900765608392008021428188, + -234918798767087301532188045391960024389333862448343940890, + -84952073820327813474322939332416220727373158589843401506, + -3541357758742877186741462101701985757076895250207441467239, + 3165593252571386598008619240711663002840047309639686642726, + -7538787624765436624682597501540041124132015845695501274344, + 3408831654660902250945281301577007663136248308614656611428, + 1001059008135846162042524475573100374727816223285456062842, + -7523797302638517620182706661260730938533036076802865366962, + 1046419768454858977972393304969207045960768082046591182030, + -5800641738742215998426787899899615801501578050830146901218, + 7991702186563441555651753147695370491525181228687870122105, + 3876418731022797752705023767536978295420071743213966492038, + 6989525148954894685076126098898031829185216200173161874236, + 3359865143672548989640579486373933227134536232238409404794, + 1521983520369131775331391824414680409792049750189058536874, + 2901389169612214517218883232566687485209852495548910859812, + 2113510453583271844427950660580594914180588572786859444932, + 1024841940159131846634209849888918002931567177572745737257, + 1465244433000728925497768671299181945078966847866300459950, + 452054362274475314412245655638309270826615157658459534079], + ![-933274371388727472350802125992420013826005717318302340178, + -24293790366617011233713706173684995345486081455667037160, + 64487590874392563038106906140561912154726441607580616369, + -2076806648744375292981182054018729335542411657521373220734, + 1530071919353885355513800943887127913803918235404699601146, + -3779891826245908995568694757169927407357739956402862830141, + 1167695449771858610414314309569568380074087416730647446234, + -306324888590653421628422934749697227576839963180692812010, + -3962005665880817959930322659976912371483556252000730964731, + -385586887509687989094522243646224439250710044099108139305, + -2753889704248334481210423376576647217649606323874968353498, + 3876418731022797752705023767536978295420071743213966492038, + 2315796549058909505512450775498034379829115197122972506456, + 3407658225161989474596210177422350588463501695614397405998, + 1922473479626315329037147221556253641573798253490592226951, + 395819000693657855562908380527018055495373559645431651106, + 1425917018751600180836176803817225137130433171291395752918, + 1473070978751051456680521899652696175013384462352372594492, + 604564178578066933576427369917568230666724134548863075064, + 860928256685590350060454866296142067181105271641206720611, + 383868754364621999190882242535458089179994727227084249440], + ![-1216894807598246481848571963960771888540879983847314605682, + -250023005166021753528554762752500490633909982272548716781, + -21310434267763246856097262344235416828458533974981895966, + -2955562117048767124355606959793491335949032879412064971653, + 3244049564473782263541522757555330254346391222936390647875, + -7522276936159748940285203176917275428946642021779225240496, + 1190315702430338765273327142143966065655387354707861721610, + 3308245441216352766397239501438326289077155162809078277301, + -5865167949330682850151332662474465957278089739311766991697, + 1105487420661941726790120432606819868939010814304191993787, + -7415095610804033628603229478197750003768250821820163106025, + 6989525148954894685076126098898031829185216200173161874236, + 3407658225161989474596210177422350588463501695614397405998, + 7865929821092469356330114256638424442079630533279067630435, + 3759790331904147195825983191846746912985595694793071493629, + 1508319711344782551324043755992091082654231157652041334425, + 2872573527766645332897151145994900311580895036642911568579, + 2075024026954679845878609422298531230761165070913941330623, + 1365722343405297329643561112985203298949049054436375086607, + 1087373686569261193110072332632284594874506882898871884475, + -106508250018149681124025434520178099445806143719098866058], + ![-554666298451752121696422225710636608933017409638525179226, + -43882655761630223548248636733637479589440591657719609411, + 94982798677718971601094511004195331134272523948161337397, + -1256143709944419825074510626872319544950234114716556667232, + 1632863301195543976981250477312273064543261328853208950982, + -3758055820383881664166437231474193878039758711487832331694, + -169415933804023238548067358929786806718934955844215679631, + 1145966685267594326833719156961612558933396683999040087200, + -2772770502452136057853387235092881958445392910607073372641, + -308469411634250778054372977936827157734052427854561750661, + -3885661261294303734015502763247623029823564887261890392961, + 3359865143672548989640579486373933227134536232238409404794, + 1922473479626315329037147221556253641573798253490592226951, + 3759790331904147195825983191846746912985595694793071493629, + 2225723904375137843495915684095613275282891729692337504281, + 377691630388354101096603657117882652446897283482718009479, + 1388330363904896552597069218921407661156610832932316055248, + 1422732401553362407050152964896708850782606367297956372694, + 792074838673730880587803203896140177845451970024173941087, + 624565721449803347139529397394508520433795274753178388750, + -348052217678838365264910396421732846458025459659805524873], + ![-299024014889672708275058330828797440921071552369127013271, + -214342981387107436726102027794310940263038363470374587261, + -146093150651190545015982309144838930880102604369320730850, + -848017146252678498448715435988537719647458852948694691979, + 765080830837449206647807072279690266117888847014823277634, + -1402777415014194087442738908392765633832021808160222553449, + 1565664523313969098106629947578962217682802138809975938448, + 1534004023097659954768701242140272884584277698667584362839, + -1684550668048118684796473295184635815494762938609451084124, + 2074368706282030376658337044964034887736837581785210321334, + -1665525020817417648911550366964299750835054922105191263053, + 1521983520369131775331391824414680409792049750189058536874, + 395819000693657855562908380527018055495373559645431651106, + 1508319711344782551324043755992091082654231157652041334425, + 377691630388354101096603657117882652446897283482718009479, + 1271714278045640834098080418074864758370848913876987488156, + 443248371254333918906643894329469621307432695670608119779, + 473863043791338545225514453619534518734660614638795815812, + 62540851764403469193717044899659852259250856871942789370, + 80260706489125251811655438639119766976485012563872194903, + 277543439528835267709352335549748136047024336855733473542], + ![-622130098060439114001920388372315657651872309281384359400, + -25149421186016361295960936242457945498756475925512395047, + -40119909440497545845332642239514320420437518499989329143, + -1500333064288107185425251533839098871159343276131817104008, + 1266890318193513334261029080377305870926935522126437124857, + -2630120988936756599896708755529340362830814731490899412387, + 495378519758288945313524069567878505221442957108276922474, + 429185847799952020694017816066190767295969350089245381488, + -2864930707699473817465421939642571098182526409636386808442, + 1276870912953628338453546567016589218454165831516181773549, + -2825621764858745917101255483060587338647698963448994685719, + 2901389169612214517218883232566687485209852495548910859812, + 1425917018751600180836176803817225137130433171291395752918, + 2872573527766645332897151145994900311580895036642911568579, + 1388330363904896552597069218921407661156610832932316055248, + 443248371254333918906643894329469621307432695670608119779, + 1510123367372632178027007753394252608213209486111878774544, + 1105787859939552058799662111770545618242440853814196947858, + 520665718049211643708876020814906156934148584625634275226, + 557793922962296128449941243304240470565512720385172375444, + 217926968631830492787744561395514401972359466319728463191], + ![-831381695468819025452788255148865731315793217349793582169, + 87694406600463525853026157174355006361641070114637770735, + 135885333406956954387489433289687572602112637769983691877, + -1815424541163999589088715275761352552804171728364526151248, + 1481101953713335479182862736700746274253165476249813745684, + -1614323023885193362406034034592491070170040905861693636531, + -109877427892985503972087978787045159407545769946912802852, + -198218804795472866149615651869673667601845907476142231686, + -4008708065293951381485638473094544405436462323554469383677, + 2129935721563817727849610287783339370620847135006819308554, + -3956137529860821820119711515868909251475952580279507541001, + 2113510453583271844427950660580594914180588572786859444932, + 1473070978751051456680521899652696175013384462352372594492, + 2075024026954679845878609422298531230761165070913941330623, + 1422732401553362407050152964896708850782606367297956372694, + 473863043791338545225514453619534518734660614638795815812, + 1105787859939552058799662111770545618242440853814196947858, + 3761913417518447168828861590627650533696467904377461855845, + 601919221375556448816538120966995740713384263580026494020, + 651882198648326055237439979235790707216601124472920963854, + 11799104611590285261806744823410781366840803155755599075], + ![-215188012577004755954613078137948528897071569970171852649, + -32707159024179619669330706490556246828543675930869128046, + -11614318978332412599615809565323900614544721144901203556, + -493808298351975783724996685599427058066515864157381669273, + 681896138480901369938778071028033056536657564624268320338, + -1781691765424026170854896015449175944573205431312594654960, + 147270165446722008934229737135347969974582974902674050524, + 1121736007427241301762300019692874908900889394849667352252, + -464493335503412799352219277384865879014250028962169560749, + 188350173049321799907631107786155868869628455726174935978, + -1867581766358416922525518024109153293838713922428712205767, + 1024841940159131846634209849888918002931567177572745737257, + 604564178578066933576427369917568230666724134548863075064, + 1365722343405297329643561112985203298949049054436375086607, + 792074838673730880587803203896140177845451970024173941087, + 62540851764403469193717044899659852259250856871942789370, + 520665718049211643708876020814906156934148584625634275226, + 601919221375556448816538120966995740713384263580026494020, + 892152425703405469505227063917006367779869736103976832587, + 196468972858941714693620144462784594993488254507885573637, + -173645250107293939699074889550098591227493263760592411465], + ![-589299191818758691485585797982524102669218310082816259445, + -13471623056141063069169388207713528544433203510017898734, + 29698122860673992711728104510792982376191363306190519399, + -1376317737489997370590545560474329082816208134771413341153, + 580262995280828038466217089138823607914636782312212694118, + -1803228501319486983869406559183914923232422004923724999401, + 1107849522931844747721021733898826228342132193034305641840, + 47815861006740821411484284211421816112095008768157791203, + -1921580687359775815735772783764841127196293509573476126646, + 112565929152552825679008089214091583866268710109189786734, + -467476895459705410390902848191361654318935751902830777839, + 1465244433000728925497768671299181945078966847866300459950, + 860928256685590350060454866296142067181105271641206720611, + 1087373686569261193110072332632284594874506882898871884475, + 624565721449803347139529397394508520433795274753178388750, + 80260706489125251811655438639119766976485012563872194903, + 557793922962296128449941243304240470565512720385172375444, + 651882198648326055237439979235790707216601124472920963854, + 196468972858941714693620144462784594993488254507885573637, + 941523478666253604642087287214898431419372843890531900013, + 549360850310967867485208092688483685258043492862676953424], + ![-12097603084148262472776945624025020001926779088655535631877, + 168034055054424120395002236661634029273648269565311163299, + 62171903226752715821312957263418048142900432170596752073, + -28331928428162073402316316812428738625749118781658688797366, + -4988752219775459954344515535989966624168611041312343580915, + 1840920141699215082888557399116263967545173694883812078167, + -1500492285553579844636608557024612051757822813804718802237, + -2787558256549853414964117654903014185995653524836579383768, + 1555468411375553134942199452663387394150076237071163177578, + -2802244625382257876804209187572851074688311506903084236517, + 2324380749135498229229071359802751194268368003530619599758, + 452054362274475314412245655638309270826615157658459534079, + 383868754364621999190882242535458089179994727227084249440, + -106508250018149681124025434520178099445806143719098866058, + -348052217678838365264910396421732846458025459659805524873, + 277543439528835267709352335549748136047024336855733473542, + 217926968631830492787744561395514401972359466319728463191, + 11799104611590285261806744823410781366840803155755599075, + -173645250107293939699074889550098591227493263760592411465, + 549360850310967867485208092688483685258043492862676953424, + 26359101130845664959339176438281575433712338802696595324809]] + +/-- Exact integer matrix after 8 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage8 : Fin 20 → Fin 20 → ℤ := + ![![469013774677419966936811159834691249742394614482932476667660686, + 42650204385683681547841440334512319639308490970428884384168813, + 42611211455201584034212700495887549210867389338655563784116666, + -69872824277985107951431465410649712116843761284189131052064591, + 410962323599546413734329484553566073536430817786057678829516658, + -409326437122276898447376145953204929912518723500032363762287833, + -409389029557009709079001598361864920658132366490377614630338721, + 155777858835776859041590755977185499014892937119004623996059667, + -229311001638409880253837942709664458205307303106173971618930384, + 155737884906689630285611693949171168938061198534940441752888146, + -278297275319156417410953326973876307151876377178985816912404442, + -64568576138959480783623492593738369200826192146428425053208542, + -278434077670705671138108758466184678465695855756371897926325945, + -64568539869149247887327784525697449056620615720376564748875611, + -204445181692121002328943172001548422292950447265340630148690016, + -51008468134862854400687798387070214291768925174915299179360849, + 39747194095059291894091705262098374497041733997405422543936414, + -39001262361200452657168447957669600955865953560382793115879733, + -39108642074791536126767756851172555121250208101621870631189433, + -407341188559417239861116012746010958474514579082532952171792890], + ![42650204385683681547841440334512319639308490970428884384168813, + 465023624179063608764913364765105933427394109516911203949650670, + 47338363941612566536370230475749447631940587704921700698487840, + 17012221072656514840047339938990072351143346641713090098931509, + 122487001421670727127112582334105755258973866452213510283075251, + -386956906860533844281530091642223418647639481323855188147126706, + -215794530916202619543401661115910942555643438239130707343103456, + 92370516525668469388936033889848451295663071899577771134597915, + -395864846435690677369270278812320514630826661880765305855316495, + -16648899779952544274169566698518759373507354703809115122350933, + -141902329624923612752682408058121243738027070526421487932546358, + 16261014998058786870885371522531050141654064505014216987035387, + -72558402756513897115605018610711940628888410905592427418018806, + 60066375239376940872820131110635762291770641445893492191531687, + -143137073355721990311512422859786455893189018887721295682131252, + -63093980654516567974467638111671399665549108844545680588000281, + 84265249851692817186440385786329158446045404773817511714908881, + -19810580078821282833309480043433781042625086018118192742086790, + 462972077045445555367317790267242003263539030815850064612343, + -477552867859160503659749799044336199377495475948737003431299083], + ![42611211455201584034212700495887549210867389338655563784116666, + 47338363941612566536370230475749447631940587704921700698487840, + 465561421468659188065726146260655753968093427623721221797748452, + 17091651383496650585852969240628032897842844873686222773110439, + 122408111915269473016925146533785289143093425355087005401076911, + -215775133500276662307325706584370558584595441235760736891556836, + -386855872656618031137584156774353593721676287281302250432653928, + -16615774074996077205637191315020426284889926865998382308940264, + -395778972522864221549624726505594248254861311469422448267784632, + 92267690195900948625034094148744929933916348953927616255283315, + -72572069879714270102860293729554177057542481847596978333383169, + 59999193261875593966286524224083730868267365328986427303916786, + -142050361898154488168379297214445921443679450399274484212280135, + 16220874874975531555590116098295954059123711056712677379070244, + -143220573597761242014529351062840657163383753447669611726987695, + -63121202494613709872727810357364914269372080458884086721125736, + 84265885826140063366543234065322420027447263177655544577984106, + 532350889535107841253198031256194629787087388504939751561171, + -19899965324395805330560694375987225657137579271140669956917741, + -477717942300793699249950891554181209836355182584479688500859896], + ![-69872824277985107951431465410649712116843761284189131052064591, + 17012221072656514840047339938990072351143346641713090098931509, + 17091651383496650585852969240628032897842844873686222773110439, + 1882257643813392443482856340310482800063766160948629094057153685, + -3466091658010926230139887281642861102474571830579798808827179075, + 1295133461933070288917501880049016969187296565749008620431542224, + 1295141182067607006439360421807472781668394089939896761657530236, + -3406329382285949084516483699898287003986409859354854685228197515, + 1328882518304255276516718042513732612816591538565991730462107911, + -3406354223306685749914338722613838862361579303633079471324458232, + 3179879953848559286881243398746179593436204786521646859015902522, + 1586598265939618406580748072544489900336818870748657866634831062, + 3179878608000870695355366419949267308091720055282379944820991245, + 1586590664116363799800658472204333488809527630871987587084180554, + 752852482006807852915112838596507528878538830352190705166462038, + 1277312982741799000920356006672331838457044797597535087850904519, + 1518422133677036070901078247040934838032627211876760282057178068, + 658600117216355711989091018009659908908950750028320738854148886, + 658551886143960339336138500160038634281864219661223355199969506, + -1515898609281589393764645902427052036003253451334628195611948485], + ![410962323599546413734329484553566073536430817786057678829516658, + 122487001421670727127112582334105755258973866452213510283075251, + 122408111915269473016925146533785289143093425355087005401076911, + -3466091658010926230139887281642861102474571830579798808827179075, + 9123466573626680215466835832915849970335544478729723464736057599, + -3891115764800163166405815291507304400259259153975380588689606321, + -3890878988381889413751515433580172658394297669824131341671942531, + 5233201074893632722435064026631456234967173415641118973498058767, + -201411820404955133157932899595199071762040622910938075408994388, + 5232588839364297632831785685821177841066393750561398669356648238, + -6629744182182279747849909358063756498649378487977720129746220076, + -3315008444606886612113039788008857654765426496353927180893062265, + -6629800953710600975598751279022518351555150929985491793885651174, + -3314902454413267705859593475209225733307578117685691735027660704, + -1232666953707355297759647510397874431125157205425125004209722684, + -2308037266590620427335263482839807584246341152526239088079585429, + -1393695087135562756583058244723991389013805205544569867970058616, + -1574031103595256449038745674004952450097081296759281344528232939, + -1574100326829769762938022742262640499166067318367198403052029462, + 2255016340350654035295969331328653557773602520113586050114660602], + ![-409326437122276898447376145953204929912518723500032363762287833, + -386956906860533844281530091642223418647639481323855188147126706, + -215775133500276662307325706584370558584595441235760736891556836, + 1295133461933070288917501880049016969187296565749008620431542224, + -3891115764800163166405815291507304400259259153975380588689606321, + 7048942936122661561231755501160677253063320222190078063483249010, + 707478965851200659979337716864781782916238412068585989648083794, + -4100118404600852076734340253191470056622579781392959321025854599, + 2041583614904728725374984281972087499410075705816563851938353314, + 1060952896034808914030862156271466045160127984874657976103392152, + 3165451589058001950668923385919577864985742011200157010007010812, + 1121172792000021235608977245616702201596035091958585600147067894, + 1166330739398397885400131719615403500559481201312976314823352774, + -101754662874809275821969965454245014797361483489695462110503905, + 1419225964513087989971704050522389217989678266490098736795816328, + 495608379982383731941778157650710857897647156072196138025580758, + -24363347204998693560505704529416792090941649204217085992620916, + 150007393932620848835710322228712982256112492551261041047738636, + 1037571075384172362227265257520387331638411642100576030130623320, + -267017126165058898315205578718963755659315933646530444830423035], + ![-409389029557009709079001598361864920658132366490377614630338721, + -215794530916202619543401661115910942555643438239130707343103456, + -386855872656618031137584156774353593721676287281302250432653928, + 1295141182067607006439360421807472781668394089939896761657530236, + -3890878988381889413751515433580172658394297669824131341671942531, + 707478965851200659979337716864781782916238412068585989648083794, + 7049012000455346695785565110192537961845114023076555461870387746, + 1060448243970368976024090018581703626690663865252344129342491051, + 2042098776644140743804639727188871276647633845615495994430888899, + -4099972755932132238661560853940894297292498443384626628917175202, + 1165993783127300552400842429082396118429086585041695189433553934, + -101801009726849989773516424823123496281504564665771529396690650, + 3165636777451085690746926249296925680476786520472230369219163847, + 1120920139998958245565007615909351544199532896559351301969929740, + 1419361707032436348264533700826375748223494402236322757257761803, + 495604453548651428811967896903317672028141771865657375722604096, + -24266287069281456438462284825613469216365378315777330442997052, + 1037268988898231449451592429722398454451668064140941879349463394, + 150328485321991418283621205502855776524345243271041916399886051, + -267021703355887972999440466221318304625825186819127129221639426], + ![155777858835776859041590755977185499014892937119004623996059667, + 92370516525668469388936033889848451295663071899577771134597915, + -16615774074996077205637191315020426284889926865998382308940264, + -3406329382285949084516483699898287003986409859354854685228197515, + 5233201074893632722435064026631456234967173415641118973498058767, + -4100118404600852076734340253191470056622579781392959321025854599, + 1060448243970368976024090018581703626690663865252344129342491051, + 9737561797730128453797157861770108984865028832037183971256853784, + -3288117368598724907587363269287270824425379097869985881835097610, + 4310388629459481818649632060533425969185753460439554735195421398, + -6548704823935236929225073701185382577054365613804149617356570618, + -3435058370674332055755021631655089111229641714046855904328691311, + -5100907254297122702498169163095593215269596398359878423525852345, + -2413444243211719355917382637916717765094155234573921426251549425, + -1469891134267227038423899016121152705787596011145641481779049071, + -2488955192652962307161477875781466698560001659292543987263694414, + -3486385820261023676055455193291724382775911775551918616618314216, + -392562610516868958546650445350740018782347226204028677201379080, + -1652892503351429034018887810393398557890904810850797448980192667, + 2544989425545165177177875481849273748503509905000827257917504245], + ![-229311001638409880253837942709664458205307303106173971618930384, + -395864846435690677369270278812320514630826661880765305855316495, + -395778972522864221549624726505594248254861311469422448267784632, + 1328882518304255276516718042513732612816591538565991730462107911, + -201411820404955133157932899595199071762040622910938075408994388, + 2041583614904728725374984281972087499410075705816563851938353314, + 2042098776644140743804639727188871276647633845615495994430888899, + -3288117368598724907587363269287270824425379097869985881835097610, + 8133153504652711442409674362091164280376716299455891501607532750, + -3288909544427374638663349471737117182441030496077345173357782028, + 1204226211030319072929598621669541532315007765831411400870472858, + -173627824730460073581087235316380656401212776427923595921569547, + 1204326152401545363199267111077577116103832951264516769637666001, + -173742709541478900321110542626160083465078098642757679458849791, + 1899654623844575660156596768010572213466299159377669471268001444, + 1248837713148364795290219516494192724160101640560837981361930883, + 2045713403802640309384876185170883613522080683015129351748165692, + 206616070319079315830640793823113688418784516860251323424720380, + 207100801906114371289947471284725252007247390597003049097894848, + -297126227580509910726266404902979728930398512197342240165123597], + ![155737884906689630285611693949171168938061198534940441752888146, + -16648899779952544274169566698518759373507354703809115122350933, + 92267690195900948625034094148744929933916348953927616255283315, + -3406354223306685749914338722613838862361579303633079471324458232, + 5232588839364297632831785685821177841066393750561398669356648238, + 1060952896034808914030862156271466045160127984874657976103392152, + -4099972755932132238661560853940894297292498443384626628917175202, + 4310388629459481818649632060533425969185753460439554735195421398, + -3288909544427374638663349471737117182441030496077345173357782028, + 9738258973102263202683632613031931550332044031708160875615187475, + -5100886596634362478521904716666663256975689849841413727944818622, + -2413059543640530503784561864300499987508474262859142086983807062, + -6548524749805186271664412580887368708761322580411979680936819399, + -3434836326471943802175886746109495641256547530105923017307611119, + -1469868201911850542739983884554902088492714748686114885688951323, + -2489151761785692607438633854924865840277949197839314191148165673, + -3486612789410957263329476556795659395669414681567067922745794575, + -1652928405510354480624432230453699794702222667772290106753679057, + -392616952308256844345966478139446512005969804166774062884414153, + 2545198801638972942338988589325645918886252200584546635225857722], + ![-278297275319156417410953326973876307151876377178985816912404442, + -141902329624923612752682408058121243738027070526421487932546358, + -72572069879714270102860293729554177057542481847596978333383169, + 3179879953848559286881243398746179593436204786521646859015902522, + -6629744182182279747849909358063756498649378487977720129746220076, + 3165451589058001950668923385919577864985742011200157010007010812, + 1165993783127300552400842429082396118429086585041695189433553934, + -6548704823935236929225073701185382577054365613804149617356570618, + 1204226211030319072929598621669541532315007765831411400870472858, + -5100886596634362478521904716666663256975689849841413727944818622, + 6787147279477353782025929972985722768737373354360204138661915831, + 3248718516818751436530074958892501550293270108093482847337516322, + 5957456558265813153097613205357720977444813267725248517170821356, + 2870234927271150995781002330897279984607001149166655774128554190, + 1289961009059301650045123620020647356038801021292737607767554690, + 2447928046662971600340469417684143129420299702660161076667863804, + 1702228791616466694541860806296556055796888735366910782371472592, + 865645256318499655822747035057643269807475555784106588478090027, + 1177346674843022261012928274699276523200706685661201936784445590, + -2187558245853343027564062508486392483835383525535768672024259323], + ![-64568576138959480783623492593738369200826192146428425053208542, + 16261014998058786870885371522531050141654064505014216987035387, + 59999193261875593966286524224083730868267365328986427303916786, + 1586598265939618406580748072544489900336818870748657866634831062, + -3315008444606886612113039788008857654765426496353927180893062265, + 1121172792000021235608977245616702201596035091958585600147067894, + -101801009726849989773516424823123496281504564665771529396690650, + -3435058370674332055755021631655089111229641714046855904328691311, + -173627824730460073581087235316380656401212776427923595921569547, + -2413059543640530503784561864300499987508474262859142086983807062, + 3248718516818751436530074958892501550293270108093482847337516322, + 1936337606403788923223134810717666089791736867076953707447578708, + 2870040740597536236138551260711205537915169868447339565682349630, + 1636663934380033607901618229022571591687399051838682137138688469, + 312452647575506693598614449391414311290332940805253024602903944, + 1185971547601034802446513456426374110652846015227915658950711706, + 1200158396053947559564770095269568677658520377881610381544713402, + 509277229713854872385396637179673524493541330752656430532712286, + 687707358044630991559735113416869828021436440359839181598189627, + -1263518427943071924758815706594152988314642701516486344965399266], + ![-278434077670705671138108758466184678465695855756371897926325945, + -72558402756513897115605018610711940628888410905592427418018806, + -142050361898154488168379297214445921443679450399274484212280135, + 3179878608000870695355366419949267308091720055282379944820991245, + -6629800953710600975598751279022518351555150929985491793885651174, + 1166330739398397885400131719615403500559481201312976314823352774, + 3165636777451085690746926249296925680476786520472230369219163847, + -5100907254297122702498169163095593215269596398359878423525852345, + 1204326152401545363199267111077577116103832951264516769637666001, + -6548524749805186271664412580887368708761322580411979680936819399, + 5957456558265813153097613205357720977444813267725248517170821356, + 2870040740597536236138551260711205537915169868447339565682349630, + 6787102223655297528068252367521612313736138680909871821899397961, + 3248796819709717024975919813569579220910133571491475230221881631, + 1290088670847831744441387603366121069493030444634697468703175473, + 2447848837458349313371704363704924552703462145025800639994971693, + 1702141862782272107099291086522135217435598513967450388225923863, + 1177735402795905908110377340551677848515159098137753137835720231, + 865395775238027011727880021094711742465772933030368314179735235, + -2187523301447734141716741947066423661057899367869180884930817560], + ![-64568539869149247887327784525697449056620615720376564748875611, + 60066375239376940872820131110635762291770641445893492191531687, + 16220874874975531555590116098295954059123711056712677379070244, + 1586590664116363799800658472204333488809527630871987587084180554, + -3314902454413267705859593475209225733307578117685691735027660704, + -101754662874809275821969965454245014797361483489695462110503905, + 1120920139998958245565007615909351544199532896559351301969929740, + -2413444243211719355917382637916717765094155234573921426251549425, + -173742709541478900321110542626160083465078098642757679458849791, + -3434836326471943802175886746109495641256547530105923017307611119, + 2870234927271150995781002330897279984607001149166655774128554190, + 1636663934380033607901618229022571591687399051838682137138688469, + 3248796819709717024975919813569579220910133571491475230221881631, + 1936291920175485844168114194054901707384252242806720296111714611, + 312420407390370953319370038159812735544608707683566524391095307, + 1186018326472196503352216299269571480924990278025283621474507616, + 1200123262158059310599214829928723085026489422495428664931001144, + 687670520227386170907762200102192511238607777217876556760103695, + 509154005156249092597661564859904854974428322049072926028135880, + -1263526292177569708569808853169621008746789435392756689779857473], + ![-204445181692121002328943172001548422292950447265340630148690016, + -143137073355721990311512422859786455893189018887721295682131252, + -143220573597761242014529351062840657163383753447669611726987695, + 752852482006807852915112838596507528878538830352190705166462038, + -1232666953707355297759647510397874431125157205425125004209722684, + 1419225964513087989971704050522389217989678266490098736795816328, + 1419361707032436348264533700826375748223494402236322757257761803, + -1469891134267227038423899016121152705787596011145641481779049071, + 1899654623844575660156596768010572213466299159377669471268001444, + -1469868201911850542739983884554902088492714748686114885688951323, + 1289961009059301650045123620020647356038801021292737607767554690, + 312452647575506693598614449391414311290332940805253024602903944, + 1290088670847831744441387603366121069493030444634697468703175473, + 312420407390370953319370038159812735544608707683566524391095307, + 1118619299809508011324338422522931318920295071379242414744168271, + 367872587206731329746212454663958881447529580234251663634171493, + 386212750960220986454905853895777592160176077918286146075390145, + 46489679587265799419204241355685912260110342080738195927002651, + 46350545811267389208085786412507378846438751903164772497452506, + -267345319550166320229643009172073395842399354703444401645673733], + ![-51008468134862854400687798387070214291768925174915299179360849, + -63093980654516567974467638111671399665549108844545680588000281, + -63121202494613709872727810357364914269372080458884086721125736, + 1277312982741799000920356006672331838457044797597535087850904519, + -2308037266590620427335263482839807584246341152526239088079585429, + 495608379982383731941778157650710857897647156072196138025580758, + 495604453548651428811967896903317672028141771865657375722604096, + -2488955192652962307161477875781466698560001659292543987263694414, + 1248837713148364795290219516494192724160101640560837981361930883, + -2489151761785692607438633854924865840277949197839314191148165673, + 2447928046662971600340469417684143129420299702660161076667863804, + 1185971547601034802446513456426374110652846015227915658950711706, + 2447848837458349313371704363704924552703462145025800639994971693, + 1186018326472196503352216299269571480924990278025283621474507616, + 367872587206731329746212454663958881447529580234251663634171493, + 1288400132240737438329699987866468954243751630190603351441673648, + 910192722475589763163338817308600405751991090894565396525973286, + 444158363099643479570141637947324324313466766045257973712797342, + 444101449576834975532253055998179170062120618858336310618010948, + -876047116908650988461217293577215650844932577179465816024760703], + ![39747194095059291894091705262098374497041733997405422543936414, + 84265249851692817186440385786329158446045404773817511714908881, + 84265885826140063366543234065322420027447263177655544577984106, + 1518422133677036070901078247040934838032627211876760282057178068, + -1393695087135562756583058244723991389013805205544569867970058616, + -24363347204998693560505704529416792090941649204217085992620916, + -24266287069281456438462284825613469216365378315777330442997052, + -3486385820261023676055455193291724382775911775551918616618314216, + 2045713403802640309384876185170883613522080683015129351748165692, + -3486612789410957263329476556795659395669414681567067922745794575, + 1702228791616466694541860806296556055796888735366910782371472592, + 1200158396053947559564770095269568677658520377881610381544713402, + 1702141862782272107099291086522135217435598513967450388225923863, + 1200123262158059310599214829928723085026489422495428664931001144, + 386212750960220986454905853895777592160176077918286146075390145, + 910192722475589763163338817308600405751991090894565396525973286, + 3248379036365723492141089787349008962092988635695618826260578214, + 510041204115301993356200021988704257231419826235005767159014519, + 510273675229201909909385652289869868083557724354979220764706513, + -1419284087711571730882896785685361576344659464700333484416925908], + ![-39001262361200452657168447957669600955865953560382793115879733, + -19810580078821282833309480043433781042625086018118192742086790, + 532350889535107841253198031256194629787087388504939751561171, + 658600117216355711989091018009659908908950750028320738854148886, + -1574031103595256449038745674004952450097081296759281344528232939, + 150007393932620848835710322228712982256112492551261041047738636, + 1037268988898231449451592429722398454451668064140941879349463394, + -392562610516868958546650445350740018782347226204028677201379080, + 206616070319079315830640793823113688418784516860251323424720380, + -1652928405510354480624432230453699794702222667772290106753679057, + 865645256318499655822747035057643269807475555784106588478090027, + 509277229713854872385396637179673524493541330752656430532712286, + 1177735402795905908110377340551677848515159098137753137835720231, + 687670520227386170907762200102192511238607777217876556760103695, + 46489679587265799419204241355685912260110342080738195927002651, + 444158363099643479570141637947324324313466766045257973712797342, + 510041204115301993356200021988704257231419826235005767159014519, + 787085429019699568414666660490536951050272184706097107641056288, + 156753854738585500590911936541172732869438295843530199560611274, + -524549332618647621844145174215841429692470909889955560865947448], + ![-39108642074791536126767756851172555121250208101621870631189433, + 462972077045445555367317790267242003263539030815850064612343, + -19899965324395805330560694375987225657137579271140669956917741, + 658551886143960339336138500160038634281864219661223355199969506, + -1574100326829769762938022742262640499166067318367198403052029462, + 1037571075384172362227265257520387331638411642100576030130623320, + 150328485321991418283621205502855776524345243271041916399886051, + -1652892503351429034018887810393398557890904810850797448980192667, + 207100801906114371289947471284725252007247390597003049097894848, + -392616952308256844345966478139446512005969804166774062884414153, + 1177346674843022261012928274699276523200706685661201936784445590, + 687707358044630991559735113416869828021436440359839181598189627, + 865395775238027011727880021094711742465772933030368314179735235, + 509154005156249092597661564859904854974428322049072926028135880, + 46350545811267389208085786412507378846438751903164772497452506, + 444101449576834975532253055998179170062120618858336310618010948, + 510273675229201909909385652289869868083557724354979220764706513, + 156753854738585500590911936541172732869438295843530199560611274, + 788221639522062575714643676861616552208572722276310346828480246, + -524738633714529450295135683826815324118285151004061540375269757], + ![-407341188559417239861116012746010958474514579082532952171792890, + -477552867859160503659749799044336199377495475948737003431299083, + -477717942300793699249950891554181209836355182584479688500859896, + -1515898609281589393764645902427052036003253451334628195611948485, + 2255016340350654035295969331328653557773602520113586050114660602, + -267017126165058898315205578718963755659315933646530444830423035, + -267021703355887972999440466221318304625825186819127129221639426, + 2544989425545165177177875481849273748503509905000827257917504245, + -297126227580509910726266404902979728930398512197342240165123597, + 2545198801638972942338988589325645918886252200584546635225857722, + -2187558245853343027564062508486392483835383525535768672024259323, + -1263518427943071924758815706594152988314642701516486344965399266, + -2187523301447734141716741947066423661057899367869180884930817560, + -1263526292177569708569808853169621008746789435392756689779857473, + -267345319550166320229643009172073395842399354703444401645673733, + -876047116908650988461217293577215650844932577179465816024760703, + -1419284087711571730882896785685361576344659464700333484416925908, + -524549332618647621844145174215841429692470909889955560865947448, + -524738633714529450295135683826815324118285151004061540375269757, + 2644304961362160974255254311720915049419351836954162440716771514]] + +/-- Exact integer matrix after 9 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage9 : Fin 19 → Fin 19 → ℤ := + ![![34561535069389069592098393609264156370712154364300862953273139676473, + 3257465134091054406668974264507643815614737146382943295805484940986, + 1751228840207620573716962565179884068539778400325543610014185630611, + 6379186844234075921384502835752577936346552271536724848012039478336, + -26211611752587384009653265281878642564484192274792170873379852591501, + -13383046407088999271304517609808364476444384693220448200982400420289, + 5861223235353341805877433411517565600892130398625961325375903485137, + -28106112592125275903941105942282901397259490344725762156275448608694, + -2309203006636627946906968783955046610136924513300648055629755370928, + -8738475447984264572576930839133734311884722380682615748678191780566, + 1658777525290253107437974667076030898179115231682518591938185562944, + -3540410768669563126491411932935122497425927846684642102444131917013, + 4941865843690642137775479239020307222644647529845296271606822234075, + -9334347010862534299021117992608873307208835754631794843989147896872, + -4381073701787094149767693585030541790831184405538436468370097960667, + 6044550793377237107317904991254362866500406775662961474517340559032, + -1218938363470902153022837410543285471322111147334173532000733744753, + 301239194490927077232278080620431649521682299836645030554710013021, + -33015054513519434386277182798920560110148920014037768254810843073464], + ![3257465134091054406668974264507643815614737146382943295805484940986, + 34602372725186284999566233753373341119561145113757428106103591051868, + 1756746543208681925167132400198115414060133440184673622343918059480, + 6375834991245066669875221772214917363617440614756478432443272957514, + -13384569717825145842539981460765106669965455456527865474522476955514, + -26206163821645814176838517208326949818660521330548154571296372382706, + -2306022119137316590557643431755288527859963735489452487235232799498, + -28101105413683006920812916422035245023478415550363895303765202421584, + 5854759527102143121653846319032441462197237470774970545120078806642, + -3544101504630269195991304985447583410010196115043083647093164394926, + 4936428665767993680862895619745935008093212839667374509562837643864, + -8750372603109549346700465086291998922644351243635506809562097844520, + 1655366564152210708117881577684285466106181185510745636088097402130, + -9341879010868837802528093733561732005326472940829947152446478299622, + -4383431734357354376731570821054283181501482904523866600991512908626, + 6044846121424625327298787617493337814556100571887603756881285090816, + 305464090838188022683872017597037461572065067774576762392343736132, + -1225149386144068126099717182291737964335686807583432891829636900804, + -33029964509206003411036843725068493621002188582937251532923364404068], + ![1751228840207620573716962565179884068539778400325543610014185630611, + 1756746543208681925167132400198115414060133440184673622343918059480, + 140289752551540231167142849100878813826580425542409796326216450852967, + -255185224402461700745498488137888321292965863381509752364044962235156, + 92496278015057151516848324427084641982074097295533123295114467226803, + 92496157741815841118823035366968596907202353496034792881680659999555, + -253555471158944505211008898257029997023287775500890747396064759338639, + 97035636611736839607647592580933770680686562018931216887032134935046, + -253557779252361604918498778473692769689169381713101649566958744132918, + 235215733168936267776137842685155822601167455341515655838278688203010, + 118190138164245151688383525096528579508810784727905685755839341885830, + 235214104835250032376230864135384902793242130774494977245790301090725, + 118189568833939650534905086632479688987482959796826100232121792078189, + 54141444465195295336092304730461188454007943948586668300402920594076, + 95161481265130251926455506551782698461167331334738361158753628959825, + 114245266142853624071195667042832676914058114857763019298428412553406, + 48924758283384522782431866110598996654640155871093819484607269291139, + 48919944552314976778290610962496887382340229322333452978009724311399, + -118160504569123441911399934864576200103213346903205457377023404880100], + ![6379186844234075921384502835752577936346552271536724848012039478336, + 6375834991245066669875221772214917363617440614756478432443272957514, + -255185224402461700745498488137888321292965863381509752364044962235156, + 656789973586610729023486062969580922552999610376343600323588884045850, + -264747424128457880629016195409192586848140483672083130066033379682116, + -264725567911726441069157181929973241317375828893538949820153477534504, + 381983660787216158543240486740508095461362426969010634443815244263348, + -36231841046175032216320214841771269492835122205156294231350714408, + 381940400572504782412317672704518249301747334319678327849336255609600, + -478604701648312683391033215110910864588224667451413108642450734007900, + -244210296191206966118894304909817375619205022236673851014326119647542, + -478599972606309448805926830413371936929763764481815312891611993092742, + -244202354906113311856023094376021478746106138606065872169846368191838, + -78958860307521267321223153300656687071805788437437583904305278002008, + -169631140094073827552903456728379290914801189719970912749446316115996, + -107063754291937461061122091585494341513372555792230297073802940506724, + -115407964069663788724387030452697605042186466223835566736412788768320, + -115406100453731646277931082102275079508993245670318928228149274925414, + 195757520998127183756817944080720073331238986887234783943582275183616], + ![-26211611752587384009653265281878642564484192274792170873379852591501, + -13384569717825145842539981460765106669965455456527865474522476955514, + 92496278015057151516848324427084641982074097295533123295114467226803, + -264747424128457880629016195409192586848140483672083130066033379682116, + 501524692732473318086311057972902758771087068168517029359349419205833, + 26245706782670740332139522452811328514895046178981526889813282476593, + -297103022932692765449510671694432530719689724770185867189345751045469, + 138011877402137323924541588071309979597143281047151595058361258535236, + 89702143000386516125815277993948390863144005316051487215345387354470, + 219038463496191784858509237706773813402365746808376697694293316344458, + 79805362184583978966422308818110315700343183890943439562807426360354, + 69201029369540898537383423226378148754775351439318101646648425786417, + -11849609207242491067036304266893722598047421079600806386904422729739, + 92994377649493639291043294820510268913588573490049288787464315550640, + 33808025896331572013580527807507750449382403468889709338226498836233, + 773872011114030229235489484571640268912164803496505261338416076178, + 8691586845971414623845390019284439042288916914875476217930858916761, + 75204965231765030766925306384213782478300670361757164469146805004613, + -46656087087957290018885630216496258903169670255868810984000531985740], + ![-13383046407088999271304517609808364476444384693220448200982400420289, + -26206163821645814176838517208326949818660521330548154571296372382706, + 92496157741815841118823035366968596907202353496034792881680659999555, + -264725567911726441069157181929973241317375828893538949820153477534504, + 26245706782670740332139522452811328514895046178981526889813282476593, + 501521680028531467548621208807333649278472268089979330268739001119545, + 89668493521380513283239413613308185950037422674659067704387095023039, + 138048193732158507655435323292790967425416920480918053804367835119550, + -297093163934175830278601621611449515038825613598203952352906692897038, + 69181940031691549414133096080143021527623833514749944552692332273966, + -11853730967800953554818999551565502100922090134856852111052509748686, + 219040609770607907127861195689502586705950636834769947113904094672531, + 79785783178383359010999967562931236244902409762440288965714025935007, + 93002506286576231126793888084710988122212206062160413392795825021406, + 33807221428898878825908456878365804317815537080796587294085946127221, + 781543951118271651097354959841244657040490736637897633059218565906, + 75188958236774461140232672996128386496555267184699837848399577777693, + 8708236941240616024450388945508419270936038402366032555730691957739, + -46660504406568306090729207376553358986251900390566428737310552057298], + ![5861223235353341805877433411517565600892130398625961325375903485137, + -2306022119137316590557643431755288527859963735489452487235232799498, + -253555471158944505211008898257029997023287775500890747396064759338639, + 381983660787216158543240486740508095461362426969010634443815244263348, + -297103022932692765449510671694432530719689724770185867189345751045469, + 89668493521380513283239413613308185950037422674659067704387095023039, + 725925111381618063369854608640390923228799192646482014635211524131005, + -240726934731503161462027815846037211467927536193405670552519381419636, + 319174739170979345795946392167736329031840200361675247194305940426858, + -483879385096229202384958091335752264202493427284810504684747294243082, + -255840666162706647037809877734859188931528790287623837794001315136136, + -375367623177784490319245725715397860235275267164413464945861903219665, + -179273561080269576235552237995311924234352018302045880583738725856799, + -105074973820193002106746517269731419118935990668400699172077968755782, + -185270443891784017547127394720260049679600750436482043644006588233083, + -262284236090308752500751448251011190680988365417801456837125010906222, + -28450609258420353499190105088766125466901482082837236286904023817787, + -122906117576443663289273585397786582286454670577733934909191607808773, + 200879703722294376386813093787077814219302992056583639120499188583100], + ![-28106112592125275903941105942282901397259490344725762156275448608694, + -28101105413683006920812916422035245023478415550363895303765202421584, + 97035636611736839607647592580933770680686562018931216887032134935046, + -36231841046175032216320214841771269492835122205156294231350714408, + 138011877402137323924541588071309979597143281047151595058361258535236, + 138048193732158507655435323292790967425416920480918053804367835119550, + -240726934731503161462027815846037211467927536193405670552519381419636, + 601154271095360067572116882069962771061910414152211515439556353764012, + -240787770859063039417935162300327778902143216581011566590962123428312, + 80055636225641541240870928272167691798270345225615067344270771771780, + -15378923226965990170934548661765671278515659664104969886334951700510, + 80058113660097359768931259129241264418939020314658282643692728626538, + -15387532191440029463790248966961539474025628174585566798155811193750, + 134882224942239139003373990020214765985290660225533526722858874702120, + 91727755911465016862267284418657673190516731049817105865923600556606, + 154776935441160609718562051228580261294760578902582564496536389008824, + 14056158301277843814192095884630278398689180887115214254046430855784, + 14088552823037446633885582393216985832565852505874872503913907913488, + -37195102567770121050530178783460110348900706288598693954597731220946], + ![-2309203006636627946906968783955046610136924513300648055629755370928, + 5854759527102143121653846319032441462197237470774970545120078806642, + -253557779252361604918498778473692769689169381713101649566958744132918, + 381940400572504782412317672704518249301747334319678327849336255609600, + 89702143000386516125815277993948390863144005316051487215345387354470, + -297093163934175830278601621611449515038825613598203952352906692897038, + 319174739170979345795946392167736329031840200361675247194305940426858, + -240787770859063039417935162300327778902143216581011566590962123428312, + 725979352593846850173062577643517500003493685948341427151833863413282, + -375371258039135856181007847096556266280448551668181496542476121093680, + -179245140473017594614022856204250918636611057459194797779998317992200, + -483864262201303791709506350412874790891868231856542536548797221590112, + -255824437923434941564659612476585264458708815459021410828426366991844, + -105074561045359919489317264555897639810847436446378580674178387209566, + -185285502023858258621462667426379659347100254103511297614712532987652, + -262300992895476789041443328540998822963169107557411497797812647289562, + -122911730464197163396490337585211981767499265071919170124403955791932, + -28452258845984813389116780225975221701930347702050127123405884248020, + 200892793886023444569307166840358019915790788428415733693066578470336], + ![-8738475447984264572576930839133734311884722380682615748678191780566, + -3544101504630269195991304985447583410010196115043083647093164394926, + 235215733168936267776137842685155822601167455341515655838278688203010, + -478604701648312683391033215110910864588224667451413108642450734007900, + 219038463496191784858509237706773813402365746808376697694293316344458, + 69181940031691549414133096080143021527623833514749944552692332273966, + -483879385096229202384958091335752264202493427284810504684747294243082, + 80055636225641541240870928272167691798270345225615067344270771771780, + -375371258039135856181007847096556266280448551668181496542476121093680, + 496301393021382295254420620258463991847492927211693295677060172783146, + 240610876082063916854973681229181252109133500010076242102744232738544, + 434112322866605887447921595337683070225305128341715742251264143997098, + 212244596987295403127077956410293385246567357867795994435215840063394, + 87587030715119838300521357125082405763634844619966146887962812986164, + 181196916303797922845977672303514049223621540943710406617158842419578, + 129344865924762971206071139498181359579046540145304922116843166739300, + 63143245350078156594930816374612409029983751273158912275856005428328, + 86499614833844148565471690979693845056509842372578692330931028868142, + -182066284144437289419907672891072191310078924405802558112750513485034], + ![1658777525290253107437974667076030898179115231682518591938185562944, + 4936428665767993680862895619745935008093212839667374509562837643864, + 118190138164245151688383525096528579508810784727905685755839341885830, + -244210296191206966118894304909817375619205022236673851014326119647542, + 79805362184583978966422308818110315700343183890943439562807426360354, + -11853730967800953554818999551565502100922090134856852111052509748686, + -255840666162706647037809877734859188931528790287623837794001315136136, + -15378923226965990170934548661765671278515659664104969886334951700510, + -179245140473017594614022856204250918636611057459194797779998317992200, + 240610876082063916854973681229181252109133500010076242102744232738544, + 144456846890955827812958717799981202788498314991896756844283772548252, + 212228630117404924165845114925947188080284080381009004809242310286770, + 121997148255504670846067568776869042253520566133286488077165153491156, + 21308004102360203200593586455023512379486374502446521228258297672976, + 88358932600736644431259976788798720512521668970449895195250632564634, + 90358604067725193245664930241247882010927234925187960000636650769680, + 37766485444154650372059388309030162538074919107030473255469415819930, + 51138213869236656941101276193193531528101281703545591100186618225028, + -98900055211317735486195333888046590873745633445058884765552137829688], + ![-3540410768669563126491411932935122497425927846684642102444131917013, + -8750372603109549346700465086291998922644351243635506809562097844520, + 235214104835250032376230864135384902793242130774494977245790301090725, + -478599972606309448805926830413371936929763764481815312891611993092742, + 69201029369540898537383423226378148754775351439318101646648425786417, + 219040609770607907127861195689502586705950636834769947113904094672531, + -375367623177784490319245725715397860235275267164413464945861903219665, + 80058113660097359768931259129241264418939020314658282643692728626538, + -483864262201303791709506350412874790891868231856542536548797221590112, + 434112322866605887447921595337683070225305128341715742251264143997098, + 212228630117404924165845114925947188080284080381009004809242310286770, + 496285845698350590286761965852301735549706882656397572445873853595583, + 240615334765490054669231136823804169119466900840214650921177209325333, + 87592129300182729661617060841953723160734818148380249366102496602234, + 181189864717779414309140287224512587732392700808723402732458321908639, + 129339219753062610950496021725240297126066115963216009207783842490704, + 86532671610439730606966590038323691479624687559426895237426501629463, + 63118917200784544626914292912007731343128562631122375450583595999075, + -182072569907499282649037607282023442200830783481662357906547387740830], + ![4941865843690642137775479239020307222644647529845296271606822234075, + 1655366564152210708117881577684285466106181185510745636088097402130, + 118189568833939650534905086632479688987482959796826100232121792078189, + -244202354906113311856023094376021478746106138606065872169846368191838, + -11849609207242491067036304266893722598047421079600806386904422729739, + 79785783178383359010999967562931236244902409762440288965714025935007, + -179273561080269576235552237995311924234352018302045880583738725856799, + -15387532191440029463790248966961539474025628174585566798155811193750, + -255824437923434941564659612476585264458708815459021410828426366991844, + 212244596987295403127077956410293385246567357867795994435215840063394, + 121997148255504670846067568776869042253520566133286488077165153491156, + 240615334765490054669231136823804169119466900840214650921177209325333, + 144453423585073889051929743785441828137261270532705617071699916638475, + 21305588976074342967009673200089597199201098909039453519816208227998, + 88362438841219942591203369863460931667854735734854205598553493029751, + 90355970650660292375262640669017895703779073123584436862759104762974, + 51136561136696951193449514249950082389130131221433113688024213062361, + 37756142404519752114838686465417389561974480331503256260536742228191, + -98900642252701470171433110419838133457185858438619884245334568344164], + ![-9334347010862534299021117992608873307208835754631794843989147896872, + -9341879010868837802528093733561732005326472940829947152446478299622, + 54141444465195295336092304730461188454007943948586668300402920594076, + -78958860307521267321223153300656687071805788437437583904305278002008, + 92994377649493639291043294820510268913588573490049288787464315550640, + 93002506286576231126793888084710988122212206062160413392795825021406, + -105074973820193002106746517269731419118935990668400699172077968755782, + 134882224942239139003373990020214765985290660225533526722858874702120, + -105074561045359919489317264555897639810847436446378580674178387209566, + 87587030715119838300521357125082405763634844619966146887962812986164, + 21308004102360203200593586455023512379486374502446521228258297672976, + 87592129300182729661617060841953723160734818148380249366102496602234, + 21305588976074342967009673200089597199201098909039453519816208227998, + 77158185387242329838816755322539681551058124306244122987546190638950, + 25904578899819716850011483625781161414951794269651191494141595085122, + 30244092945754738475020351497906864413284744016914865421076628359162, + 2210106875690584446859806122128920387597609190139637418844151252734, + 2196171115470382068401622146940861807299056913574407165623755840324, + -33344539609850337108493110934557294223492616896127491800561696109794], + ![-4381073701787094149767693585030541790831184405538436468370097960667, + -4383431734357354376731570821054283181501482904523866600991512908626, + 95161481265130251926455506551782698461167331334738361158753628959825, + -169631140094073827552903456728379290914801189719970912749446316115996, + 33808025896331572013580527807507750449382403468889709338226498836233, + 33807221428898878825908456878365804317815537080796587294085946127221, + -185270443891784017547127394720260049679600750436482043644006588233083, + 91727755911465016862267284418657673190516731049817105865923600556606, + -185285502023858258621462667426379659347100254103511297614712532987652, + 181196916303797922845977672303514049223621540943710406617158842419578, + 88358932600736644431259976788798720512521668970449895195250632564634, + 181189864717779414309140287224512587732392700808723402732458321908639, + 88362438841219942591203369863460931667854735734854205598553493029751, + 25904578899819716850011483625781161414951794269651191494141595085122, + 96146195709935403064049704899831893374848516326845741951388824945221, + 68540365232137996923615810302521307128319055452440581456639199675686, + 32970520183773035562979154707599725784395282588699976506988681453285, + 32965379420956453783924909757924538631398370544405218047782906240853, + -68977514577534239954112041192532243462411214372342580936396127536964], + ![6044550793377237107317904991254362866500406775662961474517340559032, + 6044846121424625327298787617493337814556100571887603756881285090816, + 114245266142853624071195667042832676914058114857763019298428412553406, + -107063754291937461061122091585494341513372555792230297073802940506724, + 773872011114030229235489484571640268912164803496505261338416076178, + 781543951118271651097354959841244657040490736637897633059218565906, + -262284236090308752500751448251011190680988365417801456837125010906222, + 154776935441160609718562051228580261294760578902582564496536389008824, + -262300992895476789041443328540998822963169107557411497797812647289562, + 129344865924762971206071139498181359579046540145304922116843166739300, + 90358604067725193245664930241247882010927234925187960000636650769680, + 129339219753062610950496021725240297126066115963216009207783842490704, + 90355970650660292375262640669017895703779073123584436862759104762974, + 30244092945754738475020351497906864413284744016914865421076628359162, + 68540365232137996923615810302521307128319055452440581456639199675686, + 243204419795046200516661861795675579388150781460392123036315263726384, + 38473870438996216436200672064343206073712306258792175284900017506408, + 38491975517375482983946974340490855833272204542775231939258638977140, + -103784124154930704470892512195914184851117285825265659827263997299844], + ![-1218938363470902153022837410543285471322111147334173532000733744753, + 305464090838188022683872017597037461572065067774576762392343736132, + 48924758283384522782431866110598996654640155871093819484607269291139, + -115407964069663788724387030452697605042186466223835566736412788768320, + 8691586845971414623845390019284439042288916914875476217930858916761, + 75188958236774461140232672996128386496555267184699837848399577777693, + -28450609258420353499190105088766125466901482082837236286904023817787, + 14056158301277843814192095884630278398689180887115214254046430855784, + -122911730464197163396490337585211981767499265071919170124403955791932, + 63143245350078156594930816374612409029983751273158912275856005428328, + 37766485444154650372059388309030162538074919107030473255469415819930, + 86532671610439730606966590038323691479624687559426895237426501629463, + 51136561136696951193449514249950082389130131221433113688024213062361, + 2210106875690584446859806122128920387597609190139637418844151252734, + 32970520183773035562979154707599725784395282588699976506988681453285, + 38473870438996216436200672064343206073712306258792175284900017506408, + 58746771952219681429050067353558163429458829440885852792000648845917, + 11504523784531968182680723929474680921818073006576839356212578126725, + -41852170230426840728714103473418107690498153141922561932518013694054], + ![301239194490927077232278080620431649521682299836645030554710013021, + -1225149386144068126099717182291737964335686807583432891829636900804, + 48919944552314976778290610962496887382340229322333452978009724311399, + -115406100453731646277931082102275079508993245670318928228149274925414, + 75204965231765030766925306384213782478300670361757164469146805004613, + 8708236941240616024450388945508419270936038402366032555730691957739, + -122906117576443663289273585397786582286454670577733934909191607808773, + 14088552823037446633885582393216985832565852505874872503913907913488, + -28452258845984813389116780225975221701930347702050127123405884248020, + 86499614833844148565471690979693845056509842372578692330931028868142, + 51138213869236656941101276193193531528101281703545591100186618225028, + 63118917200784544626914292912007731343128562631122375450583595999075, + 37756142404519752114838686465417389561974480331503256260536742228191, + 2196171115470382068401622146940861807299056913574407165623755840324, + 32965379420956453783924909757924538631398370544405218047782906240853, + 38491975517375482983946974340490855833272204542775231939258638977140, + 11504523784531968182680723929474680921818073006576839356212578126725, + 58830587446363099117573228353835001556982327114672558101087038902641, + -41873347382871338318090256797231674089158027445783779199684667155456], + ![-33015054513519434386277182798920560110148920014037768254810843073464, + -33029964509206003411036843725068493621002188582937251532923364404068, + -118160504569123441911399934864576200103213346903205457377023404880100, + 195757520998127183756817944080720073331238986887234783943582275183616, + -46656087087957290018885630216496258903169670255868810984000531985740, + -46660504406568306090729207376553358986251900390566428737310552057298, + 200879703722294376386813093787077814219302992056583639120499188583100, + -37195102567770121050530178783460110348900706288598693954597731220946, + 200892793886023444569307166840358019915790788428415733693066578470336, + -182066284144437289419907672891072191310078924405802558112750513485034, + -98900055211317735486195333888046590873745633445058884765552137829688, + -182072569907499282649037607282023442200830783481662357906547387740830, + -98900642252701470171433110419838133457185858438619884245334568344164, + -33344539609850337108493110934557294223492616896127491800561696109794, + -68977514577534239954112041192532243462411214372342580936396127536964, + -103784124154930704470892512195914184851117285825265659827263997299844, + -41852170230426840728714103473418107690498153141922561932518013694054, + -41873347382871338318090256797231674089158027445783779199684667155456, + 171668540415419667690911020254626240733207479324510729186935845605592]] + +/-- Exact integer matrix after 10 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage10 : Fin 18 → Fin 18 → ℤ := + ![![2527217969538333548343375792657934772317626846256498137010805719338681588, + 117291417315365015954093648352294887774099157408047728284821348790380979, + 425528367594057197508816129044441508720262164620553124260119310863422491, + -804257539255322393625067127937287342096599625446404996367648871213675076, + -1838177233685537682438960842807896645138167740360970365662307408121272844, + -210638578241304199001231839121291025234775640116114841334648511057132326, + -1875558258443339520595923708085038180739729794117315405109354158780950118, + 447474330886728898424223536641287017853589180422721565647330555766748759, + -200472383587246570371728691290470370737979541667154370313237053280947927, + 352243689664035874071236737611351716344415713876275065592024835460101908, + -620223883943200264490501230114903853176606162491721814686046406708298197, + 87660653260643695497922025202405766208512840144827915275615202015627390, + -623570958682168329111059243289208410676162262880653534672156327675963349, + -292586150315504948140212325135387662657960585937527279554092736184492126, + 403462026001598159924639832076214187507411066462519095803860487949308056, + 30975544625629915977548483396045891474663861492864544143966637155831529, + -92373235044817887924291157587414886354244645232579405540488361080737293, + -2204670616462975485233885260764929719467884024274980228604327400061294310], + ![117291417315365015954093648352294887774099157408047728284821348790380979, + 10331386116682599255178476682971162913462144679624026051101243362773054245, + -18828369176210125501531902463085345264925774021943743947808697762980092694, + 6913903305047068477791488879655322123702044781832752136345580666195138255, + 6865994455344676034497571740440837758543543573485653349573235120064786729, + -18706338972023298351933042571024060874930517184474466868667959318436877739, + 7255481558158846321415578322481537622170407677553969221899923666264913972, + -18676001878342052794284400810866983599706667859380933839948878717293883821, + 17365630437221197823888364183632737665235749737023046228568681588175943046, + 8703214972279236654396065758394023938293022712970326871416569765054875421, + 17346101632341678929897182338904855426035404276695698088159813768004251338, + 8690914446817230663982927805152421006939801757002611585156446816162966702, + 4024525741444135307041173585233568189089056955155408714266282336921013590, + 7028789584879041183903624614457906462990619273815815279664897462873210867, + 8396142273946834571703818105612579101561611795294983950576448719833377301, + 3609807388607243080883682547001843868478729340948604477295972429703251905, + 3603776545016648542791092707477558475037839207726950655065821063894478236, + -8583951526000225879588537954210210787111676084077621236893548819384896386], + ![425528367594057197508816129044441508720262164620553124260119310863422491, + -18828369176210125501531902463085345264925774021943743947808697762980092694, + 48311962044457207322643383134893670666213379042920429612100610870558909939, + -19152675464310430815988266323199923387762299510732682510544579625061752062, + -19325549770480049078708023554537089292910341991315064255910898005454759308, + 28068582546709355814660259130100189920914764778261740337501486328384613702, + 379609139982627764915094427934031405034822169684710915846968763012175700, + 28176522950382254691387377788942172952987181371296252401552282571928140928, + -35149434201830667769086115492375732333521709107228204282193998913016313234, + -18018371365952953215577778082117359089933326508845371335241175662847341925, + -35219786043606353051623731664435224385050087477944191578223773143688076893, + -18062440371858278213044626437349106610755072227177590110122771826252871409, + -5691504215930853128871380621325942177754265344944779323254327640671621972, + -12440497965145648439206179251105486563320941044675186112474622542889365586, + -7971721129284925284263385108076020117350614715063742855303426976695409614, + -8487811609896300975350566669815997722289489568277474576599929763044818432, + -8508350638324369751258048233622353814405231471874458410532695958503667373, + 14874381105940720435785294069756140766461584350177619498502351076864913152], + ![-804257539255322393625067127937287342096599625446404996367648871213675076, + 6913903305047068477791488879655322123702044781832752136345580666195138255, + -19152675464310430815988266323199923387762299510732682510544579625061752062, + 35492379039013746999108370332755029213523575579604539505558469999316551828, + 1186107378793545116025212695784443967353811386259358089373370070743584450, + -21565900586664366118364534914412017522298663840612096926425933748264175700, + 8599312104342490150756886758389265935613860653183521589439140901793479669, + 6481080071752715786754528324154730011744420627686099318728509069820396037, + 15652538173246288027901690375925782718381829143205628621754447914206613538, + 5973545357535752023126033321152920511742442684440806165084442501666623951, + 4901548856345011356469401246119247223062495672796674424711573663365147348, + -597011069747490920824104460838126049118524631567546065691154008589004102, + 6331072401058177260624574077106412372471773477403583837885901374192104268, + 2246463380391818082338652317365695023764348910233931718478794388453739847, + 394836214338268992381222356081216087676069348278098305837478378821966891, + 572358977381165034230347898857694340937536794464892835163571833807738950, + 5558674710254743800451954592418979146594777551977476150652293273752967645, + -5283179119193319408627339384770155772413384420854021197741193929622470094], + ![-1838177233685537682438960842807896645138167740360970365662307408121272844, + 6865994455344676034497571740440837758543543573485653349573235120064786729, + -19325549770480049078708023554537089292910341991315064255910898005454759308, + 1186107378793545116025212695784443967353811386259358089373370070743584450, + 36575158614539908075180618858804637031565551882085555763240787491641606824, + 6774900818648597317716991114325014514517123401871765952346886495733285140, + 9370752666740650125189741310902859674920780476626426342342371148504135444, + -21958630068533481630912375756053921004552811977902401918373033389821363681, + 4848656365562349487589380064853306585789453568981700106164636035339754604, + -826166869434197588235383151938722333996992636711665042133731045937817017, + 16040036861953925533764520761643645017294299893003239630369001695873192021, + 6020412439323671688262615511633001579492514722809524179330659437023850551, + 6586986459967335401940218095272827420668765567834375616638904963655505605, + 2366236166758421799336221359641298099643167605070168823047654784907877695, + 230069708564174111300802420517103692259401965448821056320825885771201851, + 5505878180276229296579690902553687802380225829449093654372868222403636302, + 650304001767364349940299807387038675981393002421818181414251938530277256, + -4380469779385583141270114753594554524832885092918031007254371553974243675], + ![-210638578241304199001231839121291025234775640116114841334648511057132326, + -18706338972023298351933042571024060874930517184474466868667959318436877739, + 28068582546709355814660259130100189920914764778261740337501486328384613702, + -21565900586664366118364534914412017522298663840612096926425933748264175700, + 6774900818648597317716991114325014514517123401871765952346886495733285140, + 53420034996165197676272641799950870639793004250694904140349019151825821686, + -17387882055911773386642455812078274722019021250483027644878212838484699625, + 23548783195194907644167692433591181335100590972123011149354760087604233395, + -35547775102101119879708943733919425792679217653985911089401819925738318254, + -18873579197583269731978729711520237054222863096524405463587053804034810396, + -27616523935615191659566673664969350714240543228717132577278141567944652574, + -13272392375853881441764708383787706946015414041238115224730748736418669407, + -7626304160202786729577228848593755302487073574998089387593203763644244177, + -13597793577164849726263692483094467934632402485196860150874653673227882580, + -19403213245921473266941628746736398743054931093760130584056117601289052365, + -2081286973806521546069603097759620732591904452483664058660801428140455815, + -9060692782316813431726652743341543251513603174433680272306313225019532371, + 15215373012159047929424411881823204540924206001889534052093739773455596838], + ![-1875558258443339520595923708085038180739729794117315405109354158780950118, + 7255481558158846321415578322481537622170407677553969221899923666264913972, + 379609139982627764915094427934031405034822169684710915846968763012175700, + 8599312104342490150756886758389265935613860653183521589439140901793479669, + 9370752666740650125189741310902859674920780476626426342342371148504135444, + -17387882055911773386642455812078274722019021250483027644878212838484699625, + 42614656405946126299252633710140421382293047475849395566999918780322428140, + -17881985901792546652498319429586888146070952951223150240420550993263623428, + 5375622722006970037968113673882153146462771257973468237701364212635876576, + -1033866024256189356625215366599770277666485417420083734051014902767991729, + 5687304431518247708945687260557907221506353907891842119931360574177556282, + -837758114712312028974704579778984230867197757474592609470673594499204950, + 9380075334765972878111844747351656225382477505480049237611666136193788772, + 6496860575426359442219720755406038545141739648208183751015742534573305090, + 11767708338941108784436316180477211639777676003345764785049952608284212860, + 962749525841726428434302512075822458018033164381397884658275304851655375, + 1056234810008709170514262671327350093599071034415614198960792247644910193, + -4719359645076549535004500846337468763121908724903323311252185522535816559], + ![447474330886728898424223536641287017853589180422721565647330555766748759, + -18676001878342052794284400810866983599706667859380933839948878717293883821, + 28176522950382254691387377788942172952987181371296252401552282571928140928, + 6481080071752715786754528324154730011744420627686099318728509069820396037, + -21958630068533481630912375756053921004552811977902401918373033389821363681, + 23548783195194907644167692433591181335100590972123011149354760087604233395, + -17881985901792546652498319429586888146070952951223150240420550993263623428, + 53485909775362647755568469834578140149135770863760490522106467246004119407, + -27704060123767089482373073001567458472376881890773478802931102280394856408, + -13200372971316680219256447490761032380588165288158399266771066256718993788, + -35673295961496359988105060484845978297393585651890640704521722761806679640, + -18827322326527012455564738669999226961370383925394411221269613287159160342, + -7788882173375143891679615392848454476223697167531395499142984360039777169, + -13675223438848366624442936013920384888089069044693616135315782736948976502, + -19299149318273818142425850964778007548955114904400932036466928645953343955, + -9063343314245157197225616675308943669262989244352352268883090472809140170, + -2095158335447739262919995799817423864453198831294905382943438404280065102, + 14641200853120821769465849536280468473295003162022162896177305181274503776], + ![-200472383587246570371728691290470370737979541667154370313237053280947927, + 17365630437221197823888364183632737665235749737023046228568681588175943046, + -35149434201830667769086115492375732333521709107228204282193998913016313234, + 15652538173246288027901690375925782718381829143205628621754447914206613538, + 4848656365562349487589380064853306585789453568981700106164636035339754604, + -35547775102101119879708943733919425792679217653985911089401819925738318254, + 5375622722006970037968113673882153146462771257973468237701364212635876576, + -27704060123767089482373073001567458472376881890773478802931102280394856408, + 36409542680244561117697108868160865671208684689531223531694099796507506157, + 17761474967754612146142903286060972042630652452615597407290723481534701256, + 31923690276534621786301076006654632924592164177287580714007143980392804586, + 15732338480851699352295865093893142133503158311828131474428273089370184542, + 6280357700651334429706583210214651405366767812943339953390267581476687070, + 13270739599494423249169088204951708884031778802208435671065309256783743252, + 9644017985435739352334673529647794698529872899408149280981515081843912742, + 4630302867103660573106039012153852850975181635740841154551400543137202911, + 6379752588144264723142257487084372680542648531336727688270878330508068882, + -14031552724049256104636241378395820927135281289616160006623828729611689571], + ![352243689664035874071236737611351716344415713876275065592024835460101908, + 8703214972279236654396065758394023938293022712970326871416569765054875421, + -18018371365952953215577778082117359089933326508845371335241175662847341925, + 5973545357535752023126033321152920511742442684440806165084442501666623951, + -826166869434197588235383151938722333996992636711665042133731045937817017, + -18873579197583269731978729711520237054222863096524405463587053804034810396, + -1033866024256189356625215366599770277666485417420083734051014902767991729, + -13200372971316680219256447490761032380588165288158399266771066256718993788, + 17761474967754612146142903286060972042630652452615597407290723481534701256, + 10639130674549378207186908952663311940045998633426695347757628195968844210, + 15651608529820584988398559878427897709811177522854975383497578354025850887, + 8972468377283604917792726902297415201524626969052924524336570768130096758, + 1603195847700733993570769589088078580282912719259342505260410260946062456, + 6526647488067222444519136870351680581497057454581534906145137097461526355, + 6637130221691681144309660238209701163012259333739766942957139595570670712, + 2787316128586830789837446014005410457046164582334281414566051013204574227, + 3767299765208897791320858760665547549844621173080195521461516339565125470, + -7171160587853710215234544978064354632520871317202585046442717921760816228], + ![-620223883943200264490501230114903853176606162491721814686046406708298197, + 17346101632341678929897182338904855426035404276695698088159813768004251338, + -35219786043606353051623731664435224385050087477944191578223773143688076893, + 4901548856345011356469401246119247223062495672796674424711573663365147348, + 16040036861953925533764520761643645017294299893003239630369001695873192021, + -27616523935615191659566673664969350714240543228717132577278141567944652574, + 5687304431518247708945687260557907221506353907891842119931360574177556282, + -35673295961496359988105060484845978297393585651890640704521722761806679640, + 31923690276534621786301076006654632924592164177287580714007143980392804586, + 15651608529820584988398559878427897709811177522854975383497578354025850887, + 36544483504610425874095080011823992193020481413453412217458221450528812065, + 17768202163171572971968496501825017840898278939686189328830805034869364094, + 6384185684086532081945299363830770583248906112769410670936201609965394311, + 13318775269331105242218795304931121763422422018160904909712095653443240616, + 9576610356812567206991057217131573604920865863252062956379244411633637228, + 6367374655590343328481999816027540949624608499180437902495620528482980235, + 4653494841097205615475220719568193334818513897529194081400746413778027418, + -13666111126412269859400948429576101766400121719124109956127308282638199877], + ![87660653260643695497922025202405766208512840144827915275615202015627390, + 8690914446817230663982927805152421006939801757002611585156446816162966702, + -18062440371858278213044626437349106610755072227177590110122771826252871409, + -597011069747490920824104460838126049118524631567546065691154008589004102, + 6020412439323671688262615511633001579492514722809524179330659437023850551, + -13272392375853881441764708383787706946015414041238115224730748736418669407, + -837758114712312028974704579778984230867197757474592609470673594499204950, + -18827322326527012455564738669999226961370383925394411221269613287159160342, + 15732338480851699352295865093893142133503158311828131474428273089370184542, + 8972468377283604917792726902297415201524626969052924524336570768130096758, + 17768202163171572971968496501825017840898278939686189328830805034869364094, + 10592674022268949926079996883803065420135747775407127040302863619245105675, + 1668358145290933065840195999075331859488124855082457557300311977696951989, + 6557573302465295570716383402274525752846613405062117584470403530063183668, + 6594624414586832178049942258981835096324443001482838674687727190557246757, + 3781086988623338512300728289507136077088995388538979153617827978141854098, + 2779068817347835210068229518777302965803142105561000321846875168723107988, + -6940099035710913539630234001278552228113587005516919455020748607706602402], + ![-623570958682168329111059243289208410676162262880653534672156327675963349, + 4024525741444135307041173585233568189089056955155408714266282336921013590, + -5691504215930853128871380621325942177754265344944779323254327640671621972, + 6331072401058177260624574077106412372471773477403583837885901374192104268, + 6586986459967335401940218095272827420668765567834375616638904963655505605, + -7626304160202786729577228848593755302487073574998089387593203763644244177, + 9380075334765972878111844747351656225382477505480049237611666136193788772, + -7788882173375143891679615392848454476223697167531395499142984360039777169, + 6280357700651334429706583210214651405366767812943339953390267581476687070, + 1603195847700733993570769589088078580282912719259342505260410260946062456, + 6384185684086532081945299363830770583248906112769410670936201609965394311, + 1668358145290933065840195999075331859488124855082457557300311977696951989, + 5499999009211596322238627672158057193277153268592992557250284551744271981, + 1821710994477460791418474204996578251614206896934926073901417461028464987, + 2348980505688701249657740995879301910793595382461831832158019388245000355, + 138602949703339315675474638548195738116862844264022447756776130267246581, + 167830712977457392167642816379027322960204334008198927468374664235098874, + -3114220795572144019193258176186211975711348359840287358563534170823106095], + ![-292586150315504948140212325135387662657960585937527279554092736184492126, + 7028789584879041183903624614457906462990619273815815279664897462873210867, + -12440497965145648439206179251105486563320941044675186112474622542889365586, + 2246463380391818082338652317365695023764348910233931718478794388453739847, + 2366236166758421799336221359641298099643167605070168823047654784907877695, + -13597793577164849726263692483094467934632402485196860150874653673227882580, + 6496860575426359442219720755406038545141739648208183751015742534573305090, + -13675223438848366624442936013920384888089069044693616135315782736948976502, + 13270739599494423249169088204951708884031778802208435671065309256783743252, + 6526647488067222444519136870351680581497057454581534906145137097461526355, + 13318775269331105242218795304931121763422422018160904909712095653443240616, + 6557573302465295570716383402274525752846613405062117584470403530063183668, + 1821710994477460791418474204996578251614206896934926073901417461028464987, + 7044070955717800645201180391736261558315702440719353523956057671933292654, + 5107188719151652024250977378488821827129433880876794907723475035533399577, + 2418205161584507519863349440574997264078788730577831636558050134503213839, + 2432026370292766119605127022252082058206298382946837873494391432794189266, + -5391334567736586392376416097397489462773174825018356673900484747708745610], + ![403462026001598159924639832076214187507411066462519095803860487949308056, + 8396142273946834571703818105612579101561611795294983950576448719833377301, + -7971721129284925284263385108076020117350614715063742855303426976695409614, + 394836214338268992381222356081216087676069348278098305837478378821966891, + 230069708564174111300802420517103692259401965448821056320825885771201851, + -19403213245921473266941628746736398743054931093760130584056117601289052365, + 11767708338941108784436316180477211639777676003345764785049952608284212860, + -19299149318273818142425850964778007548955114904400932036466928645953343955, + 9644017985435739352334673529647794698529872899408149280981515081843912742, + 6637130221691681144309660238209701163012259333739766942957139595570670712, + 9576610356812567206991057217131573604920865863252062956379244411633637228, + 6594624414586832178049942258981835096324443001482838674687727190557246757, + 2348980505688701249657740995879301910793595382461831832158019388245000355, + 5107188719151652024250977378488821827129433880876794907723475035533399577, + 17843786134510105232451270869856386241846125097059916538700928195290945928, + 2850841551944012150397792983095653565807893621331916416806613516845971280, + 2832583983349991827231667532807796676091720016939528344285808698494947218, + -7222341124209333057061796246516873577698435028986102939865965276199294174], + ![30975544625629915977548483396045891474663861492864544143966637155831529, + 3609807388607243080883682547001843868478729340948604477295972429703251905, + -8487811609896300975350566669815997722289489568277474576599929763044818432, + 572358977381165034230347898857694340937536794464892835163571833807738950, + 5505878180276229296579690902553687802380225829449093654372868222403636302, + -2081286973806521546069603097759620732591904452483664058660801428140455815, + 962749525841726428434302512075822458018033164381397884658275304851655375, + -9063343314245157197225616675308943669262989244352352268883090472809140170, + 4630302867103660573106039012153852850975181635740841154551400543137202911, + 2787316128586830789837446014005410457046164582334281414566051013204574227, + 6367374655590343328481999816027540949624608499180437902495620528482980235, + 3781086988623338512300728289507136077088995388538979153617827978141854098, + 138602949703339315675474638548195738116862844264022447756776130267246581, + 2418205161584507519863349440574997264078788730577831636558050134503213839, + 2850841551944012150397792983095653565807893621331916416806613516845971280, + 4325870406901249312815268912195834737604434222118129334290257799545080262, + 848549052786761590173490779745374990745806788919246124051847101443194883, + -3169882519314259548865510729279780468683797548882571497248633022586345169], + ![-92373235044817887924291157587414886354244645232579405540488361080737293, + 3603776545016648542791092707477558475037839207726950655065821063894478236, + -8508350638324369751258048233622353814405231471874458410532695958503667373, + 5558674710254743800451954592418979146594777551977476150652293273752967645, + 650304001767364349940299807387038675981393002421818181414251938530277256, + -9060692782316813431726652743341543251513603174433680272306313225019532371, + 1056234810008709170514262671327350093599071034415614198960792247644910193, + -2095158335447739262919995799817423864453198831294905382943438404280065102, + 6379752588144264723142257487084372680542648531336727688270878330508068882, + 3767299765208897791320858760665547549844621173080195521461516339565125470, + 4653494841097205615475220719568193334818513897529194081400746413778027418, + 2779068817347835210068229518777302965803142105561000321846875168723107988, + 167830712977457392167642816379027322960204334008198927468374664235098874, + 2432026370292766119605127022252082058206298382946837873494391432794189266, + 2832583983349991827231667532807796676091720016939528344285808698494947218, + 848549052786761590173490779745374990745806788919246124051847101443194883, + 4335021220914742526490060737014925039373031844584798311341222119771898832, + -3064433953153331883642444845708512702843486498209020660561762443241712204], + ![-2204670616462975485233885260764929719467884024274980228604327400061294310, + -8583951526000225879588537954210210787111676084077621236893548819384896386, + 14874381105940720435785294069756140766461584350177619498502351076864913152, + -5283179119193319408627339384770155772413384420854021197741193929622470094, + -4380469779385583141270114753594554524832885092918031007254371553974243675, + 15215373012159047929424411881823204540924206001889534052093739773455596838, + -4719359645076549535004500846337468763121908724903323311252185522535816559, + 14641200853120821769465849536280468473295003162022162896177305181274503776, + -14031552724049256104636241378395820927135281289616160006623828729611689571, + -7171160587853710215234544978064354632520871317202585046442717921760816228, + -13666111126412269859400948429576101766400121719124109956127308282638199877, + -6940099035710913539630234001278552228113587005516919455020748607706602402, + -3114220795572144019193258176186211975711348359840287358563534170823106095, + -5391334567736586392376416097397489462773174825018356673900484747708745610, + -7222341124209333057061796246516873577698435028986102939865965276199294174, + -3169882519314259548865510729279780468683797548882571497248633022586345169, + -3064433953153331883642444845708512702843486498209020660561762443241712204, + 10326209413953205702947067532778628144371237038921537437715512112951524020]] + +/-- Exact integer matrix after 11 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage11 : Fin 17 → Fin 17 → ℤ := + ![![755056374531704706639560641699264475888561252757247054018662644650894582588403, + -1378217247843004871214958875424899949539191022741200215185654002853636711338657, + 508289725660665806081215441383557639259996480249086385197742421904423820472728, + 508295333064440046467211642252375238809690651146085181323674145674342022145336, + -1367135163473643885923543025293505459958098066157321706542446076667909360780986, + 536902374867557960743534956726761887611458878280706772309214123030060473756146, + -1367150282812796626123048303516917836542063961130686839497820019413598910210433, + 1270494695769511736946767503884298358850453938139204512193408029586537666938997, + 635203444089560605775324457278858189802203049835811143196674319129890890338792, + 1270491215072896677293905416372070464479700623560105098169725928016002475814959, + 635201916679250772026106735402068765632816891695111864209711515689484466125742, + 296398677709798130988360539422028654137392571081370860493390865836600508398367, + 514954013226998423452566388408707928081930929349159838767678965465487645036550, + 612575771132565929978224445363542236925771069449178211954905968974423526279068, + 263852196241305750465123216240659349417308114975812310366386710173247730981713, + 263829815779893804025730804633170072290187637894949179740737922760215754016255, + -620196052108231353076122363379710365950022157828658465711297971062777262687686], + ![-1378217247843004871214958875424899949539191022741200215185654002853636711338657, + 3527441243162754553020676927956146518620355642466304491061111543580241777831387, + -1390584969789256719609597478008779505549072703777315469339095033264305480495180, + -1390496110693017527127453977744269846677042358147389650935914983545298403157900, + 2055031952118692807082838026811160159603492745314577092287542956700806838582154, + 50850122266837801298552039687954088211633660231086342255919901792190807447906, + 2054821985052765699711675938821824963522830262835094689515988077930053209822315, + -2567738234706971729050077366115579284168086556425941107173317480466806112096595, + -1321881145857243146425659196121230814985309303809813348947001947496114983907936, + -2567714458794983270325877969451867645246770793927436950829031997552021103586709, + -1321845973694092821946655954577229700906087627768080425773769381520180489348334, + -408498192216614276059311839281565844103249104128154385283394078806462545214049, + -906075098739829162810036874958446137494735508946665256281714827831009923580974, + -587877864296120913284020577552980658559925138724322020001481631962890870045536, + -621029446534514438625537559927426653090758039809550992834174601387211339771435, + -621012612700703454363409067142566257097387699338249697710573393733162796112557, + 1114792876758699893108002361307754650058689704478879096152984608551089651929682], + ![508289725660665806081215441383557639259996480249086385197742421904423820472728, + -1390584969789256719609597478008779505549072703777315469339095033264305480495180, + 2576568075486998591401634552710547150014645848557896772745699410547553190720256, + 43955917460260711486249544183618104567201578884583571741898929091415207082872, + -1581849273961385605890296712641568873390549953383054646581504223875204917975912, + 585156422175512294211940942515334224319047315885807327006567805605078620223948, + 484324165289022457232870984908132316924762994876531838295546615253375459245280, + 1139884100497987586441361063602290472987627599537106349707208382964965670105004, + 444996027566663186317581162489748592826494699737435371214665015211363581456252, + 343979588573517352017753217530632664752256516570906554005787226377935481996124, + -41614915521275973832154491822460710392234044430019126703425557871185556122432, + 448431710643215547789525526976406692081485635187303595372822579721879717548220, + 157457936825931947335054804101726956433999894561654409454628240558562741672020, + 38260006375884300669910570644326095502489771653385195739267270117070000555068, + 42572999289755695404343187831944443236347377142577399198076555470912126714748, + 404313370798170590883700879721835175075975228571520776826579888971715412438704, + -437621423377577011020786681948777120881318946628047978422431683642767290604784], + ![508295333064440046467211642252375238809690651146085181323674145674342022145336, + -1390496110693017527127453977744269846677042358147389650935914983545298403157900, + 43955917460260711486249544183618104567201578884583571741898929091415207082872, + 2576694072417380048512283745958879007665907425836518774372783332572121265898512, + 484193193909701388134100932929668187645578060447416153797694201590779414341512, + 585457966370428976378193268114355900959417058500823030508051933706443995930760, + -1581865714534488675559829157196268753595260139462214955219357325882366250450784, + 343882518522720646045770606980442108399475329923171241526478537897462399054268, + -41676893816480922497737710703843818524506965846497397485975939417703721949828, + 1139896937078703920076469291697121724121983536880775329351160428770137057221960, + 444888523815108665917752560422207663590979924905990901627292109546306878687476, + 448490397656752996208878253708652475492464253844327912030968882067441156492808, + 157463184128699976131335642270181999317958070429408471668497135015946772458692, + 38281604388412827055926318708343989026155595794705696467887450932012085016124, + 404249776179340254141635423664268645266850489416946192679114688022641145965924, + 42638776845682318223419660872637773116047610323165749612659624793003888381732, + -437566712418248193666128995872971541605943030166988850634365650320154515010980], + ![-1367135163473643885923543025293505459958098066157321706542446076667909360780986, + 2055031952118692807082838026811160159603492745314577092287542956700806838582154, + -1581849273961385605890296712641568873390549953383054646581504223875204917975912, + 484193193909701388134100932929668187645578060447416153797694201590779414341512, + 3904910574546926258139989339957261100344315525821681699146566577859286428524404, + -1282872210966998691336453496501079634653837603528525964810484413707272517229816, + 1724667706131781388687600902081902162930742804394480800107081076957823456042678, + -2600555879608432605716778751077636059701231766900737628501400090363891757644498, + -1377932209667151178741752802020278190542041734111383420761872455538746767241080, + -2023162989809101668157434707712451887908376277401060028383686487145083672317158, + -969973229729103151971516113014161054593229203914044110574705289708310627855512, + -561453100275786460871602120640004155147752138920445625734401986380111130340450, + -996084755375654028078140815595998380008180605107395846918832267556979530464292, + -1416348099587201617262364162119637503965858901047560964750009631312820171076468, + -151999648879674852734877366738923354824393371328342827129002592107882041638342, + -663101420027285562583211911355925188792532555347425597332704920696965224151642, + 1099146068863726199339383776087760187419692001572154786832461173156746634800308], + ![536902374867557960743534956726761887611458878280706772309214123030060473756146, + 50850122266837801298552039687954088211633660231086342255919901792190807447906, + 585156422175512294211940942515334224319047315885807327006567805605078620223948, + 585457966370428976378193268114355900959417058500823030508051933706443995930760, + -1282872210966998691336453496501079634653837603528525964810484413707272517229816, + 3014299175219922379634528671190839617044473550716836621646239413323203321044652, + -1283288251990517099571224576984312432439227815241423827039887281103193100850774, + 382198669109091744041391628899464230609818419529212197754979597465587115927174, + -56483348599595882601164136360561759154124780564947914917576840883336243056796, + 382210798896321821201459488270110141434973742723524295196760964041372332892090, + -56501677241574321512106187049193999316925067885054030058631867108356380287460, + 652052961048076908541093786501230314873778850635095005335499760848449256784898, + 459187370856348810276799127761690846834044121321859762027405081922424260987924, + 882376331030041660758116418062488734953384998305139526338735667243741759422656, + 72079389280672281478504432690799034159189284663320373649010329113331385656114, + 72221450900462098030566083423104159205698191767674670970538725920649730943670, + -464731634441546485185540760776520523966870607365809391960287374644917244750064], + ![-1367150282812796626123048303516917836542063961130686839497820019413598910210433, + 2054821985052765699711675938821824963522830262835094689515988077930053209822315, + 484324165289022457232870984908132316924762994876531838295546615253375459245280, + -1581865714534488675559829157196268753595260139462214955219357325882366250450784, + 1724667706131781388687600902081902162930742804394480800107081076957823456042678, + -1283288251990517099571224576984312432439227815241423827039887281103193100850774, + 3905217715405885384668996256669261902662526346826462980279475128524286679762195, + -2023188269498459922541040462349537360269041766502163017547217477904299025896007, + -969801825056887090459927453442045942429970690154378592190722169519718270064092, + -2600482303191694635064808822975082182700109660570247572207052706858402974213989, + -1377831543027408410466411002065347328892651458129845226058436248452765712208922, + -561467277269775844087323438906362446785818801781719591831844843149300247966297, + -996175243696397413685379728019940961755680477714005994866965688368707952528054, + -1416421341117637944818151007155190241838998373083447686312862709846657883686628, + -663133301311602035927088912231624189829682729443550530231892301838704942114927, + -152006765101157107846655439384339889307385906181418604651343246896611389342293, + 1099142133712691643339843288946065118157001784637195372377489022495412027803386], + ![1270494695769511736946767503884298358850453938139204512193408029586537666938997, + -2567738234706971729050077366115579284168086556425941107173317480466806112096595, + 1139884100497987586441361063602290472987627599537106349707208382964965670105004, + 343882518522720646045770606980442108399475329923171241526478537897462399054268, + -2600555879608432605716778751077636059701231766900737628501400090363891757644498, + 382198669109091744041391628899464230609818419529212197754979597465587115927174, + -2023188269498459922541040462349537360269041766502163017547217477904299025896007, + 2661185655178469524661415142221680825069574858185280015698191318184968113719019, + 1300802575632817941539858829273054218218428588037484401091406008019932371886028, + 2330735188663787338797878241736060768231369193919416170827018582296814433889613, + 1150892805308399006137548815181916040987399223501682599509686912904500112050362, + 455617033449957064916882106864845403880214445729172742358948535662736325631069, + 968689500473038169015253060953080396290972803048686597986519661862573748269838, + 707532767172769346741673905945363269941602463567930520608481005855775366953696, + 338757937918762936418794992677863810161532658328179327381275756382749556826387, + 465966198174497065856112924896368669111786395626158572235887214388991471803685, + -1038807092513890757031628238683728401108173863666500108081275393623576040125366], + ![635203444089560605775324457278858189802203049835811143196674319129890890338792, + -1321881145857243146425659196121230814985309303809813348947001947496114983907936, + 444996027566663186317581162489748592826494699737435371214665015211363581456252, + -41676893816480922497737710703843818524506965846497397485975939417703721949828, + -1377932209667151178741752802020278190542041734111383420761872455538746767241080, + -56483348599595882601164136360561759154124780564947914917576840883336243056796, + -969801825056887090459927453442045942429970690154378592190722169519718270064092, + 1300802575632817941539858829273054218218428588037484401091406008019932371886028, + 774367415982736658529661196354308153110686432462847237162479483352623287141592, + 1150802364483720036350353641737761984910790747446243398131278341843282552523984, + 655193855156589475906731901330088657267366137138995955391701942724900564232608, + 123584623243055072844903184223652667386492230619708572235336617185094252680740, + 480225267902454450743450091456920435757783605940925029644538014110905054099476, + 481210043950776858893073531773164932731693667255115282932304517871143841120896, + 203499192171289690830690721481557617280579718574484564957976744190708325004328, + 276414966326920489135732928533346216714796297586149642567845988361260831885948, + -501902029316859279742597842717840879087662571279421643213225964046733044227608], + ![1270491215072896677293905416372070464479700623560105098169725928016002475814959, + -2567714458794983270325877969451867645246770793927436950829031997552021103586709, + 343979588573517352017753217530632664752256516570906554005787226377935481996124, + 1139896937078703920076469291697121724121983536880775329351160428770137057221960, + -2023162989809101668157434707712451887908376277401060028383686487145083672317158, + 382210798896321821201459488270110141434973742723524295196760964041372332892090, + -2600482303191694635064808822975082182700109660570247572207052706858402974213989, + 2330735188663787338797878241736060768231369193919416170827018582296814433889613, + 1150802364483720036350353641737761984910790747446243398131278341843282552523984, + 2661085439332623768010589724565469055913287162152782199522234253566932369554707, + 1300824426164185315379367344834718752028119177444528962399206031561065750599774, + 455635872312056568418277003398967913544001278934917183572828195721058319199755, + 968648504967908321178070257299704049058389306147187227708799274585633601492282, + 707503833863307950442188814756716620990720239623685424368170984947064689040552, + 466152773267736234500643167328898406029703677920971830760015106024863462347041, + 338616432211897296463838971265579814671974495154189086114286771623497271590831, + -1038861002928526260379199839284361328005499939367322441914508630640725271319602], + ![635201916679250772026106735402068765632816891695111864209711515689484466125742, + -1321845973694092821946655954577229700906087627768080425773769381520180489348334, + -41614915521275973832154491822460710392234044430019126703425557871185556122432, + 444888523815108665917752560422207663590979924905990901627292109546306878687476, + -969973229729103151971516113014161054593229203914044110574705289708310627855512, + -56501677241574321512106187049193999316925067885054030058631867108356380287460, + -1377831543027408410466411002065347328892651458129845226058436248452765712208922, + 1150892805308399006137548815181916040987399223501682599509686912904500112050362, + 655193855156589475906731901330088657267366137138995955391701942724900564232608, + 1300824426164185315379367344834718752028119177444528962399206031561065750599774, + 774338052134527832958442659164702133211181094062962237141602746575410656492600, + 123575741454265007258109008344906941790211369580108155588923854882277873139754, + 480246764106482151007823609510985170128536717885183852133764327351737858883188, + 481190593668525574860330097645108935593597809735288118791297343056650353928212, + 276403106123039509981276615161917041246508901539416387440722262324340663596618, + 203446118287164760050933932472472163071606453648877693324436623078288815386918, + -501883961234225561309089479386370555958291537333044018857073623815351205414612], + ![296398677709798130988360539422028654137392571081370860493390865836600508398367, + -408498192216614276059311839281565844103249104128154385283394078806462545214049, + 448431710643215547789525526976406692081485635187303595372822579721879717548220, + 448490397656752996208878253708652475492464253844327912030968882067441156492808, + -561453100275786460871602120640004155147752138920445625734401986380111130340450, + 652052961048076908541093786501230314873778850635095005335499760848449256784898, + -561467277269775844087323438906362446785818801781719591831844843149300247966297, + 455617033449957064916882106864845403880214445729172742358948535662736325631069, + 123584623243055072844903184223652667386492230619708572235336617185094252680740, + 455635872312056568418277003398967913544001278934917183572828195721058319199755, + 123575741454265007258109008344906941790211369580108155588923854882277873139754, + 390921744676128595080798887895754239869696307471947427330494795264269052810499, + 127928708184482210011544313066565658254414901989050184857802928009633116414134, + 179042190515954311683316120401291749491608171443473541614657305966502469435508, + 10693833894737838028771753129994034295621284121734910244115554792641762372713, + 10605533759067189517862691916378021503496245697717757298326791995526684050735, + -267496316555523117616031704201327570685210259650014820063121136903461198377850], + ![514954013226998423452566388408707928081930929349159838767678965465487645036550, + -906075098739829162810036874958446137494735508946665256281714827831009923580974, + 157457936825931947335054804101726956433999894561654409454628240558562741672020, + 157463184128699976131335642270181999317958070429408471668497135015946772458692, + -996084755375654028078140815595998380008180605107395846918832267556979530464292, + 459187370856348810276799127761690846834044121321859762027405081922424260987924, + -996175243696397413685379728019940961755680477714005994866965688368707952528054, + 968689500473038169015253060953080396290972803048686597986519661862573748269838, + 480225267902454450743450091456920435757783605940925029644538014110905054099476, + 968648504967908321178070257299704049058389306147187227708799274585633601492282, + 480246764106482151007823609510985170128536717885183852133764327351737858883188, + 127928708184482210011544313066565658254414901989050184857802928009633116414134, + 512601538301689948828647467626016472322889548486072189290494451768214967969012, + 376864814589384510139842378834824055108604192731461867977764238373821012569284, + 177086884059251475540032980913660048559887145802798252444403502404469342349482, + 177053293607342724972240180625719333949631613631722769761884945926197669206130, + -412890621296525229735992141527875990045234300931999641437340732871118728764380], + ![612575771132565929978224445363542236925771069449178211954905968974423526279068, + -587877864296120913284020577552980658559925138724322020001481631962890870045536, + 38260006375884300669910570644326095502489771653385195739267270117070000555068, + 38281604388412827055926318708343989026155595794705696467887450932012085016124, + -1416348099587201617262364162119637503965858901047560964750009631312820171076468, + 882376331030041660758116418062488734953384998305139526338735667243741759422656, + -1416421341117637944818151007155190241838998373083447686312862709846657883686628, + 707532767172769346741673905945363269941602463567930520608481005855775366953696, + 481210043950776858893073531773164932731693667255115282932304517871143841120896, + 707503833863307950442188814756716620990720239623685424368170984947064689040552, + 481190593668525574860330097645108935593597809735288118791297343056650353928212, + 179042190515954311683316120401291749491608171443473541614657305966502469435508, + 376864814589384510139842378834824055108604192731461867977764238373821012569284, + 1300068277265377687243174497728672845383701412289442220678935824540540443645536, + 208098411368260794178396459058556205103434323325306645433987632038327680951592, + 208203316810466918269647559881252030568669648755178854398424871906885666151904, + -502377263127742463172086056307586554040724915598864747993209621107150917649224], + ![263852196241305750465123216240659349417308114975812310366386710173247730981713, + -621029446534514438625537559927426653090758039809550992834174601387211339771435, + 42572999289755695404343187831944443236347377142577399198076555470912126714748, + 404249776179340254141635423664268645266850489416946192679114688022641145965924, + -151999648879674852734877366738923354824393371328342827129002592107882041638342, + 72079389280672281478504432690799034159189284663320373649010329113331385656114, + -663133301311602035927088912231624189829682729443550530231892301838704942114927, + 338757937918762936418794992677863810161532658328179327381275756382749556826387, + 203499192171289690830690721481557617280579718574484564957976744190708325004328, + 466152773267736234500643167328898406029703677920971830760015106024863462347041, + 276403106123039509981276615161917041246508901539416387440722262324340663596618, + 10693833894737838028771753129994034295621284121734910244115554792641762372713, + 177086884059251475540032980913660048559887145802798252444403502404469342349482, + 208098411368260794178396459058556205103434323325306645433987632038327680951592, + 316289711087862181856346010879054047243004850527521845892598143711731684191455, + 62130623573015325660917198952445181883230648306895297322730055915792488090937, + -229813090625889733821488959369496836389001416924977817206039463705556042237134], + ![263829815779893804025730804633170072290187637894949179740737922760215754016255, + -621012612700703454363409067142566257097387699338249697710573393733162796112557, + 404313370798170590883700879721835175075975228571520776826579888971715412438704, + 42638776845682318223419660872637773116047610323165749612659624793003888381732, + -663101420027285562583211911355925188792532555347425597332704920696965224151642, + 72221450900462098030566083423104159205698191767674670970538725920649730943670, + -152006765101157107846655439384339889307385906181418604651343246896611389342293, + 465966198174497065856112924896368669111786395626158572235887214388991471803685, + 276414966326920489135732928533346216714796297586149642567845988361260831885948, + 338616432211897296463838971265579814671974495154189086114286771623497271590831, + 203446118287164760050933932472472163071606453648877693324436623078288815386918, + 10605533759067189517862691916378021503496245697717757298326791995526684050735, + 177053293607342724972240180625719333949631613631722769761884945926197669206130, + 208203316810466918269647559881252030568669648755178854398424871906885666151904, + 62130623573015325660917198952445181883230648306895297322730055915792488090937, + 316739713421143594959051875215147518060414448388192970997823218170325038752079, + -229970835900835069959885608877509972892453358956187818413595285434494964849934], + ![-620196052108231353076122363379710365950022157828658465711297971062777262687686, + 1114792876758699893108002361307754650058689704478879096152984608551089651929682, + -437621423377577011020786681948777120881318946628047978422431683642767290604784, + -437566712418248193666128995872971541605943030166988850634365650320154515010980, + 1099146068863726199339383776087760187419692001572154786832461173156746634800308, + -464731634441546485185540760776520523966870607365809391960287374644917244750064, + 1099142133712691643339843288946065118157001784637195372377489022495412027803386, + -1038807092513890757031628238683728401108173863666500108081275393623576040125366, + -501902029316859279742597842717840879087662571279421643213225964046733044227608, + -1038861002928526260379199839284361328005499939367322441914508630640725271319602, + -501883961234225561309089479386370555958291537333044018857073623815351205414612, + -267496316555523117616031704201327570685210259650014820063121136903461198377850, + -412890621296525229735992141527875990045234300931999641437340732871118728764380, + -502377263127742463172086056307586554040724915598864747993209621107150917649224, + -229813090625889733821488959369496836389001416924977817206039463705556042237134, + -229970835900835069959885608877509972892453358956187818413595285434494964849934, + 614440574425521019269213343762141073435702421304296964020112698274493382713420]] + +/-- Exact integer matrix after 12 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage12 : Fin 16 → Fin 16 → ℤ := + ![![302282677391569003353895410009431779736279896258953094590784667407429716152511796424, + -138269188954948648120075644838895624698605595265434455117147159075328787359204002463, + -138239582546419717447536247563972590835540435021303047804048424334256157335548054471, + -131585122900672672465121954252432649388236065935495065726211068653127534527972429355, + 307991962622765402467055029743033129029282495681445580161945951353933213566440729830, + -131656100041437085227160127701015747133702183249433073392715696098024699898115409972, + -74298862031277259812216654396666983724254640001794922831394074395341056804167811537, + -48530219592288707812904401326831280678407998127393895386984682813667276373607015078, + -74293656703538865452062516345041592076387438163163603265124838743254941795354179928, + -48520544185159641564455365841310582654202178929599532380733717049452736254742665291, + 39593975290525009575493051156888386492913158905108364458300037252093917591714140919, + 10122088429177065354187540217524765917264180160252899173872281544706771498559731731, + 158427792667168197436004144362433825927706657780406189617389760729436086142007610411, + -41653152163992658978985288489996731690168945006140987647959648798101880516317706328, + -41660327898189084933230846669015997986601953728519310792895490476137821759357199022, + -5157223610154583496615217674584290157548486859920685010173648224971784584948811612], + ![-138269188954948648120075644838895624698605595265434455117147159075328787359204002463, + 667570318403261720314803866323029137665869365260362776864393270030780013482539929968, + -89098804470077269687562381540044625475873052871444768113459016382361626921473945934, + -197642081803125950406541378813640608463701643959136191584430312436329402168860910906, + 66841929691032395273300938636863685797056872467473723833284900212679679247258577537, + 419671157499243944570901264366405623639762213081766070016015348393983902148253645478, + 85033170281542679166444464724464084057806687644511719487925140470488441319381504367, + 5195318757131544262406798179902823060182037132234563970626423720041899526725379585, + -152758351181312866835178102047585587814653995585353807930206745440945008371134798985, + -140189021872412471734506891724167180794580435083273018185936825473736587981544845844, + 74364309430084854967280371450565203932138379573564677415861052230823487115409890943, + -56527065299427329452390352034072298896858375255866868303058108770762371674509105305, + -111774097983012516068644158470556014834240374095123278417604530538853569237320661575, + -40348061455269340700437250839448232118531167640925651264126875796818952901596052365, + 67733533596614768619489915487036318365943604740439945673946565338685291590312606194, + -6010389429816925193239481018345162065918108494309028280232483145705402135241220688], + ![-138239582546419717447536247563972590835540435021303047804048424334256157335548054471, + -89098804470077269687562381540044625475873052871444768113459016382361626921473945934, + 667605706875343988996617184878045741479457867505961140352881481400135071148504950380, + 419632019719319797491537065062792608544211043341955616208047449990468544242830796314, + 66930830704272928451575995159782344794371862482520767543853156248367381570367081298, + -197640919414713515780255555833892569565606397961733218461925445380643207410961459778, + -152790871818907482365204340353929503762289905172414481870951848279482324080710562301, + -140209255709244361832341084806260039008088484987767324580843045451119625634118002367, + 85034886551070031599674780438439494805509892594590621438602680539688974427167904212, + 5162097697228157446525873163348628420506301597679882182451850536908811621991995807, + 74381185685763505549728350248715410012942584441774162003966362496970455281086129924, + -56526640146417292500217189948895034563813745009876411698295813415613816663635889573, + -111769004335570552813469410800695515984588691151267903789117171506468559320722415527, + 67709446712357150614334541340348283072034551555658659945097895144914489197587802833, + -40324493198827705396638069820223116135774788952270592413629538820812668895485433843, + -5992667354071511452171112717582500150897853674989815256041959850379546105244707363], + ![-131585122900672672465121954252432649388236065935495065726211068653127534527972429355, + -197642081803125950406541378813640608463701643959136191584430312436329402168860910906, + 419632019719319797491537065062792608544211043341955616208047449990468544242830796314, + 427097733195917354215590430911897823012849759452443686846557563239767390032525351382, + -92838341367574290594904867322567855385692797526806721399071055251530465316739739209, + -224301143294770550091593760032458958980671441011597074327764350940388719921717940758, + -89675019473054209302959039505436196242708052428538148657260459591594432357537036729, + -68062009799162219003935429187696064711411604599424459050259570355218515236240038606, + 82830648310390354532940963996724490183596818921715136344623025641244826497302502425, + 53822981478262728643685651921530611062510749527321061977453019825370050547409414077, + -7404065610962094345001467554898397639407865731809984150326321070289622743938134176, + -19028198455918903695735235333663072041209566316162505579958777603330755667833419652, + -91780284462064106419890470610557636679570974268895160385776791689389151155727581637, + 97321764324502770259645655959576365499028968672923519500215778742794207067719954434, + -55392110025528813322692654619221053052191608922611845637883564407983616300559372242, + -7112400063758033060917704293193786712689538748135063806173811271033346590095313344], + ![307991962622765402467055029743033129029282495681445580161945951353933213566440729830, + 66841929691032395273300938636863685797056872467473723833284900212679679247258577537, + 66930830704272928451575995159782344794371862482520767543853156248367381570367081298, + -92838341367574290594904867322567855385692797526806721399071055251530465316739739209, + 786517692900128991048038423043411503257971152063897202689924643964550088483064350880, + -92959429782370833533538275869809044329338511141723335460828357736324510664614212508, + -155724627915187615678477384642141243168205279061158106409932262271347897964481412130, + -151823212202329407069368056640253940736284284025685070521592429027176527273884965965, + -155720264434244728706295797692525078366105507567162914158462090802349507099995552088, + -151828363751541428959373047465050598073901812173542345466592451752647042671971353474, + 131844421343085587819901920844218595852312667563305983731328718497658737197140206174, + 27790368566117257661346425208715636471691036445813219159485842585131249846089593444, + 133486897940329503461962849406592336464323423354355720930637448156761746381316975130, + -34519724645354106402965060604865530618050200816348777755389629570613685772953765587, + -34472526241449477605873955673331063482360671098469300893571661506508297241075300815, + -7088367519999441226864458188604245996165619387438128746657060869679333085037928797], + ![-131656100041437085227160127701015747133702183249433073392715696098024699898115409972, + 419671157499243944570901264366405623639762213081766070016015348393983902148253645478, + -197640919414713515780255555833892569565606397961733218461925445380643207410961459778, + -224301143294770550091593760032458958980671441011597074327764350940388719921717940758, + -92959429782370833533538275869809044329338511141723335460828357736324510664614212508, + 427173139463493173164724571509309879259624112207542224530104052810276555824760260842, + 82832579300275524060339408471466614553827236367854219081087535380833390196824222260, + 53878818459768853850334208303254943646526934619223801906184324593425321379795738345, + -89647319152720769032642632900186842585083554565684106122686982302522659640824910140, + -68028959763149361653098536726727596359229947371393745404826323949224035840504402560, + -7406528033129739861847526165575634049741072429154743252959598923169817847960250435, + -19052152867352191376661197628923025712761648818321521590983744032149656564058943899, + -91798502021511229534839236210982819679509024267980860319026681096988944625223315780, + -55387949632643226769105254761236965618254054841728524439384970852833488843427278879, + 97309109566549203536838631316241341191456341312838173789006901846603488353403909572, + -7117286154105300244714073525560866957946359522656235545660209823785103597719286710], + ![-74298862031277259812216654396666983724254640001794922831394074395341056804167811537, + 85033170281542679166444464724464084057806687644511719487925140470488441319381504367, + -152790871818907482365204340353929503762289905172414481870951848279482324080710562301, + -89675019473054209302959039505436196242708052428538148657260459591594432357537036729, + -155724627915187615678477384642141243168205279061158106409932262271347897964481412130, + 82832579300275524060339408471466614553827236367854219081087535380833390196824222260, + 156372907101702193405559341143710849456553595285026898802037449992256092408420425246, + 69308097837126405728721395135181307826015990184770114428403849709487476248355454195, + 57646041429771931310840364084037782955121973030119056841619947056894511934678869107, + 24520355550687857616951157469912167591154668869871205477929872694418439786858847274, + -12882308848780405383022948905337243351631631376129627754268311451024515575729264109, + 30535094651164100102070774772056256079285746872458634892348804554335779437268284703, + -96567508176419552516612055755791101132777461858080466458915961367784872540070213191, + -31434358373706090343843481082731883460620435173004851302212327943322859789078925675, + 6582877660051690284986179416930685034207962823331318046766358602883410678673496265, + 1423651411436178296928886529817475912281453331216524232539843716200331847986238363], + ![-48530219592288707812904401326831280678407998127393895386984682813667276373607015078, + 5195318757131544262406798179902823060182037132234563970626423720041899526725379585, + -140209255709244361832341084806260039008088484987767324580843045451119625634118002367, + -68062009799162219003935429187696064711411604599424459050259570355218515236240038606, + -151823212202329407069368056640253940736284284025685070521592429027176527273884965965, + 53878818459768853850334208303254943646526934619223801906184324593425321379795738345, + 69308097837126405728721395135181307826015990184770114428403849709487476248355454195, + 71702417626158554885094421360992554055751123506035248957038653769375349544290571674, + 24493441553466091889660369414993525568367661136266830911466160848391841623434692398, + 36097342145640108010669376540303269874267906283491244939457142567356291796522124220, + -37574955732225478409417925413316569970073117421339135758282261666844007694747243863, + 14045716443642480434846129071609243825173314796337969104732536108994619226058000031, + -10196796922988000385687957374987025207526629910384119925911414428201352541888651736, + -5518503623427099615087125463510366986775673222676097873573569830100211185153461324, + 16272151907703188709351522146179321878791541884543981152492342489741509889942422643, + 5929975912026965048965343766732208634492895456412979596464821452985213890108103026], + ![-74293656703538865452062516345041592076387438163163603265124838743254941795354179928, + -152758351181312866835178102047585587814653995585353807930206745440945008371134798985, + 85034886551070031599674780438439494805509892594590621438602680539688974427167904212, + 82830648310390354532940963996724490183596818921715136344623025641244826497302502425, + -155720264434244728706295797692525078366105507567162914158462090802349507099995552088, + -89647319152720769032642632900186842585083554565684106122686982302522659640824910140, + 57646041429771931310840364084037782955121973030119056841619947056894511934678869107, + 24493441553466091889660369414993525568367661136266830911466160848391841623434692398, + 156346465293760969771107941893878114971148041022274986700140587997757757446597989730, + 69316268835870049980434959087752409098254136496850748376388090532050264212747404538, + -12876272140837024682274848832204574444876194245375118538462038659116745159499122576, + 30523555670697759332425419264478416482610559745952070268598803548626913836414764417, + -96575308884379728348221533139978737939487043918914485348795570176806304772487613287, + 6627732851324871427847581362308800029993413072926717949490812614006644387697541537, + -31465021426072793515774159706251563591925431687366960989964029317263559374724671729, + 1406690422301053988238839586714122497899416533468376429159085889060470476613594861], + ![-48520544185159641564455365841310582654202178929599532380733717049452736254742665291, + -140189021872412471734506891724167180794580435083273018185936825473736587981544845844, + 5162097697228157446525873163348628420506301597679882182451850536908811621991995807, + 53822981478262728643685651921530611062510749527321061977453019825370050547409414077, + -151828363751541428959373047465050598073901812173542345466592451752647042671971353474, + -68028959763149361653098536726727596359229947371393745404826323949224035840504402560, + 24520355550687857616951157469912167591154668869871205477929872694418439786858847274, + 36097342145640108010669376540303269874267906283491244939457142567356291796522124220, + 69316268835870049980434959087752409098254136496850748376388090532050264212747404538, + 71694412408259267582502603121472069122179601943165517516246411310861889497210173997, + -37577430203728294845242503253593699224518525730002168954858053526798467766867421329, + 14052450089949748133993309633971478018459639792847029734744053288794637507482827178, + -10202237848629409360665837511677598206518049369814107387229969829659748005953068415, + 16263142689494713850860709550853717588515760130507525781683239697533088240194446716, + -5528575826255132842625512801117832755724338956224540959414024249215703456407632912, + 5934999272606490174155278104378403859757725332483553473607865854978848537265077902], + ![39593975290525009575493051156888386492913158905108364458300037252093917591714140919, + 74364309430084854967280371450565203932138379573564677415861052230823487115409890943, + 74381185685763505549728350248715410012942584441774162003966362496970455281086129924, + -7404065610962094345001467554898397639407865731809984150326321070289622743938134176, + 131844421343085587819901920844218595852312667563305983731328718497658737197140206174, + -7406528033129739861847526165575634049741072429154743252959598923169817847960250435, + -12882308848780405383022948905337243351631631376129627754268311451024515575729264109, + -37574955732225478409417925413316569970073117421339135758282261666844007694747243863, + -12876272140837024682274848832204574444876194245375118538462038659116745159499122576, + -37577430203728294845242503253593699224518525730002168954858053526798467766867421329, + 82033200781063449871812396177075276919278756392327725387508146363619799186158360766, + -22173909285621937363132611869124199668747896581818763884270760725160541386095890646, + -18352078000629990106031687147505179196914865843675307879904361981080115532752039514, + -27750275390434784157199663364755583051850861934016607796467071083192099062263070589, + -27774031964606369779312890077758607791190620732518312887479904855476096411422598885, + -7181616082208051132614415285928443886578803004756387585940575592364704444308021401], + ![10122088429177065354187540217524765917264180160252899173872281544706771498559731731, + -56527065299427329452390352034072298896858375255866868303058108770762371674509105305, + -56526640146417292500217189948895034563813745009876411698295813415613816663635889573, + -19028198455918903695735235333663072041209566316162505579958777603330755667833419652, + 27790368566117257661346425208715636471691036445813219159485842585131249846089593444, + -19052152867352191376661197628923025712761648818321521590983744032149656564058943899, + 30535094651164100102070774772056256079285746872458634892348804554335779437268284703, + 14045716443642480434846129071609243825173314796337969104732536108994619226058000031, + 30523555670697759332425419264478416482610559745952070268598803548626913836414764417, + 14052450089949748133993309633971478018459639792847029734744053288794637507482827178, + -22173909285621937363132611869124199668747896581818763884270760725160541386095890646, + 48221176336886846962384313566919762863094185347444480251772658666120066894004800822, + -12224577195277710571386091896595218623424385196190666437808825821004250216686025971, + -855156430657222714498607775639633599081517941532858787017077192263910471445811658, + -860631928450425270366992361692218591304260747839342549902882328246723447442411845, + 3013887412239466203097002611577929757368788823202054495122178054486372981319722820], + ![158427792667168197436004144362433825927706657780406189617389760729436086142007610411, + -111774097983012516068644158470556014834240374095123278417604530538853569237320661575, + -111769004335570552813469410800695515984588691151267903789117171506468559320722415527, + -91780284462064106419890470610557636679570974268895160385776791689389151155727581637, + 133486897940329503461962849406592336464323423354355720930637448156761746381316975130, + -91798502021511229534839236210982819679509024267980860319026681096988944625223315780, + -96567508176419552516612055755791101132777461858080466458915961367784872540070213191, + -10196796922988000385687957374987025207526629910384119925911414428201352541888651736, + -96575308884379728348221533139978737939487043918914485348795570176806304772487613287, + -10202237848629409360665837511677598206518049369814107387229969829659748005953068415, + -18352078000629990106031687147505179196914865843675307879904361981080115532752039514, + -12224577195277710571386091896595218623424385196190666437808825821004250216686025971, + 239938055207714707039377945631133631265452309719026795876514839713664485857990054868, + -1781971558565398175135637973805817372930609636754969884090757803482327431415784141, + -1745204151721776634266632559129877148072836360441098606898113784655468202946117381, + 235009380408877259615163404183711956103848655309363389503637457086612260624999652], + ![-41653152163992658978985288489996731690168945006140987647959648798101880516317706328, + -40348061455269340700437250839448232118531167640925651264126875796818952901596052365, + 67709446712357150614334541340348283072034551555658659945097895144914489197587802833, + 97321764324502770259645655959576365499028968672923519500215778742794207067719954434, + -34519724645354106402965060604865530618050200816348777755389629570613685772953765587, + -55387949632643226769105254761236965618254054841728524439384970852833488843427278879, + -31434358373706090343843481082731883460620435173004851302212327943322859789078925675, + -5518503623427099615087125463510366986775673222676097873573569830100211185153461324, + 6627732851324871427847581362308800029993413072926717949490812614006644387697541537, + 16263142689494713850860709550853717588515760130507525781683239697533088240194446716, + -27750275390434784157199663364755583051850861934016607796467071083192099062263070589, + -855156430657222714498607775639633599081517941532858787017077192263910471445811658, + -1781971558565398175135637973805817372930609636754969884090757803482327431415784141, + 66950529449278106971166747944428773399687149830547673920588469062628613150650608767, + -8982190384304619151416915506821658392993872302595583111321471111531142831684042633, + -3910129121458971082973744086965299341890752682156387188858812826965666131881296493], + ![-41660327898189084933230846669015997986601953728519310792895490476137821759357199022, + 67733533596614768619489915487036318365943604740439945673946565338685291590312606194, + -40324493198827705396638069820223116135774788952270592413629538820812668895485433843, + -55392110025528813322692654619221053052191608922611845637883564407983616300559372242, + -34472526241449477605873955673331063482360671098469300893571661506508297241075300815, + 97309109566549203536838631316241341191456341312838173789006901846603488353403909572, + 6582877660051690284986179416930685034207962823331318046766358602883410678673496265, + 16272151907703188709351522146179321878791541884543981152492342489741509889942422643, + -31465021426072793515774159706251563591925431687366960989964029317263559374724671729, + -5528575826255132842625512801117832755724338956224540959414024249215703456407632912, + -27774031964606369779312890077758607791190620732518312887479904855476096411422598885, + -860631928450425270366992361692218591304260747839342549902882328246723447442411845, + -1745204151721776634266632559129877148072836360441098606898113784655468202946117381, + -8982190384304619151416915506821658392993872302595583111321471111531142831684042633, + 67089649581155895680050362054823439992731579849802062344871905869490135835693040299, + -3962750957333332165181073649796708255419560251918442154202592365929329987076444244], + ![-5157223610154583496615217674584290157548486859920685010173648224971784584948811612, + -6010389429816925193239481018345162065918108494309028280232483145705402135241220688, + -5992667354071511452171112717582500150897853674989815256041959850379546105244707363, + -7112400063758033060917704293193786712689538748135063806173811271033346590095313344, + -7088367519999441226864458188604245996165619387438128746657060869679333085037928797, + -7117286154105300244714073525560866957946359522656235545660209823785103597719286710, + 1423651411436178296928886529817475912281453331216524232539843716200331847986238363, + 5929975912026965048965343766732208634492895456412979596464821452985213890108103026, + 1406690422301053988238839586714122497899416533468376429159085889060470476613594861, + 5934999272606490174155278104378403859757725332483553473607865854978848537265077902, + -7181616082208051132614415285928443886578803004756387585940575592364704444308021401, + 3013887412239466203097002611577929757368788823202054495122178054486372981319722820, + 235009380408877259615163404183711956103848655309363389503637457086612260624999652, + -3910129121458971082973744086965299341890752682156387188858812826965666131881296493, + -3962750957333332165181073649796708255419560251918442154202592365929329987076444244, + 31376054774872161638233338995314084945788782549548937239807083042702520750804340928]] + +/-- Exact integer matrix after 13 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage13 : Fin 15 → Fin 15 → ℤ := + ![![241937662857451058764338007389609057488521077140633070297581497740643677390649179167977221, + -60985247831761022051446260773451841792678858196213509497560302214753710928726255834690963, + -103221360024996464172255556576070391073381715833602671236631908557543667760474059943832103, + 83160620138411043790113161725532668161030520663411200376590759546202971758397804620733526, + 143903611179468021647289374256134915380565762348680604133365278160299541217768637972569612, + 20436634279166192010079225167819033836638028347015500373986235559674973274756236140097459, + -6807146343490856624763198187738570557453547570748557112462507087536159715651595601481958, + -74760943619494242131479097346005217741630751296426581137199903741591036509071437152820368, + -65009197750401544092174002537045437350844807260934752194223670405014678503709517580081463, + 37021963327124460537721615335269457518903931793259605175529472297367143682164021178390043, + -20776699880053319336185005643226280196234247165678744349922407453847343589519294774136089, + -15736164347582205869307906298527029872756780814825047656415766065662026386005412311401969, + -23780830434717092989202653270583122583796071121451346676572335337607008127166083545933808, + 19487729169656622312124149165939997877268862080251222885971506844104675118931278934487690, + -3350639528625291344969150433977643341811265502901285862032579159042594510903181271556556], + ![-60985247831761022051446260773451841792678858196213509497560302214753710928726255834690963, + 241962672584376997456512427281534267289177168306052044664935996936677575563557682419396693, + 143906099790588344510593550996003721123656966043097611236206946517303143405187058820919377, + 83184134542149634357293653905522218757734925366900785190070700660082867834921806836472894, + -103228729961481876478202918275215305456095702285977668917206547433996138977867170203607828, + -74772002978326700406469679902100459970787670136030238023468194714494442002011777042426917, + -65017167146811814537741309455278998824576050678879099640580780179059688819633296559120182, + 20441187718432354879247399475225325495173621136078288525121077059091758877695603005946600, + -6816771877992372848105551032480489618129406994094986761068489899596007397765291069103831, + 37027167129748587000803597090475032323619245460099943576652550511816655523458638964446875, + -20776926568153438060167139500586070787971142381020454024485469361352222246880337041241617, + -15740337223504946972678560733741851113481401036966752844699248884194208037292900275870089, + 19481033425011637088360976879467130502717692213490596974835981190881219020847457872075168, + -23771075526809847418389256836601792591393738375553205209558958481249235740523293294867198, + -3343342373657552203265108693511800313409013018238575317883605765158752069493617846615988], + ![-103221360024996464172255556576070391073381715833602671236631908557543667760474059943832103, + 143906099790588344510593550996003721123656966043097611236206946517303143405187058820919377, + 148054642673376617158412360361895372831606211597737222495197805191453732281616700587347181, + 16507029516416333024665438476329534076055968408047983589518595772644095867458077257265278, + -112741693353036555531144210538232828407681677024859534903320376749822423631349324488957284, + -48849107321420154188547701727512822631752254879272155559561462652967636469073979586552977, + -35705706712178568272867876969483054761182914119778683921215099357681484711933759187301478, + 20213497571932397354975988273390568621413992394673613628239583472116295923083961131737920, + 13091967050493736264193067081461929431063999876122086132153086827354499850232270393540981, + 3935940982034153394339279155460662071746115913423317364574418413591849175327033512710607, + -5853839096411668288115986153896190344740284590419191424170994191585842062016650673020181, + -9134218030062262294183967218593550907361559124848024258707419945320397300365595630226261, + 31703259715712053610894514722201658082820548205961930985420340875727177400081110417517592, + -29436152638583531285744544359524214049230951761725494052145558221803665464002044563541006, + -3746169599952718219001718669084845611560425321090875699697330382974931915317861380035772], + ![83160620138411043790113161725532668161030520663411200376590759546202971758397804620733526, + 83184134542149634357293653905522218757734925366900785190070700660082867834921806836472894, + 16507029516416333024665438476329534076055968408047983589518595772644095867458077257265278, + 189246299753566169039974142904870792846924438853305538624281078116633188128626066520402740, + 16487504429498737484797285125713185146113720762252202879302388254157537203712517682867656, + -32036555070951089445276858309738118260126184237030446639297303728047274209730106987875470, + -40985826409530217354867049806969221348801065485909530594426730829341524205939115985052140, + -32036931459276075243423670536775432947490000193469242148318742004383972319199626290279824, + -40991835459810991190265240031087628138813936505819823574869114962573852592836368063625882, + 36632574014250024599359905955829643220970215279270604789549676192091517787362275777490402, + 6996861840942130518674121919719375555180793028587352373610031424467351797371412851805242, + -11182886703913555101656240653851464290584477209564932205551368186907421296270014938365670, + 3170784826868432708462097832134007978026119848833170131855275287830553394627218054692584, + 3192607473382126261654726553949627703810027014678942238277483185239542486396446884326900, + -734127026274934288582684443590982626775389673018282635336004772624578914356787440121856], + ![143903611179468021647289374256134915380565762348680604133365278160299541217768637972569612, + -103228729961481876478202918275215305456095702285977668917206547433996138977867170203607828, + -112741693353036555531144210538232828407681677024859534903320376749822423631349324488957284, + 16487504429498737484797285125713185146113720762252202879302388254157537203712517682867656, + 148060085841936996948851336415168305199267700127501005105420478243155555663920317699427008, + 20206379216445294871475007044146100279340867296925787413393679009033506051743191923219492, + 13108072968957315108611404974859514622261867522018130090909869980466414328691032870847088, + -48844094292614472111245238636059888479073193013100711724064678805022014416941813289136192, + -35695350209301150094003858664635298947963846430850261223791590986069373977409834337956564, + 3938677095073653716861880151779979048682846269304674483642628912118911484893543093440476, + -5862477612618052552293844090712170115471616181475141882135343648574410077869636075304148, + -9126618731136436965820180936802692356399043471469263683078228486692820529342621327851276, + -29437152017044905123373568213117841816513407460055160833687624632383120751933639391719304, + 31693026751392801186532917197034956543742215494789065065977840388225117784481837765946648, + -3748610511016376992137942483916090011366308219035860924283717878612711655471491984369568], + ![20436634279166192010079225167819033836638028347015500373986235559674973274756236140097459, + -74772002978326700406469679902100459970787670136030238023468194714494442002011777042426917, + -48849107321420154188547701727512822631752254879272155559561462652967636469073979586552977, + -32036555070951089445276858309738118260126184237030446639297303728047274209730106987875470, + 20206379216445294871475007044146100279340867296925787413393679009033506051743191923219492, + 55291898114171667897738419329948004487348144289691989361743962561121782414738687115966645, + 22971658639457027396349117568397513912620351790885675533185385307555273984113827096980198, + 15767651259927943366416294258045374196421687713454192457855367091325066578792666420838144, + 5042083792379955420066503621229728561459602574253268754664283187137187741892899958786903, + -1261245563292619939858920543661908546956753628699853607050430719375967821496614772035771, + 13220588758578213657326702139139808903631693547796565584171196352100667347927397940456473, + -23070701471935132514960719827144840817910873776708863366219051331838370121636078305800559, + -16683315633091595801901868365730351815669733440867884188745064953084174842369303544610512, + -1464029849889484499311793923421832279533618777109434062463823680362165342697587689336418, + 62471249084080808951283755332277128712535202586221551046824676147959551999018438311956], + ![-6807146343490856624763198187738570557453547570748557112462507087536159715651595601481958, + -65017167146811814537741309455278998824576050678879099640580780179059688819633296559120182, + -35705706712178568272867876969483054761182914119778683921215099357681484711933759187301478, + -40985826409530217354867049806969221348801065485909530594426730829341524205939115985052140, + 13108072968957315108611404974859514622261867522018130090909869980466414328691032870847088, + 22971658639457027396349117568397513912620351790885675533185385307555273984113827096980198, + 25586455811051050964991973272545445864539278822340806370487524363748942896715371224723364, + 5030691409677373228453508192001575042682626885866418600876677026458989704789090150346656, + 11332781041372652029055073786664763155139600930055846868360630136148022954860843139153994, + -12498078586620449797308409465543078139470039693558595285413119282272859420328599213708410, + 6273708965910673668763269661107209960444389198699939019526474031199572447298558255611854, + 6100498781719668275793910854421768133710844018717201993908234111714193030654066052240598, + -4886502248262619966448164911779584351104067796042096864888835679402376128307319148410320, + 3836805942064574318080669456022823772030574329415285407666227194109856163331316690363372, + 2042559805185679709335840301102521768450757062476664444970660699051993048990344688642296], + ![-74760943619494242131479097346005217741630751296426581137199903741591036509071437152820368, + 20441187718432354879247399475225325495173621136078288525121077059091758877695603005946600, + 20213497571932397354975988273390568621413992394673613628239583472116295923083961131737920, + -32036931459276075243423670536775432947490000193469242148318742004383972319199626290279824, + -48844094292614472111245238636059888479073193013100711724064678805022014416941813289136192, + 15767651259927943366416294258045374196421687713454192457855367091325066578792666420838144, + 5030691409677373228453508192001575042682626885866418600876677026458989704789090150346656, + 55282336672160750385069580483712197538955116398564928209925493190216373617356019300326512, + 22976216429533608436915121896918845682268861252460064476547775110563501363196088185811288, + -1259101759629076362992091888418650877672458558917057070889513806261596352676830780352264, + 13215899409786739140915008738382781393635278914039673719191895748275761809277459835975792, + -23074916637290737410736299120858390395773287456538554520413723131457272068908639887023760, + -1445079060267680611457539323363703771154128869368192148003298226332438525844099550750632, + -16696010318037450480176538035205494198961126276162743458329204448427855981940328738151304, + 55716563818325870145843988757987365843397667394524625679974663843441227079065392511576], + ![-65009197750401544092174002537045437350844807260934752194223670405014678503709517580081463, + -6816771877992372848105551032480489618129406994094986761068489899596007397765291069103831, + 13091967050493736264193067081461929431063999876122086132153086827354499850232270393540981, + -40991835459810991190265240031087628138813936505819823574869114962573852592836368063625882, + -35695350209301150094003858664635298947963846430850261223791590986069373977409834337956564, + 5042083792379955420066503621229728561459602574253268754664283187137187741892899958786903, + 11332781041372652029055073786664763155139600930055846868360630136148022954860843139153994, + 22976216429533608436915121896918845682268861252460064476547775110563501363196088185811288, + 25584494589216609450374272994759056404794662773728280858306006469337313794817602380200149, + -12499576590928400999668549018207784752089673150143750525865058896065072955696070538952489, + 6276275038290397252558944450140723205083541187043445346807603276740818313728976542019931, + 6096290419175933114418553893100725298881384570937445134020806573701163144921822974393947, + 3834194111337627949042961142035060075117081182745838384818713616542973843808279771327112, + -4890461968174508937661654374475412918484507370348303532561666044246697599730521882400030, + 2044636965483198846697854422572207569747097494823612400013650611081818588785065475448852], + ![37021963327124460537721615335269457518903931793259605175529472297367143682164021178390043, + 37027167129748587000803597090475032323619245460099943576652550511816655523458638964446875, + 3935940982034153394339279155460662071746115913423317364574418413591849175327033512710607, + 36632574014250024599359905955829643220970215279270604789549676192091517787362275777490402, + 3938677095073653716861880151779979048682846269304674483642628912118911484893543093440476, + -1261245563292619939858920543661908546956753628699853607050430719375967821496614772035771, + -12498078586620449797308409465543078139470039693558595285413119282272859420328599213708410, + -1259101759629076362992091888418650877672458558917057070889513806261596352676830780352264, + -12499576590928400999668549018207784752089673150143750525865058896065072955696070538952489, + 30765295773048134847970236206457447163567370316881154422371506238135916180144853925883941, + -9407989424173308114678971099264320175286740168298892109945568525344193339291865558283431, + -15654859399414672678724437228038374769233589170099336069292212541443950329727444041233215, + -8925444368309762756619568484877800817801068840882635085289144345065327327030409656802368, + -8934578898175895321931741195546234402270567961751424546741509376669269165195468225701474, + -2604683861333914899044636173155118870061894339258839891325742775030565844238663055909932], + ![-20776699880053319336185005643226280196234247165678744349922407453847343589519294774136089, + -20776926568153438060167139500586070787971142381020454024485469361352222246880337041241617, + -5853839096411668288115986153896190344740284590419191424170994191585842062016650673020181, + 6996861840942130518674121919719375555180793028587352373610031424467351797371412851805242, + -5862477612618052552293844090712170115471616181475141882135343648574410077869636075304148, + 13220588758578213657326702139139808903631693547796565584171196352100667347927397940456473, + 6273708965910673668763269661107209960444389198699939019526474031199572447298558255611854, + 13215899409786739140915008738382781393635278914039673719191895748275761809277459835975792, + 6276275038290397252558944450140723205083541187043445346807603276740818313728976542019931, + -9407989424173308114678971099264320175286740168298892109945568525344193339291865558283431, + 19169389338503343512720291732286745834851633640250525376842726157783435629661964168532189, + -7017884002199586751376750807970917030301252710677519245330132937697853716111085947357715, + 216034086476505250548312000852685247231516966547738464067189501337303316515732582629992, + 213938196990264043660737250308149500731679425407411151934251340707404358953414635279734, + 1275729683570893614014792023160172620569724797079355742217506360781162362615233259623484], + ![-15736164347582205869307906298527029872756780814825047656415766065662026386005412311401969, + -15740337223504946972678560733741851113481401036966752844699248884194208037292900275870089, + -9134218030062262294183967218593550907361559124848024258707419945320397300365595630226261, + -11182886703913555101656240653851464290584477209564932205551368186907421296270014938365670, + -9126618731136436965820180936802692356399043471469263683078228486692820529342621327851276, + -23070701471935132514960719827144840817910873776708863366219051331838370121636078305800559, + 6100498781719668275793910854421768133710844018717201993908234111714193030654066052240598, + -23074916637290737410736299120858390395773287456538554520413723131457272068908639887023760, + 6096290419175933114418553893100725298881384570937445134020806573701163144921822974393947, + -15654859399414672678724437228038374769233589170099336069292212541443950329727444041233215, + -7017884002199586751376750807970917030301252710677519245330132937697853716111085947357715, + 62816173529214137131427427807203140034928879964379042528633886914625785173223698373557437, + 8026364686969195447938500651795212254134859583172168506089847828795024934312510274640608, + 8042589946862589910458951101357917745071023200421964853856534975074774338528746943739366, + 1176186106793319374600724771081579212543590251690866009130365718257225903915423600197660], + ![-23780830434717092989202653270583122583796071121451346676572335337607008127166083545933808, + 19481033425011637088360976879467130502717692213490596974835981190881219020847457872075168, + 31703259715712053610894514722201658082820548205961930985420340875727177400081110417517592, + 3170784826868432708462097832134007978026119848833170131855275287830553394627218054692584, + -29437152017044905123373568213117841816513407460055160833687624632383120751933639391719304, + -16683315633091595801901868365730351815669733440867884188745064953084174842369303544610512, + -4886502248262619966448164911779584351104067796042096864888835679402376128307319148410320, + -1445079060267680611457539323363703771154128869368192148003298226332438525844099550750632, + 3834194111337627949042961142035060075117081182745838384818713616542973843808279771327112, + -8925444368309762756619568484877800817801068840882635085289144345065327327030409656802368, + 216034086476505250548312000852685247231516966547738464067189501337303316515732582629992, + 8026364686969195447938500651795212254134859583172168506089847828795024934312510274640608, + 24505455266158022990584542176018144406228734545462134141296829332671196687213432179392808, + -5894188414889849139503821677408408727013821299385364049085599313536997252777713979297736, + -1849900175235478616561191485516907795031982424036997327996286566791340321651886748370456], + ![19487729169656622312124149165939997877268862080251222885971506844104675118931278934487690, + -23771075526809847418389256836601792591393738375553205209558958481249235740523293294867198, + -29436152638583531285744544359524214049230951761725494052145558221803665464002044563541006, + 3192607473382126261654726553949627703810027014678942238277483185239542486396446884326900, + 31693026751392801186532917197034956543742215494789065065977840388225117784481837765946648, + -1464029849889484499311793923421832279533618777109434062463823680362165342697587689336418, + 3836805942064574318080669456022823772030574329415285407666227194109856163331316690363372, + -16696010318037450480176538035205494198961126276162743458329204448427855981940328738151304, + -4890461968174508937661654374475412918484507370348303532561666044246697599730521882400030, + -8934578898175895321931741195546234402270567961751424546741509376669269165195468225701474, + 213938196990264043660737250308149500731679425407411151934251340707404358953414635279734, + 8042589946862589910458951101357917745071023200421964853856534975074774338528746943739366, + -5894188414889849139503821677408408727013821299385364049085599313536997252777713979297736, + 24560359471927945893120933884766486544954314160563584673810988325873540925267638862825564, + -1871016050607126263444362992053177176757466779640154424879668648373479841665080376483640], + ![-3350639528625291344969150433977643341811265502901285862032579159042594510903181271556556, + -3343342373657552203265108693511800313409013018238575317883605765158752069493617846615988, + -3746169599952718219001718669084845611560425321090875699697330382974931915317861380035772, + -734127026274934288582684443590982626775389673018282635336004772624578914356787440121856, + -3748610511016376992137942483916090011366308219035860924283717878612711655471491984369568, + 62471249084080808951283755332277128712535202586221551046824676147959551999018438311956, + 2042559805185679709335840301102521768450757062476664444970660699051993048990344688642296, + 55716563818325870145843988757987365843397667394524625679974663843441227079065392511576, + 2044636965483198846697854422572207569747097494823612400013650611081818588785065475448852, + -2604683861333914899044636173155118870061894339258839891325742775030565844238663055909932, + 1275729683570893614014792023160172620569724797079355742217506360781162362615233259623484, + 1176186106793319374600724771081579212543590251690866009130365718257225903915423600197660, + -1849900175235478616561191485516907795031982424036997327996286566791340321651886748370456, + -1871016050607126263444362992053177176757466779640154424879668648373479841665080376483640, + 12526006278449888936491999288554295757678553961391116082325581193534402895351476114148176]] + +/-- Exact integer matrix after 14 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage14 : Fin 14 → Fin 14 → ℤ := + ![![certificateInteger0, certificateInteger1, certificateInteger2, -certificateInteger3, + -certificateInteger4, -certificateInteger5, certificateInteger6, -certificateInteger7, + certificateInteger8, -certificateInteger9, -certificateInteger10, certificateInteger11, + -certificateInteger12, -certificateInteger13], + ![certificateInteger1, certificateInteger14, certificateInteger15, -certificateInteger16, + -certificateInteger17, -certificateInteger18, -certificateInteger19, -certificateInteger20, + certificateInteger21, -certificateInteger22, -certificateInteger23, certificateInteger24, + -certificateInteger25, -certificateInteger26], + ![certificateInteger2, certificateInteger15, certificateInteger27, -certificateInteger28, + -certificateInteger29, -certificateInteger30, -certificateInteger31, -certificateInteger32, + certificateInteger33, certificateInteger34, -certificateInteger35, certificateInteger36, + -certificateInteger37, certificateInteger38], + ![-certificateInteger3, -certificateInteger16, -certificateInteger28, certificateInteger39, + certificateInteger40, certificateInteger41, -certificateInteger42, certificateInteger43, + -certificateInteger44, certificateInteger45, certificateInteger46, -certificateInteger47, + certificateInteger48, -certificateInteger49], + ![-certificateInteger4, -certificateInteger17, -certificateInteger29, certificateInteger40, + certificateInteger50, certificateInteger51, certificateInteger52, certificateInteger53, + -certificateInteger54, certificateInteger55, -certificateInteger56, -certificateInteger57, + -certificateInteger58, certificateInteger59], + ![-certificateInteger5, -certificateInteger18, -certificateInteger30, certificateInteger41, + certificateInteger51, certificateInteger60, certificateInteger61, certificateInteger62, + -certificateInteger63, certificateInteger64, certificateInteger65, -certificateInteger66, + certificateInteger67, certificateInteger68], + ![certificateInteger6, -certificateInteger19, -certificateInteger31, -certificateInteger42, + certificateInteger52, certificateInteger61, certificateInteger69, certificateInteger70, + certificateInteger71, certificateInteger72, -certificateInteger73, -certificateInteger74, + -certificateInteger75, -certificateInteger76], + ![-certificateInteger7, -certificateInteger20, -certificateInteger32, certificateInteger43, + certificateInteger53, certificateInteger62, certificateInteger70, certificateInteger77, + -certificateInteger78, certificateInteger79, certificateInteger80, -certificateInteger81, + certificateInteger82, certificateInteger83], + ![certificateInteger8, certificateInteger21, certificateInteger33, -certificateInteger44, + -certificateInteger54, -certificateInteger63, certificateInteger71, -certificateInteger78, + certificateInteger84, -certificateInteger85, -certificateInteger86, -certificateInteger87, + -certificateInteger88, -certificateInteger89], + ![-certificateInteger9, -certificateInteger22, certificateInteger34, certificateInteger45, + certificateInteger55, certificateInteger64, certificateInteger72, certificateInteger79, + -certificateInteger85, certificateInteger90, -certificateInteger91, -certificateInteger92, + certificateInteger93, certificateInteger94], + ![-certificateInteger10, -certificateInteger23, -certificateInteger35, certificateInteger46, + -certificateInteger56, certificateInteger65, -certificateInteger73, certificateInteger80, + -certificateInteger86, -certificateInteger91, certificateInteger95, certificateInteger96, + certificateInteger97, certificateInteger98], + ![certificateInteger11, certificateInteger24, certificateInteger36, -certificateInteger47, + -certificateInteger57, -certificateInteger66, -certificateInteger74, -certificateInteger81, + -certificateInteger87, -certificateInteger92, certificateInteger96, certificateInteger99, + -certificateInteger100, -certificateInteger101], + ![-certificateInteger12, -certificateInteger25, -certificateInteger37, certificateInteger48, + -certificateInteger58, certificateInteger67, -certificateInteger75, certificateInteger82, + -certificateInteger88, certificateInteger93, certificateInteger97, -certificateInteger100, + certificateInteger102, -certificateInteger103], + ![-certificateInteger13, -certificateInteger26, certificateInteger38, -certificateInteger49, + certificateInteger59, certificateInteger68, -certificateInteger76, certificateInteger83, + -certificateInteger89, certificateInteger94, certificateInteger98, -certificateInteger101, + -certificateInteger103, certificateInteger104]] + +/-- Exact integer matrix after 15 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage15 : Fin 13 → Fin 13 → ℤ := + ![![certificateInteger105, -certificateInteger106, -certificateInteger107, + -certificateInteger108, -certificateInteger109, -certificateInteger110, + -certificateInteger111, -certificateInteger112, -certificateInteger113, + -certificateInteger114, certificateInteger115, -certificateInteger116, + -certificateInteger117], + ![-certificateInteger106, certificateInteger118, -certificateInteger119, -certificateInteger120, + -certificateInteger121, -certificateInteger122, -certificateInteger123, certificateInteger124, + certificateInteger125, certificateInteger126, certificateInteger127, certificateInteger128, + certificateInteger129], + ![-certificateInteger107, -certificateInteger119, certificateInteger130, -certificateInteger131, + -certificateInteger132, -certificateInteger133, -certificateInteger134, + -certificateInteger135, -certificateInteger136, -certificateInteger137, + -certificateInteger138, certificateInteger139, -certificateInteger140], + ![-certificateInteger108, -certificateInteger120, -certificateInteger131, certificateInteger141, + certificateInteger142, certificateInteger143, certificateInteger144, certificateInteger145, + certificateInteger146, -certificateInteger147, -certificateInteger148, -certificateInteger149, + -certificateInteger150], + ![-certificateInteger109, -certificateInteger121, -certificateInteger132, certificateInteger142, + certificateInteger151, certificateInteger152, certificateInteger153, certificateInteger154, + -certificateInteger155, -certificateInteger156, -certificateInteger157, + -certificateInteger158, certificateInteger159], + ![-certificateInteger110, -certificateInteger122, -certificateInteger133, certificateInteger143, + certificateInteger152, certificateInteger160, certificateInteger161, certificateInteger162, + certificateInteger163, -certificateInteger164, -certificateInteger165, -certificateInteger166, + -certificateInteger167], + ![-certificateInteger111, -certificateInteger123, -certificateInteger134, certificateInteger144, + certificateInteger153, certificateInteger161, certificateInteger168, certificateInteger169, + -certificateInteger170, -certificateInteger171, -certificateInteger172, + -certificateInteger173, certificateInteger174], + ![-certificateInteger112, certificateInteger124, -certificateInteger135, certificateInteger145, + certificateInteger154, certificateInteger162, certificateInteger169, certificateInteger175, + -certificateInteger176, -certificateInteger177, -certificateInteger178, + -certificateInteger179, -certificateInteger180], + ![-certificateInteger113, certificateInteger125, -certificateInteger136, certificateInteger146, + -certificateInteger155, certificateInteger163, -certificateInteger170, -certificateInteger176, + certificateInteger181, -certificateInteger182, -certificateInteger183, -certificateInteger184, + certificateInteger185], + ![-certificateInteger114, certificateInteger126, -certificateInteger137, -certificateInteger147, + -certificateInteger156, -certificateInteger164, -certificateInteger171, + -certificateInteger177, -certificateInteger182, certificateInteger186, certificateInteger187, + certificateInteger188, certificateInteger189], + ![certificateInteger115, certificateInteger127, -certificateInteger138, -certificateInteger148, + -certificateInteger157, -certificateInteger165, -certificateInteger172, + -certificateInteger178, -certificateInteger183, certificateInteger187, certificateInteger190, + -certificateInteger191, -certificateInteger192], + ![-certificateInteger116, certificateInteger128, certificateInteger139, -certificateInteger149, + -certificateInteger158, -certificateInteger166, -certificateInteger173, + -certificateInteger179, -certificateInteger184, certificateInteger188, -certificateInteger191, + certificateInteger193, -certificateInteger194], + ![-certificateInteger117, certificateInteger129, -certificateInteger140, -certificateInteger150, + certificateInteger159, -certificateInteger167, certificateInteger174, -certificateInteger180, + certificateInteger185, certificateInteger189, -certificateInteger192, -certificateInteger194, + certificateInteger195]] + +/-- Exact integer matrix after 16 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage16 : Fin 12 → Fin 12 → ℤ := + ![![certificateInteger196, -certificateInteger197, -certificateInteger198, + -certificateInteger199, -certificateInteger200, -certificateInteger201, certificateInteger202, + certificateInteger203, certificateInteger204, certificateInteger205, certificateInteger206, + certificateInteger207], + ![-certificateInteger197, certificateInteger208, -certificateInteger209, -certificateInteger210, + -certificateInteger211, -certificateInteger212, -certificateInteger213, + -certificateInteger214, -certificateInteger215, -certificateInteger216, certificateInteger217, + -certificateInteger218], + ![-certificateInteger198, -certificateInteger209, certificateInteger219, certificateInteger220, + certificateInteger221, certificateInteger222, certificateInteger223, certificateInteger224, + -certificateInteger225, -certificateInteger226, -certificateInteger227, + -certificateInteger228], + ![-certificateInteger199, -certificateInteger210, certificateInteger220, certificateInteger229, + certificateInteger230, certificateInteger231, certificateInteger232, -certificateInteger233, + -certificateInteger234, -certificateInteger235, -certificateInteger236, + certificateInteger237], + ![-certificateInteger200, -certificateInteger211, certificateInteger221, certificateInteger230, + certificateInteger238, certificateInteger239, certificateInteger240, certificateInteger241, + -certificateInteger242, -certificateInteger243, -certificateInteger244, + -certificateInteger245], + ![-certificateInteger201, -certificateInteger212, certificateInteger222, certificateInteger231, + certificateInteger239, certificateInteger246, certificateInteger247, -certificateInteger248, + -certificateInteger249, -certificateInteger250, -certificateInteger251, + certificateInteger252], + ![certificateInteger202, -certificateInteger213, certificateInteger223, certificateInteger232, + certificateInteger240, certificateInteger247, certificateInteger253, -certificateInteger254, + -certificateInteger255, -certificateInteger256, -certificateInteger257, + -certificateInteger258], + ![certificateInteger203, -certificateInteger214, certificateInteger224, -certificateInteger233, + certificateInteger241, -certificateInteger248, -certificateInteger254, certificateInteger259, + -certificateInteger260, certificateInteger261, -certificateInteger262, certificateInteger263], + ![certificateInteger204, -certificateInteger215, -certificateInteger225, -certificateInteger234, + -certificateInteger242, -certificateInteger249, -certificateInteger255, + -certificateInteger260, certificateInteger264, certificateInteger265, certificateInteger266, + certificateInteger267], + ![certificateInteger205, -certificateInteger216, -certificateInteger226, -certificateInteger235, + -certificateInteger243, -certificateInteger250, -certificateInteger256, certificateInteger261, + certificateInteger265, certificateInteger268, certificateInteger269, -certificateInteger270], + ![certificateInteger206, certificateInteger217, -certificateInteger227, -certificateInteger236, + -certificateInteger244, -certificateInteger251, -certificateInteger257, + -certificateInteger262, certificateInteger266, certificateInteger269, certificateInteger271, + -certificateInteger272], + ![certificateInteger207, -certificateInteger218, -certificateInteger228, certificateInteger237, + -certificateInteger245, certificateInteger252, -certificateInteger258, certificateInteger263, + certificateInteger267, -certificateInteger270, -certificateInteger272, certificateInteger273]] + +/-- Exact integer matrix after 17 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage17 : Fin 11 → Fin 11 → ℤ := + ![![certificateInteger274, -certificateInteger275, -certificateInteger276, + -certificateInteger277, -certificateInteger278, -certificateInteger279, + -certificateInteger280, -certificateInteger281, -certificateInteger282, certificateInteger283, + -certificateInteger284], + ![-certificateInteger275, certificateInteger285, certificateInteger286, certificateInteger287, + certificateInteger288, certificateInteger289, certificateInteger290, -certificateInteger291, + -certificateInteger292, -certificateInteger293, -certificateInteger294], + ![-certificateInteger276, certificateInteger286, certificateInteger295, certificateInteger296, + certificateInteger297, certificateInteger298, -certificateInteger299, -certificateInteger300, + certificateInteger301, -certificateInteger302, certificateInteger303], + ![-certificateInteger277, certificateInteger287, certificateInteger296, certificateInteger304, + certificateInteger305, certificateInteger306, certificateInteger307, -certificateInteger308, + -certificateInteger309, -certificateInteger310, -certificateInteger311], + ![-certificateInteger278, certificateInteger288, certificateInteger297, certificateInteger305, + certificateInteger312, certificateInteger313, -certificateInteger314, -certificateInteger315, + certificateInteger316, -certificateInteger317, certificateInteger318], + ![-certificateInteger279, certificateInteger289, certificateInteger298, certificateInteger306, + certificateInteger313, certificateInteger319, -certificateInteger320, -certificateInteger321, + -certificateInteger322, -certificateInteger323, -certificateInteger324], + ![-certificateInteger280, certificateInteger290, -certificateInteger299, certificateInteger307, + -certificateInteger314, -certificateInteger320, certificateInteger325, -certificateInteger326, + -certificateInteger327, -certificateInteger328, -certificateInteger329], + ![-certificateInteger281, -certificateInteger291, -certificateInteger300, + -certificateInteger308, -certificateInteger315, -certificateInteger321, + -certificateInteger326, certificateInteger330, certificateInteger331, certificateInteger332, + certificateInteger333], + ![-certificateInteger282, -certificateInteger292, certificateInteger301, -certificateInteger309, + certificateInteger316, -certificateInteger322, -certificateInteger327, certificateInteger331, + certificateInteger334, certificateInteger335, -certificateInteger336], + ![certificateInteger283, -certificateInteger293, -certificateInteger302, -certificateInteger310, + -certificateInteger317, -certificateInteger323, -certificateInteger328, certificateInteger332, + certificateInteger335, certificateInteger337, -certificateInteger338], + ![-certificateInteger284, -certificateInteger294, certificateInteger303, -certificateInteger311, + certificateInteger318, -certificateInteger324, -certificateInteger329, certificateInteger333, + -certificateInteger336, -certificateInteger338, certificateInteger339]] + +/-- Exact integer matrix after 18 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage18 : Fin 10 → Fin 10 → ℤ := + ![![certificateInteger340, certificateInteger341, certificateInteger342, certificateInteger343, + certificateInteger344, certificateInteger345, -certificateInteger346, -certificateInteger347, + -certificateInteger348, -certificateInteger349], + ![certificateInteger341, certificateInteger350, certificateInteger351, certificateInteger352, + certificateInteger353, -certificateInteger354, -certificateInteger355, -certificateInteger356, + -certificateInteger357, certificateInteger358], + ![certificateInteger342, certificateInteger351, certificateInteger359, certificateInteger360, + certificateInteger361, certificateInteger362, -certificateInteger363, -certificateInteger364, + -certificateInteger365, -certificateInteger366], + ![certificateInteger343, certificateInteger352, certificateInteger360, certificateInteger367, + certificateInteger368, -certificateInteger369, -certificateInteger370, -certificateInteger371, + -certificateInteger372, certificateInteger373], + ![certificateInteger344, certificateInteger353, certificateInteger361, certificateInteger368, + certificateInteger374, -certificateInteger375, -certificateInteger376, -certificateInteger377, + -certificateInteger378, -certificateInteger379], + ![certificateInteger345, -certificateInteger354, certificateInteger362, -certificateInteger369, + -certificateInteger375, certificateInteger380, -certificateInteger381, -certificateInteger382, + -certificateInteger383, -certificateInteger384], + ![-certificateInteger346, -certificateInteger355, -certificateInteger363, + -certificateInteger370, -certificateInteger376, -certificateInteger381, certificateInteger385, + certificateInteger386, certificateInteger387, -certificateInteger388], + ![-certificateInteger347, -certificateInteger356, -certificateInteger364, + -certificateInteger371, -certificateInteger377, -certificateInteger382, certificateInteger386, + certificateInteger389, certificateInteger390, -certificateInteger391], + ![-certificateInteger348, -certificateInteger357, -certificateInteger365, + -certificateInteger372, -certificateInteger378, -certificateInteger383, certificateInteger387, + certificateInteger390, certificateInteger392, -certificateInteger393], + ![-certificateInteger349, certificateInteger358, -certificateInteger366, certificateInteger373, + -certificateInteger379, -certificateInteger384, -certificateInteger388, + -certificateInteger391, -certificateInteger393, certificateInteger394]] + +/-- Exact integer matrix after 19 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage19 : Fin 9 → Fin 9 → ℤ := + ![![certificateInteger395, certificateInteger396, certificateInteger397, certificateInteger398, + -certificateInteger399, -certificateInteger400, -certificateInteger401, + -certificateInteger402, certificateInteger403], + ![certificateInteger396, certificateInteger404, certificateInteger405, certificateInteger406, + certificateInteger407, -certificateInteger408, certificateInteger409, -certificateInteger410, + -certificateInteger411], + ![certificateInteger397, certificateInteger405, certificateInteger412, certificateInteger413, + -certificateInteger414, -certificateInteger415, -certificateInteger416, + -certificateInteger417, certificateInteger418], + ![certificateInteger398, certificateInteger406, certificateInteger413, certificateInteger419, + -certificateInteger420, -certificateInteger421, -certificateInteger422, + -certificateInteger423, -certificateInteger424], + ![-certificateInteger399, certificateInteger407, -certificateInteger414, -certificateInteger420, + certificateInteger425, -certificateInteger426, certificateInteger427, certificateInteger428, + certificateInteger429], + ![-certificateInteger400, -certificateInteger408, -certificateInteger415, + -certificateInteger421, -certificateInteger426, certificateInteger430, -certificateInteger431, + certificateInteger432, -certificateInteger433], + ![-certificateInteger401, certificateInteger409, -certificateInteger416, -certificateInteger422, + certificateInteger427, -certificateInteger431, certificateInteger434, -certificateInteger435, + -certificateInteger436], + ![-certificateInteger402, -certificateInteger410, -certificateInteger417, + -certificateInteger423, certificateInteger428, certificateInteger432, -certificateInteger435, + certificateInteger437, -certificateInteger438], + ![certificateInteger403, -certificateInteger411, certificateInteger418, -certificateInteger424, + certificateInteger429, -certificateInteger433, -certificateInteger436, -certificateInteger438, + certificateInteger439]] + +/-- Exact integer matrix after 20 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage20 : Fin 8 → Fin 8 → ℤ := + ![![certificateInteger440, -certificateInteger441, certificateInteger442, certificateInteger443, + -certificateInteger444, certificateInteger445, -certificateInteger446, + -certificateInteger447], + ![-certificateInteger441, certificateInteger448, certificateInteger449, -certificateInteger450, + -certificateInteger451, -certificateInteger452, -certificateInteger453, + certificateInteger454], + ![certificateInteger442, certificateInteger449, certificateInteger455, -certificateInteger456, + -certificateInteger457, -certificateInteger458, -certificateInteger459, + -certificateInteger460], + ![certificateInteger443, -certificateInteger450, -certificateInteger456, certificateInteger461, + -certificateInteger462, certificateInteger463, certificateInteger464, certificateInteger465], + ![-certificateInteger444, -certificateInteger451, -certificateInteger457, + -certificateInteger462, certificateInteger466, -certificateInteger467, certificateInteger468, + -certificateInteger469], + ![certificateInteger445, -certificateInteger452, -certificateInteger458, certificateInteger463, + -certificateInteger467, certificateInteger470, -certificateInteger471, + -certificateInteger472], + ![-certificateInteger446, -certificateInteger453, -certificateInteger459, certificateInteger464, + certificateInteger468, -certificateInteger471, certificateInteger473, -certificateInteger474], + ![-certificateInteger447, certificateInteger454, -certificateInteger460, certificateInteger465, + -certificateInteger469, -certificateInteger472, -certificateInteger474, + certificateInteger475]] + +/-- Exact integer matrix after 21 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage21 : Fin 7 → Fin 7 → ℤ := + ![![certificateInteger476, certificateInteger477, -certificateInteger478, + -certificateInteger479, -certificateInteger480, -certificateInteger481, + certificateInteger482], + ![certificateInteger477, certificateInteger483, -certificateInteger484, -certificateInteger485, + -certificateInteger486, -certificateInteger487, -certificateInteger488], + ![-certificateInteger478, -certificateInteger484, certificateInteger489, certificateInteger490, + certificateInteger491, certificateInteger492, certificateInteger493], + ![-certificateInteger479, -certificateInteger485, certificateInteger490, certificateInteger494, + -certificateInteger495, -certificateInteger496, -certificateInteger497], + ![-certificateInteger480, -certificateInteger486, certificateInteger491, -certificateInteger495, + certificateInteger498, certificateInteger499, -certificateInteger500], + ![-certificateInteger481, -certificateInteger487, certificateInteger492, -certificateInteger496, + certificateInteger499, certificateInteger501, -certificateInteger502], + ![certificateInteger482, -certificateInteger488, certificateInteger493, -certificateInteger497, + -certificateInteger500, -certificateInteger502, certificateInteger503]] + +/-- Exact integer matrix after 22 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage22 : Fin 6 → Fin 6 → ℤ := + ![![certificateInteger504, -certificateInteger505, -certificateInteger506, + -certificateInteger507, -certificateInteger508, -certificateInteger509], + ![-certificateInteger505, certificateInteger510, certificateInteger511, certificateInteger512, + certificateInteger513, certificateInteger514], + ![-certificateInteger506, certificateInteger511, certificateInteger515, -certificateInteger516, + -certificateInteger517, -certificateInteger518], + ![-certificateInteger507, certificateInteger512, -certificateInteger516, certificateInteger519, + certificateInteger520, -certificateInteger521], + ![-certificateInteger508, certificateInteger513, -certificateInteger517, certificateInteger520, + certificateInteger522, -certificateInteger523], + ![-certificateInteger509, certificateInteger514, -certificateInteger518, -certificateInteger521, + -certificateInteger523, certificateInteger524]] + +/-- Exact integer matrix after 23 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage23 : Fin 5 → Fin 5 → ℤ := + ![![certificateInteger525, -certificateInteger526, -certificateInteger527, + -certificateInteger528, certificateInteger529], + ![-certificateInteger526, certificateInteger530, -certificateInteger531, -certificateInteger532, + -certificateInteger533], + ![-certificateInteger527, -certificateInteger531, certificateInteger534, -certificateInteger535, + -certificateInteger536], + ![-certificateInteger528, -certificateInteger532, -certificateInteger535, certificateInteger537, + -certificateInteger538], + ![certificateInteger529, -certificateInteger533, -certificateInteger536, -certificateInteger538, + certificateInteger539]] + +/-- Exact integer matrix after 24 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage24 : Fin 4 → Fin 4 → ℤ := + ![![certificateInteger540, -certificateInteger541, -certificateInteger542, + -certificateInteger543], + ![-certificateInteger541, certificateInteger544, -certificateInteger545, -certificateInteger546], + ![-certificateInteger542, -certificateInteger545, certificateInteger547, -certificateInteger548], + ![-certificateInteger543, -certificateInteger546, -certificateInteger548, certificateInteger549]] + +/-- Exact integer matrix after 25 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage25 : Fin 3 → Fin 3 → ℤ := + ![![certificateInteger550, -certificateInteger551, -certificateInteger552], + ![-certificateInteger551, certificateInteger553, -certificateInteger554], + ![-certificateInteger552, -certificateInteger554, certificateInteger555]] + +/-- Exact integer matrix after 26 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage26 : Fin 2 → Fin 2 → ℤ := + ![![certificateInteger556, -certificateInteger556], + ![-certificateInteger556, certificateInteger556]] + +/-- Exact integer matrix after 27 fraction-free Schur steps in moment block Full0. -/ +def momentBlockFull0Stage27 : Fin 1 → Fin 1 → ℤ := + ![![0]] + +theorem momentBlockFull0Stage27_psd : IsPSD (fun i j => (momentBlockFull0Stage27 i j : ℝ)) := by + intro x + simp [quadraticForm, momentBlockFull0Stage27] + +theorem momentBlockFull0Stage26_psd : IsPSD (fun i j => (momentBlockFull0Stage26 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage26 momentBlockFull0Stage27 (certificateInteger550) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage27_psd + +theorem momentBlockFull0Stage25_psd : IsPSD (fun i j => (momentBlockFull0Stage25 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage25 momentBlockFull0Stage26 (certificateInteger540) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage26_psd + +theorem momentBlockFull0Stage24_psd : IsPSD (fun i j => (momentBlockFull0Stage24 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage24 momentBlockFull0Stage25 (certificateInteger525) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage25_psd + +theorem momentBlockFull0Stage23_psd : IsPSD (fun i j => (momentBlockFull0Stage23 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage23 momentBlockFull0Stage24 (certificateInteger504) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage24_psd + +theorem momentBlockFull0Stage22_psd : IsPSD (fun i j => (momentBlockFull0Stage22 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage22 momentBlockFull0Stage23 (certificateInteger476) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage23_psd + +theorem momentBlockFull0Stage21_psd : IsPSD (fun i j => (momentBlockFull0Stage21 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage21 momentBlockFull0Stage22 (certificateInteger440) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage22_psd + +theorem momentBlockFull0Stage20_psd : IsPSD (fun i j => (momentBlockFull0Stage20 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage20 momentBlockFull0Stage21 (certificateInteger395) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage21_psd + +theorem momentBlockFull0Stage19_psd : IsPSD (fun i j => (momentBlockFull0Stage19 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage19 momentBlockFull0Stage20 (certificateInteger340) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage20_psd + +theorem momentBlockFull0Stage18_psd : IsPSD (fun i j => (momentBlockFull0Stage18 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage18 momentBlockFull0Stage19 (certificateInteger274) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage19_psd + +theorem momentBlockFull0Stage17_psd : IsPSD (fun i j => (momentBlockFull0Stage17 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage17 momentBlockFull0Stage18 (certificateInteger196) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage18_psd + +theorem momentBlockFull0Stage16_psd : IsPSD (fun i j => (momentBlockFull0Stage16 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage16 momentBlockFull0Stage17 (certificateInteger105) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage17_psd + +theorem momentBlockFull0Stage15_psd : IsPSD (fun i j => (momentBlockFull0Stage15 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage15 momentBlockFull0Stage16 (certificateInteger0) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage16_psd + +theorem momentBlockFull0Stage14_psd : IsPSD (fun i j => (momentBlockFull0Stage14 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage14 momentBlockFull0Stage15 + (241937662857451058764338007389609057488521077140633070297581497740643677390649179167977221) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage15_psd + +theorem momentBlockFull0Stage13_psd : IsPSD (fun i j => (momentBlockFull0Stage13 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage13 momentBlockFull0Stage14 + (302282677391569003353895410009431779736279896258953094590784667407429716152511796424) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage14_psd + +theorem momentBlockFull0Stage12_psd : IsPSD (fun i j => (momentBlockFull0Stage12 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage12 momentBlockFull0Stage13 + (755056374531704706639560641699264475888561252757247054018662644650894582588403) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage13_psd + +theorem momentBlockFull0Stage11_psd : IsPSD (fun i j => (momentBlockFull0Stage11 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage11 momentBlockFull0Stage12 + (2527217969538333548343375792657934772317626846256498137010805719338681588) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage12_psd + +theorem momentBlockFull0Stage10_psd : IsPSD (fun i j => (momentBlockFull0Stage10 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage10 momentBlockFull0Stage11 + (34561535069389069592098393609264156370712154364300862953273139676473) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage11_psd + +theorem momentBlockFull0Stage9_psd : IsPSD (fun i j => (momentBlockFull0Stage9 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage9 momentBlockFull0Stage10 + (469013774677419966936811159834691249742394614482932476667660686) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage10_psd + +theorem momentBlockFull0Stage8_psd : IsPSD (fun i j => (momentBlockFull0Stage8 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage8 momentBlockFull0Stage9 + (6257923582445758747145390762296215429555519566979662217587) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage9_psd + +theorem momentBlockFull0Stage7_psd : IsPSD (fun i j => (momentBlockFull0Stage7 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage7 momentBlockFull0Stage8 + (7034453464707846749569596351075403408014983448443661) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage8_psd + +theorem momentBlockFull0Stage6_psd : IsPSD (fun i j => (momentBlockFull0Stage6 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage6 momentBlockFull0Stage7 + (1923707158678150201899330964651535171639857294) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage7_psd + +theorem momentBlockFull0Stage5_psd : IsPSD (fun i j => (momentBlockFull0Stage5 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage5 momentBlockFull0Stage6 + (446401646662782787320944432891295635868) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage6_psd + +theorem momentBlockFull0Stage4_psd : IsPSD (fun i j => (momentBlockFull0Stage4 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage4 momentBlockFull0Stage5 + (37788621552805100777283433380138) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage5_psd + +theorem momentBlockFull0Stage3_psd : IsPSD (fun i j => (momentBlockFull0Stage3 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage3 momentBlockFull0Stage4 (2203657213483261276564022) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage4_psd + +theorem momentBlockFull0Stage2_psd : IsPSD (fun i j => (momentBlockFull0Stage2 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage2 momentBlockFull0Stage3 (119627585843864631) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage3_psd + +theorem momentBlockFull0Stage1_psd : IsPSD (fun i j => (momentBlockFull0Stage1 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage1 momentBlockFull0Stage2 (1000000000) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage2_psd + +theorem momentBlockFull0Stage0_psd : IsPSD (fun i j => (momentBlockFull0Stage0 i j : ℝ)) := by + apply integer_schur_step momentBlockFull0Stage0 momentBlockFull0Stage1 (1) + · decide + · decide + · decide +kernel + · decide +kernel + · exact momentBlockFull0Stage1_psd + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/MomentBridge.lean b/LeanPool/PersistentSOS/MomentBridge.lean new file mode 100644 index 0000000000..58b9859fc8 --- /dev/null +++ b/LeanPool/PersistentSOS/MomentBridge.lean @@ -0,0 +1,98 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.Definitions +public import Mathlib.LinearAlgebra.Finsupp.LinearCombination +public import Mathlib.Tactic.Convert +public import Mathlib.Tactic.Positivity +public import Mathlib.Tactic.Ring + +/-! +# Moment Bridge + +Part of the explicit persistent quartic SOS counterexample. +-/ + +@[expose] public section +namespace PersistentSOS +open MvPolynomial +open scoped BigOperators + +/-- A complete finite list of monomials of degree at most two spans every +quadratic polynomial. Repeated entries in the list are allowed. -/ +theorem quadratic_eq_sum_monomials {ι : Type*} [Fintype ι] + (basis : ι → (Fin 14 →₀ ℕ)) + (hcover : ∀ d : Fin 14 →₀ ℕ, d.sum (fun _ n => n) ≤ 2 → ∃ i, basis i = d) + (p : Poly) (hp : p.totalDegree ≤ 2) : + ∃ x : ι → ℝ, p = ∑ i, x i • (monomial (basis i) (1 : ℝ) : Poly) := by + classical + suffices hmem : p ∈ Submodule.span ℝ + (Set.range fun i => (monomial (basis i) (1 : ℝ) : Poly)) by + obtain ⟨x, hx⟩ := (Submodule.mem_span_range_iff_exists_fun ℝ).mp hmem + exact ⟨x, hx.symm⟩ + rw [p.as_sum] + apply Submodule.sum_mem + intro d hd + obtain ⟨i, hi⟩ := hcover d ((le_totalDegree hd).trans hp) + rw [← hi] + have hmem : (monomial (basis i) (1 : ℝ) : Poly) ∈ + Submodule.span ℝ (Set.range fun j => (monomial (basis j) (1 : ℝ) : Poly)) := + Submodule.subset_span (Set.mem_range_self i) + simpa only [smul_monomial, smul_eq_mul, mul_one] using + Submodule.smul_mem _ (p.coeff (basis i)) hmem + +/-- Positivity of the genuine monomial moment matrix implies positivity +on the square of every quadratic polynomial. -/ +theorem nonneg_quadratic_square_of_momentMatrix {ι : Type*} [Fintype ι] + (basis : ι → (Fin 14 →₀ ℕ)) + (hcover : ∀ d : Fin 14 →₀ ℕ, d.sum (fun _ n => n) ≤ 2 → ∃ i, basis i = d) + (L : Poly →ₗ[ℝ] ℝ) + (hpsd : ∀ x : ι → ℝ, + 0 ≤ ∑ i, ∑ j, x i * L (monomial (basis i + basis j) 1) * x j) + (p : Poly) (hp : p.totalDegree ≤ 2) : 0 ≤ L (p ^ 2) := by + classical + obtain ⟨x, rfl⟩ := quadratic_eq_sum_monomials basis hcover p hp + convert hpsd x using 1 + rw [pow_two, Finset.sum_mul] + simp_rw [Finset.mul_sum, map_sum, smul_mul_smul_comm, map_smul, + monomial_mul_monomial, one_mul, smul_eq_mul] + congr 1 + ext i + congr 1 + ext j + ring + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/MomentData.lean b/LeanPool/PersistentSOS/MomentData.lean new file mode 100644 index 0000000000..9b52832833 --- /dev/null +++ b/LeanPool/PersistentSOS/MomentData.lean @@ -0,0 +1,1676 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.MomentGeneral +public import LeanPool.PersistentSOS.MomentBlockFull0 +public import LeanPool.PersistentSOS.MomentBlock1 +public import LeanPool.PersistentSOS.MomentBlock2 +public import LeanPool.PersistentSOS.MomentBlock3 +public import LeanPool.PersistentSOS.MomentBlock4 +public import LeanPool.PersistentSOS.MomentBlock5 +public import LeanPool.PersistentSOS.MomentBlock6 +public import LeanPool.PersistentSOS.MomentBlock7 +public import Mathlib.Tactic.FinCases + +/-! +# Explicit rational moment data + +Every monomial occurrence uses one base-five exponent key. All degree-four +moments are derived from the retained rational certificate. The finite +Gram identities and coverage are proved below by kernel reduction. +-/ + + +@[expose] public section + +namespace PersistentSOS + + +/-- Integer numerator table; unspecified keys have value zero. -/ +def momentNumerator (k : ℕ) : ℤ := + if k < 19612500 then + if k < 109376 then + if k < 15876 then + if k < 3126 then + if k < 250 then + if k < 12 then + if k < 3 then + if k < 1 then + if k = 0 then (1000000000) else 0 + else + if k < 2 then + if k = 1 then (423308963) else 0 + else + if k = 2 then (298818064) else 0 + else + if k < 10 then + if k < 4 then + if k = 3 then (141743481) else 0 + else + if k = 4 then (95993371) else 0 + else + if k < 11 then + if k = 10 then (148973087) else 0 + else + if k = 11 then (79751621) else 0 + else + if k < 51 then + if k < 20 then + if k = 12 then (45340304) else 0 + else + if k < 50 then + if k = 20 then (65363241) else 0 + else + if k = 50 then (162381159) else 0 + else + if k < 60 then + if k < 52 then + if k = 51 then (86495040) else 0 + else + if k = 52 then (48848306) else 0 + else + if k < 100 then + if k = 60 then (6925782) else 0 + else + if k = 100 then (72654288) else 0 + else + if k < 1250 then + if k < 260 then + if k < 251 then + if k = 250 then (162381048) else 0 + else + if k < 252 then + if k = 251 then (86494935) else 0 + else + if k = 252 then (48848296) else 0 + else + if k < 500 then + if k < 300 then + if k = 260 then (6925775) else 0 + else + if k = 300 then (7390663) else 0 + else + if k < 780 then + if k = 500 then (72654222) else 0 + else + if k = 780 then (9655915) else 0 + else + if k < 1300 then + if k < 1252 then + if k < 1251 then + if k = 1250 then (76574425) else 0 + else + if k = 1251 then (39889758) else 0 + else + if k < 1260 then + if k = 1252 then (22979581) else 0 + else + if k = 1260 then (12788775) else 0 + else + if k < 2500 then + if k < 1500 then + if k = 1300 then (13722116) else 0 + else + if k = 1500 then (13722105) else 0 + else + if k < 3125 then + if k = 2500 then (6719268) else 0 + else + if k = 3125 then (71951457) else 0 + else + if k < 6300 then + if k < 3375 then + if k < 3135 then + if k < 3127 then + if k = 3126 then (28193221) else 0 + else + if k < 3128 then + if k = 3127 then (20333252) else 0 + else + if k = 3128 then (9365790) else 0 + else + if k < 3175 then + if k < 3136 then + if k = 3135 then (27438237) else 0 + else + if k = 3136 then (14265654) else 0 + else + if k < 3176 then + if k = 3175 then (3349614) else 0 + else + if k = 3176 then (1411787) else 0 + else + if k < 6250 then + if k < 4375 then + if k < 3376 then + if k = 3375 then (3349612) else 0 + else + if k = 3376 then (1411790) else 0 + else + if k < 4376 then + if k = 4375 then (5506403) else 0 + else + if k = 4376 then (2769171) else 0 + else + if k < 6252 then + if k < 6251 then + if k = 6250 then (23640856) else 0 + else + if k = 6251 then (-9137) else 0 + else + if k < 6260 then + if k = 6252 then (6095189) else 0 + else + if k = 6260 then (6365418) else 0 + else + if k < 15626 then + if k < 9375 then + if k < 6500 then + if k = 6300 then (315848) else 0 + else + if k < 7500 then + if k = 6500 then (315841) else 0 + else + if k = 7500 then (635359) else 0 + else + if k < 12500 then + if k < 9376 then + if k = 9375 then (7589636) else 0 + else + if k = 9376 then (-1081254) else 0 + else + if k < 15625 then + if k = 12500 then (4795194) else 0 + else + if k = 15625 then (76482650) else 0 + else + if k < 15636 then + if k < 15628 then + if k < 15627 then + if k = 15626 then (31705948) else 0 + else + if k = 15627 then (21494722) else 0 + else + if k < 15635 then + if k = 15628 then (10300379) else 0 + else + if k = 15635 then (3349856) else 0 + else + if k < 15676 then + if k < 15675 then + if k = 15636 then (1432129) else 0 + else + if k = 15675 then (30621436) else 0 + else + if k < 15875 then + if k = 15676 then (15833908) else 0 + else + if k = 15875 then (3504174) else 0 + else + if k < 78128 then + if k < 31252 then + if k < 18800 then + if k < 18750 then + if k < 16875 then + if k = 15876 then (1503645) else 0 + else + if k < 16876 then + if k = 16875 then (5975451) else 0 + else + if k = 16876 then (2933691) else 0 + else + if k < 18752 then + if k < 18751 then + if k = 18750 then (-826062) else 0 + else + if k = 18751 then (1864327) else 0 + else + if k < 18760 then + if k = 18752 then (-273910) else 0 + else + if k = 18760 then (202667) else 0 + else + if k < 21876 then + if k < 20000 then + if k < 19000 then + if k = 18800 then (196997) else 0 + else + if k = 19000 then (310741) else 0 + else + if k < 21875 then + if k = 20000 then (323085) else 0 + else + if k = 21875 then (-681088) else 0 + else + if k < 31250 then + if k < 25000 then + if k = 21876 then (457322) else 0 + else + if k = 25000 then (-1025445) else 0 + else + if k < 31251 then + if k = 31250 then (25184767) else 0 + else + if k = 31251 then (591274) else 0 + else + if k < 37500 then + if k < 31500 then + if k < 31260 then + if k = 31252 then (6477974) else 0 + else + if k < 31300 then + if k = 31260 then (307820) else 0 + else + if k = 31300 then (7147237) else 0 + else + if k < 34375 then + if k < 32500 then + if k = 31500 then (310382) else 0 + else + if k = 32500 then (780189) else 0 + else + if k < 34376 then + if k = 34375 then (-809987) else 0 + else + if k = 34376 then (519327) else 0 + else + if k < 62500 then + if k < 46876 then + if k < 46875 then + if k = 37500 then (1321273) else 0 + else + if k = 46875 then (7109900) else 0 + else + if k < 50000 then + if k = 46876 then (-486932) else 0 + else + if k = 50000 then (-1027707) else 0 + else + if k < 78126 then + if k < 78125 then + if k = 62500 then (4647223) else 0 + else + if k = 78125 then (76482117) else 0 + else + if k < 78127 then + if k = 78126 then (31706168) else 0 + else + if k = 78127 then (21494568) else 0 + else + if k < 82500 then + if k < 79375 then + if k < 78175 then + if k < 78135 then + if k = 78128 then (10300417) else 0 + else + if k < 78136 then + if k = 78135 then (3349854) else 0 + else + if k = 78136 then (1432127) else 0 + else + if k < 78375 then + if k < 78176 then + if k = 78175 then (3504174) else 0 + else + if k = 78176 then (1503644) else 0 + else + if k < 78376 then + if k = 78375 then (30621436) else 0 + else + if k = 78376 then (15833900) else 0 + else + if k < 81252 then + if k < 81250 then + if k < 79376 then + if k = 79375 then (5975450) else 0 + else + if k = 79376 then (2933688) else 0 + else + if k < 81251 then + if k = 81250 then (-826189) else 0 + else + if k = 81251 then (1864389) else 0 + else + if k < 81300 then + if k < 81260 then + if k = 81252 then (-273940) else 0 + else + if k = 81260 then (202668) else 0 + else + if k < 81500 then + if k = 81300 then (310742) else 0 + else + if k = 81500 then (196996) else 0 + else + if k < 93760 then + if k < 87500 then + if k < 84375 then + if k = 82500 then (323085) else 0 + else + if k < 84376 then + if k = 84375 then (-681283) else 0 + else + if k = 84376 then (457423) else 0 + else + if k < 93751 then + if k < 93750 then + if k = 87500 then (-1025493) else 0 + else + if k = 93750 then (-1528158) else 0 + else + if k < 93752 then + if k = 93751 then (2284387) else 0 + else + if k = 93752 then (-467041) else 0 + else + if k < 96875 then + if k < 94000 then + if k < 93800 then + if k = 93760 then (305587) else 0 + else + if k = 93800 then (236820) else 0 + else + if k < 95000 then + if k = 94000 then (236820) else 0 + else + if k = 95000 then (321057) else 0 + else + if k < 100000 then + if k < 96876 then + if k = 96875 then (957561) else 0 + else + if k = 96876 then (-320360) else 0 + else + if k < 109375 then + if k = 100000 then (113560) else 0 + else + if k = 109375 then (-612941) else 0 + else + if k < 2031380 then + if k < 468780 then + if k < 175000 then + if k < 156300 then + if k < 156250 then + if k < 112500 then + if k = 109376 then (437258) else 0 + else + if k < 125000 then + if k = 112500 then (354183) else 0 + else + if k = 125000 then (-1001747) else 0 + else + if k < 156252 then + if k < 156251 then + if k = 156250 then (25184690) else 0 + else + if k = 156251 then (591309) else 0 + else + if k < 156260 then + if k = 156252 then (6477980) else 0 + else + if k = 156260 then (307807) else 0 + else + if k < 159376 then + if k < 157500 then + if k < 156500 then + if k = 156300 then (310383) else 0 + else + if k = 156500 then (7147227) else 0 + else + if k < 159375 then + if k = 157500 then (780185) else 0 + else + if k = 159375 then (-809686) else 0 + else + if k < 171875 then + if k < 162500 then + if k = 159376 then (519176) else 0 + else + if k = 162500 then (1321273) else 0 + else + if k < 171876 then + if k = 171875 then (-613231) else 0 + else + if k = 171876 then (437401) else 0 + else + if k < 390655 then + if k < 234376 then + if k < 187500 then + if k = 175000 then (354275) else 0 + else + if k < 234375 then + if k = 187500 then (1519553) else 0 + else + if k = 234375 then (7109654) else 0 + else + if k < 250000 then + if k < 237500 then + if k = 234376 then (-486807) else 0 + else + if k = 237500 then (-1027629) else 0 + else + if k < 312500 then + if k = 250000 then (-1001921) else 0 + else + if k = 312500 then (4647222) else 0 + else + if k < 393780 then + if k < 391375 then + if k < 390656 then + if k = 390655 then (7457187) else 0 + else + if k = 390656 then (3269119) else 0 + else + if k < 391376 then + if k = 391375 then (10073398) else 0 + else + if k = 391376 then (4832959) else 0 + else + if k < 406280 then + if k < 394500 then + if k = 393780 then (608339) else 0 + else + if k = 394500 then (615867) else 0 + else + if k < 407000 then + if k = 406280 then (604148) else 0 + else + if k = 407000 then (615337) else 0 + else + if k < 812500 then + if k < 781500 then + if k < 781251 then + if k < 469500 then + if k = 468780 then (604133) else 0 + else + if k < 781250 then + if k = 469500 then (1128523) else 0 + else + if k = 781250 then (21035273) else 0 + else + if k < 781260 then + if k < 781252 then + if k = 781251 then (-2998234) else 0 + else + if k = 781252 then (4872560) else 0 + else + if k < 781300 then + if k = 781260 then (1189529) else 0 + else + if k = 781300 then (1203533) else 0 + else + if k < 787500 then + if k < 784375 then + if k < 782500 then + if k = 781500 then (1779896) else 0 + else + if k = 782500 then (1311683) else 0 + else + if k < 784376 then + if k = 784375 then (1370160) else 0 + else + if k = 784376 then (-166144) else 0 + else + if k < 796876 then + if k < 796875 then + if k = 787500 then (320428) else 0 + else + if k = 796875 then (1065984) else 0 + else + if k < 800000 then + if k = 796876 then (-18413) else 0 + else + if k = 800000 then (309873) else 0 + else + if k < 1953255 then + if k < 862500 then + if k < 859375 then + if k = 812500 then (323490) else 0 + else + if k < 859376 then + if k = 859375 then (2353567) else 0 + else + if k = 859376 then (-416068) else 0 + else + if k < 937500 then + if k < 875000 then + if k = 862500 then (-128470) else 0 + else + if k = 875000 then (-195351) else 0 + else + if k < 1562500 then + if k = 937500 then (947187) else 0 + else + if k = 1562500 then (2804403) else 0 + else + if k < 1956380 then + if k < 1953775 then + if k < 1953256 then + if k = 1953255 then (7457187) else 0 + else + if k = 1953256 then (3269121) else 0 + else + if k < 1953776 then + if k = 1953775 then (10073399) else 0 + else + if k = 1953776 then (4832959) else 0 + else + if k < 1968880 then + if k < 1956900 then + if k = 1956380 then (608339) else 0 + else + if k = 1956900 then (615867) else 0 + else + if k < 1969400 then + if k = 1968880 then (604133) else 0 + else + if k = 1969400 then (1128524) else 0 + else + if k < 9769380 then + if k < 3921876 then + if k < 3906260 then + if k < 2344380 then + if k < 2031900 then + if k = 2031380 then (604148) else 0 + else + if k < 2343900 then + if k = 2031900 then (615337) else 0 + else + if k = 2343900 then (1201302) else 0 + else + if k < 3906251 then + if k < 3906250 then + if k = 2344380 then (1220643) else 0 + else + if k = 3906250 then (21035497) else 0 + else + if k < 3906252 then + if k = 3906251 then (-2998344) else 0 + else + if k = 3906252 then (4872616) else 0 + else + if k < 3909375 then + if k < 3906500 then + if k < 3906300 then + if k = 3906260 then (1189513) else 0 + else + if k = 3906300 then (1779888) else 0 + else + if k < 3907500 then + if k = 3906500 then (1203525) else 0 + else + if k = 3907500 then (1311685) else 0 + else + if k < 3912500 then + if k < 3909376 then + if k = 3909375 then (1370265) else 0 + else + if k = 3909376 then (-166195) else 0 + else + if k < 3921875 then + if k = 3912500 then (320439) else 0 + else + if k = 3921875 then (2353878) else 0 + else + if k < 4062500 then + if k < 3984375 then + if k < 3925000 then + if k = 3921876 then (-416222) else 0 + else + if k < 3937500 then + if k = 3925000 then (-128440) else 0 + else + if k = 3937500 then (947241) else 0 + else + if k < 3987500 then + if k < 3984376 then + if k = 3984375 then (1066067) else 0 + else + if k = 3984376 then (-18453) else 0 + else + if k < 4000000 then + if k = 3987500 then (309875) else 0 + else + if k = 4000000 then (-195332) else 0 + else + if k < 9765776 then + if k < 7812500 then + if k < 4687500 then + if k = 4062500 then (323500) else 0 + else + if k = 4687500 then (2595168) else 0 + else + if k < 9765775 then + if k = 7812500 then (2804463) else 0 + else + if k = 9765775 then (3462345) else 0 + else + if k < 9766256 then + if k < 9766255 then + if k = 9765776 then (1400984) else 0 + else + if k = 9766255 then (4143478) else 0 + else + if k < 9768900 then + if k = 9766256 then (2022744) else 0 + else + if k = 9768900 then (299603) else 0 + else + if k < 19531251 then + if k < 11718780 then + if k < 9843900 then + if k < 9781400 then + if k = 9769380 then (331233) else 0 + else + if k < 9781880 then + if k = 9781400 then (297238) else 0 + else + if k = 9781880 then (297189) else 0 + else + if k < 10156380 then + if k < 9844380 then + if k = 9843900 then (297238) else 0 + else + if k = 9844380 then (297189) else 0 + else + if k < 10156900 then + if k = 10156380 then (583593) else 0 + else + if k = 10156900 then (591740) else 0 + else + if k < 12112500 then + if k < 12109375 then + if k < 11719500 then + if k = 11718780 then (583593) else 0 + else + if k = 11719500 then (591740) else 0 + else + if k < 12109376 then + if k = 12109375 then (2833858) else 0 + else + if k = 12109376 then (-906164) else 0 + else + if k < 12187500 then + if k < 12125000 then + if k = 12112500 then (312527) else 0 + else + if k = 12125000 then (231540) else 0 + else + if k < 19531250 then + if k = 12187500 then (231538) else 0 + else + if k = 19531250 then (5373335) else 0 + else + if k < 19534376 then + if k < 19531300 then + if k < 19531252 then + if k = 19531251 then (-1192529) else 0 + else + if k < 19531260 then + if k = 19531252 then (1188822) else 0 + else + if k = 19531260 then (291310) else 0 + else + if k < 19532500 then + if k < 19531500 then + if k = 19531300 then (293178) else 0 + else + if k = 19531500 then (293173) else 0 + else + if k < 19534375 then + if k = 19532500 then (305822) else 0 + else + if k = 19534375 then (412026) else 0 + else + if k < 19550000 then + if k < 19546875 then + if k < 19537500 then + if k = 19534376 then (-70012) else 0 + else + if k = 19537500 then (194717) else 0 + else + if k < 19546876 then + if k = 19546875 then (487649) else 0 + else + if k = 19546876 then (-110636) else 0 + else + if k < 19609375 then + if k < 19562500 then + if k = 19550000 then (153598) else 0 + else + if k = 19562500 then (200318) else 0 + else + if k < 19609376 then + if k = 19609375 then (487668) else 0 + else + if k = 19609376 then (-110643) else 0 + else + if k < 304687500 then + if k < 97675000 then + if k < 58593800 then + if k < 48906400 then + if k < 48828276 then + if k < 20312500 then + if k < 19625000 then + if k = 19612500 then (153615) else 0 + else + if k < 19687500 then + if k = 19625000 then (195058) else 0 + else + if k = 19687500 then (200325) else 0 + else + if k < 39062500 then + if k < 23437500 then + if k = 20312500 then (673877) else 0 + else + if k = 23437500 then (673907) else 0 + else + if k < 48828275 then + if k = 39062500 then (311051) else 0 + else + if k = 48828275 then (5800689) else 0 + else + if k < 48831400 then + if k < 48828755 then + if k = 48828276 then (2688879) else 0 + else + if k < 48828756 then + if k = 48828755 then (7594848) else 0 + else + if k = 48828756 then (3598238) else 0 + else + if k < 48843900 then + if k < 48831880 then + if k = 48831400 then (451763) else 0 + else + if k = 48831880 then (900626) else 0 + else + if k < 48844380 then + if k = 48843900 then (449043) else 0 + else + if k = 48844380 then (454472) else 0 + else + if k < 51171876 then + if k < 49219400 then + if k < 48906880 then + if k = 48906400 then (449043) else 0 + else + if k < 49218880 then + if k = 48906880 then (454472) else 0 + else + if k = 49218880 then (883143) else 0 + else + if k < 50782000 then + if k < 50781280 then + if k = 49219400 then (918271) else 0 + else + if k = 50781280 then (883142) else 0 + else + if k < 51171875 then + if k = 50782000 then (918271) else 0 + else + if k = 51171875 then (3953065) else 0 + else + if k < 58593750 then + if k < 51187500 then + if k < 51175000 then + if k = 51171876 then (-1199593) else 0 + else + if k = 51175000 then (399703) else 0 + else + if k < 51250000 then + if k = 51187500 then (278253) else 0 + else + if k = 51250000 then (278254) else 0 + else + if k < 58593752 then + if k < 58593751 then + if k = 58593750 then (6700445) else 0 + else + if k = 58593751 then (-868051) else 0 + else + if k < 58593760 then + if k = 58593752 then (1563499) else 0 + else + if k = 58593760 then (474628) else 0 + else + if k < 59375000 then + if k < 58609376 then + if k < 58596875 then + if k < 58594000 then + if k = 58593800 then (429020) else 0 + else + if k < 58595000 then + if k = 58594000 then (429020) else 0 + else + if k = 58595000 then (461335) else 0 + else + if k < 58600000 then + if k < 58596876 then + if k = 58596875 then (549857) else 0 + else + if k = 58596876 then (-71505) else 0 + else + if k < 58609375 then + if k = 58600000 then (89718) else 0 + else + if k = 58609375 then (555248) else 0 + else + if k < 58671876 then + if k < 58625000 then + if k < 58612500 then + if k = 58609376 then (-92651) else 0 + else + if k = 58612500 then (-9261) else 0 + else + if k < 58671875 then + if k = 58625000 then (77972) else 0 + else + if k = 58671875 then (555251) else 0 + else + if k < 58687500 then + if k < 58675000 then + if k = 58671876 then (-92653) else 0 + else + if k = 58675000 then (-9266) else 0 + else + if k < 58750000 then + if k = 58687500 then (78186) else 0 + else + if k = 58750000 then (77940) else 0 + else + if k < 97656300 then + if k < 97656250 then + if k < 62500000 then + if k = 59375000 then (920821) else 0 + else + if k < 78125000 then + if k = 62500000 then (920821) else 0 + else + if k = 78125000 then (206949) else 0 + else + if k < 97656252 then + if k < 97656251 then + if k = 97656250 then (13951051) else 0 + else + if k = 97656251 then (-2410969) else 0 + else + if k < 97656260 then + if k = 97656252 then (3215208) else 0 + else + if k = 97656260 then (1305861) else 0 + else + if k < 97659376 then + if k < 97657500 then + if k < 97656500 then + if k = 97656300 then (665467) else 0 + else + if k = 97656500 then (665471) else 0 + else + if k < 97659375 then + if k = 97657500 then (739380) else 0 + else + if k = 97659375 then (2599146) else 0 + else + if k < 97671875 then + if k < 97662500 then + if k = 97659376 then (-742651) else 0 + else + if k = 97662500 then (1340107) else 0 + else + if k < 97671876 then + if k = 97671875 then (390599) else 0 + else + if k = 97671876 then (72861) else 0 + else + if k < 246095000 then + if k < 244141276 then + if k < 98437500 then + if k < 97734376 then + if k < 97687500 then + if k = 97675000 then (-257922) else 0 + else + if k < 97734375 then + if k = 97687500 then (215330) else 0 + else + if k = 97734375 then (390534) else 0 + else + if k < 97750000 then + if k < 97737500 then + if k = 97734376 then (72892) else 0 + else + if k = 97737500 then (-257943) else 0 + else + if k < 97812500 then + if k = 97750000 then (210862) else 0 + else + if k = 97812500 then (215328) else 0 + else + if k < 195312500 then + if k < 117187500 then + if k < 101562500 then + if k = 98437500 then (1395420) else 0 + else + if k = 101562500 then (1395424) else 0 + else + if k < 156250000 then + if k = 117187500 then (375018) else 0 + else + if k = 156250000 then (507092) else 0 + else + if k < 244140756 then + if k < 244140755 then + if k = 195312500 then (1483528) else 0 + else + if k = 244140755 then (4162390) else 0 + else + if k < 244141275 then + if k = 244140756 then (1964657) else 0 + else + if k = 244141275 then (5911137) else 0 + else + if k < 244531400 then + if k < 244156380 then + if k < 244143880 then + if k = 244141276 then (2789333) else 0 + else + if k < 244144400 then + if k = 244143880 then (318997) else 0 + else + if k = 244144400 then (326209) else 0 + else + if k < 244218880 then + if k < 244156900 then + if k = 244156380 then (317182) else 0 + else + if k = 244156900 then (777072) else 0 + else + if k < 244219400 then + if k = 244218880 then (317179) else 0 + else + if k = 244219400 then (326753) else 0 + else + if k < 246093752 then + if k < 246093750 then + if k < 244531880 then + if k = 244531400 then (630690) else 0 + else + if k = 244531880 then (651390) else 0 + else + if k < 246093751 then + if k = 246093750 then (11656813) else 0 + else + if k = 246093751 then (-1514904) else 0 + else + if k < 246093800 then + if k < 246093760 then + if k = 246093752 then (2735057) else 0 + else + if k = 246093760 then (623959) else 0 + else + if k < 246094000 then + if k = 246093800 then (1136477) else 0 + else + if k = 246094000 then (630686) else 0 + else + if k < 253906280 then + if k < 246125000 then + if k < 246100000 then + if k < 246096875 then + if k = 246095000 then (705658) else 0 + else + if k < 246096876 then + if k = 246096875 then (455102) else 0 + else + if k = 246096876 then (37777) else 0 + else + if k < 246109376 then + if k < 246109375 then + if k = 246100000 then (127655) else 0 + else + if k = 246109375 then (1717831) else 0 + else + if k < 246112500 then + if k = 246109376 then (-377821) else 0 + else + if k = 246112500 then (-210027) else 0 + else + if k < 246187500 then + if k < 246171876 then + if k < 246171875 then + if k = 246125000 then (739234) else 0 + else + if k = 246171875 then (270288) else 0 + else + if k < 246175000 then + if k = 246171876 then (127480) else 0 + else + if k = 246175000 then (125128) else 0 + else + if k < 246875000 then + if k < 246250000 then + if k = 246187500 then (-262559) else 0 + else + if k = 246250000 then (131225) else 0 + else + if k < 250000000 then + if k = 246875000 then (1338800) else 0 + else + if k = 250000000 then (1488200) else 0 + else + if k < 265625000 then + if k < 254296876 then + if k < 253907000 then + if k = 253906280 then (301842) else 0 + else + if k < 254296875 then + if k = 253907000 then (318788) else 0 + else + if k = 254296875 then (1418658) else 0 + else + if k < 254312500 then + if k < 254300000 then + if k = 254296876 then (-442446) else 0 + else + if k = 254300000 then (124516) else 0 + else + if k < 254375000 then + if k = 254312500 then (82775) else 0 + else + if k = 254375000 then (79776) else 0 + else + if k < 293359376 then + if k < 292969500 then + if k < 292968780 then + if k = 265625000 then (305305) else 0 + else + if k = 292968780 then (470215) else 0 + else + if k < 293359375 then + if k = 292969500 then (486284) else 0 + else + if k = 293359375 then (2037393) else 0 + else + if k < 293375000 then + if k < 293362500 then + if k = 293359376 then (-607622) else 0 + else + if k = 293362500 then (197247) else 0 + else + if k < 293437500 then + if k = 293375000 then (129317) else 0 + else + if k = 293437500 then (130613) else 0 + else + if k < 1225000000 then + if k < 1220703875 then + if k < 488312500 then + if k < 488281500 then + if k < 488281251 then + if k < 343750000 then + if k = 304687500 then (478133) else 0 + else + if k < 488281250 then + if k = 343750000 then (775732) else 0 + else + if k = 488281250 then (7733193) else 0 + else + if k < 488281260 then + if k < 488281252 then + if k = 488281251 then (-1319551) else 0 + else + if k = 488281252 then (1803902) else 0 + else + if k < 488281300 then + if k = 488281260 then (335978) else 0 + else + if k = 488281300 then (784189) else 0 + else + if k < 488287500 then + if k < 488284375 then + if k < 488282500 then + if k = 488281500 then (340280) else 0 + else + if k = 488282500 then (389139) else 0 + else + if k < 488284376 then + if k = 488284375 then (126242) else 0 + else + if k = 488284376 then (78463) else 0 + else + if k < 488296876 then + if k < 488296875 then + if k = 488287500 then (149877) else 0 + else + if k = 488296875 then (1403322) else 0 + else + if k < 488300000 then + if k = 488296876 then (-364320) else 0 + else + if k = 488300000 then (-120319) else 0 + else + if k < 492187500 then + if k < 488362500 then + if k < 488359375 then + if k = 488312500 then (807044) else 0 + else + if k < 488359376 then + if k = 488359375 then (19621) else 0 + else + if k = 488359376 then (131319) else 0 + else + if k < 488437500 then + if k < 488375000 then + if k = 488362500 then (156420) else 0 + else + if k = 488375000 then (-143279) else 0 + else + if k < 489062500 then + if k = 488437500 then (179660) else 0 + else + if k = 489062500 then (741344) else 0 + else + if k < 734375000 then + if k < 546875000 then + if k < 507812500 then + if k = 492187500 then (876780) else 0 + else + if k = 507812500 then (185908) else 0 + else + if k < 585937500 then + if k = 546875000 then (270806) else 0 + else + if k = 585937500 then (469720) else 0 + else + if k < 1220703155 then + if k < 976562500 then + if k = 734375000 then (523496) else 0 + else + if k = 976562500 then (433053) else 0 + else + if k < 1220703156 then + if k = 1220703155 then (4162390) else 0 + else + if k = 1220703156 then (1964655) else 0 + else + if k < 1221096875 then + if k < 1220782000 then + if k < 1220707000 then + if k < 1220703876 then + if k = 1220703875 then (5911137) else 0 + else + if k < 1220706280 then + if k = 1220703876 then (2789334) else 0 + else + if k = 1220706280 then (318998) else 0 + else + if k < 1220719500 then + if k < 1220718780 then + if k = 1220707000 then (326209) else 0 + else + if k = 1220718780 then (317179) else 0 + else + if k < 1220781280 then + if k = 1220719500 then (326753) else 0 + else + if k = 1220781280 then (317183) else 0 + else + if k < 1221093760 then + if k < 1221093751 then + if k < 1221093750 then + if k = 1220782000 then (777071) else 0 + else + if k = 1221093750 then (11656848) else 0 + else + if k < 1221093752 then + if k = 1221093751 then (-1514923) else 0 + else + if k = 1221093752 then (2735066) else 0 + else + if k < 1221094000 then + if k < 1221093800 then + if k = 1221093760 then (623959) else 0 + else + if k = 1221093800 then (630687) else 0 + else + if k < 1221095000 then + if k = 1221094000 then (1136476) else 0 + else + if k = 1221095000 then (705659) else 0 + else + if k < 1221171875 then + if k < 1221109375 then + if k < 1221096876 then + if k = 1221096875 then (455296) else 0 + else + if k < 1221100000 then + if k = 1221096876 then (37680) else 0 + else + if k = 1221100000 then (127678) else 0 + else + if k < 1221112500 then + if k < 1221109376 then + if k = 1221109375 then (270523) else 0 + else + if k = 1221109376 then (127362) else 0 + else + if k < 1221125000 then + if k = 1221112500 then (125148) else 0 + else + if k = 1221125000 then (131237) else 0 + else + if k < 1221250000 then + if k < 1221175000 then + if k < 1221171876 then + if k = 1221171875 then (1717705) else 0 + else + if k = 1221171876 then (-377759) else 0 + else + if k < 1221187500 then + if k = 1221175000 then (-210023) else 0 + else + if k = 1221187500 then (-262558) else 0 + else + if k < 1222656400 then + if k < 1221875000 then + if k = 1221250000 then (739214) else 0 + else + if k = 1221875000 then (1488164) else 0 + else + if k < 1222656880 then + if k = 1222656400 then (630691) else 0 + else + if k = 1222656880 then (651390) else 0 + else + if k < 1513750000 then + if k < 1271562500 then + if k < 1232500000 then + if k < 1232421875 then + if k < 1230468880 then + if k = 1225000000 then (1338790) else 0 + else + if k < 1230469400 then + if k = 1230468880 then (301842) else 0 + else + if k = 1230469400 then (318788) else 0 + else + if k < 1232425000 then + if k < 1232421876 then + if k = 1232421875 then (1418815) else 0 + else + if k = 1232421876 then (-442523) else 0 + else + if k < 1232437500 then + if k = 1232425000 then (124519) else 0 + else + if k = 1232437500 then (79784) else 0 + else + if k < 1271484375 then + if k < 1269531380 then + if k < 1240625000 then + if k = 1232500000 then (82777) else 0 + else + if k = 1240625000 then (305316) else 0 + else + if k < 1269531900 then + if k = 1269531380 then (470216) else 0 + else + if k = 1269531900 then (486285) else 0 + else + if k < 1271487500 then + if k < 1271484376 then + if k = 1271484375 then (2037568) else 0 + else + if k = 1271484376 then (-607709) else 0 + else + if k < 1271500000 then + if k = 1271487500 then (197239) else 0 + else + if k = 1271500000 then (130616) else 0 + else + if k < 1474609376 then + if k < 1464843900 then + if k < 1279687500 then + if k = 1271562500 then (129312) else 0 + else + if k < 1318750000 then + if k = 1279687500 then (478132) else 0 + else + if k = 1318750000 then (775756) else 0 + else + if k < 1467187500 then + if k < 1464844380 then + if k = 1464843900 then (338068) else 0 + else + if k = 1464844380 then (344016) else 0 + else + if k < 1474609375 then + if k = 1467187500 then (725460) else 0 + else + if k = 1474609375 then (752865) else 0 + else + if k < 1513671875 then + if k < 1474625000 then + if k < 1474612500 then + if k = 1474609376 then (-233311) else 0 + else + if k = 1474612500 then (78020) else 0 + else + if k < 1474687500 then + if k = 1474625000 then (54692) else 0 + else + if k = 1474687500 then (54684) else 0 + else + if k < 1513675000 then + if k < 1513671876 then + if k = 1513671875 then (1065899) else 0 + else + if k = 1513671876 then (-315518) else 0 + else + if k < 1513687500 then + if k = 1513675000 then (105630) else 0 + else + if k = 1513687500 then (68507) else 0 + else + if k < 2441437500 then + if k < 2441406500 then + if k < 2441406251 then + if k < 1709375000 then + if k = 1513750000 then (68496) else 0 + else + if k < 2441406250 then + if k = 1709375000 then (395345) else 0 + else + if k = 2441406250 then (7733555) else 0 + else + if k < 2441406260 then + if k < 2441406252 then + if k = 2441406251 then (-1319691) else 0 + else + if k = 2441406252 then (1803955) else 0 + else + if k < 2441406300 then + if k = 2441406260 then (335974) else 0 + else + if k = 2441406300 then (340281) else 0 + else + if k < 2441412500 then + if k < 2441409375 then + if k < 2441407500 then + if k = 2441406500 then (784192) else 0 + else + if k = 2441407500 then (389138) else 0 + else + if k < 2441409376 then + if k = 2441409375 then (126537) else 0 + else + if k = 2441409376 then (78319) else 0 + else + if k < 2441421876 then + if k < 2441421875 then + if k = 2441412500 then (149893) else 0 + else + if k = 2441421875 then (19998) else 0 + else + if k < 2441425000 then + if k = 2441421876 then (131135) else 0 + else + if k = 2441425000 then (156445) else 0 + else + if k < 2445312500 then + if k < 2441487500 then + if k < 2441484375 then + if k = 2441437500 then (179693) else 0 + else + if k < 2441484376 then + if k = 2441484375 then (1403748) else 0 + else + if k = 2441484376 then (-364529) else 0 + else + if k < 2441562500 then + if k < 2441500000 then + if k = 2441487500 then (-120298) else 0 + else + if k = 2441500000 then (-143251) else 0 + else + if k < 2442187500 then + if k = 2441562500 then (807060) else 0 + else + if k = 2442187500 then (876755) else 0 + else + if k < 2687500000 then + if k < 2500000000 then + if k < 2460937500 then + if k = 2445312500 then (741348) else 0 + else + if k = 2460937500 then (185909) else 0 + else + if k < 2539062500 then + if k = 2500000000 then (270824) else 0 + else + if k = 2539062500 then (469789) else 0 + else + if k < 3662500000 then + if k < 2929687500 then + if k = 2687500000 then (395329) else 0 + else + if k = 2929687500 then (236319) else 0 + else + if k < 4882812500 then + if k = 3662500000 then (523501) else 0 + else + if k = 4882812500 then (433249) else 0 + +/-- Dimensions of the eight exact moment-matrix blocks. -/ +def blockSize : Fin 8 → ℕ + | 0 => 28 + | 1 => 11 + | 2 => 11 + | 3 => 16 + | 4 => 11 + | 5 => 16 + | 6 => 16 + | 7 => 11 + +/-- Pairs of padded variable indices forming each quadratic monomial block. -/ +def basisPair : (c : Fin 8) → Fin (blockSize c) → Fin 15 × Fin 15 + | 0 => ![(0, 0), (0, 1), (0, 6), (0, 7), (0, 8), (1, 6), (1, 7), (1, 8), (2, 2), (3, 3), (4, 4), + (5, 5), (6, 6), (6, 7), (6, 8), (7, 7), (7, 8), (8, 8), (9, 9), (9, 14), (10, 10), (10, 13), + (11, 11), (11, 12), (12, 12), (13, 13), (14, 14), (1, 1)] + | 1 => ![(0, 2), (1, 2), (2, 6), (2, 7), (2, 8), (3, 9), (3, 14), (4, 10), (4, 13), (5, 11), (5, + 12)] + | 2 => ![(0, 3), (1, 3), (2, 9), (2, 14), (3, 6), (3, 7), (3, 8), (4, 11), (4, 12), (5, 10), (5, + 13)] + | 3 => ![(0, 9), (0, 14), (1, 9), (1, 14), (2, 3), (4, 5), (6, 9), (6, 14), (7, 9), (7, 14), (8, + 9), (8, 14), (10, 11), (10, 12), (11, 13), (12, 13)] + | 4 => ![(0, 4), (1, 4), (2, 10), (2, 13), (3, 11), (3, 12), (4, 6), (4, 7), (4, 8), (5, 9), (5, + 14)] + | 5 => ![(0, 10), (0, 13), (1, 10), (1, 13), (2, 4), (3, 5), (6, 10), (6, 13), (7, 10), (7, 13), + (8, 10), (8, 13), (9, 11), (9, 12), (11, 14), (12, 14)] + | 6 => ![(0, 11), (0, 12), (1, 11), (1, 12), (2, 5), (3, 4), (6, 11), (6, 12), (7, 11), (7, 12), + (8, 11), (8, 12), (9, 10), (9, 13), (10, 14), (13, 14)] + | 7 => ![(0, 5), (1, 5), (2, 11), (2, 12), (3, 10), (3, 13), (4, 9), (4, 14), (5, 6), (5, 7), + (5, 8)] + +/-- Integer moment matrices, with the common denominator kept separate. -/ +def blockNumerator : (c : Fin 8) → Fin (blockSize c) → Fin (blockSize c) → ℤ + | 0 => momentBlockFull0Stage0 + | 1 => momentBlock1Stage0 + | 2 => momentBlock2Stage0 + | 3 => momentBlock3Stage0 + | 4 => momentBlock4Stage0 + | 5 => momentBlock5Stage0 + | 6 => momentBlock6Stage0 + | 7 => momentBlock7Stage0 + +theorem blockNumerator_psd (c : Fin 8) : IsPSD (fun i j => (blockNumerator c i j : ℝ)) := by + fin_cases c + · exact momentBlockFull0Stage0_psd + · exact momentBlock1Stage0_psd + · exact momentBlock2Stage0_psd + · exact momentBlock3Stage0_psd + · exact momentBlock4Stage0_psd + · exact momentBlock5Stage0_psd + · exact momentBlock6Stage0_psd + · exact momentBlock7Stage0_psd + +/-- A zero index pads a monomial of degree less than two. -/ +noncomputable def variableExponent (i : Fin 15) : Exponent := + if h : i = 0 then 0 else Finsupp.single ⟨i.val - 1, by + have hi := i.isLt + have hn : i.val ≠ 0 := by simpa using h + omega⟩ 1 + +/-- Base-five key of a variable, with zero representing the constant monomial. -/ +def variableKey (i : Fin 15) : ℕ := if i = 0 then 0 else 5 ^ (i.val - 1) + +/-- Exponent vector of a quadratic monomial in the complete block basis. -/ +noncomputable def momentBasis (b : (c : Fin 8) × Fin (blockSize c)) : Exponent := + variableExponent (basisPair b.1 b.2).1 + variableExponent (basisPair b.1 b.2).2 + +/-- Moment-table key of a quadratic basis monomial. -/ +def basisKey (c : Fin 8) (i : Fin (blockSize c)) : ℕ := + variableKey (basisPair c i).1 + variableKey (basisPair c i).2 + +@[simp] theorem exponentKey_variableExponent (i : Fin 15) : + exponentKey (variableExponent i) = variableKey i := by + simp only [variableExponent, variableKey] + split_ifs <;> simp + +@[simp] theorem exponentKey_momentBasis (b : (c : Fin 8) × Fin (blockSize c)) : + exponentKey (momentBasis b) = basisKey b.1 b.2 := by + simp [momentBasis, basisKey] + +theorem moment_block_0 : ∀ i j : Fin (blockSize 0), + momentNumerator (basisKey 0 i + basisKey 0 j) = blockNumerator 0 i j := by + decide +kernel + +theorem moment_block_1 : ∀ i j : Fin (blockSize 1), + momentNumerator (basisKey 1 i + basisKey 1 j) = blockNumerator 1 i j := by + decide +kernel + +theorem moment_block_2 : ∀ i j : Fin (blockSize 2), + momentNumerator (basisKey 2 i + basisKey 2 j) = blockNumerator 2 i j := by + decide +kernel + +theorem moment_block_3 : ∀ i j : Fin (blockSize 3), + momentNumerator (basisKey 3 i + basisKey 3 j) = blockNumerator 3 i j := by + decide +kernel + +theorem moment_block_4 : ∀ i j : Fin (blockSize 4), + momentNumerator (basisKey 4 i + basisKey 4 j) = blockNumerator 4 i j := by + decide +kernel + +theorem moment_block_5 : ∀ i j : Fin (blockSize 5), + momentNumerator (basisKey 5 i + basisKey 5 j) = blockNumerator 5 i j := by + decide +kernel + +theorem moment_block_6 : ∀ i j : Fin (blockSize 6), + momentNumerator (basisKey 6 i + basisKey 6 j) = blockNumerator 6 i j := by + decide +kernel + +theorem moment_block_7 : ∀ i j : Fin (blockSize 7), + momentNumerator (basisKey 7 i + basisKey 7 j) = blockNumerator 7 i j := by + decide +kernel + +theorem moment_block : ∀ c (i j : Fin (blockSize c)), + momentNumerator (basisKey c i + basisKey c j) = blockNumerator c i j := by + intro c + fin_cases c + · exact moment_block_0 + · exact moment_block_1 + · exact moment_block_2 + · exact moment_block_3 + · exact moment_block_4 + · exact moment_block_5 + · exact moment_block_6 + · exact moment_block_7 + +theorem moment_cross_0 : ∀ d : Fin 8, 0 ≠ d → ∀ (i : Fin (blockSize 0)) (j : Fin (blockSize d)), + momentNumerator (basisKey 0 i + basisKey d j) = 0 := by + decide +kernel + +theorem moment_cross_1 : ∀ d : Fin 8, 1 ≠ d → ∀ (i : Fin (blockSize 1)) (j : Fin (blockSize d)), + momentNumerator (basisKey 1 i + basisKey d j) = 0 := by + decide +kernel + +theorem moment_cross_2 : ∀ d : Fin 8, 2 ≠ d → ∀ (i : Fin (blockSize 2)) (j : Fin (blockSize d)), + momentNumerator (basisKey 2 i + basisKey d j) = 0 := by + decide +kernel + +theorem moment_cross_3 : ∀ d : Fin 8, 3 ≠ d → ∀ (i : Fin (blockSize 3)) (j : Fin (blockSize d)), + momentNumerator (basisKey 3 i + basisKey d j) = 0 := by + decide +kernel + +theorem moment_cross_4 : ∀ d : Fin 8, 4 ≠ d → ∀ (i : Fin (blockSize 4)) (j : Fin (blockSize d)), + momentNumerator (basisKey 4 i + basisKey d j) = 0 := by + decide +kernel + +theorem moment_cross_5 : ∀ d : Fin 8, 5 ≠ d → ∀ (i : Fin (blockSize 5)) (j : Fin (blockSize d)), + momentNumerator (basisKey 5 i + basisKey d j) = 0 := by + decide +kernel + +theorem moment_cross_6 : ∀ d : Fin 8, 6 ≠ d → ∀ (i : Fin (blockSize 6)) (j : Fin (blockSize d)), + momentNumerator (basisKey 6 i + basisKey d j) = 0 := by + decide +kernel + +theorem moment_cross_7 : ∀ d : Fin 8, 7 ≠ d → ∀ (i : Fin (blockSize 7)) (j : Fin (blockSize d)), + momentNumerator (basisKey 7 i + basisKey d j) = 0 := by + decide +kernel + +theorem moment_cross : ∀ c d : Fin 8, c ≠ d → ∀ (i : Fin (blockSize c)) (j : Fin (blockSize d)), + momentNumerator (basisKey c i + basisKey d j) = 0 := by + intro c + fin_cases c + · exact moment_cross_0 + · exact moment_cross_1 + · exact moment_cross_2 + · exact moment_cross_3 + · exact moment_cross_4 + · exact moment_cross_5 + · exact moment_cross_6 + · exact moment_cross_7 + +theorem moment_quadratic_numerator_sum : + (∑ i : Fin 14, momentNumerator (2 * 5 ^ i.val)) = 1000000000 := by + decide +kernel + +theorem moment_quartic_numerator_sum : + (∑ i : Fin 14, ∑ j : Fin 14, momentNumerator (2 * 5 ^ i.val + 2 * 5 ^ j.val)) = + 1000000000 := by + decide +kernel + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/MomentGeneral.lean b/LeanPool/PersistentSOS/MomentGeneral.lean new file mode 100644 index 0000000000..8ef9e07b72 --- /dev/null +++ b/LeanPool/PersistentSOS/MomentGeneral.lean @@ -0,0 +1,90 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.PSD +public import LeanPool.PersistentSOS.Definitions + +/-! +# Linear moment functionals and finite Gram forms + +A single exponent-indexed function supplies every occurrence of a monomial. +-/ + + +@[expose] public section + +namespace PersistentSOS + +open scoped BigOperators + +/-- Exponent vectors of ordinary polynomials in fourteen variables. -/ +abbrev Exponent := Fin 14 →₀ ℕ + +/-- A base - five key used only to index the explicit finite moment table. -/ +def exponentKey (d : Exponent) : ℕ := ∑ i : Fin 14, d i * 5 ^ i.val + +@[simp] theorem exponentKey_zero : exponentKey 0 = 0 := by + simp [exponentKey] + +@[simp] theorem exponentKey_add (d e : Exponent) : + exponentKey (d + e) = exponentKey d + exponentKey e := by + simp [exponentKey, add_mul, Finset.sum_add_distrib] + +@[simp] theorem exponentKey_single (i : Fin 14) (n : ℕ) : + exponentKey (Finsupp.single i n) = n * 5 ^ i.val := by + classical + simp [exponentKey, Finsupp.single_apply, ite_mul] + +/-- Extend any moment table linearly to ordinary real multivariate polynomials. -/ +noncomputable def momentLinearMap (m : ℕ → ℤ) : Poly →ₗ[ℝ] ℝ := + (Finsupp.linearCombination ℝ (fun d : Exponent => (m (exponentKey d) : ℝ) / 1000000000)).comp + (AddMonoidAlgebra.coeffLinearEquiv ℝ).toLinearMap + +@[simp] theorem momentLinearMap_monomial (m : ℕ → ℤ) (d : Exponent) (c : ℝ) : + momentLinearMap m (MvPolynomial.monomial d c) = + c * (m (exponentKey d) : ℝ) / 1000000000 := by + simp [momentLinearMap, LinearMap.comp_apply, MvPolynomial.monomial, + Finsupp.linearCombination_single, smul_eq_mul, + mul_div_assoc] + +/-- A block - diagonal collection of nonnegative quadratic forms is nonnegative. -/ +theorem block_nonneg {κ : Type*} [Fintype κ] (size : κ → ℕ) + (A : (k : κ) → Fin (size k) → Fin (size k) → ℝ) + (hA : ∀ k, IsPSD (A k)) (x : (k : κ) × Fin (size k) → ℝ) : + 0 ≤ ∑ k, quadraticForm (A k) (fun i => x ⟨k, i⟩) := by + exact Finset.sum_nonneg (fun k _ => hA k _) + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/Moments.lean b/LeanPool/PersistentSOS/Moments.lean new file mode 100644 index 0000000000..ef7196ef7a --- /dev/null +++ b/LeanPool/PersistentSOS/Moments.lean @@ -0,0 +1,181 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.MomentData +public import LeanPool.PersistentSOS.MomentBridge +public import LeanPool.PersistentSOS.QuadraticMonomials +public import Mathlib.Tactic.Convert +public import Mathlib.Tactic.NormNum +public import Mathlib.Tactic.Ring + +/-! +# A positive sphere moment functional with strict cubic separation + +The rational moment table is interpreted on ordinary multivariate polynomials. +Positivity follows from the exact finite block certificates and complete +coverage of all monomials of total degree at most two. +-/ + + +@[expose] public section + +namespace PersistentSOS + +open scoped BigOperators + + +/-- Indices of the complete quadratic monomial basis across all eight blocks. -/ +abbrev MomentIndex := (c : Fin 8) × Fin (blockSize c) + +/-- The normalized exact moment functional separating the cubic from its sphere bound. -/ +noncomputable def sphereFunctional : Poly →ₗ[ℝ] ℝ := momentLinearMap momentNumerator + +@[simp] theorem sphereFunctional_monomial (d : Exponent) (c : ℝ) : + sphereFunctional (MvPolynomial.monomial d c) = + c * (momentNumerator (exponentKey d) : ℝ) / 1000000000 := + momentLinearMap_monomial _ _ _ + +theorem basisPair_covers : ∀ i j : Fin 15, ∃ b : MomentIndex, + basisPair b.1 b.2 = (i, j) ∨ basisPair b.1 b.2 = (j, i) := by + decide +kernel + +@[simp] theorem variableExponent_zero : variableExponent 0 = 0 := by + simp [variableExponent] + +@[simp] theorem variableExponent_succ (i : Fin 14) : + variableExponent i.succ = Finsupp.single i 1 := by + simp [variableExponent, Fin.succ_ne_zero] + +theorem momentBasis_zero : ∃ b : MomentIndex, momentBasis b = 0 := by + obtain ⟨b, h | h⟩ := basisPair_covers 0 0 + all_goals exact ⟨b, by simp [momentBasis, h]⟩ + +theorem momentBasis_single (i : Fin 14) : + ∃ b : MomentIndex, momentBasis b = Finsupp.single i 1 := by + obtain ⟨b, h | h⟩ := basisPair_covers 0 i.succ + · exact ⟨b, by simp [momentBasis, h]⟩ + · exact ⟨b, by simp [momentBasis, h]⟩ + +theorem momentBasis_pair (i j : Fin 14) : + ∃ b : MomentIndex, momentBasis b = Finsupp.single i 1 + Finsupp.single j 1 := by + obtain ⟨b, h | h⟩ := basisPair_covers i.succ j.succ + · exact ⟨b, by simp [momentBasis, h]⟩ + · exact ⟨b, by simp [momentBasis, h, add_comm]⟩ + +theorem momentBasis_covers (d : Exponent) (hd : d.sum (fun _ n => n) ≤ 2) : + ∃ b : MomentIndex, momentBasis b = d := by + rcases exponent_degree_le_two d hd with h | ⟨i, h⟩ | ⟨i, j, h⟩ + · simpa [h] using momentBasis_zero + · simpa [h] using momentBasis_single i + · simpa [h] using momentBasis_pair i j + +lemma moment_inner_sum (x : MomentIndex → ℝ) (c : Fin 8) (i : Fin (blockSize c)) : + (∑ d : Fin 8, ∑ j : Fin (blockSize d), x ⟨c, i⟩ * + (momentNumerator (basisKey c i + basisKey d j) : ℝ) * x ⟨d, j⟩) = + ∑ j : Fin (blockSize c), x ⟨c, i⟩ * (blockNumerator c i j : ℝ) * x ⟨c, j⟩ := by + rw [Finset.sum_eq_single c] + · simp only [moment_block] + · intro d _ hdc + simp only [moment_cross c d hdc.symm, Int.cast_zero, mul_zero, zero_mul, Finset.sum_const_zero] + · simp + +lemma moment_gram_nonneg (x : MomentIndex → ℝ) : + 0 ≤ ∑ i, ∑ j, x i * sphereFunctional + (MvPolynomial.monomial (momentBasis i + momentBasis j) 1) * x j := by + simp only [sphereFunctional_monomial, one_mul, exponentKey_add, exponentKey_momentBasis] + have hnum : (∑ i : MomentIndex, ∑ j : MomentIndex, + x i * (momentNumerator (basisKey i.1 i.2 + basisKey j.1 j.2) : ℝ) * x j) = + ∑ c : Fin 8, quadraticForm (fun i j => (blockNumerator c i j : ℝ)) + (fun i => x ⟨c, i⟩) := by + simp only [Fintype.sum_sigma, quadraticForm] + apply Finset.sum_congr rfl + intro c _ + apply Finset.sum_congr rfl + intro i _ + exact moment_inner_sum x c i + have hpos : 0 ≤ ∑ i : MomentIndex, ∑ j : MomentIndex, + x i * (momentNumerator (basisKey i.1 i.2 + basisKey j.1 j.2) : ℝ) * x j := by + rw [hnum] + exact block_nonneg blockSize (fun c i j => (blockNumerator c i j : ℝ)) + blockNumerator_psd x + convert div_nonneg hpos (by norm_num : (0:ℝ) ≤ 1000000000) using 1 + simp only [Finset.sum_div] + apply Finset.sum_congr rfl + intro i _ + apply Finset.sum_congr rfl + intro j _ + ring + +theorem moment_square_nonneg (h : Poly) (hd : h.totalDegree ≤ 2) : + 0 ≤ sphereFunctional (h ^ 2) := + nonneg_quadratic_square_of_momentMatrix momentBasis momentBasis_covers sphereFunctional + moment_gram_nonneg h hd + +theorem moment_one : sphereFunctional 1 = 1 := by + change sphereFunctional (MvPolynomial.monomial 0 1) = 1 + rw [sphereFunctional_monomial, exponentKey_zero] + norm_num [momentNumerator] + +theorem moment_q : sphereFunctional qPoly = 1 := by + simp only [qPoly, map_sum, MvPolynomial.X_pow_eq_monomial, + sphereFunctional_monomial, exponentKey_single, one_mul] + have h : (∑ i : Fin 14, (momentNumerator (2 * 5 ^ i.val) : ℝ)) = 1000000000 := by + exact_mod_cast moment_quadratic_numerator_sum + rw [← Finset.sum_div, h] + norm_num + +theorem moment_q_sq : sphereFunctional (qPoly ^ 2) = 1 := by + rw [pow_two] + simp only [qPoly, Finset.sum_mul, Finset.mul_sum, map_sum, + MvPolynomial.X_pow_eq_monomial, MvPolynomial.monomial_mul_monomial, + sphereFunctional_monomial, exponentKey_add, exponentKey_single, one_mul] + have h : (∑ i : Fin 14, ∑ j : Fin 14, + (momentNumerator (2 * 5 ^ i.val + 2 * 5 ^ j.val) : ℝ)) = 1000000000 := by + exact_mod_cast moment_quartic_numerator_sum + simp only [← Finset.sum_div] + rw [Finset.sum_comm, h] + norm_num + +theorem moment_cubic : sphereFunctional cubicPoly = 500753357629 / 500000000000 := by + have h3 : (3 : Poly) = MvPolynomial.C (3 : ℝ) := + (map_natCast MvPolynomial.C 3).symm + simp only [cubicPoly, map_add, map_sub, MvPolynomial.X_pow_eq_monomial] + simp only [h3, MvPolynomial.X, MvPolynomial.C_mul_monomial, + MvPolynomial.monomial_mul_monomial] + simp only [sphereFunctional_monomial, exponentKey_add, exponentKey_single] + norm_num [momentNumerator] + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/PSD.lean b/LeanPool/PersistentSOS/PSD.lean new file mode 100644 index 0000000000..565a6a3205 --- /dev/null +++ b/LeanPool/PersistentSOS/PSD.lean @@ -0,0 +1,127 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import Mathlib.Basic.Real.Basic +public import Mathlib.Algebra.BigOperators.Fin +public import Mathlib.Algebra.Order.BigOperators.Ring.Finset +public import Mathlib.Data.Fin.VecNotation +public import Mathlib.Tactic.Linarith +public import Mathlib.Tactic.LinearCombination +public import Mathlib.Tactic.NormNum +public import Mathlib.Tactic.Ring + +/-! +# Exact positive semidefinite certificate calculus + +Integer fraction-free Schur certificates are checked by the Lean kernel. +-/ + +@[expose] public section + + +namespace PersistentSOS + +open scoped BigOperators + +/-- The quadratic form of a real matrix. -/ +def quadraticForm {n : ℕ} (A : Fin n → Fin n → ℝ) (x : Fin n → ℝ) : ℝ := + ∑ i, ∑ j, x i * A i j * x j + +/-- Nonnegativity of the quadratic form; symmetry is verified independently. -/ +def IsPSD {n : ℕ} (A : Fin n → Fin n → ℝ) : Prop := + ∀ x, 0 ≤ quadraticForm A x + +lemma quadraticForm_zero (A : Fin 0 → Fin 0 → ℝ) : IsPSD A := by + intro x + simp [quadraticForm] + +/-- One fraction - free Schur step, with an independently checked previous pivot. -/ +lemma schur_step {n : ℕ} (A : Fin (n + 1) → Fin (n + 1) → ℝ) + (B : Fin n → Fin n → ℝ) (p : ℝ) + (hp : 0 < p) (ha : 0 < A 0 0) + (hsym : ∀ i : Fin n, A i.succ 0 = A 0 i.succ) + (hstep : ∀ i j, p * B i j = A 0 0 * A i.succ j.succ - + A i.succ 0 * A 0 j.succ) (hB : IsPSD B) : IsPSD A := by + intro x + let y : Fin n → ℝ := fun i => x i.succ + let v : ℝ := ∑ i : Fin n, A 0 i.succ * y i + have htail : A 0 0 * quadraticForm (fun i j : Fin n => A i.succ j.succ) y = + p * quadraticForm B y + v ^ 2 := by + simp only [quadraticForm, v, pow_two, Finset.mul_sum, Finset.sum_mul] + rw [← Finset.sum_add_distrib] + apply Finset.sum_congr rfl + intro i _ + rw [← Finset.sum_add_distrib] + apply Finset.sum_congr rfl + intro j _ + have h := hstep i j + rw [hsym] at h + linear_combination -(y i * y j) * h + have hleft : (∑ i : Fin n, x 0 * A 0 i.succ * x i.succ) = x 0 * v := by + simp [v, y, Finset.mul_sum, mul_assoc] + have hright : (∑ i : Fin n, x i.succ * A i.succ 0 * x 0) = x 0 * v := by + simp only [v, y, Finset.mul_sum, hsym] + apply Finset.sum_congr rfl + intro i _ + ring + have hfull : quadraticForm A x = A 0 0 * x 0 ^ 2 + 2 * x 0 * v + + quadraticForm (fun i j : Fin n => A i.succ j.succ) y := by + simp only [quadraticForm, Fin.sum_univ_succ, Finset.sum_add_distrib] + rw [hleft, hright] + dsimp [y] + ring + have hnonneg := hB y + have hsquare := sq_nonneg (A 0 0 * x 0 + v) + have hscaled : 0 ≤ A 0 0 * quadraticForm A x := by + rw [hfull] + nlinarith [mul_nonneg hp.le hnonneg] + exact nonneg_of_mul_nonneg_right hscaled ha + +/-- Integer identities suffice for a Schur step over the reals. -/ +lemma integer_schur_step {n : ℕ} (A : Fin (n + 1) → Fin (n + 1) → ℤ) + (B : Fin n → Fin n → ℤ) (p : ℤ) + (hp : 0 < p) (ha : 0 < A 0 0) + (hsym : ∀ i : Fin n, A i.succ 0 = A 0 i.succ) + (hstep : ∀ i j, p * B i j = A 0 0 * A i.succ j.succ - + A i.succ 0 * A 0 j.succ) + (hB : IsPSD (fun i j => (B i j : ℝ))) : + IsPSD (fun i j => (A i j : ℝ)) := by + apply schur_step _ _ (p : ℝ) (by exact_mod_cast hp) (by exact_mod_cast ha) + (fun i => by exact_mod_cast hsym i) _ hB + intro i j + exact_mod_cast hstep i j + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/Polynomial.lean b/LeanPool/PersistentSOS/Polynomial.lean new file mode 100644 index 0000000000..2cf7a3c13c --- /dev/null +++ b/LeanPool/PersistentSOS/Polynomial.lean @@ -0,0 +1,246 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.Definitions +public import LeanPool.PersistentSOS.SOSDegree +public import Mathlib.Algebra.MvPolynomial.PDeriv +public import Mathlib.Tactic.Ring + +/-! +# Polynomial + +Part of the explicit persistent quartic SOS counterexample. +-/ + +@[expose] public section + +namespace PersistentSOS +open MvPolynomial +open scoped BigOperators + +/-- Substitution of a common real scale in every polynomial variable. -/ +noncomputable def scalePoly (r : ℝ) : Poly →ₐ[ℝ] Poly := + MvPolynomial.aeval (fun i => MvPolynomial.C r * MvPolynomial.X i) + +theorem scalePoly_C (r c : ℝ) : scalePoly r (MvPolynomial.C c) = MvPolynomial.C c := by + simp [scalePoly] + +@[simp] theorem scalePoly_X (r : ℝ) (i : Fin 14) : + scalePoly r (MvPolynomial.X i) = MvPolynomial.C r * MvPolynomial.X i := by + simp [scalePoly] + +/-- Common scaling cannot increase total degree. -/ +theorem totalDegree_scalePoly_le (r : ℝ) (p : Poly) : + (scalePoly r p).totalDegree ≤ p.totalDegree := by + classical + nth_rw 1 [p.as_sum] + rw [map_sum] + apply totalDegree_finsetSum_le + intro d hd + apply le_trans ?_ (le_totalDegree hd) + rw [scalePoly, aeval_monomial] + apply (totalDegree_mul _ _).trans + simp only [algebraMap_eq, totalDegree_C, zero_add, Finsupp.prod, Finsupp.sum] + apply (totalDegree_finsetProd _ _).trans + apply Finset.sum_le_sum + intro i hi + apply (totalDegree_pow _ _).trans + have h := totalDegree_mul (MvPolynomial.C r : Poly) (MvPolynomial.X i) + simp only [totalDegree_C, totalDegree_X, zero_add] at h + simpa using Nat.mul_le_mul_left (d i) h + +@[simp] theorem scalePoly_qPoly (r : ℝ) : + scalePoly r qPoly = MvPolynomial.C (r ^ 2) * qPoly := by + simp [qPoly, map_sum, mul_pow, Finset.mul_sum] + +@[simp] theorem scalePoly_cubicPoly (r : ℝ) : + scalePoly r cubicPoly = MvPolynomial.C (r ^ 3) * cubicPoly := by + simp only [cubicPoly, map_add, map_sub, map_mul, map_pow, map_ofNat, scalePoly_X, + scalePoly_C] + ring + +/-- The quartic, quadratic, and cubic terms scale with their literal degrees. -/ +theorem scalePoly_quarticPoly (r σ a b : ℝ) : + scalePoly r (quarticPoly σ a b) = + MvPolynomial.C (σ / 4 * r ^ 4) * qPoly ^ 2 - + MvPolynomial.C (a / 2 * r ^ 2) * qPoly - + MvPolynomial.C (b * r ^ 3) * cubicPoly := by + simp only [quarticPoly, map_sub, map_mul, map_pow, scalePoly_C, + scalePoly_qPoly, scalePoly_cubicPoly] + ring + +/-- Degree of the squared Euclidean norm polynomial. -/ +theorem totalDegree_qPoly_le : qPoly.totalDegree ≤ 2 := by + apply totalDegree_finsetSum_le + intro i hi + simp + +/-- The displayed 25 - term cubic has total degree at most three. -/ +private theorem degree_add_le_three {p q : Poly} (hp : p.totalDegree ≤ 3) + (hq : q.totalDegree ≤ 3) : (p + q).totalDegree ≤ 3 := + (totalDegree_add p q).trans (max_le hp hq) + +private theorem degree_sub_le_three {p q : Poly} (hp : p.totalDegree ≤ 3) + (hq : q.totalDegree ≤ 3) : (p - q).totalDegree ≤ 3 := + (totalDegree_sub p q).trans (max_le hp hq) + +private theorem degree_mul_le {p q : Poly} {m n : ℕ} (hp : p.totalDegree ≤ m) + (hq : q.totalDegree ≤ n) : (p * q).totalDegree ≤ m + n := + (totalDegree_mul p q).trans (Nat.add_le_add hp hq) + +private theorem degree_three_square (i j : Fin 14) : + (3 * MvPolynomial.X i * MvPolynomial.X j ^ 2 : Poly).totalDegree ≤ 3 := by + have hnum : (3 : Poly).totalDegree ≤ 0 := by + rw [← map_ofNat MvPolynomial.C 3, totalDegree_C] + exact degree_mul_le (degree_mul_le hnum (totalDegree_X i).le) + (totalDegree_X_pow j 2).le + +private theorem degree_coefficient_square (c : ℝ) (i j : Fin 14) : + (MvPolynomial.C c * MvPolynomial.X i * MvPolynomial.X j ^ 2).totalDegree ≤ 3 := + degree_mul_le (degree_mul_le (totalDegree_C c).le (totalDegree_X i).le) + (totalDegree_X_pow j 2).le + +private theorem degree_coefficient_product (c : ℝ) (i j k : Fin 14) : + (MvPolynomial.C c * MvPolynomial.X i * MvPolynomial.X j * + MvPolynomial.X k).totalDegree ≤ 3 := + degree_mul_le (degree_mul_le (degree_mul_le (totalDegree_C c).le + (totalDegree_X i).le) (totalDegree_X j).le) (totalDegree_X k).le + +private noncomputable def cubicPart0 : Poly := + MvPolynomial.X 0 ^ 3 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 5 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 6 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 7 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 8 ^ 2 + +private theorem cubicPart0_degree : cubicPart0.totalDegree ≤ 3 := by + unfold cubicPart0 + exact degree_sub_le_three (degree_sub_le_three (degree_sub_le_three (degree_sub_le_three + ((totalDegree_X_pow (0 : Fin 14) 3).le) (degree_three_square 0 5)) (degree_three_square 0 6)) + (degree_three_square 0 7)) (degree_three_square 0 8) + +private noncomputable def cubicPart1 : Poly := + -(3 * MvPolynomial.X 0 * MvPolynomial.X 9 ^ 2) + - 3 * MvPolynomial.X 0 * MvPolynomial.X 10 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 11 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 12 ^ 2 + - 3 * MvPolynomial.X 0 * MvPolynomial.X 13 ^ 2 + +private theorem cubicPart1_degree : cubicPart1.totalDegree ≤ 3 := by + unfold cubicPart1 + exact degree_sub_le_three (degree_sub_le_three (degree_sub_le_three (degree_sub_le_three ((by + simpa only [totalDegree_neg] using degree_three_square 0 9)) (degree_three_square 0 10)) + (degree_three_square 0 11)) (degree_three_square 0 12)) (degree_three_square 0 13) + +private noncomputable def cubicPart2 : Poly := + MvPolynomial.C (3 / 2) * MvPolynomial.X 0 * MvPolynomial.X 1 ^ 2 + + MvPolynomial.C (3 / 2) * MvPolynomial.X 0 * MvPolynomial.X 2 ^ 2 + + MvPolynomial.C (3 / 2) * MvPolynomial.X 0 * MvPolynomial.X 3 ^ 2 + + MvPolynomial.C (3 / 2) * MvPolynomial.X 0 * MvPolynomial.X 4 ^ 2 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 5 * MvPolynomial.X 1 ^ 2 + +private theorem cubicPart2_degree : cubicPart2.totalDegree ≤ 3 := by + unfold cubicPart2 + exact degree_add_le_three (degree_add_le_three (degree_add_le_three (degree_add_le_three + (degree_coefficient_square (3 / 2) 0 1) (degree_coefficient_square (3 / 2) 0 2)) + (degree_coefficient_square (3 / 2) 0 3)) (degree_coefficient_square (3 / 2) 0 4)) + (degree_coefficient_square (259 / 100) 5 1) + +private noncomputable def cubicPart3 : Poly := + MvPolynomial.C (259 / 100) * MvPolynomial.X 6 * MvPolynomial.X 2 ^ 2 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 7 * MvPolynomial.X 3 ^ 2 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 8 * MvPolynomial.X 1 * MvPolynomial.X 2 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 8 * MvPolynomial.X 3 * MvPolynomial.X 4 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 9 * MvPolynomial.X 1 * MvPolynomial.X 3 + +private theorem cubicPart3_degree : cubicPart3.totalDegree ≤ 3 := by + unfold cubicPart3 + exact degree_add_le_three (degree_add_le_three (degree_add_le_three (degree_add_le_three + (degree_coefficient_square (259 / 100) 6 2) (degree_coefficient_square (259 / 100) 7 3)) + (degree_coefficient_product (259 / 100) 8 1 2)) (degree_coefficient_product (259 / 100) 8 3 + 4)) (degree_coefficient_product (259 / 100) 9 1 3) + +private noncomputable def cubicPart4 : Poly := + MvPolynomial.C (259 / 100) * MvPolynomial.X 9 * MvPolynomial.X 2 * MvPolynomial.X 4 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 10 * MvPolynomial.X 2 * MvPolynomial.X 3 + + MvPolynomial.C (1813 / 500) * MvPolynomial.X 11 * MvPolynomial.X 1 * MvPolynomial.X 4 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 12 * MvPolynomial.X 2 * MvPolynomial.X 4 + + MvPolynomial.C (259 / 100) * MvPolynomial.X 13 * MvPolynomial.X 3 * MvPolynomial.X 4 + +private theorem cubicPart4_degree : cubicPart4.totalDegree ≤ 3 := by + unfold cubicPart4 + exact degree_add_le_three (degree_add_le_three (degree_add_le_three (degree_add_le_three + (degree_coefficient_product (259 / 100) 9 2 4) (degree_coefficient_product (259 / 100) 10 2 + 3)) (degree_coefficient_product (1813 / 500) 11 1 4)) (degree_coefficient_product (259 / 100) + 12 2 4)) (degree_coefficient_product (259 / 100) 13 3 4) + +private theorem cubicPoly_parts : + cubicPoly = cubicPart0 + cubicPart1 + cubicPart2 + cubicPart3 + cubicPart4 := by + unfold cubicPoly cubicPart0 cubicPart1 cubicPart2 cubicPart3 cubicPart4 + ring + +/-- The cubic has degree at most three, using separately checked sparse components. -/ +theorem totalDegree_cubicPoly_le : cubicPoly.totalDegree ≤ 3 := by + rw [cubicPoly_parts] + exact degree_add_le_three + (degree_add_le_three + (degree_add_le_three (degree_add_le_three cubicPart0_degree cubicPart1_degree) + cubicPart2_degree) cubicPart3_degree) cubicPart4_degree + +/-- The objective is a quartic polynomial for all parameter values. -/ +theorem totalDegree_quarticPoly_le (σ a b : ℝ) : (quarticPoly σ a b).totalDegree ≤ 4 := by + unfold quarticPoly + apply (totalDegree_sub _ _).trans + apply max_le + · apply (totalDegree_sub _ _).trans + apply max_le + · apply (totalDegree_mul _ _).trans + simp only [totalDegree_C, zero_add] + exact (totalDegree_pow _ _).trans (by have := totalDegree_qPoly_le; omega) + · apply (totalDegree_mul _ _).trans + simp only [totalDegree_C, zero_add] + exact totalDegree_qPoly_le.trans (by decide) + · apply (totalDegree_mul _ _).trans + simp only [totalDegree_C, zero_add] + exact totalDegree_cubicPoly_le.trans (by decide) + + +/-- Subtracting a real lower bound preserves the quartic degree bound. -/ +theorem totalDegree_shiftedQuartic_le (σ a b γ : ℝ) : + (quarticPoly σ a b - MvPolynomial.C γ).totalDegree ≤ 4 := by + exact (totalDegree_sub _ _).trans (max_le (totalDegree_quarticPoly_le σ a b) (by simp)) + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/QuadraticMonomials.lean b/LeanPool/PersistentSOS/QuadraticMonomials.lean new file mode 100644 index 0000000000..2b5251ab38 --- /dev/null +++ b/LeanPool/PersistentSOS/QuadraticMonomials.lean @@ -0,0 +1,74 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import Mathlib.Data.Finsupp.Multiset +public import Mathlib.Tactic.IntervalCases + +/-! +# Quadratic Monomials + +Part of the explicit persistent quartic SOS counterexample. +-/ + +public section +namespace PersistentSOS + +/-- Every monomial of total degree at most two is constant, a variable, +or a product of two variables (allowing a repeated variable). -/ +theorem exponent_degree_le_two {σ : Type*} (d : σ →₀ ℕ) + (h : d.sum (fun _ n => n) ≤ 2) : + d = 0 ∨ (∃ i, d = Finsupp.single i 1) ∨ + (∃ i j, d = Finsupp.single i 1 + Finsupp.single j 1) := by + classical + have hc : d.toMultiset.card ≤ 2 := by simpa only [Finsupp.card_toMultiset, Function.id_def] + using h + interval_cases hcard : d.toMultiset.card + · left + have hm : d.toMultiset = 0 := Multiset.card_eq_zero.mp hcard + have := congrArg Multiset.toFinsupp hm + simpa using this + · right; left + obtain ⟨i, hi⟩ := Multiset.card_eq_one.mp hcard + refine ⟨i, ?_⟩ + have := congrArg Multiset.toFinsupp hi + simpa using this + · right; right + obtain ⟨i, j, hij⟩ := Multiset.card_eq_two.mp hcard + refine ⟨i, j, ?_⟩ + have := congrArg Multiset.toFinsupp hij + simpa [← Multiset.singleton_add, map_add] using this + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/Radial.lean b/LeanPool/PersistentSOS/Radial.lean new file mode 100644 index 0000000000..40c5f7a5f4 --- /dev/null +++ b/LeanPool/PersistentSOS/Radial.lean @@ -0,0 +1,115 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.Definitions +public import Mathlib.Tactic.FieldSimp +public import Mathlib.Tactic.Linarith +public import Mathlib.Tactic.LinearCombination +public import Mathlib.Tactic.Positivity +public import Mathlib.Tactic.Ring + +/-! +# Radial + +Part of the explicit persistent quartic SOS counterexample. +-/ + +@[expose] public section + +namespace PersistentSOS + +/-- The one - variable radial lower envelope. -/ +noncomputable def radialValue (σ a b r : ℝ) : ℝ := σ / 4 * r ^ 4 - b * r ^ 3 - a / 2 * r ^ 2 + +theorem minimizingRadius_pos {σ a b : ℝ} (hσ : 0 < σ) (ha : 0 < a) (hb : 0 < b) : + 0 < minimizingRadius σ a b := by + unfold minimizingRadius + positivity + +theorem minimizingRadius_equation {σ a b : ℝ} (hσ : 0 < σ) (ha : 0 < a) : + σ * minimizingRadius σ a b ^ 2 = 3 * b * minimizingRadius σ a b + a := by + have hd : 0 ≤ 9 * b ^ 2 + 4 * a * σ := by positivity + have hs := Real.sq_sqrt hd + unfold minimizingRadius + field_simp + ring_nf at hs ⊢ + nlinarith + +theorem radial_at_minimizingRadius {σ a b : ℝ} (hσ : 0 < σ) (ha : 0 < a) : + radialValue σ a b (minimizingRadius σ a b) = minimumValue σ a b := by + have he := minimizingRadius_equation (b := b) hσ ha + unfold radialValue minimumValue + linear_combination (minimizingRadius σ a b) ^ 2 / 4 * he + +theorem radial_factorization {σ a b r s : ℝ} (he : σ * r ^ 2 = 3 * b * r + a) : + radialValue σ a b s + (b * r ^ 3 + a * r ^ 2) / 4 = + (s - r) ^ 2 * (σ * s ^ 2 + (2 * σ * r - 4 * b) * s + b * r + a) / 4 := by + unfold radialValue + linear_combination (3 * s ^ 2 - 2 * r * s) / 4 * he + +theorem radial_global_minimum {σ a b : ℝ} (hσ : 0 < σ) (ha : 0 < a) + (hb : 0 < b) {s : ℝ} (hs : 0 ≤ s) : + minimumValue σ a b ≤ radialValue σ a b s := by + set r := minimizingRadius σ a b with hrdef + have hr : 0 < r := minimizingRadius_pos hσ ha hb + have he : σ * r ^ 2 = 3 * b * r + a := minimizingRadius_equation hσ ha + have hcoef : 0 < 2 * σ * r - 4 * b := by nlinarith + have hbr : 0 ≤ σ * s ^ 2 + (2 * σ * r - 4 * b) * s + b * r + a := by positivity + have hprod := mul_nonneg (sq_nonneg (s - r)) hbr + have hf := radial_factorization (s := s) he + change -(b * r ^ 3 + a * r ^ 2) / 4 ≤ _ + linarith + +/-- The radial minimizer is unique among nonnegative radii. -/ +theorem radial_minimum_eq_iff {σ a b : ℝ} (hσ : 0 < σ) (ha : 0 < a) + (hb : 0 < b) {s : ℝ} (hs : 0 ≤ s) : + radialValue σ a b s = minimumValue σ a b ↔ s = minimizingRadius σ a b := by + set r := minimizingRadius σ a b with hrdef + have hr : 0 < r := minimizingRadius_pos hσ ha hb + have he : σ * r ^ 2 = 3 * b * r + a := minimizingRadius_equation hσ ha + have hcoef : 0 < 2 * σ * r - 4 * b := by nlinarith + have hbr : 0 < σ * s ^ 2 + (2 * σ * r - 4 * b) * s + b * r + a := by positivity + constructor + · intro h + have hf := radial_factorization (s := s) he + change radialValue σ a b s = -(b * r ^ 3 + a * r ^ 2) / 4 at h + have hz : (s - r) ^ 2 * (σ * s ^ 2 + (2 * σ * r - 4 * b) * s + b * r + a) = 0 := by linarith + have hsq := (mul_eq_zero.mp hz).resolve_right (ne_of_gt hbr) + nlinarith [sq_nonneg (s - r)] + · rintro rfl + exact radial_at_minimizingRadius hσ ha + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/SOSDegree.lean b/LeanPool/PersistentSOS/SOSDegree.lean new file mode 100644 index 0000000000..37109f2c81 --- /dev/null +++ b/LeanPool/PersistentSOS/SOSDegree.lean @@ -0,0 +1,143 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import Mathlib.RingTheory.MvPolynomial.MonomialOrder.DegLex +public import Mathlib.Algebra.MvPolynomial.NoZeroDivisors +public import Mathlib.Basic.Real.Basic + +/-! # Degree bounds for ordinary sums of squares + +A finite sum of squares of real polynomials cannot cancel its highest +terms. Consequently, every summand of an SOS polynomial of degree at most +`2 * d` has degree at most `d`. The SOS representations in this result +are unrestricted ordinary polynomial representations. +-/ + + +public section + +namespace PersistentSOS + +open MvPolynomial +open scoped BigOperators MonomialOrder + +private theorem degree_add_of_nonneg_leadingCoeff {σ : Type*} + (m : MonomialOrder σ) (f g : MvPolynomial σ ℝ) + (hf : 0 ≤ m.leadingCoeff f) (hg : 0 ≤ m.leadingCoeff g) : + m.toSyn (m.degree (f + g)) = + m.toSyn (m.degree f) ⊔ m.toSyn (m.degree g) ∧ + 0 ≤ m.leadingCoeff (f + g) := by + rcases lt_trichotomy (m.toSyn (m.degree f)) (m.toSyn (m.degree g)) with h | h | h + · constructor + · rw [m.degree_add_eq_right_of_lt h, sup_eq_right.mpr h.le] + · rw [add_comm, m.leadingCoeff_add_of_lt h] + exact hg + · have heq : m.degree f = m.degree g := m.toSyn.injective h + by_cases hf0 : f = 0 + · simp_all + have hpos : 0 < m.leadingCoeff f := + lt_of_le_of_ne hf (Ne.symm (m.leadingCoeff_ne_zero_iff.mpr hf0)) + have hcoeff : (f + g).coeff (m.degree f) ≠ 0 := by + rw [AddMonoidAlgebra.coeff_add, Finsupp.add_apply] + simpa only [MonomialOrder.leadingCoeff, heq] using + ne_of_gt (add_pos_of_pos_of_nonneg hpos hg) + have hd : m.degree (f + g) = m.degree f := by + apply m.toSyn.injective + apply le_antisymm + · exact m.degree_add_le.trans (by simp [h]) + · exact m.le_degree (mem_support_iff.mpr hcoeff) + constructor + · simp [hd, h] + · rw [MonomialOrder.leadingCoeff, hd, AddMonoidAlgebra.coeff_add, Finsupp.add_apply] + simpa only [MonomialOrder.leadingCoeff, heq] using add_nonneg hf hg + · constructor + · rw [m.degree_add_of_lt h, sup_eq_left.mpr h.le] + · rw [m.leadingCoeff_add_of_lt h] + exact hf + +private theorem degree_sum_of_nonneg_leadingCoeff {σ ι : Type*} + (m : MonomialOrder σ) (s : Finset ι) (f : ι → MvPolynomial σ ℝ) + (hf : ∀ i ∈ s, 0 ≤ m.leadingCoeff (f i)) : + m.toSyn (m.degree (∑ i ∈ s, f i)) = s.sup (fun i => m.toSyn (m.degree (f i))) ∧ + 0 ≤ m.leadingCoeff (∑ i ∈ s, f i) := by + classical + induction s using Finset.induction_on with + | empty => simp + | @insert i s hi ih => + have his := ih (fun j hj => hf j (Finset.mem_insert_of_mem hj)) + have hadd := degree_add_of_nonneg_leadingCoeff m (f i) (∑ j ∈ s, f j) + (hf i (Finset.mem_insert_self i s)) his.2 + simpa [Finset.sum_insert hi, Finset.sup_insert, his.1] using hadd + +/-- Each square in an ordinary finite sum of squares has total degree no +larger than the sum. This includes representations with arbitrary - degree +polynomial summands. -/ +theorem totalDegree_sq_le_sum_sq {σ ι : Type*} [LinearOrder σ] [WellFoundedGT σ] + (s : Finset ι) (f : ι → MvPolynomial σ ℝ) {i : ι} (hi : i ∈ s) : + (f i ^ 2).totalDegree ≤ (∑ j ∈ s, f j ^ 2).totalDegree := by + classical + have hsum := degree_sum_of_nonneg_leadingCoeff MonomialOrder.degLex s + (fun j => f j ^ 2) (by + intro j hj + rw [MonomialOrder.leadingCoeff_pow] + exact sq_nonneg _) + apply degLex_totalDegree_monotone + rw [hsum.1] + exact Finset.le_sup (f := fun j => MonomialOrder.degLex.toSyn (MonomialOrder.degLex.degree (f j + ^ 2))) hi + +/-- Ordinary SOS degree bridge, valid for every even total - degree bound. -/ +theorem totalDegree_le_of_sum_sq {σ ι : Type*} [LinearOrder σ] [WellFoundedGT σ] + (s : Finset ι) (f : ι → MvPolynomial σ ℝ) (d : ℕ) + (h : (∑ j ∈ s, f j ^ 2).totalDegree ≤ 2 * d) {i : ι} (hi : i ∈ s) : + (f i).totalDegree ≤ d := by + by_cases hi0 : f i = 0 + · simp [hi0] + have hsq := (totalDegree_sq_le_sum_sq s f hi).trans h + rw [pow_two, totalDegree_mul_of_isDomain hi0 hi0] at hsq + omega + +/-- In particular, every summand in any ordinary quartic SOS +representation is a polynomial of total degree at most two. -/ +theorem quartic_sos_summand_degree {σ : Type*} [LinearOrder σ] [WellFoundedGT σ] + {p : MvPolynomial σ ℝ} (hp : p.totalDegree ≤ 4) + {m : ℕ} {f : Fin m → MvPolynomial σ ℝ} (h : p = ∑ i, f i ^ 2) (i : Fin m) : + (f i).totalDegree ≤ 2 := by + apply totalDegree_le_of_sum_sq Finset.univ f 2 + · simpa [← h] using hp + · exact Finset.mem_univ i + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/Sphere.lean b/LeanPool/PersistentSOS/Sphere.lean new file mode 100644 index 0000000000..b0eeb63faf --- /dev/null +++ b/LeanPool/PersistentSOS/Sphere.lean @@ -0,0 +1,357 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.Definitions +public import Mathlib.Tactic.Convert +public import Mathlib.Tactic.FieldSimp +public import Mathlib.Tactic.Linarith +public import Mathlib.Tactic.NormNum +public import Mathlib.Tactic.Positivity +public import Mathlib.Tactic.Ring + +/-! +# Sphere + +Part of the explicit persistent quartic SOS counterexample. +-/ + +@[expose] public section + +namespace PersistentSOS + +theorem Q_nonneg (z : Fin 14 → ℝ) : 0 ≤ Q z := by + rw [Q_eq_sum] + exact Finset.sum_nonneg fun i _ => sq_nonneg (z i) + +theorem radius_nonneg (z : Fin 14 → ℝ) : 0 ≤ radius z := Real.sqrt_nonneg _ + +theorem radius_sq (z : Fin 14 → ℝ) : radius z ^ 2 = Q z := + Real.sq_sqrt (Q_nonneg z) + +theorem Q_eq_norm_sq (z : Fin 14 → ℝ) : + Q z = ‖(WithLp.toLp 2 z : EuclideanSpace ℝ (Fin 14))‖ ^ 2 := by + simp [Q_eq_sum, PiLp.norm_sq_eq_of_L2, Real.norm_eq_abs, sq_abs] + +theorem radius_eq_norm (z : Fin 14 → ℝ) : + radius z = ‖(WithLp.toLp 2 z : EuclideanSpace ℝ (Fin 14))‖ := by + rw [radius, Q_eq_norm_sq, Real.sqrt_sq (norm_nonneg _)] + +/-- Squared norm of the four coordinates used by the quadratic map. -/ +noncomputable def xSq (z : Fin 14 → ℝ) : ℝ := + z 1 ^ 2 + z 2 ^ 2 + z 3 ^ 2 + z 4 ^ 2 + +/-- Squared norm of the nine coordinates paired with the quadratic map. -/ +noncomputable def ySq (z : Fin 14 → ℝ) : ℝ := + z 5 ^ 2 + z 6 ^ 2 + z 7 ^ 2 + z 8 ^ 2 + z 9 ^ 2 + z 10 ^ 2 + + z 11 ^ 2 + z 12 ^ 2 + z 13 ^ 2 + +/-- The nine-component rational quadratic map appearing in the cubic. -/ +noncomputable def quadMap (z : Fin 14 → ℝ) : Fin 9 → ℝ := + ![z 1 ^ 2, z 2 ^ 2, z 3 ^ 2, z 1 * z 2 + z 3 * z 4, + z 1 * z 3 + z 2 * z 4, z 2 * z 3, 7 / 5 * z 1 * z 4, + z 2 * z 4, z 3 * z 4] + +/-- The nine coordinates paired with the quadratic map. -/ +noncomputable def yVec (z : Fin 14 → ℝ) : Fin 9 → ℝ := + ![z 5, z 6, z 7, z 8, z 9, z 10, z 11, z 12, z 13] + +/-- Pairing of the nine-coordinate vector with the quadratic map. -/ +noncomputable def dotTerm (z : Fin 14 → ℝ) : ℝ := ∑ i, yVec z i * quadMap z i + +theorem xSq_nonneg (z : Fin 14 → ℝ) : 0 ≤ xSq z := by unfold xSq; positivity +theorem ySq_nonneg (z : Fin 14 → ℝ) : 0 ≤ ySq z := by unfold ySq; positivity + +theorem Q_decomp (z : Fin 14 → ℝ) : Q z = z 0 ^ 2 + xSq z + ySq z := by + simp [Q_eq_sum, Fin.sum_univ_succ, xSq, ySq] + ring + +theorem C_decomp (z : Fin 14 → ℝ) : + C z = z 0 ^ 3 - 3 * z 0 * ySq z + 3 / 2 * z 0 * xSq z + + 259 / 100 * dotTerm z := by + simp [C, cubicPoly, dotTerm, quadMap, yVec, Fin.sum_univ_succ, xSq, ySq] + ring + +theorem choiLam_nonneg (a b c d : ℝ) : + 0 ≤ a ^ 2 * b ^ 2 + a ^ 2 * c ^ 2 + b ^ 2 * c ^ 2 + d ^ 4 - 4 * a * b * c * d := by + by_cases h : 0 ≤ b * c + · nlinarith [sq_nonneg (a * b - a * c), sq_nonneg (b * c - d ^ 2), + mul_nonneg h (sq_nonneg (a - d))] + · have hn : 0 ≤ -(b * c) := le_of_lt (neg_pos.mpr (lt_of_not_ge h)) + nlinarith [sq_nonneg (a * b + a * c), sq_nonneg (b * c + d ^ 2), + mul_nonneg hn (sq_nonneg (a + d))] + +theorem quadMap_contraction (z : Fin 14 → ℝ) : + (∑ i, quadMap z i ^ 2) ≤ xSq z ^ 2 := by + have h := choiLam_nonneg (z 1) (z 2) (z 3) (z 4) + simp [quadMap, xSq, Fin.sum_univ_succ] + nlinarith [sq_nonneg (z 1 * z 4)] + +theorem dotTerm_bound (z : Fin 14 → ℝ) : dotTerm z ≤ Real.sqrt (ySq z) * xSq z := by + have hcs := Finset.sum_mul_sq_le_sq_mul_sq Finset.univ (yVec z) (quadMap z) + have hy : (∑ i, yVec z i ^ 2) = ySq z := by + simp [yVec, ySq, Fin.sum_univ_succ]; ring + have hm := mul_le_mul_of_nonneg_left (quadMap_contraction z) (ySq_nonneg z) + rw [hy] at hcs + have hs := Real.sq_sqrt (ySq_nonneg z) + have hx := xSq_nonneg z + have hy' := Real.sqrt_nonneg (ySq z) + change dotTerm z ^ 2 ≤ _ at hcs + have hprod : 0 ≤ Real.sqrt (ySq z) * xSq z := mul_nonneg hy' hx + nlinarith [sq_nonneg (dotTerm z - Real.sqrt (ySq z) * xSq z)] + +theorem cubic_unit_refined_upper (z : Fin 14 → ℝ) (hQ : Q z = 1) : + C z + (3 / 2 * Real.sqrt 3 - 259 / 100) * (Real.sqrt (ySq z) * xSq z) ≤ 1 := by + let Y := Real.sqrt (ySq z) + let s := Real.sqrt 3 + let t := z 0 + let v := (t + s * Y) / 2 + have hY : 0 ≤ Y := Real.sqrt_nonneg _ + have hY2 : Y ^ 2 = ySq z := Real.sq_sqrt (ySq_nonneg z) + have hs : 0 ≤ s := Real.sqrt_nonneg _ + have hs2 : s ^ 2 = 3 := Real.sq_sqrt (by norm_num) + have hs3 : s ^ 3 = 3 * s := by calc + s ^ 3 = s ^ 2 * s := by ring + _ = 3 * s := by rw [hs2] + have hx := xSq_nonneg z + have hsplit : t ^ 2 + xSq z + Y ^ 2 = 1 := by + simpa only [t, hY2, ← Q_decomp] using hQ + have hk : (259 / 100 : ℝ) ≤ 3 / 2 * s := by nlinarith + have hupper : C z + (3 / 2 * s - 259 / 100) * (Y * xSq z) ≤ + t ^ 3 - 3 * t * Y ^ 2 + 3 / 2 * (t + s * Y) * xSq z := by + have hd := dotTerm_bound z + have hm := mul_nonneg (sub_nonneg.mpr hk) (mul_nonneg hY hx) + rw [C_decomp, ← hY2] + change dotTerm z ≤ Y * xSq z at hd + dsimp [t] + nlinarith [hd] + have hcs : (t + s * Y) ^ 2 + (s * t - Y) ^ 2 = 4 * (t ^ 2 + Y ^ 2) := by + calc + _ = (1 + s ^ 2) * (t ^ 2 + Y ^ 2) := by ring + _ = _ := by rw [hs2]; ring + have hv : -1 ≤ v := by + dsimp [v] + nlinarith [sq_nonneg (s * t - Y)] + have hid : t ^ 3 - 3 * t * Y ^ 2 + 3 / 2 * (t + s * Y) * xSq z + = 3 * v - 4 * v ^ 3 := by + have heq : xSq z = 1 - t ^ 2 - Y ^ 2 := by linarith + rw [heq] + dsimp [v] + ring_nf + rw [hs2, hs3] + ring + have hf : 0 ≤ (v + 1) * (2 * v - 1) ^ 2 := + mul_nonneg (by linarith) (sq_nonneg _) + rw [hid] at hupper + change C z + (3 / 2 * s - 259 / 100) * (Y * xSq z) ≤ 1 + nlinarith + +theorem coefficient_strict : (259 / 100 : ℝ) < 3 / 2 * Real.sqrt 3 := by + have hs := Real.sqrt_nonneg (3 : ℝ) + have hs2 : Real.sqrt (3 : ℝ) ^ 2 = 3 := Real.sq_sqrt (by norm_num) + nlinarith + +theorem cubic_unit_upper (z : Fin 14 → ℝ) (hQ : Q z = 1) : C z ≤ 1 := by + have h := cubic_unit_refined_upper z hQ + have hp := mul_nonneg (sub_nonneg.mpr (le_of_lt coefficient_strict)) + (mul_nonneg (Real.sqrt_nonneg (ySq z)) (xSq_nonneg z)) + linarith + +theorem C_scale (z : Fin 14 → ℝ) (r : ℝ) : + C (fun i => r * z i) = r ^ 3 * C z := by + simp [C, cubicPoly] + ring + +theorem Q_scale (z : Fin 14 → ℝ) (r : ℝ) : + Q (fun i => r * z i) = r ^ 2 * Q z := by + simp only [Q_eq_sum, mul_pow, ← Finset.mul_sum] + +theorem C_neg (z : Fin 14 → ℝ) : C (fun i => -z i) = -C z := by + convert C_scale z (-1) using 1 <;> norm_num + +theorem cubic_unit_abs (z : Fin 14 → ℝ) (hQ : Q z = 1) : |C z| ≤ 1 := by + have hu := cubic_unit_upper z hQ + have hQn : Q (fun i => -z i) = 1 := by + simpa using (Q_scale z (-1)).trans (by simpa using hQ) + have hl := cubic_unit_upper (fun i => -z i) hQn + rw [C_neg] at hl + exact abs_le.mpr ⟨by linarith, hu⟩ + +theorem Q_eq_zero_iff (z : Fin 14 → ℝ) : Q z = 0 ↔ z = 0 := by + rw [Q_eq_norm_sq, sq_eq_zero_iff, norm_eq_zero] + exact WithLp.toLp_eq_zero 2 + +theorem cubic_abs_le (z : Fin 14 → ℝ) : |C z| ≤ radius z ^ 3 := by + by_cases hz : Q z = 0 + · have heq := (Q_eq_zero_iff z).mp hz + subst z + simp [C, cubicPoly, radius, Q_eq_sum] + · have hr : 0 < radius z := Real.sqrt_pos.mpr (lt_of_le_of_ne (Q_nonneg z) (Ne.symm hz)) + have hr0 : radius z ≠ 0 := ne_of_gt hr + have hn : Q (fun i => (radius z)⁻¹ * z i) = 1 := by + rw [Q_scale, ← radius_sq] + field_simp + have hu := cubic_unit_abs (fun i => (radius z)⁻¹ * z i) hn + rw [C_scale, abs_mul, abs_of_nonneg (by positivity : 0 ≤ ((radius z)⁻¹) ^ 3)] at hu + have hh := mul_le_mul_of_nonneg_left hu (le_of_lt (pow_pos hr 3)) + have hi : radius z ^ 3 * ((radius z)⁻¹ ^ 3 * |C z|) = |C z| := by + field_simp + rw [hi] at hh + simpa using hh + +theorem Q_axis (r : ℝ) : Q (axis r) = r ^ 2 := by + simp [Q_eq_sum, axis] + +@[simp] theorem C_axis (r : ℝ) : C (axis r) = r ^ 3 := by + norm_num [C, cubicPoly, axis] + +theorem unit_sphere_attainment : Q (axis 1) = 1 ∧ C (axis 1) = 1 := by + rw [Q_axis, C_axis] + norm_num + +theorem dotTerm_sq_le (z : Fin 14 → ℝ) : dotTerm z ^ 2 ≤ ySq z * xSq z ^ 2 := by + have hcs := Finset.sum_mul_sq_le_sq_mul_sq Finset.univ (yVec z) (quadMap z) + have hy : (∑ i, yVec z i ^ 2) = ySq z := by + simp [yVec, ySq, Fin.sum_univ_succ]; ring + rw [hy] at hcs + exact le_trans hcs (mul_le_mul_of_nonneg_left (quadMap_contraction z) (ySq_nonneg z)) + +theorem dotTerm_zero_of_xSq_zero (z : Fin 14 → ℝ) (h : xSq z = 0) : dotTerm z = 0 := by + have hd := dotTerm_sq_le z + rw [h] at hd + nlinarith [sq_nonneg (dotTerm z)] + +theorem dotTerm_zero_of_ySq_zero (z : Fin 14 → ℝ) (h : ySq z = 0) : dotTerm z = 0 := by + have hd := dotTerm_sq_le z + rw [h] at hd + nlinarith [sq_nonneg (dotTerm z)] + +/-- Exact equality classification on the unit sphere. The four `x` coordinates vanish; + the first coordinate is either `1` or `-1 / 2`. The sphere equation then determines + the squared length of the nine `y` coordinates as `0` or `3 / 4`, respectively. -/ +theorem cubic_unit_maximizers (z : Fin 14 → ℝ) (hQ : Q z = 1) : + C z = 1 ↔ xSq z = 0 ∧ (z 0 = 1 ∨ z 0 = -1 / 2) := by + constructor + · intro hC + have hu := cubic_unit_refined_upper z hQ + have hd : 0 < 3 / 2 * Real.sqrt 3 - 259 / 100 := sub_pos.mpr coefficient_strict + have hprod : Real.sqrt (ySq z) * xSq z = 0 := by + have hn := mul_nonneg (Real.sqrt_nonneg (ySq z)) (xSq_nonneg z) + rw [hC] at hu + nlinarith + rcases mul_eq_zero.mp hprod with hy | hx + · have hy0 : ySq z = 0 := by + have hs := Real.sq_sqrt (ySq_nonneg z) + rw [hy] at hs + simpa using hs.symm + have hdot := dotTerm_zero_of_ySq_zero z hy0 + have hsplit := Q_decomp z + rw [hQ, hy0] at hsplit + have hxs : xSq z = 1 - z 0 ^ 2 := by linarith + have hc := C_decomp z + rw [hC, hy0, hdot, hxs] at hc + have hf : (z 0 - 1) ^ 2 * (z 0 + 2) = 0 := by nlinarith [hc] + have ht : -1 ≤ z 0 := by nlinarith [xSq_nonneg z] + have ht2 : z 0 + 2 ≠ 0 := by linarith + have ht1 : z 0 = 1 := by + have hh := (mul_eq_zero.mp hf).resolve_right ht2 + nlinarith [sq_nonneg (z 0 - 1)] + exact ⟨by rw [hxs, ht1]; norm_num, Or.inl ht1⟩ + · refine ⟨hx, ?_⟩ + have hdot := dotTerm_zero_of_xSq_zero z hx + have hsplit := Q_decomp z + rw [hQ, hx] at hsplit + have hys : ySq z = 1 - z 0 ^ 2 := by linarith + have hc := C_decomp z + rw [hC, hx, hdot, hys] at hc + have hf : (z 0 - 1) * (2 * z 0 + 1) ^ 2 = 0 := by nlinarith [hc] + rcases mul_eq_zero.mp hf with h | h + · exact Or.inl (by linarith) + · exact Or.inr (by nlinarith [sq_nonneg (2 * z 0 + 1)]) + · rintro ⟨hx, ht | ht⟩ + all_goals + have hdot := dotTerm_zero_of_xSq_zero z hx + have hsplit := Q_decomp z + rw [hQ, hx, ht] at hsplit + rw [C_decomp, hx, ht, hdot] + nlinarith + +theorem xSq_zero_iff (z : Fin 14 → ℝ) : + xSq z = 0 ↔ z 1 = 0 ∧ z 2 = 0 ∧ z 3 = 0 ∧ z 4 = 0 := by + unfold xSq + constructor + · intro h + have h1 := sq_nonneg (z 1) + have h2 := sq_nonneg (z 2) + have h3 := sq_nonneg (z 3) + have h4 := sq_nonneg (z 4) + exact ⟨by nlinarith, by nlinarith, by nlinarith, by nlinarith⟩ + · rintro ⟨h1, h2, h3, h4⟩ + simp [h1, h2, h3, h4] + +theorem cubic_unit_maximizers_coordinates (z : Fin 14 → ℝ) (hQ : Q z = 1) : + C z = 1 ↔ (z 1 = 0 ∧ z 2 = 0 ∧ z 3 = 0 ∧ z 4 = 0) ∧ + (z 0 = 1 ∨ z 0 = -1 / 2) := by + rw [cubic_unit_maximizers z hQ, xSq_zero_iff] + +theorem xSq_scale (z : Fin 14 → ℝ) (r : ℝ) : + xSq (fun i => r * z i) = r ^ 2 * xSq z := by + unfold xSq + ring + +/-- Global equality classification for the sharp homogeneous cubic bound. -/ +theorem cubic_upper_equality (z : Fin 14 → ℝ) : + C z = radius z ^ 3 ↔ xSq z = 0 ∧ + (z 0 = radius z ∨ z 0 = -radius z / 2) := by + by_cases hz : Q z = 0 + · have heq := (Q_eq_zero_iff z).mp hz + subst z + simp [C, cubicPoly, radius, Q_eq_sum, xSq] + · have hr : 0 < radius z := Real.sqrt_pos.mpr (lt_of_le_of_ne (Q_nonneg z) (Ne.symm hz)) + have hr0 : radius z ≠ 0 := ne_of_gt hr + have hn : Q (fun i => (radius z)⁻¹ * z i) = 1 := by + rw [Q_scale, ← radius_sq] + field_simp + have hc := cubic_unit_maximizers (fun i => (radius z)⁻¹ * z i) hn + rw [C_scale, xSq_scale] at hc + field_simp [hr0] at hc + simpa only [mul_zero, eq_div_iff (by norm_num : (2 : ℝ) ≠ 0)] using hc + +theorem cubic_upper_equality_coordinates (z : Fin 14 → ℝ) : + C z = radius z ^ 3 ↔ (z 1 = 0 ∧ z 2 = 0 ∧ z 3 = 0 ∧ z 4 = 0) ∧ + (z 0 = radius z ∨ z 0 = -radius z / 2) := by + rw [cubic_upper_equality, xSq_zero_iff] + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/Transfer.lean b/LeanPool/PersistentSOS/Transfer.lean new file mode 100644 index 0000000000..660e36bcd1 --- /dev/null +++ b/LeanPool/PersistentSOS/Transfer.lean @@ -0,0 +1,127 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.Definitions +public import LeanPool.PersistentSOS.Radial +public import LeanPool.PersistentSOS.SOSDegree +public import LeanPool.PersistentSOS.Polynomial +public import LeanPool.PersistentSOS.Sphere +public import Mathlib.Tactic.Convert +public import Mathlib.Tactic.Linarith +public import Mathlib.Tactic.NormNum +public import Mathlib.Tactic.Ring + +/-! +# Transfer + +Part of the explicit persistent quartic SOS counterexample. +-/ + +@[expose] public section + +namespace PersistentSOS + +/-- The strict rational separation of the fixed cubic from its sphere bound. -/ +noncomputable def separation : ℝ := 753357629 / 500000000000 + +theorem separation_pos : 0 < separation := by norm_num [separation] + +/-- An abstract linear - separation calculation, used with a separately verified +ordinary moment functional. The public explicit theorem supplies that witness. -/ +theorem functional_separation (L : Poly →ₗ[ℝ] ℝ) + (h1 : L 1 = 1) (hQ : L qPoly = 1) (hQQ : L (qPoly ^ 2) = 1) + (hC : L cubicPoly = 1 + separation) (σ a b r γ : ℝ) : + L (MvPolynomial.C (σ / 4 * r ^ 4) * qPoly ^ 2 - + MvPolynomial.C (a / 2 * r ^ 2) * qPoly - + MvPolynomial.C (b * r ^ 3) * cubicPoly - MvPolynomial.C γ) = + radialValue σ a b r - b * separation * r ^ 3 - γ := by + have hscale (c : ℝ) (p : Poly) : L (MvPolynomial.C c * p) = c * L p := by + rw [← MvPolynomial.smul_eq_C_mul, map_smul, smul_eq_mul] + have hconst (c : ℝ) : L (MvPolynomial.C c) = c := by + simpa [h1] using hscale c 1 + simp only [map_sub, hscale, hconst, hQ, hQQ, hC] + unfold radialValue + ring + +/-- Positivity for an ordinary quartic SOS, after any common coordinate scaling. -/ +theorem scaled_sos_nonneg (L : Poly →ₗ[ℝ] ℝ) + (hL : ∀ h : Poly, h.totalDegree ≤ 2 → 0 ≤ L (h ^ 2)) + {p : Poly} (hp : p.totalDegree ≤ 4) (hsos : IsSOS p) (r : ℝ) : + 0 ≤ L (scalePoly r p) := by + rcases hsos with ⟨m, f, hf⟩ + rw [hf, map_sum, map_sum] + apply Finset.sum_nonneg + intro i hi + rw [map_pow] + exact hL _ ((totalDegree_scalePoly_le r (f i)).trans + (quartic_sos_summand_degree hp hf i)) + +/-- Exact global lower bound for every positive parameter. -/ +theorem objective_global_lower_bound {σ a b : ℝ} (hσ : 0 < σ) + (ha : 0 < a) (hb : 0 < b) (z : Fin 14 → ℝ) : + minimumValue σ a b ≤ objective σ a b z := by + have hc := (le_abs_self (C z)).trans (cubic_abs_le z) + have hscaled := mul_le_mul_of_nonneg_left hc (le_of_lt hb) + have hrad := radial_global_minimum hσ ha hb (radius_nonneg z) + rw [objective_eq] + rw [← radius_sq z] + unfold radialValue at hrad + nlinarith + +/-- The distinguished axis point attains the exact global minimum. -/ +theorem objective_axis_attainment {σ a b : ℝ} (hσ : 0 < σ) (ha : 0 < a) : + objective σ a b (axis (minimizingRadius σ a b)) = minimumValue σ a b := by + rw [objective_eq, Q_axis, C_axis] + convert radial_at_minimizingRadius (b := b) hσ ha using 1 + unfold radialValue + ring + +/-- The abstract moment - to - SOS transfer. The explicit theorem below instantiates +all witness hypotheses by exact certificate proofs. -/ +theorem moment_quantitative_transfer (L : Poly →ₗ[ℝ] ℝ) + (h1 : L 1 = 1) (hQ : L qPoly = 1) (hQQ : L (qPoly ^ 2) = 1) + (hC : L cubicPoly = 1 + separation) + (hL : ∀ h : Poly, h.totalDegree ≤ 2 → 0 ≤ L (h ^ 2)) + {σ a b γ : ℝ} (hσ : 0 < σ) (ha : 0 < a) + (hsos : IsSOS (quarticPoly σ a b - MvPolynomial.C γ)) : + γ ≤ minimumValue σ a b - b * separation * minimizingRadius σ a b ^ 3 := by + have hn := scaled_sos_nonneg L hL (totalDegree_shiftedQuartic_le σ a b γ) + hsos (minimizingRadius σ a b) + rw [map_sub, scalePoly_C, scalePoly_quarticPoly] at hn + rw [functional_separation L h1 hQ hQQ hC, radial_at_minimizingRadius hσ ha] at hn + linarith + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/UniqueDerivatives.lean b/LeanPool/PersistentSOS/UniqueDerivatives.lean new file mode 100644 index 0000000000..7adef19415 --- /dev/null +++ b/LeanPool/PersistentSOS/UniqueDerivatives.lean @@ -0,0 +1,219 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.Derivatives +public import LeanPool.PersistentSOS.Sphere +public import LeanPool.PersistentSOS.Radial +public import Mathlib.LinearAlgebra.Matrix.PosDef +public import Mathlib.Algebra.Order.Star.Real +public import Mathlib.Tactic.FinCases +public import Mathlib.Tactic.Linarith +public import Mathlib.Tactic.LinearCombination +public import Mathlib.Tactic.NormNum +public import Mathlib.Tactic.Positivity +public import Mathlib.Tactic.Ring + +/-! # Derivatives of the quartic with a unique global minimizer + +The Hessian is computed from the literal polynomial using `MvPolynomial.pderiv`. +At its minimizing axis point it is a strictly positive diagonal matrix. +-/ + + +@[expose] public section +namespace PersistentSOS +open MvPolynomial + + +private theorem constantCoeff_two : constantCoeff (2 : Poly) = 2 := by + rw [← map_ofNat MvPolynomial.C 2] + simp + +@[simp] private theorem pderiv_thousand (i : Fin 14) : + pderiv i (1000 : Poly) = 0 := by + rw [← map_ofNat MvPolynomial.C 1000] + exact pderiv_C + +@[simp] private theorem pderiv_two (i : Fin 14) : + pderiv i (2 : Poly) = 0 := by + rw [← map_ofNat MvPolynomial.C 2] + exact pderiv_C + +@[simp] private theorem pderiv_three (i : Fin 14) : + pderiv i (3 : Poly) = 0 := by + rw [← map_ofNat MvPolynomial.C 3] + exact pderiv_C + +@[simp] private theorem eval_ite_poly (z : Fin 14 → ℝ) (c : Prop) [Decidable c] + (u v : Poly) : eval z (if c then u else v) = if c then eval z u else eval z v := by + split_ifs <;> rfl + +@[simp] private theorem pderiv_ite_poly (i : Fin 14) (c : Prop) [Decidable c] + (u v : Poly) : pderiv i (if c then u else v) = if c then pderiv i u else pderiv i v := by + split_ifs <;> rfl + +@[simp] private theorem eval_qPoly_axis (r : ℝ) : + eval (axis r) qPoly = r ^ 2 := Q_axis r + +/-- The new cubic has no first - order contribution at the origin. -/ +theorem unique_cubic_first_at_zero (i : Fin 14) : + eval (0 : Fin 14 → ℝ) (pderiv i uniqueCubicPoly) = 0 := by + have hc : constantCoeff (pderiv i cubicPoly) = 0 := by + simpa using cubic_first_at_zero i + simp [uniqueCubicPoly, qPoly, hc] + +/-- The new cubic has no second - order contribution at the origin. -/ +theorem unique_cubic_second_at_zero (i j : Fin 14) : + eval (0 : Fin 14 → ℝ) (pderiv j (pderiv i uniqueCubicPoly)) = 0 := by + have hc : constantCoeff (pderiv j (pderiv i cubicPoly)) = 0 := by + simpa using cubic_second_at_zero i j + simp [uniqueCubicPoly, qPoly, hc] + +/-- The origin remains stationary for every choice of the parameters. -/ +theorem unique_stationary_origin (σ a b : ℝ) (i : Fin 14) : + eval (0 : Fin 14 → ℝ) (pderiv i (uniqueQuarticPoly σ a b)) = 0 := by + have hc : constantCoeff (pderiv i uniqueCubicPoly) = 0 := by + simpa using unique_cubic_first_at_zero i + have hq : constantCoeff qPoly = 0 := by simp [qPoly] + simp [uniqueQuarticPoly, q_first, hc, hq] + +/-- The Hessian at the stationary origin remains the negative scalar matrix. -/ +theorem unique_hessian_origin (σ a b : ℝ) (i j : Fin 14) : + eval (0 : Fin 14 → ℝ) (pderiv j (pderiv i (uniqueQuarticPoly σ a b))) = + if i = j then -a else 0 := by + have hc : constantCoeff (pderiv j (pderiv i uniqueCubicPoly)) = 0 := by + simpa using unique_cubic_second_at_zero i j + have hq : constantCoeff qPoly = 0 := by simp [qPoly] + simp [uniqueQuarticPoly, q_first, hc, Pi.single_apply, constantCoeff_two] + split_ifs <;> simp_all [constantCoeff_two] + +/-- The second derivatives of the original cubic at an arbitrary axis point. -/ +theorem cubic_second_axis (r : ℝ) (i j : Fin 14) : + eval (axis r) (pderiv j (pderiv i cubicPoly)) = + if i = j then (if i = 0 then 6 * r else if i.val ≤ 4 then 3 * r else -6 * r) + else 0 := by + fin_cases i <;> + norm_num [cubicPoly, axis, Pi.single_apply] <;> split_ifs <;> try simp_all + all_goals ring + +/-- The selected cubic's Hessian on the distinguished axis. -/ +theorem unique_cubic_second_axis (r : ℝ) (i j : Fin 14) : + eval (axis r) (pderiv j (pderiv i uniqueCubicPoly)) = + if i = j then + (if i = 0 then 6 * r else if i.val ≤ 4 then 3002 * r / 1001 else -5998 * r / 1001) + else 0 := by + simp [uniqueCubicPoly, q_first, cubic_second_axis, axis, Pi.single_apply] + by_cases hij : i = j + · subst j + by_cases hi : i = 0 + · subst i + norm_num + ring + · by_cases hix : i.val ≤ 4 + · simp [hi, Ne.symm hi, hix] + ring + · simp [hi, Ne.symm hi, hix] + ring + · by_cases hi : i = 0 + · subst i + simp [hij, Ne.symm hij] + · simp [hij, hi, Ne.symm hi] + +/-- The actual Hessian entries at the explicit minimizing radius. -/ +theorem unique_hessian_minimizer {σ a b : ℝ} (hσ : 0 < σ) (ha : 0 < a) + (i j : Fin 14) : + eval (axis (minimizingRadius σ a b)) + (pderiv j (pderiv i (uniqueQuarticPoly σ a b))) = + if i = j then + (if i = 0 then 2 * a + 3 * b * minimizingRadius σ a b + else if i.val ≤ 4 then b * minimizingRadius σ a b / 1001 + else 9001 * b * minimizingRadius σ a b / 1001) + else 0 := by + have he := minimizingRadius_equation (b := b) hσ ha + simp [uniqueQuarticPoly, q_first, unique_cubic_second_axis, + axis, Pi.single_apply] + split_ifs <;> simp_all <;> nlinarith + +/-- The Hessian at the unique global minimizer is positive definite for +all positive real regularization, quadratic, and cubic strengths. -/ +theorem unique_hessian_posDef {σ a b : ℝ} (hσ : 0 < σ) (ha : 0 < a) (hb : 0 < b) : + Matrix.PosDef (fun i j : Fin 14 => + eval (axis (minimizingRadius σ a b)) + (pderiv j (pderiv i (uniqueQuarticPoly σ a b)))) := by + have hr := minimizingRadius_pos hσ ha hb + have hdiag : + (fun i j : Fin 14 => eval (axis (minimizingRadius σ a b)) + (pderiv j (pderiv i (uniqueQuarticPoly σ a b)))) = + Matrix.diagonal (fun i : Fin 14 => + if i = 0 then 2 * a + 3 * b * minimizingRadius σ a b + else if i.val ≤ 4 then b * minimizingRadius σ a b / 1001 + else 9001 * b * minimizingRadius σ a b / 1001) := by + funext i j + rw [unique_hessian_minimizer hσ ha] + rfl + rw [hdiag] + apply Matrix.PosDef.diagonal + intro i + split_ifs <;> positivity + +/-- First derivatives of the original cubic on its distinguished axis. -/ +theorem cubic_first_axis (r : ℝ) (i : Fin 14) : + eval (axis r) (pderiv i cubicPoly) = if i = 0 then 3 * r ^ 2 else 0 := by + fin_cases i <;> norm_num [cubicPoly, axis, Pi.single_apply] + +/-- The selected cubic has the same axial gradient as the original cubic. -/ +theorem unique_cubic_first_axis (r : ℝ) (i : Fin 14) : + eval (axis r) (pderiv i uniqueCubicPoly) = if i = 0 then 3 * r ^ 2 else 0 := by + simp [uniqueCubicPoly, q_first, cubic_first_axis, axis, Pi.single_apply] + by_cases hi : i = 0 + · subst i + norm_num + ring + · simp [hi, Ne.symm hi] + +/-- The explicitly specified unique minimizer is stationary. -/ +theorem unique_stationary_minimizer {σ a b : ℝ} (hσ : 0 < σ) (ha : 0 < a) + (i : Fin 14) : + eval (axis (minimizingRadius σ a b)) + (pderiv i (uniqueQuarticPoly σ a b)) = 0 := by + have he := minimizingRadius_equation (b := b) hσ ha + simp [uniqueQuarticPoly, q_first, unique_cubic_first_axis, axis] + by_cases hi : i = 0 + · simp [hi] + linear_combination minimizingRadius σ a b * he + · simp [hi] + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/UniqueGeometry.lean b/LeanPool/PersistentSOS/UniqueGeometry.lean new file mode 100644 index 0000000000..160165496e --- /dev/null +++ b/LeanPool/PersistentSOS/UniqueGeometry.lean @@ -0,0 +1,219 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.Geometry +public import Mathlib.Tactic.Convert +public import Mathlib.Tactic.Linarith +public import Mathlib.Tactic.NormNum +public import Mathlib.Tactic.Ring + +/-! +# Unique Geometry + +Part of the explicit persistent quartic SOS counterexample. +-/ + +@[expose] public section + +namespace PersistentSOS + +/-- The selected cubic is the explicit convex combination of the original +cubic and the first coordinate times the squared Euclidean norm. -/ +theorem unique_cubic_eq (z : Fin 14 → ℝ) : + uniqueCubic z = (1000 * C z + z 0 * Q z) / 1001 := by + simp [uniqueCubic, uniqueCubicPoly, C, Q] + ring + +/-- The selected quartic is evaluated on ordinary real vectors. -/ +theorem unique_objective_eq (σ a b : ℝ) (z : Fin 14 → ℝ) : + uniqueObjective σ a b z = σ / 4 * Q z ^ 2 - a / 2 * Q z - b * uniqueCubic z := by + simp [uniqueObjective, uniqueQuarticPoly, Q, uniqueCubic] + +/-- Every coordinate has absolute value bounded by the Euclidean radius. -/ +theorem coordinate_abs_le_radius (z : Fin 14 → ℝ) (i : Fin 14) : + |z i| ≤ radius z := by + have hi : z i ^ 2 ≤ Q z := by + rw [Q_eq_sum] + exact Finset.single_le_sum (fun j _ => sq_nonneg (z j)) (Finset.mem_univ i) + have hr := radius_nonneg z + have hs := radius_sq z + exact abs_le.mpr ⟨by nlinarith, by nlinarith⟩ + +/-- Squared distance to a point on the distinguished axis. -/ +theorem Q_sub_axis (z : Fin 14 → ℝ) (r : ℝ) : + Q (fun i => z i - axis r i) = Q z - 2 * r * z 0 + r ^ 2 := by + simp [Q_eq_sum, axis, Fin.sum_univ_succ] + ring + +/-- Equality of the first coordinate with the radius forces all transverse +coordinates to vanish. -/ +theorem eq_axis_of_first_eq_radius (z : Fin 14 → ℝ) (h : z 0 = radius z) : + z = axis (radius z) := by + have hq : Q (fun i => z i - axis (radius z) i) = 0 := by + rw [Q_sub_axis, ← radius_sq, h] + ring + have hv := (Q_eq_zero_iff _).mp hq + funext i + have hi := congrFun hv i + simpa only [Pi.zero_apply, sub_eq_zero] using hi + +/-- The deficit separates into two nonnegative terms. -/ +theorem unique_cubic_deficit (z : Fin 14 → ℝ) : + radius z ^ 3 - uniqueCubic z = + (1000 * (radius z ^ 3 - C z) + radius z ^ 2 * (radius z - z 0)) / 1001 := by + rw [unique_cubic_eq, ← radius_sq] + ring + +/-- The original sharp bound and a coordinate bound give the same upper +bound for the selected cubic. -/ +theorem unique_cubic_le (z : Fin 14 → ℝ) : uniqueCubic z ≤ radius z ^ 3 := by + have hc := (le_abs_self (C z)).trans (cubic_abs_le z) + have ht := (le_abs_self (z 0)).trans (coordinate_abs_le_radius z 0) + apply sub_nonneg.mp + rw [unique_cubic_deficit] + exact div_nonneg (add_nonneg (mul_nonneg (by norm_num) (sub_nonneg.mpr hc)) + (mul_nonneg (sq_nonneg _) (sub_nonneg.mpr ht))) (by norm_num) + +/-- The selected cubic remains homogeneous of degree three. -/ +theorem unique_cubic_scale (z : Fin 14 → ℝ) (r : ℝ) : + uniqueCubic (fun i => r * z i) = r ^ 3 * uniqueCubic z := by + rw [unique_cubic_eq, C_scale, Q_scale, unique_cubic_eq] + ring + +theorem unique_cubic_neg (z : Fin 14 → ℝ) : + uniqueCubic (fun i => -z i) = -uniqueCubic z := by + convert unique_cubic_scale z (-1) using 1 <;> norm_num + +theorem radius_neg (z : Fin 14 → ℝ) : radius (fun i => -z i) = radius z := by + unfold radius + congr 1 + convert Q_scale z (-1) using 1 <;> norm_num + +/-- The selected cubic has the sharp global homogeneous bound. -/ +theorem unique_cubic_abs_le (z : Fin 14 → ℝ) : |uniqueCubic z| ≤ radius z ^ 3 := by + have hu := unique_cubic_le z + have hl := unique_cubic_le (fun i => -z i) + rw [unique_cubic_neg, radius_neg] at hl + exact abs_le.mpr ⟨by linarith, hu⟩ + +@[simp] theorem unique_cubic_axis (r : ℝ) : uniqueCubic (axis r) = r ^ 3 := by + rw [unique_cubic_eq, C_axis, Q_axis] + simp [axis] + ring + +/-- Equality in the upper cubic bound occurs exactly on the nonnegative +part of the distinguished coordinate axis, including the origin. -/ +theorem unique_cubic_upper_equality (z : Fin 14 → ℝ) : + uniqueCubic z = radius z ^ 3 ↔ z = axis (radius z) := by + constructor + · intro heq + by_cases hz : radius z = 0 + · have hQ : Q z = 0 := by rw [← radius_sq, hz]; norm_num + have hv := (Q_eq_zero_iff z).mp hQ + rw [hz, hv] + funext i + simp [axis] + · have hc := (le_abs_self (C z)).trans (cubic_abs_le z) + have ht := (le_abs_self (z 0)).trans (coordinate_abs_le_radius z 0) + have hd := unique_cubic_deficit z + rw [heq, sub_self] at hd + have hp := mul_nonneg (sq_nonneg (radius z)) (sub_nonneg.mpr ht) + have hs : radius z ^ 2 * (radius z - z 0) = 0 := by nlinarith + have hfirst := (mul_eq_zero.mp hs).resolve_left (pow_ne_zero 2 hz) + exact eq_axis_of_first_eq_radius z (by linarith) + · intro h + calc + uniqueCubic z = uniqueCubic (axis (radius z)) := congrArg uniqueCubic h + _ = radius z ^ 3 := unique_cubic_axis _ + +/-- The selected cubic attains its unit - sphere maximum only at the first +coordinate unit vector. -/ +theorem unique_cubic_unit_maximizer (z : Fin 14 → ℝ) (hQ : Q z = 1) : + uniqueCubic z = 1 ↔ z = axis 1 := by + have hr : radius z = 1 := by rw [radius, hQ]; norm_num + simpa only [hr, one_pow] using unique_cubic_upper_equality z + +/-- Decomposition into the radial envelope and the selected cubic deficit. -/ +theorem unique_objective_radial_decomposition (σ a b : ℝ) (z : Fin 14 → ℝ) : + uniqueObjective σ a b z = radialValue σ a b (radius z) + + b * (radius z ^ 3 - uniqueCubic z) := by + rw [unique_objective_eq, ← radius_sq] + unfold radialValue + ring + +/-- Global optimality for every positive real regularization, quadratic +strength and cubic strength. -/ +theorem unique_objective_global_lower_bound {σ a b : ℝ} (hσ : 0 < σ) + (ha : 0 < a) (hb : 0 < b) (z : Fin 14 → ℝ) : + minimumValue σ a b ≤ uniqueObjective σ a b z := by + have hc := unique_cubic_le z + have hscaled := mul_le_mul_of_nonneg_left hc (le_of_lt hb) + have hrad := radial_global_minimum hσ ha hb (radius_nonneg z) + rw [unique_objective_eq, ← radius_sq z] + unfold radialValue at hrad + nlinarith + +/-- The distinguished point attains the explicit minimum. -/ +theorem unique_objective_axis_attainment {σ a b : ℝ} (hσ : 0 < σ) (ha : 0 < a) : + uniqueObjective σ a b (axis (minimizingRadius σ a b)) = minimumValue σ a b := by + rw [unique_objective_eq, Q_axis, unique_cubic_axis] + calc + _ = radialValue σ a b (minimizingRadius σ a b) := by unfold radialValue; ring + _ = minimumValue σ a b := radial_at_minimizingRadius hσ ha + +/-- The global minimizer is unique for every positive choice of all three +real parameters. -/ +theorem unique_objective_minimizer {σ a b : ℝ} (hσ : 0 < σ) + (ha : 0 < a) (hb : 0 < b) (z : Fin 14 → ℝ) : + uniqueObjective σ a b z = minimumValue σ a b ↔ + z = axis (minimizingRadius σ a b) := by + constructor + · intro hobj + have hrad := radial_global_minimum hσ ha hb (radius_nonneg z) + have hc := unique_cubic_le z + have hdef := mul_nonneg (le_of_lt hb) (sub_nonneg.mpr hc) + have hid := unique_objective_radial_decomposition σ a b z + have heq : radialValue σ a b (radius z) = minimumValue σ a b := by linarith + have hr := (radial_minimum_eq_iff hσ ha hb (radius_nonneg z)).mp heq + have hzero : b * (radius z ^ 3 - uniqueCubic z) = 0 := by linarith + have hd := (mul_eq_zero.mp hzero).resolve_left (ne_of_gt hb) + have hu : uniqueCubic z = radius z ^ 3 := by linarith + have hz := (unique_cubic_upper_equality z).mp hu + simpa only [hr] using hz + · rintro rfl + exact unique_objective_axis_attainment hσ ha + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/UniqueMain.lean b/LeanPool/PersistentSOS/UniqueMain.lean new file mode 100644 index 0000000000..10f5c27b3c --- /dev/null +++ b/LeanPool/PersistentSOS/UniqueMain.lean @@ -0,0 +1,72 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.UniqueGeometry +public import LeanPool.PersistentSOS.UniqueMoments +public import LeanPool.PersistentSOS.UniqueDerivatives + +/-! +# Unique Main + +Part of the explicit persistent quartic SOS counterexample. +-/ + +@[expose] public section +namespace PersistentSOS + +/-- The selected quartic's exact minimum shift is globally nonnegative. -/ +theorem unique_minimum_shift_nonnegative {σ a b : ℝ} (hσ : 0 < σ) (ha : 0 < a) + (hb : 0 < b) (z : Fin 14 → ℝ) : + 0 ≤ MvPolynomial.eval z + (uniqueQuarticPoly σ a b - MvPolynomial.C (minimumValue σ a b)) := by + simpa only [map_sub, MvPolynomial.eval_C, sub_nonneg, uniqueObjective] + using unique_objective_global_lower_bound hσ ha hb z + +/-- Persistent ordinary - SOS failure with a unique global minimizer and +positive - definite Hessian there, for every positive real parameter. -/ +theorem unique_persistent_failure {σ a b : ℝ} (hσ : 0 < σ) (ha : 0 < a) (hb : 0 < b) : + (∀ z : Fin 14 → ℝ, minimumValue σ a b ≤ uniqueObjective σ a b z) ∧ + (∀ z : Fin 14 → ℝ, uniqueObjective σ a b z = minimumValue σ a b ↔ + z = axis (minimizingRadius σ a b)) ∧ + Matrix.PosDef (fun i j : Fin 14 => + MvPolynomial.eval (axis (minimizingRadius σ a b)) + (MvPolynomial.pderiv j (MvPolynomial.pderiv i (uniqueQuarticPoly σ a b)))) ∧ + ¬ IsSOS (uniqueQuarticPoly σ a b - MvPolynomial.C (minimumValue σ a b)) := + ⟨unique_objective_global_lower_bound hσ ha hb, + unique_objective_minimizer hσ ha hb, unique_hessian_posDef hσ ha hb, + unique_minimum_shift_not_sos hσ ha hb⟩ + +end PersistentSOS diff --git a/LeanPool/PersistentSOS/UniqueMoments.lean b/LeanPool/PersistentSOS/UniqueMoments.lean new file mode 100644 index 0000000000..05dc51f906 --- /dev/null +++ b/LeanPool/PersistentSOS/UniqueMoments.lean @@ -0,0 +1,208 @@ +/- +Copyright (c) 2026 JD Jones. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: JD Jones +-/ + +/- +Adapted from JD-Jones-ASES/persistent-sos, commit +d432ff9a67594cc0fa7a7af1913320b46d2a86db. +Original MIT notice (retained under the permission to sublicense): + +MIT License + +Copyright (c) 2026 JD Jones + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +-/ + +module + +public import LeanPool.PersistentSOS.Localizers +public import LeanPool.PersistentSOS.Transfer +public import Mathlib.Tactic.Linarith +public import Mathlib.Tactic.NormNum +public import Mathlib.Tactic.Positivity +public import Mathlib.Tactic.Ring + +/-! # The same moment certificate separates a cubic with a unique maximizer + +No new moment data are required. The existing sphere localizer identifies +`L(tQ)` with `L(t)`, giving a positive exact gap for the selected cubic. +The ordinary SOS degree bridge then transfers that gap at every positive +regularization parameter. +-/ + + +@[expose] public section + +namespace PersistentSOS +open MvPolynomial + +/-- The exact first - coordinate moment from the retained rational certificate. -/ +theorem moment_first_coordinate : sphereFunctional (X 0) = 423308963 / 1000000000 := by + simp only [X, sphereFunctional_monomial, exponentKey_single] + norm_num [momentNumerator] + +/-- Multiplication by the sphere equation preserves the first - coordinate moment. -/ +theorem moment_first_coordinate_q : + sphereFunctional (X 0 * qPoly) = 423308963 / 1000000000 := by + have h := moment_sphere_localizer (X 0) (by simp) + rw [sub_mul, one_mul, map_sub] at h + rw [mul_comm, ← moment_first_coordinate] + exact sub_eq_zero.mp h + +/-- Constants act by ordinary scalar multiplication under the moment functional. -/ +lemma unique_moment_C_mul (c : ℝ) (p : Poly) : + sphereFunctional (MvPolynomial.C c * p) = c * sphereFunctional p := by + rw [← smul_eq_C_mul, map_smul, smul_eq_mul] + +/-- The separation for the selected cubic is strictly positive. -/ +theorem uniqueSeparation_pos : 0 < uniqueSeparation := by + norm_num [uniqueSeparation] + +/-- The exact gap for the selected cubic, using the unchanged functional. -/ +theorem moment_unique_cubic : sphereFunctional uniqueCubicPoly = 1 + uniqueSeparation := by + have h1000 : (1000 : Poly) = MvPolynomial.C (1000 : ℝ) := + (map_natCast MvPolynomial.C 1000).symm + unfold uniqueCubicPoly + rw [unique_moment_C_mul, map_add, h1000, unique_moment_C_mul, + moment_cubic, moment_first_coordinate_q] + norm_num [uniqueSeparation] + +/-- The selected cubic's exact rational moment value. -/ +theorem moment_unique_cubic_exact : + sphereFunctional uniqueCubicPoly = 143132860603 / 143000000000 := by + rw [moment_unique_cubic] + norm_num [uniqueSeparation] + +/-- The selected cubic still exceeds its unit - sphere bound under the functional. -/ +theorem moment_unique_cubic_gt_one : 1 < sphereFunctional uniqueCubicPoly := by + rw [moment_unique_cubic] + linarith [uniqueSeparation_pos] + +/-- Common scaling respects the degree - three homogeneity of the selected cubic. -/ +@[simp] theorem scalePoly_uniqueCubicPoly (r : ℝ) : + scalePoly r uniqueCubicPoly = MvPolynomial.C (r ^ 3) * uniqueCubicPoly := by + simp only [uniqueCubicPoly, map_mul, map_add, map_pow, map_ofNat, + scalePoly_C, scalePoly_X, scalePoly_qPoly, scalePoly_cubicPoly] + ring + +/-- Exact scaling identity for the selected quartic. -/ +theorem scalePoly_uniqueQuarticPoly (r σ a b : ℝ) : + scalePoly r (uniqueQuarticPoly σ a b) = + MvPolynomial.C (σ / 4 * r ^ 4) * qPoly ^ 2 - + MvPolynomial.C (a / 2 * r ^ 2) * qPoly - + MvPolynomial.C (b * r ^ 3) * uniqueCubicPoly := by + simp only [uniqueQuarticPoly, map_sub, map_mul, map_pow, scalePoly_C, + scalePoly_qPoly, scalePoly_uniqueCubicPoly] + ring + +/-- The selected polynomial remains a cubic. -/ +theorem totalDegree_uniqueCubicPoly_le : uniqueCubicPoly.totalDegree ≤ 3 := by + have hnum : (1000 : Poly).totalDegree = 0 := by + rw [← map_ofNat MvPolynomial.C 1000, totalDegree_C] + unfold uniqueCubicPoly + apply (totalDegree_mul _ _).trans + simp only [totalDegree_C, zero_add] + apply (totalDegree_add _ _).trans + apply max_le + · apply (totalDegree_mul _ _).trans + simpa only [hnum, zero_add] using totalDegree_cubicPoly_le + · have h := totalDegree_mul (X 0 : Poly) qPoly + have hq := totalDegree_qPoly_le + simp only [totalDegree_X] at h + omega + +/-- The selected objective has degree at most four. -/ +theorem totalDegree_uniqueQuarticPoly_le (σ a b : ℝ) : + (uniqueQuarticPoly σ a b).totalDegree ≤ 4 := by + unfold uniqueQuarticPoly + apply (totalDegree_sub _ _).trans + apply max_le + · apply (totalDegree_sub _ _).trans + apply max_le + · apply (totalDegree_mul _ _).trans + simp only [totalDegree_C, zero_add] + exact (totalDegree_pow _ _).trans (by have := totalDegree_qPoly_le; omega) + · apply (totalDegree_mul _ _).trans + simp only [totalDegree_C, zero_add] + exact totalDegree_qPoly_le.trans (by decide) + · apply (totalDegree_mul _ _).trans + simp only [totalDegree_C, zero_add] + exact totalDegree_uniqueCubicPoly_le.trans (by decide) + +/-- Subtracting a real lower bound preserves the selected quartic degree bound. -/ +theorem totalDegree_shiftedUniqueQuartic_le (σ a b γ : ℝ) : + (uniqueQuarticPoly σ a b - MvPolynomial.C γ).totalDegree ≤ 4 := by + exact (totalDegree_sub _ _).trans + (max_le (totalDegree_uniqueQuarticPoly_le σ a b) (by simp)) + +/-- The scaled functional evaluates the selected quartic shift exactly. -/ +theorem unique_functional_separation (σ a b r γ : ℝ) : + sphereFunctional (MvPolynomial.C (σ / 4 * r ^ 4) * qPoly ^ 2 - + MvPolynomial.C (a / 2 * r ^ 2) * qPoly - + MvPolynomial.C (b * r ^ 3) * uniqueCubicPoly - MvPolynomial.C γ) = + radialValue σ a b r - b * uniqueSeparation * r ^ 3 - γ := by + have hconst (c : ℝ) : sphereFunctional (MvPolynomial.C c) = c := by + simpa only [mul_one, moment_one] using unique_moment_C_mul c 1 + simp only [map_sub, unique_moment_C_mul, hconst, moment_q, moment_q_sq, + moment_unique_cubic] + unfold radialValue + ring + +/-- Every ordinary SOS lower bound for the selected quartic has the exact gap. -/ +theorem unique_quantitative_sos_gap {σ a b γ : ℝ} (hσ : 0 < σ) (ha : 0 < a) + (hsos : IsSOS (uniqueQuarticPoly σ a b - MvPolynomial.C γ)) : + γ ≤ minimumValue σ a b - b * uniqueSeparation * minimizingRadius σ a b ^ 3 := by + have hn := scaled_sos_nonneg sphereFunctional moment_square_nonneg + (totalDegree_shiftedUniqueQuartic_le σ a b γ) hsos (minimizingRadius σ a b) + rw [map_sub, scalePoly_C, scalePoly_uniqueQuarticPoly, unique_functional_separation, + radial_at_minimizingRadius hσ ha] at hn + linarith + +/-- The selected cubic gives a strict SOS gap for every positive parameter. -/ +theorem unique_quantitative_sos_strict {σ a b γ : ℝ} (hσ : 0 < σ) (ha : 0 < a) + (hb : 0 < b) (hsos : IsSOS (uniqueQuarticPoly σ a b - MvPolynomial.C γ)) : + γ < minimumValue σ a b := by + have h := unique_quantitative_sos_gap hσ ha hsos + have hr := minimizingRadius_pos hσ ha hb + have hd := uniqueSeparation_pos + have hp : 0 < b * uniqueSeparation * minimizingRadius σ a b ^ 3 := by positivity + linarith + +/-- The selected quartic's exact minimum shift is not an ordinary polynomial SOS. -/ +theorem unique_minimum_shift_not_sos {σ a b : ℝ} (hσ : 0 < σ) (ha : 0 < a) (hb : 0 < b) : + ¬ IsSOS (uniqueQuarticPoly σ a b - MvPolynomial.C (minimumValue σ a b)) := by + intro h + exact (lt_irrefl _) (unique_quantitative_sos_strict hσ ha hb h) + +/-- A common ordinary - polynomial functional certifies both exact cubic values, +all truncated sphere relations, and positivity on every quadratic square. -/ +theorem unique_sphere_moment_gap : ∃ L : Poly →ₗ[ℝ] ℝ, + L 1 = 1 ∧ L qPoly = 1 ∧ L (qPoly ^ 2) = 1 ∧ + (∀ h : Poly, h.totalDegree ≤ 2 → 0 ≤ L (h ^ 2)) ∧ + (∀ h : Poly, h.totalDegree ≤ 2 → L ((qPoly - 1) * h) = 0) ∧ + L cubicPoly = 500753357629 / 500000000000 ∧ + L (X 0) = 423308963 / 1000000000 ∧ + L uniqueCubicPoly = 143132860603 / 143000000000 := + ⟨sphereFunctional, moment_one, moment_q, moment_q_sq, moment_square_nonneg, + moment_sphere_localizer, moment_cubic, moment_first_coordinate, moment_unique_cubic_exact⟩ + +end PersistentSOS diff --git a/LeanPool/projects/persistent-sos.yaml b/LeanPool/projects/persistent-sos.yaml new file mode 100644 index 0000000000..8f3110c9de --- /dev/null +++ b/LeanPool/projects/persistent-sos.yaml @@ -0,0 +1,54 @@ +slug: persistent-sos +title: Persistent failure of quartic sum-of-squares exactness +summary: Constructs explicit rational cubics in fourteen real variables whose + Euclidean quartic regularizations have a strict ordinary sum-of-squares gap + for every positive regularization, quadratic, and cubic parameter. A companion + construction has a unique global minimizer and a positive-definite Hessian + there. Exact moment certificates and a general SOS degree bridge certify the + gap for arbitrary finite sums of squares of real polynomials. +branch: polynomial optimization and real algebraic geometry +entry_module: LeanPool.PersistentSOS +authors: +- JD Jones +source: + title: Persistent SOS failure with an explicit unique global minimizer + authors: + - JD Jones + url: https://github.com/JD-Jones-ASES/persistent-sos + github_repo: JD-Jones-ASES/persistent-sos + commit: d432ff9a67594cc0fa7a7af1913320b46d2a86db +license: MIT +status: verified +provenance: AI +main_declarations: +- PersistentSOS.persistent_failure +- PersistentSOS.unique_persistent_failure +main_results: +- declaration: PersistentSOS.persistent_failure + informal: For every positive sigma, a, and b, the explicit fourteen-variable + quartic sigma/4 times the squared Euclidean norm to the fourth power minus + a/2 times the squared norm minus b times the displayed cubic has the stated + attained global minimum, and subtracting that minimum is not an ordinary + finite sum of squares of real polynomials. +- declaration: PersistentSOS.unique_persistent_failure + informal: For all three positive parameters, the companion quartic has exactly + one global minimizer, its actual polynomial Hessian is positive definite + there, and its shift by the attained minimum is not an ordinary sum of squares. +- declaration: PersistentSOS.quantitative_sos_gap + informal: For positive sigma and a and any real b, every ordinary + sum-of-squares lower bound is at most the stated minimum-value expression + minus b times 753357629/500000000000 times the cube of the stated radius. + When b is positive, that expression is the attained global minimum. +- declaration: PersistentSOS.sphere_moment_gap + informal: An explicit linear functional on real polynomials has normalized + radial moments, is nonnegative on all quadratic squares, annihilates the + quadratic sphere localizers, and evaluates the cubic to + 500753357629/500000000000, strictly above its sphere maximum of one. +tags: +- sum-of-squares +- polynomial-optimization +- exact-certificates +msc: +- 90C22 +- 90C26 +- 14P10 From 9bbd3b615b114fd8b5ce1c65fdd11ee489d87f76 Mon Sep 17 00:00:00 2001 From: Vasily Ilin Date: Sun, 11 Oct 2026 09:51:18 +0000 Subject: [PATCH 2/3] Clarify quartic norm wording in the project card --- LeanPool/projects/persistent-sos.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LeanPool/projects/persistent-sos.yaml b/LeanPool/projects/persistent-sos.yaml index 8f3110c9de..b6ab1084bb 100644 --- a/LeanPool/projects/persistent-sos.yaml +++ b/LeanPool/projects/persistent-sos.yaml @@ -26,7 +26,7 @@ main_declarations: main_results: - declaration: PersistentSOS.persistent_failure informal: For every positive sigma, a, and b, the explicit fourteen-variable - quartic sigma/4 times the squared Euclidean norm to the fourth power minus + quartic sigma/4 times the Euclidean norm to the fourth power minus a/2 times the squared norm minus b times the displayed cubic has the stated attained global minimum, and subtracting that minimum is not an ordinary finite sum of squares of real polynomials. From 83faacb8b548090db8869b424384738eb0e36bb1 Mon Sep 17 00:00:00 2001 From: Vasily Ilin Date: Sun, 11 Oct 2026 10:03:42 +0000 Subject: [PATCH 3/3] Generalize the moment bridge and correct Hessian context --- LeanPool/PersistentSOS.lean | 2 +- LeanPool/PersistentSOS/MomentBridge.lean | 39 +++++++++++++----------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/LeanPool/PersistentSOS.lean b/LeanPool/PersistentSOS.lean index 25f0596635..2f48bc12da 100644 --- a/LeanPool/PersistentSOS.lean +++ b/LeanPool/PersistentSOS.lean @@ -50,7 +50,7 @@ MSC: 90C22, 90C26, 14P10 /-! ## Mathematical context and certificate data -This explicit example addresses the zero-gradient, indefinite-Hessian case in +This explicit example addresses the zero-gradient, negative-definite-Hessian case in Cartis and Zhu, [Remark 2.3](https://arxiv.org/html/2601.20418v2#S2.SS3). It does not contradict their sufficient conditions with nonzero gradient or positive-definite Hessian at the origin. Positive curvature in the companion diff --git a/LeanPool/PersistentSOS/MomentBridge.lean b/LeanPool/PersistentSOS/MomentBridge.lean index 58b9859fc8..f950672b88 100644 --- a/LeanPool/PersistentSOS/MomentBridge.lean +++ b/LeanPool/PersistentSOS/MomentBridge.lean @@ -34,16 +34,19 @@ SOFTWARE. module -public import LeanPool.PersistentSOS.Definitions +public import Mathlib.Algebra.MvPolynomial.Degrees +public import Mathlib.Basic.Real.Basic public import Mathlib.LinearAlgebra.Finsupp.LinearCombination public import Mathlib.Tactic.Convert public import Mathlib.Tactic.Positivity public import Mathlib.Tactic.Ring /-! -# Moment Bridge +# Finite monomial moment matrices -Part of the explicit persistent quartic SOS counterexample. +A complete finite monomial basis spans bounded-degree polynomials over any +commutative semiring. For real coefficients, positivity of its moment matrix +implies positivity on every quadratic square, for any polynomial variable type. -/ @[expose] public section @@ -53,36 +56,36 @@ open scoped BigOperators /-- A complete finite list of monomials of degree at most two spans every quadratic polynomial. Repeated entries in the list are allowed. -/ -theorem quadratic_eq_sum_monomials {ι : Type*} [Fintype ι] - (basis : ι → (Fin 14 →₀ ℕ)) - (hcover : ∀ d : Fin 14 →₀ ℕ, d.sum (fun _ n => n) ≤ 2 → ∃ i, basis i = d) - (p : Poly) (hp : p.totalDegree ≤ 2) : - ∃ x : ι → ℝ, p = ∑ i, x i • (monomial (basis i) (1 : ℝ) : Poly) := by +theorem quadratic_eq_sum_monomials {σ R ι : Type*} [CommSemiring R] [Fintype ι] + (basis : ι → (σ →₀ ℕ)) + (hcover : ∀ d : σ →₀ ℕ, d.sum (fun _ n => n) ≤ 2 → ∃ i, basis i = d) + (p : MvPolynomial σ R) (hp : p.totalDegree ≤ 2) : + ∃ x : ι → R, p = ∑ i, x i • (monomial (basis i) (1 : R) : MvPolynomial σ R) := by classical - suffices hmem : p ∈ Submodule.span ℝ - (Set.range fun i => (monomial (basis i) (1 : ℝ) : Poly)) by - obtain ⟨x, hx⟩ := (Submodule.mem_span_range_iff_exists_fun ℝ).mp hmem + suffices hmem : p ∈ Submodule.span R + (Set.range fun i => (monomial (basis i) (1 : R) : MvPolynomial σ R)) by + obtain ⟨x, hx⟩ := (Submodule.mem_span_range_iff_exists_fun R).mp hmem exact ⟨x, hx.symm⟩ rw [p.as_sum] apply Submodule.sum_mem intro d hd obtain ⟨i, hi⟩ := hcover d ((le_totalDegree hd).trans hp) rw [← hi] - have hmem : (monomial (basis i) (1 : ℝ) : Poly) ∈ - Submodule.span ℝ (Set.range fun j => (monomial (basis j) (1 : ℝ) : Poly)) := + have hmem : (monomial (basis i) (1 : R) : MvPolynomial σ R) ∈ + Submodule.span R (Set.range fun j => (monomial (basis j) (1 : R) : MvPolynomial σ R)) := Submodule.subset_span (Set.mem_range_self i) simpa only [smul_monomial, smul_eq_mul, mul_one] using Submodule.smul_mem _ (p.coeff (basis i)) hmem /-- Positivity of the genuine monomial moment matrix implies positivity on the square of every quadratic polynomial. -/ -theorem nonneg_quadratic_square_of_momentMatrix {ι : Type*} [Fintype ι] - (basis : ι → (Fin 14 →₀ ℕ)) - (hcover : ∀ d : Fin 14 →₀ ℕ, d.sum (fun _ n => n) ≤ 2 → ∃ i, basis i = d) - (L : Poly →ₗ[ℝ] ℝ) +theorem nonneg_quadratic_square_of_momentMatrix {σ ι : Type*} [Fintype ι] + (basis : ι → (σ →₀ ℕ)) + (hcover : ∀ d : σ →₀ ℕ, d.sum (fun _ n => n) ≤ 2 → ∃ i, basis i = d) + (L : MvPolynomial σ ℝ →ₗ[ℝ] ℝ) (hpsd : ∀ x : ι → ℝ, 0 ≤ ∑ i, ∑ j, x i * L (monomial (basis i + basis j) 1) * x j) - (p : Poly) (hp : p.totalDegree ≤ 2) : 0 ≤ L (p ^ 2) := by + (p : MvPolynomial σ ℝ) (hp : p.totalDegree ≤ 2) : 0 ≤ L (p ^ 2) := by classical obtain ⟨x, rfl⟩ := quadratic_eq_sum_monomials basis hcover p hp convert hpsd x using 1