diff --git a/LeanPool/PersistentSOS.lean b/LeanPool/PersistentSOS.lean new file mode 100644 index 0000000000..2f48bc12da --- /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, 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 +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..f950672b88 --- /dev/null +++ b/LeanPool/PersistentSOS/MomentBridge.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 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 + +/-! +# Finite monomial moment matrices + +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 +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 {σ 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 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 : 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 : ι → (σ →₀ ℕ)) + (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 : 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 + 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..b6ab1084bb --- /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 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