diff --git a/LeanPool.lean b/LeanPool.lean index c42ffb54..9fdc1f32 100644 --- a/LeanPool.lean +++ b/LeanPool.lean @@ -795,6 +795,95 @@ import LeanPool.Erdos403 import LeanPool.Erdos403.Basic import LeanPool.Erdos403.FactBase import LeanPool.Erdos403.Sharp +import LeanPool.Erdos97ConvexOctagon +import LeanPool.Erdos97ConvexOctagon.Basic +import LeanPool.Erdos97ConvexOctagon.CayleyMenger +import LeanPool.Erdos97ConvexOctagon.Certificates +import LeanPool.Erdos97ConvexOctagon.Classification +import LeanPool.Erdos97ConvexOctagon.CoverageBranches +import LeanPool.Erdos97ConvexOctagon.CoverageData +import LeanPool.Erdos97ConvexOctagon.CoverageData00 +import LeanPool.Erdos97ConvexOctagon.CoverageData01 +import LeanPool.Erdos97ConvexOctagon.CoverageData02 +import LeanPool.Erdos97ConvexOctagon.CoverageData03 +import LeanPool.Erdos97ConvexOctagon.CoverageData04 +import LeanPool.Erdos97ConvexOctagon.CoverageData05 +import LeanPool.Erdos97ConvexOctagon.CoverageData06 +import LeanPool.Erdos97ConvexOctagon.CoverageData07 +import LeanPool.Erdos97ConvexOctagon.CoverageData08 +import LeanPool.Erdos97ConvexOctagon.CoverageData09 +import LeanPool.Erdos97ConvexOctagon.CoverageData10 +import LeanPool.Erdos97ConvexOctagon.CoverageData11 +import LeanPool.Erdos97ConvexOctagon.CoverageData12 +import LeanPool.Erdos97ConvexOctagon.CoverageData13 +import LeanPool.Erdos97ConvexOctagon.CoverageData14 +import LeanPool.Erdos97ConvexOctagon.CoverageData15 +import LeanPool.Erdos97ConvexOctagon.CoverageData16 +import LeanPool.Erdos97ConvexOctagon.CoverageData17 +import LeanPool.Erdos97ConvexOctagon.CoverageData18 +import LeanPool.Erdos97ConvexOctagon.CoverageData19 +import LeanPool.Erdos97ConvexOctagon.CoverageData20 +import LeanPool.Erdos97ConvexOctagon.CoverageData21 +import LeanPool.Erdos97ConvexOctagon.CoverageData22 +import LeanPool.Erdos97ConvexOctagon.CoverageData23 +import LeanPool.Erdos97ConvexOctagon.CoverageData24 +import LeanPool.Erdos97ConvexOctagon.CoverageData25 +import LeanPool.Erdos97ConvexOctagon.CoverageData26 +import LeanPool.Erdos97ConvexOctagon.CoverageData27 +import LeanPool.Erdos97ConvexOctagon.CoverageData28 +import LeanPool.Erdos97ConvexOctagon.CoverageData29 +import LeanPool.Erdos97ConvexOctagon.CoverageData30 +import LeanPool.Erdos97ConvexOctagon.CoverageData31 +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes +import LeanPool.Erdos97ConvexOctagon.CoverageFormula +import LeanPool.Erdos97ConvexOctagon.CycleStrip +import LeanPool.Erdos97ConvexOctagon.EquidistantFour +import LeanPool.Erdos97ConvexOctagon.FiniteModel +import LeanPool.Erdos97ConvexOctagon.GeometryReduction +import LeanPool.Erdos97ConvexOctagon.Gram +import LeanPool.Erdos97ConvexOctagon.Incidence +import LeanPool.Erdos97ConvexOctagon.LRAT.Elab +import LeanPool.Erdos97ConvexOctagon.LRAT.Format +import LeanPool.Erdos97ConvexOctagon.LRAT.Semantics +import LeanPool.Erdos97ConvexOctagon.Main +import LeanPool.Erdos97ConvexOctagon.MasterCertificate +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData0 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData1 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData2 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData3 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData4 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData5 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData6 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData7 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData8 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateManifest +import LeanPool.Erdos97ConvexOctagon.MasterCertificateStage00 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateStage01 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateStage02 +import LeanPool.Erdos97ConvexOctagon.MasterFormula +import LeanPool.Erdos97ConvexOctagon.MasterFormulaData +import LeanPool.Erdos97ConvexOctagon.Obstructions +import LeanPool.Erdos97ConvexOctagon.Pentagon +import LeanPool.Erdos97ConvexOctagon.Radius +import LeanPool.Erdos97ConvexOctagon.Regenerate +import LeanPool.Erdos97ConvexOctagon.Relabelling +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra00 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra01 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra02 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra03 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra04 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra05 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra06 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra07 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra08 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra09 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra10 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra11 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra12 +import LeanPool.Erdos97ConvexOctagon.ResidualObstructions +import LeanPool.Erdos97ConvexOctagon.ResidualRepresentatives +import LeanPool.Erdos97ConvexOctagon.RhombusFan +import LeanPool.Erdos97ConvexOctagon.RowSymmetry import LeanPool.ErdosMoser import LeanPool.ErdosMoser.Basic import LeanPool.ErdosMoser.Bounds diff --git a/LeanPool/Erdos97ConvexOctagon.lean b/LeanPool/Erdos97ConvexOctagon.lean new file mode 100644 index 00000000..52e0a59e --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon.lean @@ -0,0 +1,18 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.Main + +/-! +# The Convex-Octagon Case of Erdős Problem 97 + +Source: doi:10.1080/00029890.1946.11991674, url:https://www.erdosproblems.com/97 +Authors: Egor Lyfar +Status: verified +Main declarations: `Erdos97Octagon.erdos97_convex_octagon` +Tags: discrete-geometry, distance-geometry, erdos-problems, convexity +MSC: 51K05, 52A10 +-/ diff --git a/LeanPool/Erdos97ConvexOctagon/Basic.lean b/LeanPool/Erdos97ConvexOctagon/Basic.lean new file mode 100644 index 00000000..1cab0edc --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/Basic.lean @@ -0,0 +1,22 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import Mathlib.Analysis.InnerProductSpace.PiL2 +import Mathlib.Analysis.InnerProductSpace.Basic +import Mathlib.LinearAlgebra.Dimension.Finite +import Mathlib.LinearAlgebra.LinearIndependent.Defs + +/-! # Erdős 97 convex-octagon formalization: Basic -/ + +namespace Erdos97Octagon + +open scoped InnerProductSpace +open Module + +/-- The Euclidean plane, represented as `EuclideanSpace ℝ (Fin 2)`. -/ +abbrev Plane := EuclideanSpace ℝ (Fin 2) + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/CayleyMenger.lean b/LeanPool/Erdos97ConvexOctagon/CayleyMenger.lean new file mode 100644 index 00000000..bc9d18cc --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CayleyMenger.lean @@ -0,0 +1,84 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.Gram + +/-! # Erdős 97 convex-octagon formalization: Cayley Menger -/ + +namespace Erdos97Octagon + +open scoped InnerProductSpace + +/-- Squared Euclidean distance. -/ +noncomputable def sqDist (a b : Plane) : ℝ := dist a b ^ 2 + +/-- The four-point Cayley--Menger polynomial in its six squared distances. -/ +def cm4 (A B C D E F : ℝ) : ℝ := + -2 * A ^ 2 * F - 2 * A * B * D + 2 * A * B * E + 2 * A * B * F + + 2 * A * C * D - 2 * A * C * E + 2 * A * C * F + 2 * A * D * F + + 2 * A * E * F - 2 * A * F ^ 2 - 2 * B ^ 2 * E + 2 * B * C * D + + 2 * B * C * E - 2 * B * C * F + 2 * B * D * E - 2 * B * E ^ 2 + + 2 * B * E * F - 2 * C ^ 2 * D - 2 * C * D ^ 2 + 2 * C * D * E + + 2 * C * D * F - 2 * D * E * F + +/-- Polarisation expresses an inner product through three squared distances. -/ +theorem inner_sub_sub_eq + (a b c : Plane) : + ⟪b - a, c - a⟫_ℝ = (sqDist a b + sqDist a c - sqDist b c) / 2 := by + have hsub : (b - a) - (c - a) = b - c := by abel + have h := norm_sub_sq_real (b - a) (c - a) + rw [hsub, ← dist_eq_norm, ← dist_eq_norm, ← dist_eq_norm] at h + simp only [sqDist] + rw [dist_comm b a, dist_comm c a] at h + nlinarith + +/-- Four planar points have vanishing Cayley--Menger determinant. -/ +theorem cm4_sqDist_eq_zero (a b c d : Plane) : + cm4 (sqDist a b) (sqDist a c) (sqDist a d) + (sqDist b c) (sqDist b d) (sqDist c d) = 0 := by + have h := gram_det_eq_zero ![b - a, c - a, d - a] + rw [gram3_expand] at h + have n1 : ⟪b - a, b - a⟫_ℝ = sqDist a b := by + rw [real_inner_self_eq_norm_sq, ← dist_eq_norm] + simp only [sqDist, dist_comm b a] + have n2 : ⟪c - a, c - a⟫_ℝ = sqDist a c := by + rw [real_inner_self_eq_norm_sq, ← dist_eq_norm] + simp only [sqDist, dist_comm c a] + have n3 : ⟪d - a, d - a⟫_ℝ = sqDist a d := by + rw [real_inner_self_eq_norm_sq, ← dist_eq_norm] + simp only [sqDist, dist_comm d a] + have i12 := inner_sub_sub_eq a b c + have i13 := inner_sub_sub_eq a b d + have i23 := inner_sub_sub_eq a c d + have i21 : ⟪c - a, b - a⟫_ℝ = + (sqDist a b + sqDist a c - sqDist b c) / 2 := by + rw [real_inner_comm] + exact i12 + have i31 : ⟪d - a, b - a⟫_ℝ = + (sqDist a b + sqDist a d - sqDist b d) / 2 := by + rw [real_inner_comm] + exact i13 + have i32 : ⟪d - a, c - a⟫_ℝ = + (sqDist a c + sqDist a d - sqDist c d) / 2 := by + rw [real_inner_comm] + exact i23 + rw [n1, n2, n3, i12, i13, i23, i21, i31, i32] at h + dsimp [cm4] + ring_nf at h ⊢ + linarith + +/-- The Cayley--Menger identity remains zero after dividing all squared +distances by one common nonzero scale. -/ +theorem cm4_normalized_eq_zero + (a b c d : Plane) {s : ℝ} (hs : s ≠ 0) : + cm4 (sqDist a b / s) (sqDist a c / s) (sqDist a d / s) + (sqDist b c / s) (sqDist b d / s) (sqDist c d / s) = 0 := by + have h := cm4_sqDist_eq_zero a b c d + dsimp [cm4] at h ⊢ + field_simp [hs] + nlinarith + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/Certificates.lean b/LeanPool/Erdos97ConvexOctagon/Certificates.lean new file mode 100644 index 00000000..27a40025 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/Certificates.lean @@ -0,0 +1,408 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.FiniteModel +import LeanPool.Erdos97ConvexOctagon.Obstructions +import LeanPool.Erdos97ConvexOctagon.ResidualObstructions + +/-! # Erdős 97 convex-octagon formalization: Certificates -/ + +namespace Erdos97Octagon + +namespace RawIncidence + +/-- A finite witness emitted by the obstruction classifier. -/ +inductive Certificate where + | k4 (root : Vertex) (component : List Vertex) (a b c d : Vertex) + | hubPentagon (root : Vertex) (component : List Vertex) (o a b c d e : Vertex) + | sharedThree (a b q1 q2 q3 : Vertex) + | cycleStrip (root : Vertex) (component : List Vertex) (o x1 x2 x3 x4 x5 x6 : Vertex) + | residual (payload : UInt64) + deriving DecidableEq + +/-- The two obstruction shapes that remain valid when incidences are added. -/ +inductive PrefixCertificate where + | k4 (root : Vertex) (component : List Vertex) (a b c d : Vertex) + | sharedThree (a b q1 q2 q3 : Vertex) + deriving DecidableEq + +/-- Regard a monotone prefix witness as a general obstruction certificate. -/ +def PrefixCertificate.toCertificate : PrefixCertificate → Certificate + | .k4 root component a b c d => .k4 root component a b c d + | .sharedThree a b q1 q2 q3 => .sharedThree a b q1 q2 q3 + +/-- Validate the tail of an ordered mutual-edge spanning tree. -/ +def extendsTreeB + (R : RawIncidence) (reached : Finset Vertex) : List Vertex → Bool + | [] => true + | v :: todo => + decide (v ∉ reached) && + decide (∃ u ∈ reached, v ∈ R u ∧ u ∈ R v) && + extendsTreeB R (insert v reached) todo + +/-- Check that the listed vertices form an ordered mutual-edge spanning tree. -/ +def componentTreeB (R : RawIncidence) (root : Vertex) : List Vertex → Bool + | [] => false + | first :: rest => decide (first = root) && extendsTreeB R {root} rest + +/-- A selected edge whose selecting endpoint occurs in a validated tree. -/ +def TreeLabelledEdge (R : RawIncidence) (component : List Vertex) (a b : Vertex) : Prop := + (a ∈ component ∧ b ∈ R a) ∨ (b ∈ component ∧ a ∈ R b) + +private def treeLabelledEdgeB + (R : RawIncidence) (component : List Vertex) (a b : Vertex) : Bool := + (decide (a ∈ component) && decide (b ∈ R a)) || + (decide (b ∈ component) && decide (a ∈ R b)) + +/-- The class number stored in a residual-isomorphism payload. -/ +def payloadClass (payload : UInt64) : ℕ := + (payload &&& 15).toNat + +/-- The forward permutation stored in a residual-isomorphism payload. -/ +def payloadForwardCode (payload : UInt64) : UInt64 := + (payload >>> 4) &&& 0xffffff + +/-- The inverse permutation stored in a residual-isomorphism payload. -/ +def payloadInverseCode (payload : UInt64) : UInt64 := + (payload >>> 28) &&& 0xffffff + +/-- Decode one three-bit entry of a packed permutation. -/ +def decodeMap (code : UInt64) (v : Vertex) : Vertex := + Fin.ofNat 8 (((code >>> UInt64.ofNat (3 * v.val)) &&& 7).toNat) + +/-- The mathematical proposition checked for each emitted finite witness. -/ +def Certificate.Valid (R : RawIncidence) : Certificate → Prop + | .k4 root component a b c d => + componentTreeB R root component = true ∧ [a, b, c, d].Nodup ∧ + TreeLabelledEdge R component a b ∧ TreeLabelledEdge R component a c ∧ + TreeLabelledEdge R component a d ∧ TreeLabelledEdge R component b c ∧ + TreeLabelledEdge R component b d ∧ TreeLabelledEdge R component c d + | .hubPentagon root component o a b c d e => + componentTreeB R root component = true ∧ [o, a, b, c, d, e].Nodup ∧ + TreeLabelledEdge R component o a ∧ TreeLabelledEdge R component o b ∧ + TreeLabelledEdge R component o c ∧ TreeLabelledEdge R component o d ∧ + TreeLabelledEdge R component o e ∧ TreeLabelledEdge R component a b ∧ + TreeLabelledEdge R component b c ∧ TreeLabelledEdge R component c d ∧ + TreeLabelledEdge R component d e ∧ TreeLabelledEdge R component e a + | .sharedThree a b q1 q2 q3 => + a ≠ b ∧ q1 ≠ q2 ∧ q1 ≠ q3 ∧ q2 ≠ q3 ∧ + q1 ∈ R a ∧ q2 ∈ R a ∧ q3 ∈ R a ∧ + q1 ∈ R b ∧ q2 ∈ R b ∧ q3 ∈ R b + | .cycleStrip root component o x1 x2 x3 x4 x5 x6 => + componentTreeB R root component = true ∧ [o, x1, x2, x3, x4, x5, x6].Nodup ∧ + TreeLabelledEdge R component o x1 ∧ TreeLabelledEdge R component o x2 ∧ + TreeLabelledEdge R component o x6 ∧ TreeLabelledEdge R component x1 x2 ∧ + TreeLabelledEdge R component x1 x3 ∧ TreeLabelledEdge R component x2 x3 ∧ + TreeLabelledEdge R component x2 x4 ∧ TreeLabelledEdge R component x3 x4 ∧ + TreeLabelledEdge R component x3 x5 ∧ TreeLabelledEdge R component x4 x5 ∧ + TreeLabelledEdge R component x4 x6 ∧ TreeLabelledEdge R component x5 x6 + | .residual payload => + let classIndex := payloadClass payload + let forward := decodeMap (payloadForwardCode payload) + let inverse := decodeMap (payloadInverseCode payload) + classIndex < 13 ∧ + (∀ v, inverse (forward v) = v) ∧ + (∀ v, forward (inverse v) = v) ∧ + ∀ v w, w ∈ R v ↔ + forward w ∈ (residualRepresentative (Fin.ofNat 13 classIndex)).targets (forward v) + +private def residualValidB (R : RawIncidence) (payload : UInt64) : Bool := + let classIndex := payloadClass payload + let forward := decodeMap (payloadForwardCode payload) + let inverse := decodeMap (payloadInverseCode payload) + decide (classIndex < 13) && + (List.finRange 8).all (fun v => decide (inverse (forward v) = v)) && + (List.finRange 8).all (fun v => decide (forward (inverse v) = v)) && + (List.finRange 8).all (fun v => + (List.finRange 8).all (fun w => decide (w ∈ R v ↔ + forward w ∈ + (residualRepresentative (Fin.ofNat 13 classIndex)).targets (forward v)))) + +/-- Kernel-check the mathematical content of an emitted witness. -/ +def Certificate.validB (R : RawIncidence) : Certificate → Bool + | .k4 root component a b c d => + componentTreeB R root component && decide [a, b, c, d].Nodup && + treeLabelledEdgeB R component a b && treeLabelledEdgeB R component a c && + treeLabelledEdgeB R component a d && treeLabelledEdgeB R component b c && + treeLabelledEdgeB R component b d && treeLabelledEdgeB R component c d + | .hubPentagon root component o a b c d e => + componentTreeB R root component && decide [o, a, b, c, d, e].Nodup && + treeLabelledEdgeB R component o a && treeLabelledEdgeB R component o b && + treeLabelledEdgeB R component o c && treeLabelledEdgeB R component o d && + treeLabelledEdgeB R component o e && treeLabelledEdgeB R component a b && + treeLabelledEdgeB R component b c && treeLabelledEdgeB R component c d && + treeLabelledEdgeB R component d e && treeLabelledEdgeB R component e a + | .sharedThree a b q1 q2 q3 => + decide (a ≠ b) && decide (q1 ≠ q2) && decide (q1 ≠ q3) && decide (q2 ≠ q3) && + decide (q1 ∈ R a) && decide (q2 ∈ R a) && decide (q3 ∈ R a) && + decide (q1 ∈ R b) && decide (q2 ∈ R b) && decide (q3 ∈ R b) + | .cycleStrip root component o x1 x2 x3 x4 x5 x6 => + componentTreeB R root component && decide [o, x1, x2, x3, x4, x5, x6].Nodup && + treeLabelledEdgeB R component o x1 && treeLabelledEdgeB R component o x2 && + treeLabelledEdgeB R component o x6 && treeLabelledEdgeB R component x1 x2 && + treeLabelledEdgeB R component x1 x3 && treeLabelledEdgeB R component x2 x3 && + treeLabelledEdgeB R component x2 x4 && treeLabelledEdgeB R component x3 x4 && + treeLabelledEdgeB R component x3 x5 && treeLabelledEdgeB R component x4 x5 && + treeLabelledEdgeB R component x4 x6 && treeLabelledEdgeB R component x5 x6 + | .residual payload => residualValidB R payload + +/-- The Boolean validator implies the mathematical certificate predicate. -/ +theorem Certificate.valid_of_validB + {R : RawIncidence} {certificate : Certificate} + (hvalid : certificate.validB R = true) : certificate.Valid R := by + cases certificate with + | residual payload => + simp only [Certificate.validB, residualValidB, Bool.and_eq_true] at hvalid + rcases hvalid with ⟨⟨⟨hclass, hleft⟩, hright⟩, hedges⟩ + refine ⟨of_decide_eq_true hclass, ?_, ?_, ?_⟩ + · intro v + exact of_decide_eq_true ((List.all_eq_true.mp hleft) v (List.mem_finRange v)) + · intro v + exact of_decide_eq_true ((List.all_eq_true.mp hright) v (List.mem_finRange v)) + · intro v w + have hv := (List.all_eq_true.mp hedges) v (List.mem_finRange v) + exact of_decide_eq_true ((List.all_eq_true.mp hv) w (List.mem_finRange w)) + | k4 root component a b c d => + simpa only [Certificate.validB, Bool.and_eq_true, decide_eq_true_eq, + treeLabelledEdgeB, TreeLabelledEdge, Certificate.Valid, Bool.or_eq_true, + and_assoc] using hvalid + | hubPentagon root component o a b c d e => + simpa only [Certificate.validB, Bool.and_eq_true, decide_eq_true_eq, + treeLabelledEdgeB, TreeLabelledEdge, Certificate.Valid, Bool.or_eq_true, + and_assoc] using hvalid + | sharedThree a b q1 q2 q3 => + simpa only [Certificate.validB, Bool.and_eq_true, decide_eq_true_eq, + Certificate.Valid, and_assoc] using hvalid + | cycleStrip root component o x1 x2 x3 x4 x5 x6 => + simpa only [Certificate.validB, Bool.and_eq_true, decide_eq_true_eq, + treeLabelledEdgeB, TreeLabelledEdge, Certificate.Valid, Bool.or_eq_true, + and_assoc] using hvalid + +/-- One incidence table extends another when it contains every selected edge. -/ +def Extends (R S : RawIncidence) : Prop := + ∀ centre target, target ∈ R centre → target ∈ S centre + +private theorem extendsTreeB_mono {R S : RawIncidence} (hRS : Extends R S) : + ∀ reached todo, extendsTreeB R reached todo = true → + extendsTreeB S reached todo = true := by + intro reached todo + induction todo generalizing reached with + | nil => simp [extendsTreeB] + | cons v todo ih => + intro htree + simp only [extendsTreeB, Bool.and_eq_true, decide_eq_true_eq] at htree ⊢ + rcases htree with ⟨⟨hv, u, hu, hvu, huv⟩, hrest⟩ + exact ⟨⟨hv, u, hu, hRS u v hvu, hRS v u huv⟩, + ih (insert v reached) hrest⟩ + +private theorem componentTreeB_mono {R S : RawIncidence} (hRS : Extends R S) + {root component} (htree : componentTreeB R root component = true) : + componentTreeB S root component = true := by + cases component with + | nil => simp [componentTreeB] at htree + | cons first rest => + simp only [componentTreeB, Bool.and_eq_true] at htree ⊢ + exact ⟨htree.1, extendsTreeB_mono hRS {root} rest htree.2⟩ + +private theorem treeLabelledEdge_mono {R S : RawIncidence} (hRS : Extends R S) + {component a b} (hedge : TreeLabelledEdge R component a b) : + TreeLabelledEdge S component a b := by + rcases hedge with ⟨ha, hab⟩ | ⟨hb, hba⟩ + · exact Or.inl ⟨ha, hRS a b hab⟩ + · exact Or.inr ⟨hb, hRS b a hba⟩ + +/-- A prefix certificate remains valid in every incidence extension. -/ +theorem PrefixCertificate.valid_mono + {R S : RawIncidence} {certificate : PrefixCertificate} + (hRS : Extends R S) (hvalid : certificate.toCertificate.Valid R) : + certificate.toCertificate.Valid S := by + cases certificate with + | k4 root component a b c d => + simp only [PrefixCertificate.toCertificate, Certificate.Valid] at hvalid ⊢ + rcases hvalid with ⟨htree, hnodup, hab, hac, had, hbc, hbd, hcd⟩ + exact ⟨componentTreeB_mono hRS htree, hnodup, + treeLabelledEdge_mono hRS hab, treeLabelledEdge_mono hRS hac, + treeLabelledEdge_mono hRS had, treeLabelledEdge_mono hRS hbc, + treeLabelledEdge_mono hRS hbd, treeLabelledEdge_mono hRS hcd⟩ + | sharedThree a b q1 q2 q3 => + simp only [PrefixCertificate.toCertificate, Certificate.Valid] at hvalid ⊢ + rcases hvalid with ⟨hab, h12, h13, h23, ha1, ha2, ha3, hb1, hb2, hb3⟩ + exact ⟨hab, h12, h13, h23, hRS a q1 ha1, hRS a q2 ha2, + hRS a q3 ha3, hRS b q1 hb1, hRS b q2 hb2, hRS b q3 hb3⟩ + +private theorem extendsTree_sameComponent + (Q : OctagonIncidence) (root : Vertex) : + ∀ (reached : Finset Vertex) (todo : List Vertex), + (∀ v ∈ reached, Q.SameComponent root v) → + extendsTreeB Q.targets reached todo = true → + ∀ v ∈ todo, Q.SameComponent root v := by + intro reached todo + induction todo generalizing reached with + | nil => simp + | cons v todo ih => + intro hreach htree + simp only [extendsTreeB, Bool.and_eq_true, decide_eq_true_eq] at htree + obtain ⟨u, hu, huv⟩ := htree.1.2 + have hv : Q.SameComponent root v := (hreach u hu).tail huv + have hreach' : ∀ w ∈ insert v reached, Q.SameComponent root w := by + intro w hw + rcases Finset.mem_insert.mp hw with rfl | hw + · exact hv + · exact hreach w hw + have htodo := ih (insert v reached) hreach' htree.2 + intro w hw + rcases List.mem_cons.mp hw with rfl | hw + · exact hv + · exact htodo w hw + +/-- Every vertex in a validated ordered tree belongs to the root component. -/ +theorem componentTree_sameComponent + (Q : OctagonIncidence) {root : Vertex} {component : List Vertex} + (htree : componentTreeB Q.targets root component = true) + {v : Vertex} (hv : v ∈ component) : + Q.SameComponent root v := by + cases component with + | nil => simp [componentTreeB] at htree + | cons first rest => + simp only [componentTreeB, Bool.and_eq_true, decide_eq_true_eq] at htree + have hfirst : first = root := htree.1 + subst first + rcases List.mem_cons.mp hv with rfl | hv + · exact Relation.ReflTransGen.refl + · apply extendsTree_sameComponent Q root {root} rest + (fun w hw => by + have : w = root := by simpa using hw + subst w + exact Relation.ReflTransGen.refl) htree.2 v hv + +/-- Every tree-labelled checker edge is a genuine component-radius edge. -/ +theorem treeLabelledEdge_sound + (Q : OctagonIncidence) {root : Vertex} {component : List Vertex} + (htree : componentTreeB Q.targets root component = true) + {a b : Vertex} (h : TreeLabelledEdge Q.targets component a b) : + Q.LabelledEdge root a b := by + rcases h with ⟨ha, hab⟩ | ⟨hb, hba⟩ + · exact Or.inl ⟨componentTree_sameComponent Q htree ha, hab⟩ + · exact Or.inr ⟨componentTree_sameComponent Q htree hb, hba⟩ + +private theorem finOfNat_eq_of_lt {n a : ℕ} [NeZero n] (h : a < n) : + Fin.ofNat n a = ⟨a, h⟩ := by + apply Fin.ext + simp [Nat.mod_eq_of_lt h] + +private theorem residual_relabel_eq + (Q : OctagonIncidence) (payload : UInt64) + (hvalid : (Certificate.residual payload).Valid Q.targets) : + ∃ classIndex : Fin 13, ∃ e : Vertex ≃ Vertex, + Q.relabel e = residualRepresentative classIndex := by + simp only [Certificate.Valid] at hvalid + let classIndex : Fin 13 := ⟨payloadClass payload, hvalid.1⟩ + let forward := decodeMap (payloadForwardCode payload) + let inverse := decodeMap (payloadInverseCode payload) + let e : Vertex ≃ Vertex := Equiv.mk forward inverse + (left_inv := hvalid.2.1) (right_inv := hvalid.2.2.1) + have hright (x : Vertex) : forward (inverse x) = x := hvalid.2.2.1 x + refine ⟨classIndex, e, ?_⟩ + apply OctagonIncidence.ext + funext v + ext w + have hedge := hvalid.2.2.2 (e.symm v) (e.symm w) + have hindex : Fin.ofNat 13 (payloadClass payload) = classIndex := + finOfNat_eq_of_lt hvalid.1 + change w ∈ (Q.targets (e.symm v)).map e.toEmbedding ↔ + w ∈ (residualRepresentative classIndex).targets v + rw [Finset.mem_map] + constructor + · rintro ⟨x, hx, hxw⟩ + have hxeq : x = e.symm w := by + apply e.injective + simpa using hxw + subst x + have := hedge.mp hx + change forward (inverse w) ∈ + (residualRepresentative (Fin.ofNat 13 (payloadClass payload))).targets + (forward (inverse v)) at this + rw [hright w, hright v, hindex] at this + exact this + · intro hw + refine ⟨e.symm w, ?_, by simp⟩ + apply hedge.mpr + change forward (inverse w) ∈ + (residualRepresentative (Fin.ofNat 13 (payloadClass payload))).targets + (forward (inverse v)) + rw [hright w, hright v, hindex] + exact hw + +/-- Every validated finite witness contradicts a convex planar realisation. -/ +theorem Certificate.not_convex_realises + {Q : OctagonIncidence} (certificate : Certificate) + (hvalid : certificate.Valid Q.targets) + {p : Vertex → Plane} (hC : ConvexIndependent ℝ p) (hR : Realises p Q) : + False := by + cases certificate with + | k4 root component a b c d => + simp only [Certificate.Valid] at hvalid + rcases hvalid with ⟨htree, hnodup, hab, hac, hadge, hbc, hbd, hcd⟩ + have had : a ≠ d := by + intro had + subst d + simp at hnodup + exact no_labelled_k4 hC.injective hR had + (treeLabelledEdge_sound Q htree hab) + (treeLabelledEdge_sound Q htree hac) + (treeLabelledEdge_sound Q htree hadge) + (treeLabelledEdge_sound Q htree hbc) + (treeLabelledEdge_sound Q htree hbd) + (treeLabelledEdge_sound Q htree hcd) + | hubPentagon root component o a b c d e => + simp only [Certificate.Valid] at hvalid + rcases hvalid with + ⟨htree, _hnodup, hoa, hob, hoc, hod, hoe, hab, hbc, hcd, hde, hea⟩ + exact no_labelled_hub_pentagon hC.injective hR + (treeLabelledEdge_sound Q htree hoa) + (treeLabelledEdge_sound Q htree hob) + (treeLabelledEdge_sound Q htree hoc) + (treeLabelledEdge_sound Q htree hod) + (treeLabelledEdge_sound Q htree hoe) + (treeLabelledEdge_sound Q htree hab) + (treeLabelledEdge_sound Q htree hbc) + (treeLabelledEdge_sound Q htree hcd) + (treeLabelledEdge_sound Q htree hde) + (treeLabelledEdge_sound Q htree hea) + | sharedThree a b q1 q2 q3 => + simp only [Certificate.Valid] at hvalid + exact no_three_shared_targets hC hR hvalid.1 hvalid.2.1 + hvalid.2.2.1 hvalid.2.2.2.1 hvalid.2.2.2.2.1 + hvalid.2.2.2.2.2.1 hvalid.2.2.2.2.2.2.1 + hvalid.2.2.2.2.2.2.2.1 hvalid.2.2.2.2.2.2.2.2.1 + hvalid.2.2.2.2.2.2.2.2.2 + | cycleStrip root component o x1 x2 x3 x4 x5 x6 => + simp only [Certificate.Valid] at hvalid + rcases hvalid with + ⟨htree, _hnodup, e01, e02, e06, e12, e13, e23, e24, e34, e35, e45, e46, e56⟩ + exact no_labelled_cycle_square_strip hC.injective hR + (treeLabelledEdge_sound Q htree e01) + (treeLabelledEdge_sound Q htree e02) + (treeLabelledEdge_sound Q htree e06) + (treeLabelledEdge_sound Q htree e12) + (treeLabelledEdge_sound Q htree e13) + (treeLabelledEdge_sound Q htree e23) + (treeLabelledEdge_sound Q htree e24) + (treeLabelledEdge_sound Q htree e34) + (treeLabelledEdge_sound Q htree e35) + (treeLabelledEdge_sound Q htree e45) + (treeLabelledEdge_sound Q htree e46) + (treeLabelledEdge_sound Q htree e56) + | residual payload => + obtain ⟨classIndex, e, he⟩ := residual_relabel_eq Q payload hvalid + have hC' := convexIndependent_relabel hC e + have hR' := realises_relabel hR e + rw [he] at hR' + exact residualRepresentative_not_convex_realises classIndex hC' hR' + +end RawIncidence + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/Classification.lean b/LeanPool/Erdos97ConvexOctagon/Classification.lean new file mode 100644 index 00000000..6afb8f8c --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/Classification.lean @@ -0,0 +1,43 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageBranches + +/-! +# Exhaustive normalized-incidence classification + +The 35 possible first rows reduce to seven symmetry orbits. One master LRAT +certificate excludes all seven canonical rows, and every clause has an audited +semantic proof in `CoverageFormula`. +-/ + +namespace Erdos97Octagon + +open RawIncidence + +/-- No normalized octagon incidence table has a convex planar realisation. -/ +theorem normalized_convex_realisation_impossible + {p : Vertex → Plane} {Q : OctagonIncidence} + (hC : ConvexIndependent ℝ p) (hR : Realises p Q) (hN : Q.Normalized) : + False := by + obtain ⟨rowOneIndex, hrowOne⟩ := exists_rowOneIndex Q + obtain ⟨orbit, p', Q', hC', hR', hN', hSparse', hBalanced', hcanonical⟩ := + canonicalize_rowOne hC hR hN rowOneIndex hrowOne + exact canonicalBranch_impossible hC' hR' hN' hSparse' hBalanced' + orbit hcanonical + +/-- A convex-independent labelled octagon has a vertex that does not have +four other labelled vertices at one common distance. -/ +theorem erdos97_convex_octagon + {p : Vertex → Plane} (hC : ConvexIndependent ℝ p) : + ∃ vertex, ¬HasFourEquidistant p vertex := by + by_contra hall + push Not at hall + obtain ⟨p', Q, hC', hR', hN, _hSparse, _hBalanced⟩ := + normalized_reduction_of_all_hasFour hC hall + exact normalized_convex_realisation_impossible hC' hR' hN + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageBranches.lean b/LeanPool/Erdos97ConvexOctagon/CoverageBranches.lean new file mode 100644 index 00000000..7195cf3f --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageBranches.lean @@ -0,0 +1,31 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.MasterCertificate + +/-! +# Master coverage contradiction + +One kernel-checked certificate excludes all seven canonical first rows at once. +-/ + +namespace Erdos97Octagon.RawIncidence + +open LRAT + +/-- Every normalized counterexample with a canonical first row contradicts +the master LRAT certificate. -/ +theorem canonicalBranch_impossible + {p : Vertex → Plane} {Q : OctagonIncidence} + (hC : ConvexIndependent ℝ p) (hR : Realises p Q) + (hN : Q.Normalized) (hSparse : Q.PairSparse) (hBalanced : Q.Balanced) + (rowOneIndex : Fin 7) + (hrowOne : Q.targets 1 = packedRow (canonicalRowMask rowOneIndex)) : + False := + masterFormula_unsatisfiable (valuation Q.targets) + (masterFormula_satisfied hC hR hN hSparse hBalanced rowOneIndex hrowOne) + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData.lean new file mode 100644 index 00000000..db451f2b --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData.lean @@ -0,0 +1,144 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageData00 +import LeanPool.Erdos97ConvexOctagon.CoverageData01 +import LeanPool.Erdos97ConvexOctagon.CoverageData02 +import LeanPool.Erdos97ConvexOctagon.CoverageData03 +import LeanPool.Erdos97ConvexOctagon.CoverageData04 +import LeanPool.Erdos97ConvexOctagon.CoverageData05 +import LeanPool.Erdos97ConvexOctagon.CoverageData06 +import LeanPool.Erdos97ConvexOctagon.CoverageData07 +import LeanPool.Erdos97ConvexOctagon.CoverageData08 +import LeanPool.Erdos97ConvexOctagon.CoverageData09 +import LeanPool.Erdos97ConvexOctagon.CoverageData10 +import LeanPool.Erdos97ConvexOctagon.CoverageData11 +import LeanPool.Erdos97ConvexOctagon.CoverageData12 +import LeanPool.Erdos97ConvexOctagon.CoverageData13 +import LeanPool.Erdos97ConvexOctagon.CoverageData14 +import LeanPool.Erdos97ConvexOctagon.CoverageData15 +import LeanPool.Erdos97ConvexOctagon.CoverageData16 +import LeanPool.Erdos97ConvexOctagon.CoverageData17 +import LeanPool.Erdos97ConvexOctagon.CoverageData18 +import LeanPool.Erdos97ConvexOctagon.CoverageData19 +import LeanPool.Erdos97ConvexOctagon.CoverageData20 +import LeanPool.Erdos97ConvexOctagon.CoverageData21 +import LeanPool.Erdos97ConvexOctagon.CoverageData22 +import LeanPool.Erdos97ConvexOctagon.CoverageData23 +import LeanPool.Erdos97ConvexOctagon.CoverageData24 +import LeanPool.Erdos97ConvexOctagon.CoverageData25 +import LeanPool.Erdos97ConvexOctagon.CoverageData26 +import LeanPool.Erdos97ConvexOctagon.CoverageData27 +import LeanPool.Erdos97ConvexOctagon.CoverageData28 +import LeanPool.Erdos97ConvexOctagon.CoverageData29 +import LeanPool.Erdos97ConvexOctagon.CoverageData30 +import LeanPool.Erdos97ConvexOctagon.CoverageData31 + +/-! # Erdős 97 convex-octagon formalization: Coverage Data -/ + +namespace Erdos97Octagon.RawIncidence + +/-- The 32 generated groups containing all 256 pattern hash buckets. -/ +def patternBucketGroups : Array (Array (List PatternEntry)) := #[ + patternBuckets00, + patternBuckets01, + patternBuckets02, + patternBuckets03, + patternBuckets04, + patternBuckets05, + patternBuckets06, + patternBuckets07, + patternBuckets08, + patternBuckets09, + patternBuckets10, + patternBuckets11, + patternBuckets12, + patternBuckets13, + patternBuckets14, + patternBuckets15, + patternBuckets16, + patternBuckets17, + patternBuckets18, + patternBuckets19, + patternBuckets20, + patternBuckets21, + patternBuckets22, + patternBuckets23, + patternBuckets24, + patternBuckets25, + patternBuckets26, + patternBuckets27, + patternBuckets28, + patternBuckets29, + patternBuckets30, + patternBuckets31 +] + +/-- The 32 generated groups containing all 256 exact-table hash buckets. -/ +def hardBucketGroups : Array (Array (List HardEntry)) := #[ + hardBuckets00, + hardBuckets01, + hardBuckets02, + hardBuckets03, + hardBuckets04, + hardBuckets05, + hardBuckets06, + hardBuckets07, + hardBuckets08, + hardBuckets09, + hardBuckets10, + hardBuckets11, + hardBuckets12, + hardBuckets13, + hardBuckets14, + hardBuckets15, + hardBuckets16, + hardBuckets17, + hardBuckets18, + hardBuckets19, + hardBuckets20, + hardBuckets21, + hardBuckets22, + hardBuckets23, + hardBuckets24, + hardBuckets25, + hardBuckets26, + hardBuckets27, + hardBuckets28, + hardBuckets29, + hardBuckets30, + hardBuckets31 +] + +/-- Retrieve one pattern hash bucket. -/ +def patternBucket (index : Fin 256) : List PatternEntry := + let group := patternBucketGroups.getD (index.val / 8) #[] + group.getD (index.val % 8) [] + +/-- Retrieve one exact-table hash bucket. -/ +def hardBucket (index : Fin 256) : List HardEntry := + let group := hardBucketGroups.getD (index.val / 8) #[] + group.getD (index.val % 8) [] + +/-- Look up a monotone obstruction entry by its source identifier. -/ +def patternEntry (origin : ℕ) : Option PatternEntry := + (patternBucket (Fin.ofNat 256 origin)).find? (fun entry => entry.origin == origin) + +/-- Look up an exact-table obstruction entry by its source identifier. -/ +def hardEntry (origin : ℕ) : Option HardEntry := + (hardBucket (Fin.ofNat 256 origin)).find? (fun entry => entry.origin == origin) + +theorem patternEntry_sound {origin : ℕ} {entry : PatternEntry} + (hfind : patternEntry origin = some entry) : + entry.origin = origin := by + simpa using List.find?_some hfind + +theorem hardEntry_sound {origin : ℕ} {entry : HardEntry} + (hfind : hardEntry origin = some entry) : + entry.origin = origin := by + simpa using List.find?_some hfind + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData00.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData00.lean new file mode 100644 index 00000000..029dd30c --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData00.lean @@ -0,0 +1,155 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 0–7 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets00 : Array (List PatternEntry) := #[ + [ + ⟨0, 7196, .sharedThree 0 1 2 3 4⟩, + ⟨1280, 11272194355625984, .k4 2 [2, 3, 5, 6] 2 3 5 6⟩, + ⟨2048, 42785027821404184, .k4 0 [0, 3, 4, 6] 3 4 6 7⟩, + ⟨6656, 6777829138759680, .k4 2 [2, 5, 4, 6, 3] 1 2 3 4⟩ + ], + [ + ⟨1, 1703962, .sharedThree 0 2 1 3 4⟩, + ⟨257, 286851100, .k4 0 [0, 2, 3] 0 2 3 4⟩, + ⟨513, 10770815905719296, .k4 1 [1, 6, 5] 1 2 5 6⟩, + ⟨1793, 7036875513593884, .k4 0 [0, 2, 3, 6] 0 2 4 6⟩, + ⟨2049, 42785061912707096, .k4 0 [0, 3, 4, 6] 3 4 6 7⟩, + ⟨6657, 6777846117826560, .k4 2 [2, 5, 4, 6, 3] 1 2 3 4⟩ + ], + [ + ⟨514, 11259000712620032, .k4 1 [1, 3, 6] 1 3 5 6⟩, + ⟨770, 50922766, .k4 0 [0, 1, 2, 3] 0 1 2 3⟩, + ⟨1026, 1970324837187846, .k4 0 [0, 1, 2, 6] 0 1 2 6⟩, + ⟨1282, 11272194890399744, .k4 2 [2, 3, 5, 6] 2 3 5 6⟩, + ⟨1794, 7036875793500442, .k4 0 [0, 1, 3, 6] 0 3 4 6⟩, + ⟨2050, 45108564053910528, .k4 1 [1, 2, 5, 6] 1 2 6 7⟩, + ⟨4610, 76965868563468, .k4 0 [0, 2, 3, 1, 5] 1 2 5 6⟩, + ⟨8450, 13583693067657502, .k4 0 [0, 1, 2, 5, 6, 4] 0 2 3 4⟩, + ], + [ + ⟨771, 50924558, .k4 0 [0, 2, 3, 1] 0 1 2 3⟩, + ⟨1027, 1970324837188614, .k4 0 [0, 2, 1, 6] 0 1 2 6⟩, + ⟨1795, 7036875827642396, .k4 0 [0, 2, 3, 6] 0 3 4 6⟩, + ⟨2819, 26560699629596, .k4 0 [0, 2, 3, 5, 4] 0 2 3 4⟩, + ⟨4355, 5805140522122608640, .k4 2 [2, 3, 4, 7, 6] 2 3 4 6⟩, + ⟨6659, 7036875513660702, .k4 0 [0, 1, 3, 2, 6] 0 2 4 6⟩ + ], + [ + ⟨772, 50988302, .k4 0 [0, 1, 3, 2] 0 1 2 3⟩, + ⟨1028, 1970324841235718, .k4 0 [0, 1, 2, 6] 0 1 2 6⟩, + ⟨1284, 11285698464186368, .k4 3 [3, 4, 5, 6] 3 4 5 6⟩, + ⟨6148, 79165430787084, .k4 0 [0, 2, 3, 1, 5] 1 2 5 6⟩, + ⟨7428, 4792955903484264718, .k4 0 [0, 1, 3, 7, 6, 2] 0 1 2 3⟩, + ], + [ + ⟨261, 337182748, .k4 0 [0, 2, 3] 0 2 3 4⟩, + ⟨517, 11340362928908288, .k4 1 [1, 5, 6] 1 3 5 6⟩, + ⟨773, 50990094, .k4 0 [0, 3, 1, 2] 0 1 2 3⟩, + ⟨1029, 1970324841251846, .k4 0 [0, 2, 6, 1] 0 1 2 6⟩, + ⟨4101, 1513210028855821334, .k4 0 [0, 4, 7, 2, 1] 0 1 2 7⟩, + ⟨4357, 5805791526348939264, .k4 1 [1, 6, 7, 4, 5] 1 4 5 6⟩, + ⟨9221, 5922249353749534, .k4 0 [0, 3, 4, 5, 6, 1] 0 1 2 6⟩, + ⟨9989, 4940472293295006982, .k4 0 [0, 1, 2, 7, 6, 4, 5] 0 1 2 5⟩ + ], + [ + ⟨6, 6381824, .sharedThree 1 2 0 5 6⟩, + ⟨262, 353435676, .k4 0 [0, 2, 3] 0 2 3 4⟩, + ⟨518, 11342561958952960, .k4 2 [2, 5, 6] 2 3 5 6⟩, + ⟨1030, 1970324841301254, .k4 0 [0, 1, 2, 6] 0 1 2 6⟩, + ⟨1286, 11285835366268928, .k4 3 [3, 4, 6, 5] 3 4 5 6⟩, + ⟨1542, 72997271643136, .k4 1 [1, 2, 5, 4] 2 4 5 6⟩, + ⟨4358, 5806354484898562048, .k4 2 [2, 6, 7, 4, 5] 2 4 5 6⟩, + ⟨4870, 150242816163864, .k4 0 [0, 3, 4, 5, 2] 2 4 5 7⟩, + ⟨6662, 7037153590856734, .k4 0 [0, 2, 4, 1, 6] 0 1 3 6⟩, + ⟨7430, 4792955916319359254, .k4 0 [0, 1, 4, 7, 6, 2] 0 1 2 4⟩ + ], + [ + ⟨7, 6842368, .sharedThree 1 2 3 5 6⟩, + ⟨263, 353894428, .k4 0 [0, 3, 2] 0 2 3 4⟩, + ⟨519, 11356202768269312, .k4 4 [4, 5, 6] 3 4 5 6⟩, + ⟨775, 84085774, .k4 0 [0, 2, 3, 1] 0 1 2 3⟩, + ⟨1031, 1970324841316614, .k4 0 [0, 1, 6, 2] 0 1 2 6⟩, + ⟨1799, 7037200836395036, .k4 0 [0, 2, 4, 6] 0 3 4 6⟩, + ⟨4359, 5807480403589595136, .k4 3 [3, 6, 7, 4, 5] 3 4 5 6⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets00 : Array (List HardEntry) := #[ + [ + ⟨0, 8697799730556775710, .cycleStrip 0 [0, 1, 2, 3, 4, 5, 6, 7] 0 1 3 5 7 6 4⟩, + ⟨768, 6020701831342613790, .residual 104390639921009⟩, + ⟨1024, 8153717281279011870, .residual 1339015425089107⟩, + ⟨1280, 3870992639438515230, .residual 3018991752198694⟩, + ⟨5376, 5590592674009309470, .residual 3915966730421769⟩, + ⟨5632, 6428199806150304030, .residual 1734974158594661⟩ + ], + [ + ⟨1, 8697795349690133790, .hubPentagon 0 [0, 1, 2, 3, 4, 5, 6, 7] 2 0 1 5 6 4⟩, + ⟨769, 3717101826386453790, .residual 605269692606434⟩, + ⟨1025, 8190575647154334750, .residual 307506372826355⟩, + ⟨1281, 3148396054435752990, .residual 3302134262631687⟩, + ⟨5377, 7824238863525208350, .residual 199278788155888⟩, + ⟨5633, 6141095329905434910, .residual 3035551636309698⟩ + ], + [ + ⟨2, 8410689778228604190, .residual 4411689737676934⟩, + ⟨770, 8256726681708422430, .residual 4409479976808705⟩, + ⟨1026, 5418893192665328670, .residual 3746517855920788⟩, + ⟨1282, 3139951933983452190, .residual 347141178295410⟩, + ⟨5378, 5599249129591660830, .residual 208055910283760⟩, + ⟨5634, 6425956802429640990, .residual 4231650588109506⟩ + ], + [ + ⟨3, 8693859081117707550, .hubPentagon 0 [0, 1, 2, 3, 4, 5, 6, 7] 1 0 2 6 5 3⟩, + ⟨771, 3717098527901902110, .residual 4411689737676933⟩, + ⟨1027, 5418892097448668190, .residual 3746517855920785⟩, + ⟨1283, 5996977923177999390, .residual 2317586278089825⟩, + ⟨5379, 8398447679112864030, .residual 199276909050352⟩, + ⟨5635, 5564643373695033630, .residual 2920824465876805⟩ + ], + [ + ⟨4, 7397959300637994270, .residual 4411689737676931⟩, + ⟨772, 7652624885687543070, .residual 4189839890960416⟩, + ⟨1028, 3145293499375119390, .residual 3253936643007124⟩, + ⟨1284, 5158251776292449310, .residual 3893577870611859⟩, + ⟨5380, 3865946433514103070, .residual 1013831082619824⟩, + ⟨5636, 5563521871834702110, .residual 3528256976411330⟩ + ], + [ + ⟨5, 7684223732869704990, .residual 4349139977733382⟩, + ⟨773, 8226825029383906590, .residual 4251412542173216⟩, + ⟨1029, 3145012028693376030, .residual 3253936643007121⟩, + ⟨1285, 5452051303426452510, .residual 4408292418399751⟩, + ⟨5381, 3862342896896958750, .residual 4350102050465026⟩, + ⟨5637, 3141636414015463710, .residual 1441062780320802⟩ + ], + [ + ⟨6, 8693009180154604830, .residual 155917796596467⟩, + ⟨774, 7690130066659042590, .residual 3916673252471171⟩, + ⟨1030, 4158170209613736990, .residual 4317250646643984⟩, + ⟨1286, 5163820944454609950, .residual 3884919216541330⟩, + ⟨5382, 7798428910396104990, .residual 3364939598947586⟩, + ⟨5638, 3285736200573477150, .residual 2489030601069602⟩ + ], + [ + ⟨7, 7399917398290279710, .residual 4411689737676932⟩, + ⟨775, 3150432644676936990, .residual 157994266016500⟩, + ⟨1031, 3871062447718886430, .hubPentagon 0 [0, 2, 3, 4, 1, 5, 7, 6] 0 1 2 7 4 3⟩, + ⟨1287, 2858261605449231390, .residual 3331727417808275⟩, + ⟨5383, 4154172000913056030, .residual 1013834873746352⟩, + ⟨5639, 7653121739334017310, .residual 1076505035839408⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData01.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData01.lean new file mode 100644 index 00000000..05320331 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData01.lean @@ -0,0 +1,134 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 8–15 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets01 : Array (List PatternEntry) := #[ + [ + ⟨520, 11550371277176832, .k4 3 [3, 5, 6] 0 3 5 6⟩, + ⟨1288, 11331567406311424, .k4 1 [1, 3, 5, 6] 1 3 5 6⟩, + ⟨4104, 1513210061336936460, .k4 0 [0, 2, 7, 4, 3] 0 2 3 7⟩ + ], + [ + ⟨265, 606743552, .k4 1 [1, 2, 3] 1 2 3 5⟩, + ⟨777, 84544526, .k4 0 [0, 3, 2, 1] 0 1 2 3⟩, + ⟨1033, 2533275885699084, .k4 0 [0, 2, 3, 6] 0 2 3 6⟩, + ⟨1289, 11331568446498816, .k4 1 [1, 5, 6, 3] 1 3 5 6⟩, + ⟨4361, 5810792234088398848, .k4 2 [2, 5, 6, 7, 4] 2 4 5 6⟩, + ⟨7433, 4794081804510527758, .k4 0 [0, 1, 2, 7, 6, 3] 0 1 2 3⟩, + ], + [ + ⟨1546, 74768437111808, .k4 1 [1, 2, 3, 5] 1 3 5 6⟩, + ⟨7434, 4794081817596559642, .k4 0 [0, 1, 4, 7, 6, 3] 0 1 3 4⟩ + ], + [ + ⟨11, 10592512, .sharedThree 1 2 0 5 7⟩, + ⟨779, 100862990, .k4 0 [0, 2, 1, 3] 0 1 2 3⟩, + ⟨1035, 2533275914486026, .k4 0 [0, 1, 3, 6] 0 1 3 6⟩, + ⟨1291, 11331568480051200, .k4 1 [1, 5, 6, 3] 1 3 5 6⟩, + ⟨4107, 1729382826329571356, .k4 0 [0, 2, 3, 7, 4] 0 2 3 4⟩, + ⟨5899, 12116106420510, .k4 0 [0, 1, 4, 5, 2] 0 2 3 5⟩, + ], + [ + ⟨524, 11821949592299520, .k4 1 [1, 3, 6] 1 3 5 6⟩, + ⟨780, 101254414, .k4 0 [0, 1, 2, 3] 0 1 2 3⟩, + ⟨1036, 2533275914487818, .k4 0 [0, 3, 1, 6] 0 1 3 6⟩, + ⟨4364, 5814226972846325760, .k4 3 [3, 5, 6, 7, 4] 3 4 5 6⟩, + ], + [ + ⟨525, 11821950632486912, .k4 1 [1, 6, 3] 1 3 5 6⟩, + ⟨781, 101256206, .k4 0 [0, 2, 3, 1] 0 1 2 3⟩, + ⟨1037, 2533275936030732, .k4 0 [0, 2, 3, 6] 0 2 3 6⟩ + ], + [ + ⟨14, 12697856, .sharedThree 1 2 0 6 7⟩, + ⟨270, 1112165376, .k4 1 [1, 2, 3] 1 2 3 6⟩, + ⟨1038, 2533275952283660, .k4 0 [0, 2, 3, 6] 0 2 3 6⟩, + ⟨4110, 1729382843258306588, .k4 0 [0, 2, 3, 7, 4] 0 2 3 4⟩, + ⟨7438, 4796333903797518614, .k4 0 [0, 1, 2, 7, 6, 4] 0 1 2 4⟩ + ], + [ + ⟨527, 11821950666039296, .k4 1 [1, 6, 3] 1 3 5 6⟩, + ⟨1039, 2533275952742412, .k4 0 [0, 3, 2, 6] 0 2 3 6⟩, + ⟨2319, 5811896283073347584, .k4 3 [3, 6, 7, 4] 3 4 5 6⟩, + ⟨7439, 4796333921027522842, .k4 0 [0, 1, 3, 7, 6, 4] 0 1 3 4⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets01 : Array (List HardEntry) := #[ + [ + ⟨8, 8697799730289388830, .hubPentagon 0 [0, 1, 2, 3, 4, 5, 6, 7] 2 0 1 5 6 4⟩, + ⟨776, 8266581603606816030, .residual 3916658220028291⟩, + ⟨1032, 5420594277881441310, .residual 768639863790514⟩, + ⟨1288, 3140075081450941470, .residual 4346719763574279⟩, + ⟨5384, 3285891231469789470, .residual 4349139977733378⟩, + ⟨5640, 3146988536760295710, .residual 263033069355504⟩ + ], + [ + ⟨9, 8410694158827859230, .residual 3918988239981702⟩, + ⟨777, 3726884181624710430, .residual 157979233573620⟩, + ⟨1033, 5419406806330076190, .residual 1203547363024721⟩, + ⟨1289, 2851844722479098910, .residual 3323068763737746⟩, + ⟨5385, 4154163606970425630, .residual 1022613787071408⟩, + ⟨5641, 7654234419566403870, .residual 3300225149774344⟩ + ], + [ + ⟨10, 8697795349422746910, .cycleStrip 0 [0, 1, 2, 3, 4, 5, 6, 7] 0 1 2 5 6 7 4⟩, + ⟨778, 3150432618907526430, .residual 157994266016497⟩, + ⟨1034, 3713174884401638430, .residual 1343842705006036⟩, + ⟨1290, 5130667230218972190, .residual 3746380685381268⟩, + ⟨5386, 8374880746683490590, .residual 3363977526215938⟩, + ⟨5642, 7650869913985409310, .residual 3300225149774345⟩ + ], + [ + ⟨11, 8689069625664810270, .hubPentagon 0 [0, 1, 2, 4, 3, 5, 6, 7] 0 1 2 6 4 3⟩, + ⟨779, 8693867215323751710, .hubPentagon 0 [0, 1, 2, 3, 4, 5, 6, 7] 1 0 2 6 5 4⟩, + ⟨1035, 5446490936687815710, .residual 236284790560113⟩, + ⟨1291, 5130666135002311710, .residual 3746380685381265⟩, + ⟨5387, 3289485261948576030, .residual 1022609995944880⟩, + ⟨5643, 8659741810657255710, .residual 3362744870465794⟩ + ], + [ + ⟨12, 6168184248254803230, .residual 4403991276775443⟩, + ⟨780, 7654313722328474910, .residual 1167913026665954⟩, + ⟨1036, 5455147529172249630, .residual 1703548918296290⟩, + ⟨1292, 2858189038789094430, .residual 3253799472467604⟩, + ⟨5388, 3857276638301118750, .residual 209140128487920⟩, + ⟨5644, 4149307752152490270, .residual 3035688894908098⟩ + ], + [ + ⟨13, 8688509961394924830, .residual 708974291475411⟩, + ⟨781, 4154171992331347230, .residual 2471328076515536⟩, + ⟨1037, 8189464194495114270, .residual 3299984631541254⟩, + ⟨1293, 2857907568107351070, .residual 3253799472467601⟩, + ⟨5389, 3865933230785552670, .residual 4346975314200073⟩, + ⟨5645, 3862203275907621150, .residual 1734838808404581⟩ + ], + [ + ⟨14, 6454721393713163550, .residual 4278891759698982⟩, + ⟨782, 6463102686283326750, .residual 1243631141429042⟩, + ⟨1038, 8192693988426869790, .residual 1831459452811859⟩, + ⟨1294, 5132297947931765790, .residual 1766497048060753⟩, + ⟨5390, 3289481274575151390, .residual 4346975314200072⟩, + ⟨5646, 4147064748431827230, .residual 2920841436030789⟩ + ], + [ + ⟨15, 6175167135772519710, .residual 4403991276775444⟩, + ⟨783, 8262233563400398110, .residual 3254039990700688⟩, + ⟨1039, 6451358515895823390, .residual 4410442049490187⟩, + ⟨1295, 3714161027419499550, .residual 1734880180889185⟩, + ⟨5391, 3280824408286552350, .residual 209138249382384⟩, + ⟨5647, 3285751319697219870, .residual 3668700697602754⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData02.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData02.lean new file mode 100644 index 00000000..051808ae --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData02.lean @@ -0,0 +1,141 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 16–23 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets02 : Array (List PatternEntry) := #[ + [ + ⟨784, 12886017302, .k4 0 [0, 1, 2, 4] 0 1 2 4⟩, + ⟨1040, 2533555322224664, .k4 0 [0, 3, 4, 6] 0 3 4 6⟩, + ⟨1552, 76965818230022, .k4 0 [0, 1, 2, 5] 1 2 5 6⟩, + ⟨6416, 1708821463985152, .k4 1 [1, 5, 6, 4, 2] 1 2 3 4⟩ + ], + [ + ⟨17, 14737408, .sharedThree 1 2 5 6 7⟩, + ⟨529, 11901113859074048, .k4 1 [1, 6, 5] 1 3 5 6⟩, + ⟨1041, 2533585386995736, .k4 0 [0, 3, 4, 6] 0 3 4 6⟩, + ⟨1553, 76965818360070, .k4 0 [0, 1, 2, 5] 1 2 5 6⟩, + ⟨2321, 5850670421308866560, .k4 4 [4, 6, 7, 5] 0 5 6 7⟩ + ], + [ + ⟨18, 369098774, .sharedThree 0 3 1 2 4⟩, + ⟨530, 12384899586064384, .k4 2 [2, 3, 6] 2 3 5 6⟩, + ⟨786, 12886082838, .k4 0 [0, 1, 4, 2] 0 1 2 4⟩, + ⟨2322, 5882142704703373312, .k4 4 [4, 5, 7, 6] 0 5 6 7⟩, + ⟨3602, 10487141910012934, .k4 0 [0, 2, 6, 5, 1] 0 1 2 6⟩, + ⟨10002, 4945031556302507278, .k4 0 [0, 1, 2, 7, 6, 5, 3] 0 1 2 3⟩ + ], + [ + ⟨19, 589496320, .sharedThree 2 3 0 1 5⟩, + ⟨1043, 2533589665185816, .k4 0 [0, 4, 3, 6] 0 3 4 6⟩, + ⟨3859, 13598923026482176, .k4 1 [1, 2, 4, 5, 6] 1 2 4 6⟩, + ], + [ + ⟨20, 620766464, .sharedThree 1 3 0 2 5⟩, + ⟨532, 12384900655611904, .k4 2 [2, 3, 6] 2 3 5 6⟩, + ⟨788, 13170116890, .k4 0 [0, 1, 3, 4] 0 1 3 4⟩, + ⟨4116, 1729401672863580184, .k4 0 [0, 3, 7, 4, 5] 0 3 4 5⟩, + ⟨4372, 6958853218688327680, .k4 1 [1, 6, 7, 5, 4] 1 4 5 6⟩, + ⟨4628, 79166464814092, .k4 0 [0, 2, 3, 1, 5] 1 3 5 6⟩, + ⟨10772, 6954279246022396958, .k4 0 [0, 2, 4, 5, 7, 6, 1] 0 1 2 3⟩ + ], + [ + ⟨3861, 13598941576710144, .k4 1 [1, 3, 4, 5, 6] 1 3 4 6⟩, + ⟨10773, 6954279246105693214, .k4 0 [0, 3, 4, 5, 7, 6, 1] 0 1 2 3⟩ + ], + [ + ⟨22, 825294848, .sharedThree 2 3 0 4 5⟩, + ⟨534, 12459667443679232, .k4 3 [3, 6, 5] 2 3 5 6⟩, + ⟨790, 13186894106, .k4 0 [0, 1, 4, 3] 0 1 3 4⟩, + ⟨1046, 2814750912302080, .k4 1 [1, 2, 6, 3] 1 2 3 6⟩, + ⟨2070, 504403179749900310, .k4 0 [0, 4, 2, 7] 0 1 2 7⟩, + ⟨2326, 5947003903903006720, .k4 3 [3, 6, 7, 4] 1 3 4 7⟩, + ⟨2582, 10995670526990, .k4 0 [0, 2, 3, 5, 1] 0 1 2 3⟩, + ⟨4630, 79166498366476, .k4 0 [0, 2, 3, 1, 5] 1 3 5 6⟩, + ], + [ + ⟨23, 1128464384, .sharedThree 2 3 0 1 6⟩, + ⟨535, 12464063819284480, .k4 2 [2, 6, 5] 2 3 5 6⟩, + ⟨2071, 504403720914665494, .k4 0 [0, 2, 4, 7] 0 1 4 7⟩, + ⟨6423, 1970364900983070, .k4 0 [0, 1, 4, 6, 3] 0 2 3 6⟩, + ⟨7703, 79186873181208, .k4 0 [0, 3, 4, 5, 2, 1] 1 2 5 6⟩, + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets02 : Array (List HardEntry) := #[ + [ + ⟨16, 7397963681003285790, .residual 3918988239981699⟩, + ⟨784, 8693728118512968990, .hubPentagon 0 [0, 1, 3, 4, 2, 5, 6, 7] 0 1 2 3 4 5⟩, + ⟨1040, 6136111352343260190, .residual 3045388487022112⟩, + ⟨1296, 5420526107913907230, .residual 257256841594482⟩, + ⟨5392, 8369814334206501150, .residual 191580323985904⟩, + ⟨5648, 3858838770326626590, .residual 4091069608319682⟩ + ], + [ + ⟨17, 7688989032892673310, .hubPentagon 0 [0, 1, 2, 3, 4, 5, 6, 7] 1 0 2 5 7 3⟩, + ⟨785, 5996980126964409630, .residual 712033508203473⟩, + ⟨1041, 8184531214588800030, .residual 1805483491652404⟩, + ⟨1297, 5132295748942064670, .residual 3489747765103381⟩, + ⟨5393, 3865932820079304990, .residual 3361812862682632⟩, + ⟨5649, 6428199532346138910, .residual 2675518563356242⟩ + ], + [ + ⟨18, 5445915077183089950, .residual 4411689737676928⟩, + ⟨786, 8693858838493881630, .hubPentagon 0 [0, 1, 2, 3, 4, 5, 6, 7] 1 0 2 6 5 3⟩, + ⟨1042, 7175740291220597790, .residual 2049895082094273⟩, + ⟨1298, 5130613496151567390, .residual 3486425606329121⟩, + ⟨5394, 3289480863868903710, .residual 3361812862682633⟩, + ⟨5650, 6141095056101269790, .residual 3035311114012359⟩ + ], + [ + ⟨19, 7391473148990926110, .residual 4411689737676929⟩, + ⟨787, 4154163606945096990, .residual 1978746867214544⟩, + ⟨1043, 5419468377941437470, .residual 1823071514850097⟩, + ⟨1299, 6454719482227092510, .residual 2983541482437160⟩, + ⟨5395, 7793362241094017310, .residual 191582203091440⟩, + ⟨5651, 6425956528625475870, .residual 3363992558602380⟩ + ], + [ + ⟨20, 6464014315383041310, .hubPentagon 0 [0, 1, 3, 4, 2, 5, 7, 6] 0 1 2 4 7 3⟩, + ⟨788, 3726884181390746910, .residual 157979233573617⟩, + ⟨1044, 8180738470737177630, .residual 1839048902310592⟩, + ⟨1300, 6024062767859788830, .residual 4409479976808714⟩, + ⟨5396, 5600390815133917470, .residual 4409615268393218⟩, + ⟨5652, 5564643099890868510, .residual 1620093009165906⟩ + ], + [ + ⟨21, 6168179867137486110, .residual 3911289779080211⟩, + ⟨789, 8230765558615860510, .residual 1159119080898018⟩, + ⟨1045, 6460014971478174750, .residual 3487524849550112⟩, + ⟨1301, 2852284528975703070, .residual 1765399672906577⟩, + ⟨5397, 3284769712112328990, .residual 4348042613567746⟩, + ⟨5653, 6137730550520275230, .residual 2042461542408786⟩ + ], + [ + ⟨22, 5450438317695970590, .residual 4403991276775440⟩, + ⟨790, 6460859425737565470, .residual 1244713473302322⟩, + ⟨1046, 7184465745452559390, .residual 3794595216460161⟩, + ⟨1302, 3139951938027678750, .residual 266035765757554⟩, + ⟨5398, 6455296734412857630, .residual 4408397645048329⟩, + ⟨5654, 6425393587261989150, .residual 1442160232545314⟩ + ], + [ + ⟨23, 6170945011122842910, .residual 4403991276775441⟩, + ⟨791, 7688024503822214430, .residual 3253902820010640⟩, + ⟨1047, 7175740154318515230, .residual 3795707613169029⟩, + ⟨1303, 5996977927222225950, .residual 1743538842297953⟩, + ⟨5399, 6168192258167988510, .residual 4408397645048328⟩, + ⟨5655, 6425941135697568030, .residual 2488068499035170⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData03.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData03.lean new file mode 100644 index 00000000..03d9c48c --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData03.lean @@ -0,0 +1,136 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 24–31 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets03 : Array (List PatternEntry) := #[ + [ + ⟨24, 1157645568, .sharedThree 1 3 0 2 6⟩, + ⟨1560, 79165414075392, .k4 1 [1, 2, 3, 5] 1 2 5 6⟩, + ⟨10008, 4945040515000239382, .k4 0 [0, 1, 2, 7, 6, 5, 4] 0 1 2 4⟩ + ], + [ + ⟨1049, 2814750946247680, .k4 1 [1, 6, 3, 2] 1 2 3 6⟩, + ⟨1305, 11340364036202496, .k4 1 [1, 5, 6, 3] 1 3 5 6⟩, + ⟨1561, 79165448152064, .k4 1 [1, 2, 3, 5] 1 2 5 6⟩, + ⟨3865, 13599060463330304, .k4 1 [1, 2, 4, 6, 5] 1 2 4 5⟩, + ⟨7449, 4936508141643844622, .k4 0 [0, 2, 3, 7, 6, 1] 0 1 2 3⟩ + ], + [ + ⟨26, 1364262912, .sharedThree 2 3 0 4 6⟩, + ⟨282, 12886147094, .k4 0 [0, 2, 4] 0 1 2 4⟩, + ⟨3610, 10768616884610310, .k4 0 [0, 1, 2, 5, 6] 1 2 5 6⟩, + ⟨4122, 1734168193745813528, .k4 0 [0, 3, 7, 4, 6] 0 3 4 6⟩, + ⟨5146, 5629778711940126, .k4 0 [0, 4, 6, 2, 1] 0 1 2 3⟩, + ⟨5914, 12283607589150, .k4 0 [0, 1, 2, 5, 4] 0 3 4 5⟩, + ⟨10522, 2605543504651354142, .k4 0 [0, 3, 4, 6, 5, 7, 2] 0 1 2 4⟩ + ], + [ + ⟨27, 1627414784, .sharedThree 1 3 0 5 6⟩, + ⟨283, 13203669018, .k4 0 [0, 3, 4] 0 1 3 4⟩, + ⟨1307, 11342562562408448, .k4 2 [2, 5, 3, 6] 2 3 5 6⟩, + ⟨3867, 13599078478784512, .k4 1 [1, 3, 4, 6, 5] 1 3 4 5⟩, + ], + [ + ⟨540, 13603157866184704, .k4 2 [2, 5, 6] 2 4 5 6⟩, + ⟨796, 21760639004, .k4 0 [0, 2, 3, 4] 0 2 3 4⟩, + ⟨6172, 83563492630790, .k4 0 [0, 1, 2, 3, 5] 1 2 5 6⟩, + ], + [ + ⟨29, 1650589696, .sharedThree 2 3 1 5 6⟩, + ⟨285, 21827158044, .k4 0 [0, 3, 4] 0 2 3 4⟩, + ⟨541, 13607557784403968, .k4 3 [3, 5, 6] 3 4 5 6⟩, + ⟨797, 21761622044, .k4 0 [0, 3, 4, 2] 0 2 3 4⟩, + ⟨6429, 1970651539718430, .k4 0 [0, 1, 3, 6, 4] 0 2 4 6⟩ + ], + [ + ⟨30, 1677747200, .sharedThree 1 3 2 5 6⟩, + ⟨542, 13811382168322048, .k4 4 [4, 5, 6] 0 4 5 6⟩, + ⟨798, 21810970652, .k4 0 [0, 2, 4, 3] 0 2 3 4⟩, + ⟨3102, 3659175792100366, .k4 0 [0, 3, 6, 2, 1] 0 1 2 6⟩, + ⟨4382, 6963854063864643584, .k4 2 [2, 6, 7, 5, 4] 2 4 5 6⟩, + ⟨4638, 79205404533010, .k4 0 [0, 1, 4, 3, 5] 1 3 5 6⟩, + ], + [ + ⟨287, 25771048982, .k4 0 [0, 2, 4] 0 1 2 4⟩, + ⟨543, 13864158726455296, .k4 4 [4, 6, 5] 0 4 5 6⟩, + ⟨799, 21811953692, .k4 0 [0, 4, 2, 3] 0 2 3 4⟩, + ⟨2335, 6999582281887145984, .k4 1 [1, 5, 6, 7] 0 5 6 7⟩, + ⟨6175, 83564010038538, .k4 0 [0, 1, 3, 2, 5] 1 3 5 6⟩, + ⟨7455, 4940449091881600278, .k4 0 [0, 1, 2, 7, 6, 4] 0 1 2 4⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets03 : Array (List HardEntry) := #[ + [ + ⟨24, 7184589160277617950, .residual 226406619532019⟩, + ⟨792, 5420528452980860190, .residual 711896337513425⟩, + ⟨1048, 8189394926319528990, .residual 3331710506259856⟩, + ⟨1304, 2853403831846333470, .residual 2923477778371361⟩, + ⟨5400, 4148893111707951390, .residual 349875201253872⟩, + ⟨5656, 3290606744473493790, .residual 1023692327717808⟩ + ], + [ + ⟨25, 7180660618116476190, .residual 3793888694448390⟩, + ⟨793, 8693719202631148830, .hubPentagon 0 [0, 1, 3, 4, 2, 5, 6, 7] 0 1 2 4 3 5⟩, + ⟨1049, 7175177204398648350, .residual 1877999719610674⟩, + ⟨1305, 2851721579055836190, .residual 2927897312299797⟩, + ⟨5401, 5995936581807694110, .residual 342176711443952⟩, + ⟨5657, 3869310384852230430, .residual 1015995746266032⟩ + ], + [ + ⟨26, 6031663275072564510, .residual 779463114410963⟩, + ⟨794, 7688081784408925470, .residual 4348042613567745⟩, + ⟨1050, 3713035248555617310, .residual 1343842705006033⟩, + ⟨1306, 4153888184988625950, .residual 3546491193113128⟩, + ⟨5402, 5564712493871980830, .residual 3794715475545346⟩, + ⟨5658, 3284062743641514270, .residual 1871244612204578⟩ + ], + [ + ⟨27, 6022943160021822750, .residual 3723640476413990⟩, + ⟨795, 5455140781798483230, .residual 595511780550626⟩, + ⟨1051, 6454735958723619870, .residual 3917740551801216⟩, + ⟨1307, 3721549217830824990, .residual 4347907321983242⟩, + ⟨5403, 3862203671239123230, .residual 4231802802030274⟩, + ⟨5659, 5419393472641163550, .residual 2425263122528290⟩ + ], + [ + ⟨28, 6019002510582754590, .residual 3918988239981696⟩, + ⟨796, 5454296369753253150, .residual 4349155010119813⟩, + ⟨1052, 5419400209260702750, .residual 3489764676551445⟩, + ⟨5404, 4147065143763329310, .residual 3527997568727746⟩, + ⟨5660, 7650865515905736990, .residual 1094060979620784⟩ + ], + [ + ⟨29, 7171934894358539550, .residual 3911289779080208⟩, + ⟨797, 3147054906303079710, .residual 112070295373681⟩, + ⟨1053, 5418839458330536990, .residual 3487524849550113⟩, + ⟨5405, 3285751715028721950, .residual 4038065412876101⟩, + ⟨5661, 5993610964398301470, .residual 1871109262014498⟩ + ], + [ + ⟨30, 5442550541537783070, .residual 4411689737676937⟩, + ⟨798, 6029358286390191390, .residual 604170434734050⟩, + ⟨1054, 3713030747899653150, .residual 1171932374908513⟩, + ⟨5406, 3858839165658128670, .residual 2315224306631269⟩, + ⟨5662, 8229569156284473630, .residual 1086364398169008⟩ + ], + [ + ⟨31, 5155446065292913950, .residual 4411689737676936⟩, + ⟨799, 8262299143542170910, .residual 4347907321983233⟩, + ⟨1055, 5131169850288860190, .residual 186890244864626⟩, + ⟨5407, 3284630213168390430, .residual 3035658830072514⟩, + ⟨5663, 3858262609255522590, .residual 2425398472718370⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData04.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData04.lean new file mode 100644 index 00000000..67cb8222 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData04.lean @@ -0,0 +1,132 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 32–39 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets04 : Array (List PatternEntry) := #[ + [ + ⟨32, 1886388224, .sharedThree 2 3 4 5 6⟩, + ⟨288, 30064772374, .k4 0 [0, 1, 4] 0 1 2 4⟩, + ⟨1056, 2887318104991744, .k4 1 [1, 3, 5, 6] 1 3 5 6⟩, + ⟨1568, 81364984553738, .k4 0 [0, 1, 3, 5] 1 3 5 6⟩, + ⟨6176, 83564077539594, .k4 0 [0, 1, 3, 2, 5] 1 3 5 6⟩ + ], + [ + ⟨33, 2206400512, .sharedThree 2 3 0 1 7⟩, + ⟨1057, 2887319145179136, .k4 1 [1, 5, 6, 3] 1 3 5 6⟩, + ⟨4385, 6964984363154931712, .k4 3 [3, 6, 7, 5, 4] 3 4 5 6⟩ + ], + [ + ⟨290, 30064967702, .k4 0 [0, 2, 4] 0 1 2 4⟩, + ⟨802, 25770919190, .k4 0 [0, 1, 2, 4] 0 1 2 4⟩, + ⟨1826, 9662671393678336, .k4 1 [1, 6, 5, 4] 1 2 4 5⟩, + ⟨4386, 6967229435707678720, .k4 1 [1, 5, 7, 6, 4] 1 4 5 6⟩, + ⟨5410, 11259000696040460, .k4 0 [0, 2, 3, 1, 6] 1 3 5 6⟩, + ⟨10786, 6958204639972502558, .k4 0 [0, 2, 4, 6, 7, 5, 1] 0 1 2 3⟩ + ], + [ + ⟨291, 30065950742, .k4 0 [0, 4, 2] 0 1 2 4⟩, + ⟨2083, 792633575521386522, .k4 0 [0, 4, 3, 7] 0 1 3 7⟩, + ⟨2339, 7026533510907191296, .k4 1 [1, 5, 6, 7] 0 5 6 7⟩, + ⟨10787, 6958204640055798814, .k4 0 [0, 3, 4, 6, 7, 5, 1] 0 1 2 3⟩ + ], + [ + ⟨36, 2442199040, .sharedThree 2 3 0 4 7⟩, + ⟨804, 25770984726, .k4 0 [0, 1, 2, 4] 0 1 2 4⟩, + ⟨1060, 2893915174758400, .k4 1 [1, 3, 6, 5] 1 3 5 6⟩, + ⟨1316, 11356169213837312, .k4 3 [3, 5, 4, 6] 3 4 5 6⟩, + ⟨1828, 9667086620059648, .k4 1 [1, 6, 5, 4] 1 3 4 5⟩, + ⟨2084, 792634099222183962, .k4 0 [0, 3, 4, 7] 0 1 4 7⟩, + ⟨4132, 1801440420124688396, .k4 0 [0, 3, 7, 4, 2] 0 2 3 7⟩, + ⟨7460, 5224738519868066830, .k4 0 [0, 2, 3, 7, 6, 1] 0 1 2 3⟩, + ], + [ + ⟨37, 2701172992, .sharedThree 1 3 0 5 7⟩, + ⟨293, 38656344092, .k4 0 [0, 2, 4] 0 2 3 4⟩, + ⟨549, 14074169742352384, .k4 1 [1, 6, 4] 1 4 5 6⟩, + ⟨1317, 11356169750708224, .k4 3 [3, 6, 5, 4] 3 4 5 6⟩, + ⟨8741, 4945032655210096910, .k4 0 [0, 1, 2, 7, 6, 5] 0 1 3 5⟩ + ], + [ + ⟨38, 2711683072, .sharedThree 2 3 0 5 7⟩, + ⟨1574, 83563492566016, .k4 1 [1, 2, 3, 5] 1 2 5 6⟩, + ⟨2086, 864691130661994510, .k4 0 [0, 3, 7, 2] 0 1 2 3⟩, + ], + [ + ⟨39, 2728525824, .sharedThree 2 3 1 5 7⟩, + ⟨295, 43268440090, .k4 0 [0, 3, 4] 0 1 3 4⟩, + ⟨1063, 2893916248498176, .k4 1 [1, 6, 3, 5] 1 3 5 6⟩, + ⟨2087, 864691130711867406, .k4 0 [0, 2, 7, 3] 0 1 2 3⟩, + ⟨4135, 2450101136024808448, .k4 1 [1, 2, 5, 3, 7] 1 2 3 7⟩, + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets04 : Array (List HardEntry) := #[ + [ + ⟨32, 5442549446321122590, .residual 3124966165754280⟩, + ⟨800, 6028513861510391070, .residual 4350117082851461⟩, + ⟨1056, 5157704203357547550, .residual 712285307943888⟩, + ⟨5408, 6141095451432771870, .residual 2042187201179218⟩, + ⟨5664, 6164798601768330270, .residual 2923892976750376⟩ + ], + [ + ⟨33, 5155444970076253470, .residual 4411689737676938⟩, + ⟨801, 7680136727664026910, .residual 4189975189770272⟩, + ⟨1057, 6163132537773911070, .residual 1203904415154000⟩, + ⟨5409, 6425956923956977950, .residual 2745992379589202⟩, + ⟨5665, 5590589649278592030, .residual 4408547969025546⟩ + ], + [ + ⟨34, 7180591349940890910, .residual 1988155130967488⟩, + ⟨802, 8254336871360390430, .residual 4251547840983072⟩, + ⟨1058, 6166509980601707550, .residual 4410442049490185⟩, + ⟨5410, 5564643495222370590, .residual 4411689737676940⟩, + ⟨5666, 6164798327964165150, .residual 3915966730421770⟩ + ], + [ + ⟨35, 5451206997120134430, .residual 138098946286448⟩, + ⟨803, 3725758281434031390, .residual 103291382048625⟩, + ⟨1059, 6022957742479272990, .residual 4410442049490184⟩, + ⟨5411, 6137730945851777310, .residual 4231425101817543⟩, + ⟨5667, 5590589375474426910, .residual 2923891068342056⟩ + ], + [ + ⟨36, 6022942894774037790, .residual 2059468769785392⟩, + ⟨804, 6455296725831148830, .residual 4409479976808704⟩, + ⟨1060, 3862349361617464350, .residual 350147663258736⟩, + ⟨5412, 5563521993362039070, .residual 1549893534162514⟩, + ⟨5668, 3865088805855421470, .residual 3486842687426344⟩ + ], + [ + ⟨37, 5446490925729066270, .residual 629718082397152⟩, + ⟨805, 6425393974011782430, .residual 4251412542173217⟩, + ⟨1061, 6427714773259545630, .residual 342449173455088⟩, + ⟨5413, 5132297956764606750, .residual 1994254564389922⟩, + ⟨5669, 3288636849645020190, .residual 4346975314200074⟩ + ], + [ + ⟨38, 8410695253242359070, .cycleStrip 0 [0, 1, 2, 3, 4, 5, 7, 6] 0 1 3 5 6 7 4⟩, + ⟨806, 5420528307154740510, .residual 4255832076101653⟩, + ⟨1062, 6166493488178949150, .residual 3045114133599784⟩, + ⟨5414, 6453044909064249630, .residual 936850218047408⟩, + ⟨5670, 3865088395149173790, .residual 3361812862682634⟩ + ], + [ + ⟨39, 8410690872375717150, .hubPentagon 0 [0, 1, 2, 3, 4, 5, 7, 6] 2 0 1 5 7 4⟩, + ⟨807, 3714161027670631710, .residual 621177753307105⟩, + ⟨1063, 6022941250056514590, .residual 4410442049490186⟩, + ⟨5415, 5564641296232669470, .residual 1379760778107938⟩, + ⟨5671, 3288636438938772510, .residual 3486838896299816⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData05.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData05.lean new file mode 100644 index 00000000..49f259d6 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData05.lean @@ -0,0 +1,139 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 40–47 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets05 : Array (List PatternEntry) := #[ + [ + ⟨40, 2751505408, .sharedThree 1 3 2 5 7⟩, + ⟨296, 47244642586, .k4 0 [0, 1, 4] 0 1 3 4⟩, + ⟨552, 14636853415116800, .k4 2 [2, 4, 6] 2 4 5 6⟩, + ⟨808, 38739705884, .k4 0 [0, 2, 3, 4] 0 2 3 4⟩, + ⟨1064, 3096224794165514, .k4 0 [0, 1, 3, 6] 0 1 3 6⟩, + ⟨4136, 2450101136058231808, .k4 1 [1, 3, 5, 2, 7] 1 2 3 7⟩, + ⟨7720, 88102720924696, .k4 0 [0, 3, 4, 1, 5, 2] 1 2 5 6⟩, + ⟨10024, 5228679453010429214, .k4 0 [0, 1, 3, 2, 7, 6, 4] 0 1 2 4⟩ + ], + [ + ⟨809, 38740164636, .k4 0 [0, 3, 4, 2] 0 2 3 4⟩, + ⟨1321, 11901114429497344, .k4 1 [1, 6, 5, 3] 1 3 5 6⟩, + ⟨2089, 864691130881081372, .k4 0 [0, 2, 7, 3] 0 2 3 4⟩, + ⟨2345, 12936350750, .k4 0 [0, 2, 3, 4, 1] 0 1 2 4⟩, + ⟨6697, 9646015560838158, .k4 0 [0, 3, 1, 6, 5] 0 1 2 5⟩, + ⟨8745, 5224738520187355422, .k4 0 [0, 1, 2, 6, 7, 3] 0 2 3 4⟩ + ], + [ + ⟨42, 2964324352, .sharedThree 2 3 4 5 7⟩, + ⟨298, 47294971930, .k4 0 [0, 3, 4] 0 1 3 4⟩, + ⟨554, 14637128288829440, .k4 2 [2, 4, 6] 2 4 5 6⟩, + ⟨1066, 3096225834338570, .k4 0 [0, 1, 3, 6] 0 1 3 6⟩, + ⟨1322, 11901114966353920, .k4 1 [1, 3, 6, 5] 1 3 5 6⟩, + ⟨2346, 12936416286, .k4 0 [0, 3, 4, 1, 2] 0 1 2 4⟩, + ⟨2858, 27659925520412, .k4 0 [0, 2, 3, 4, 5] 0 3 4 5⟩ + ], + [ + ⟨43, 3238052096, .sharedThree 1 3 0 6 7⟩, + ⟨299, 47546630170, .k4 0 [0, 4, 3] 0 1 3 4⟩, + ⟨1067, 3096225834354698, .k4 0 [0, 3, 6, 1] 0 1 3 6⟩, + ⟨1323, 11901114966368256, .k4 1 [1, 6, 3, 5] 1 3 5 6⟩, + ], + [ + ⟨44, 3250651136, .sharedThree 2 3 0 6 7⟩, + ⟨300, 51541245980, .k4 0 [0, 2, 4] 0 2 3 4⟩, + ⟨556, 14711895076372480, .k4 4 [4, 6, 5] 2 4 5 6⟩, + ⟨812, 38991364124, .k4 0 [0, 2, 4, 3] 0 2 3 4⟩, + ⟨1068, 3096225851115786, .k4 0 [0, 1, 3, 6] 0 1 3 6⟩, + ], + [ + ⟨45, 3267493888, .sharedThree 2 3 1 6 7⟩, + ⟨301, 51891929116, .k4 0 [0, 3, 4] 0 2 3 4⟩, + ⟨557, 14724659726516224, .k4 2 [2, 6, 5] 2 4 5 6⟩, + ⟨813, 38991822876, .k4 0 [0, 4, 3, 2] 0 2 3 4⟩, + ⟨1069, 3096225851130122, .k4 0 [0, 1, 6, 3] 0 1 3 6⟩, + ⟨4397, 7211547920209805312, .k4 2 [2, 6, 7, 5, 4] 2 4 6 7⟩ + ], + [ + ⟨46, 3288384512, .sharedThree 1 3 2 6 7⟩, + ⟨302, 55835164700, .k4 0 [0, 2, 4] 0 2 3 4⟩, + ⟨558, 15762772373536768, .k4 3 [3, 4, 6] 3 4 5 6⟩, + ⟨1326, 12459667381288960, .k4 2 [2, 6, 3, 5] 2 3 5 6⟩, + ⟨2862, 844425018884366, .k4 0 [0, 1, 3, 6, 2] 0 1 2 6⟩, + ⟨10030, 5233255336936811534, .k4 0 [0, 2, 3, 7, 6, 5, 1] 0 1 2 3⟩ + ], + [ + ⟨303, 55836147740, .k4 0 [0, 4, 2] 0 2 3 4⟩, + ⟨2095, 936748743977861148, .k4 0 [0, 4, 2, 7] 0 2 3 7⟩, + ⟨2863, 844425018885134, .k4 0 [0, 3, 2, 1, 6] 0 1 2 6⟩, + ⟨8751, 5225301482995253278, .k4 0 [0, 2, 4, 6, 7, 3] 0 1 3 4⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets05 : Array (List HardEntry) := #[ + [ + ⟨40, 8697794253403925790, .residual 3919108499073158⟩, + ⟨808, 5420526108165039390, .residual 128355992864626⟩, + ⟨1064, 6452484415601863710, .residual 1766852221134672⟩, + ⟨5416, 6463953189995208990, .residual 348792862155248⟩, + ⟨5672, 6176849385392563230, .residual 4403716935715220⟩ + ], + [ + ⟨41, 7401888936946248990, .hubPentagon 0 [0, 1, 2, 3, 4, 5, 7, 6] 1 0 2 7 5 3⟩, + ⟨809, 4157549558708593950, .residual 4347907321983232⟩, + ⟨1065, 6461191191255936030, .residual 2396827539183955⟩, + ⟨5417, 4157549567290302750, .residual 4346824990222857⟩, + ⟨5673, 5157704223821521950, .residual 4377740973378195⟩ + ], + [ + ⟨42, 7685063775813315870, .residual 3919108499073155⟩, + ⟨810, 4149305811566880030, .residual 4251547840983073⟩, + ⟨1066, 7171799521858513950, .residual 2509119394140465⟩, + ⟨5418, 3869323589185102110, .residual 4346824990222856⟩, + ⟨5674, 3860667531440808990, .residual 4334447695825300⟩ + ], + [ + ⟨43, 7181790898371636510, .residual 3794986058614022⟩, + ⟨811, 3140514888198677790, .residual 4254869999757333⟩, + ⟨1067, 6424318531947555870, .residual 2526707417338164⟩, + ⟨5419, 3726822759056728350, .residual 333397787280880⟩, + ⟨5675, 2862200060419630110, .residual 4308471733488275⟩ + ], + [ + ⟨44, 7185710678799494430, .residual 156055055194867⟩, + ⟨812, 3139951938278810910, .residual 119697331455858⟩, + ⟨1068, 5991979564789754910, .residual 2771134040222913⟩, + ⟨5420, 3293355667400352030, .residual 3302134262631682⟩, + ⟨5676, 6176836187159454750, .residual 935803625707443⟩ + ], + [ + ⟨45, 8189454433089957150, .residual 3919108499073156⟩, + ⟨813, 5996977927473358110, .residual 612398829144033⟩, + ⟨1069, 3145300087386762270, .residual 2286249345264866⟩, + ⟨5421, 4149308010581909790, .residual 2746007415644754⟩, + ⟨5677, 3857289827626705950, .residual 1006155204695987⟩ + ], + [ + ⟨46, 8410695252974972190, .hubPentagon 0 [0, 1, 2, 3, 4, 5, 7, 6] 2 0 1 5 7 4⟩, + ⟨814, 6453036656276563230, .residual 4409615268393216⟩, + ⟨1070, 3136574496252718110, .residual 3606055243924117⟩, + ⟨5422, 3862203534337040670, .residual 4231442020591303⟩, + ⟨5678, 6022957767204725790, .residual 3915696147353088⟩ + ], + [ + ⟨47, 8697798634003180830, .residual 4411569478585478⟩, + ⟨815, 4155289489154008350, .residual 4348042613567744⟩, + ⟨1071, 2849470020007848990, .residual 3602702921417377⟩, + ⟨5423, 3285751578126639390, .residual 1479526919118418⟩, + ⟨5679, 6020705941856117790, .residual 2317464136286432⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData06.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData06.lean new file mode 100644 index 00000000..7c804d87 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData06.lean @@ -0,0 +1,132 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 48–55 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets06 : Array (List PatternEntry) := #[ + [ + ⟨48, 3503292416, .sharedThree 2 3 4 6 7⟩, + ⟨304, 55918460956, .k4 0 [0, 3, 4] 0 2 3 4⟩, + ⟨560, 15763046177701888, .k4 3 [3, 4, 6] 3 4 5 6⟩, + ⟨816, 43234887962, .k4 0 [0, 1, 3, 4] 0 1 3 4⟩, + ⟨1072, 3377700832691200, .k4 1 [1, 2, 6, 3] 1 2 3 6⟩, + ⟨1584, 88115556541440, .k4 1 [1, 2, 4, 5] 1 2 5 6⟩, + ], + [ + ⟨49, 3758153728, .sharedThree 1 3 5 6 7⟩, + ⟨305, 56170119196, .k4 0 [0, 4, 3] 0 2 3 4⟩, + ⟨1329, 12464064959610880, .k4 2 [2, 6, 3, 5] 2 3 5 6⟩, + ⟨4145, 2450104432336281862, .k4 0 [0, 1, 2, 7, 5] 0 1 2 5⟩, + ⟨4657, 81364951198732, .k4 0 [0, 2, 3, 1, 5] 1 3 5 6⟩ + ], + [ + ⟨50, 3772776448, .sharedThree 2 3 5 6 7⟩, + ⟨562, 15842210209595392, .k4 4 [4, 6, 5] 3 4 5 6⟩, + ⟨818, 43251665178, .k4 0 [0, 1, 3, 4] 0 1 3 4⟩, + ⟨4146, 2450104432336282630, .k4 0 [0, 2, 1, 7, 5] 0 1 2 5⟩, + ], + [ + ⟨51, 60129542158, .sharedThree 0 4 1 2 3⟩, + ⟨563, 15850561505067008, .k4 3 [3, 6, 5] 3 4 5 6⟩, + ⟨3379, 9646015512667142, .k4 0 [0, 2, 5, 6, 1] 0 1 2 5⟩, + ⟨4147, 2450108830432928010, .k4 0 [0, 1, 3, 7, 5] 0 1 3 5⟩, + ], + [ + ⟨52, 150326149120, .sharedThree 2 4 0 1 5⟩, + ⟨564, 36591746985149440, .k4 1 [1, 2, 6] 1 2 6 7⟩, + ⟨2612, 12095234516230, .k4 0 [0, 1, 5, 3, 2] 0 1 2 5⟩, + ], + [ + ⟨53, 150911057920, .sharedThree 3 4 0 1 5⟩, + ⟨821, 51625066524, .k4 0 [0, 3, 2, 4] 0 2 3 4⟩, + ⟨1077, 3377993126248448, .k4 2 [2, 4, 6, 3] 2 3 4 6⟩, + ⟨1333, 13531010998231040, .k4 1 [1, 5, 4, 6] 1 4 5 6⟩, + ⟨2357, 21526744094, .k4 0 [0, 3, 4, 1, 2] 0 1 2 3⟩, + ⟨4149, 2450117639360520466, .k4 0 [0, 1, 4, 7, 5] 0 1 4 5⟩ + ], + [ + ⟨54, 158913799424, .sharedThree 1 4 0 2 5⟩, + ⟨822, 51825410076, .k4 0 [0, 2, 3, 4] 0 2 3 4⟩, + ⟨1078, 3377993189163008, .k4 2 [2, 3, 4, 6] 2 3 4 6⟩, + ⟨2870, 844446410359062, .k4 0 [0, 1, 4, 6, 2] 0 1 2 6⟩, + ⟨5686, 16116641725161754, .k4 0 [0, 1, 3, 5, 6] 0 3 4 6⟩ + ], + [ + ⟨567, 36805052228231168, .k4 1 [1, 5, 6] 1 5 6 7⟩, + ⟨823, 51826393116, .k4 0 [0, 3, 4, 2] 0 2 3 4⟩, + ⟨1079, 3378009299484672, .k4 2 [2, 3, 6, 4] 2 3 4 6⟩, + ⟨1591, 90447716311314, .k4 0 [0, 1, 4, 5] 1 4 5 6⟩, + ⟨2871, 844446410359830, .k4 0 [0, 4, 2, 1, 6] 0 1 2 6⟩, + ⟨7735, 92531064988938, .k4 0 [0, 1, 3, 2, 4, 5] 1 2 5 6⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets06 : Array (List HardEntry) := #[ + [ + ⟨48, 8410690872108330270, .cycleStrip 0 [0, 1, 2, 3, 4, 5, 7, 6] 0 1 2 5 7 6 4⟩, + ⟨816, 4147062961727366430, .residual 4189975189770273⟩, + ⟨1072, 6452484158910458910, .residual 3652170878076454⟩, + ⟨5424, 3858839028756046110, .residual 2112538780167762⟩, + ⟨5680, 6019017117765657630, .residual 3512535048794918⟩ + ], + [ + ⟨49, 6176905457452657950, .hubPentagon 0 [0, 1, 2, 4, 3, 5, 7, 6] 0 1 2 7 4 3⟩, + ⟨817, 3714723994569565470, .residual 4193297348544533⟩, + ⟨1073, 6451358276183485470, .residual 2316368651169888⟩, + ⟨5425, 3284630076266307870, .residual 4350117082851468⟩, + ⟨5681, 5564709195337098270, .residual 3794595216460167⟩ + ], + [ + ⟨50, 6455288723430124830, .residual 3911410038171667⟩, + ⟨818, 3714161053206078750, .residual 118598088034162⟩, + ⟨1074, 5155452660235791390, .residual 2624568115565872⟩, + ⟨5426, 6428199790775558430, .residual 2965185039579842⟩, + ⟨5682, 3858839152773227550, .residual 2317464136286433⟩ + ], + [ + ⟨51, 6032793555060337950, .residual 709111550073811⟩, + ⟨819, 5420526133700486430, .residual 611299585722337⟩, + ⟨1075, 7180383273861934110, .residual 3300931671773572⟩, + ⟨5427, 6141095314530689310, .residual 2315359605441125⟩, + ⟨5683, 5564643482337469470, .residual 347259562000626⟩ + ], + [ + ⟨52, 6024064678276312350, .residual 3724737840579622⟩, + ⟨820, 6427636857809429790, .residual 4189839890960417⟩, + ⟨1076, 3145158248256138270, .residual 3361557312056833⟩, + ⟨5428, 5564643358320288030, .residual 3598608540748482⟩, + ⟨5684, 3726892852872668190, .residual 3361542279613952⟩ + ], + [ + ⟨53, 8256604219807837470, .residual 3911410038171668⟩, + ⟨821, 5996980143442126110, .residual 4194259424888853⟩, + ⟨1077, 5446477755433774110, .residual 316422467528948⟩, + ⟨5429, 6137730808949694750, .residual 4231665620502210⟩, + ⟨5685, 3726884031244723230, .residual 2317584399040736⟩ + ], + [ + ⟨54, 7685068156178607390, .residual 4411569478585475⟩, + ⟨822, 3139951963814257950, .residual 620078509885409⟩, + ⟨1078, 8190295425286302750, .residual 316422467528947⟩, + ⟨5430, 5563521856459956510, .residual 4038048494102341⟩, + ⟨5686, 3726877459944760350, .residual 2949722519647014⟩ + ], + [ + ⟨55, 8406750222435298590, .hubPentagon 0 [0, 1, 2, 3, 4, 5, 7, 6] 1 0 2 5 6 3⟩, + ⟨823, 5996977953008805150, .residual 127256749442930⟩, + ⟨1079, 6164258437479951390, .residual 4409479976808715⟩, + ⟨5431, 2852284537808544030, .residual 1995216640734242⟩, + ⟨5687, 3292511242470220830, .residual 3302014003546503⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData07.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData07.lean new file mode 100644 index 00000000..8ea32081 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData07.lean @@ -0,0 +1,131 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 56–63 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets07 : Array (List PatternEntry) := #[ + [ + ⟨56, 176093669632, .sharedThree 1 4 0 3 5⟩, + ⟨312, 163212043264, .k4 1 [1, 2, 4] 1 2 4 5⟩, + ⟨568, 37154696938570752, .k4 1 [1, 2, 6] 1 2 6 7⟩, + ⟨824, 51875741724, .k4 0 [0, 2, 3, 4] 0 2 3 4⟩, + ⟨1336, 13533218616639488, .k4 2 [2, 4, 5, 6] 2 4 5 6⟩ + ], + [ + ⟨57, 176096346112, .sharedThree 2 4 0 3 5⟩, + ⟨569, 37154700227248128, .k4 2 [2, 3, 6] 2 3 6 7⟩, + ⟨825, 51876266012, .k4 0 [0, 2, 4, 3] 0 2 3 4⟩, + ⟨1337, 13533218617688064, .k4 2 [2, 5, 4, 6] 2 4 5 6⟩, + ⟨2361, 21559905310, .k4 0 [0, 3, 4, 2, 1] 0 1 2 3⟩, + ⟨8761, 5233258635471103246, .k4 0 [0, 1, 3, 7, 6, 5] 0 1 2 5⟩ + ], + [ + ⟨58, 287767199744, .sharedThree 2 4 0 1 6⟩, + ⟨570, 37155538753028096, .k4 2 [2, 4, 6] 2 4 6 7⟩, + ⟨826, 3298537055494, .k4 0 [0, 1, 2, 5] 0 1 2 5⟩, + ⟨1082, 3452467122012160, .k4 2 [2, 3, 5, 6] 2 3 5 6⟩, + ⟨1338, 13537498277871616, .k4 3 [3, 4, 5, 6] 3 4 5 6⟩, + ⟨5178, 5657434005766172, .k4 0 [0, 2, 6, 4, 5] 0 3 4 5⟩ + ], + [ + ⟨59, 288886882304, .sharedThree 3 4 0 1 6⟩, + ⟨571, 37370201219530752, .k4 2 [2, 5, 6] 2 5 6 7⟩, + ⟨827, 3298537121030, .k4 0 [0, 1, 2, 5] 0 1 2 5⟩, + ⟨2107, 1369094862247362582, .k4 0 [0, 2, 4, 7] 0 1 4 7⟩, + ], + [ + ⟨60, 296352761088, .sharedThree 1 4 0 2 6⟩, + ⟨572, 37717646887797760, .k4 1 [1, 2, 6] 1 2 6 7⟩, + ⟨828, 3298537185542, .k4 0 [0, 1, 2, 5] 0 1 2 5⟩, + ⟨1340, 13537635179954176, .k4 3 [3, 4, 5, 6] 3 4 5 6⟩, + ⟨1596, 92513600955392, .k4 1 [1, 2, 4, 5] 1 2 5 6⟩, + ⟨2108, 1369094879711330330, .k4 0 [0, 3, 4, 7] 0 1 4 7⟩, + ⟨8764, 5234308669077873930, .k4 0 [0, 1, 3, 2, 7, 6] 1 2 5 6⟩ + ], + [ + ⟨829, 3298537186310, .k4 0 [0, 2, 1, 5] 0 1 2 5⟩, + ⟨1341, 13537635448389632, .k4 3 [3, 5, 4, 6] 3 4 5 6⟩, + ⟨1597, 92515279044608, .k4 2 [2, 3, 4, 5] 2 3 5 6⟩, + ⟨2365, 21577075742, .k4 0 [0, 4, 2, 3, 1] 0 1 2 3⟩, + ⟨2877, 844743042941210, .k4 0 [0, 1, 3, 6, 4] 0 1 4 6⟩, + ⟨8765, 5801199824058010654, .k4 0 [0, 2, 4, 7, 6, 1] 0 1 2 3⟩, + ⟨10045, 5233821585424540686, .k4 0 [0, 3, 7, 6, 1, 5] 0 1 2 5⟩ + ], + [ + ⟨318, 181227497472, .k4 1 [1, 3, 4] 1 3 4 5⟩, + ⟨830, 3299088541962, .k4 0 [0, 1, 3, 5] 0 1 3 5⟩, + ⟨1086, 3456865168523264, .k4 2 [2, 3, 6, 5] 2 3 5 6⟩, + ⟨1598, 92638157013012, .k4 0 [0, 2, 4, 5] 2 4 5 6⟩, + ⟨2110, 1441152443408842774, .k4 0 [0, 4, 7, 2] 0 1 2 4⟩, + ⟨4414, 6597408989470, .k4 0 [0, 1, 5, 2, 3] 0 2 3 4⟩, + ⟨8766, 5801199824141306910, .k4 0 [0, 3, 4, 7, 6, 1] 0 1 2 3⟩ + ], + [ + ⟨63, 313537396736, .sharedThree 2 4 0 3 6⟩, + ⟨575, 37717646891991040, .k4 1 [1, 6, 2] 1 2 6 7⟩, + ⟨831, 3299105319178, .k4 0 [0, 1, 3, 5] 0 1 3 5⟩, + ⟨2111, 1441152456292761622, .k4 0 [0, 2, 7, 4] 0 1 2 4⟩, + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets07 : Array (List HardEntry) := #[ + [ + ⟨56, 6020124028603280670, .residual 3919108499073152⟩, + ⟨1080, 6425463230137789470, .residual 2983815835859488⟩, + ⟨5432, 4157540745662357790, .residual 1007216833091504⟩, + ⟨5688, 3284630063381406750, .residual 347139299246322⟩ + ], + [ + ⟨57, 6027726611954085150, .residual 3919108499073153⟩, + ⟨1081, 8185652733411486750, .residual 1243633049837364⟩, + ⟨5433, 3284067126346440990, .residual 1378663402953762⟩, + ⟨5689, 6141095301645788190, .residual 2317584399040737⟩ + ], + [ + ⟨58, 8401969528966360350, .hubPentagon 0 [0, 1, 3, 4, 2, 5, 6, 7] 0 1 2 4 6 3⟩, + ⟨1082, 7176861810043284510, .residual 1487082567597761⟩, + ⟨5434, 6455288481650499870, .residual 935767886174128⟩, + ⟨5690, 5155451889234600990, .residual 4377603802688147⟩ + ], + [ + ⟨59, 6455284342312807710, .residual 4403871017683987⟩, + ⟨1083, 5132363918658923550, .residual 1261221073035057⟩, + ⟨5435, 6453036656301891870, .residual 4408532936632841⟩, + ⟨5691, 3281954555917624350, .residual 4325651870951828⟩ + ], + [ + ⟨60, 7173065174095637790, .residual 3911410038171664⟩, + ⟨1084, 3862340685314288670, .residual 2923477778371360⟩, + ⟨5436, 5591723227567284510, .residual 4408532936632840⟩, + ⟨5692, 5600379139785876510, .residual 4394921110841748⟩ + ], + [ + ⟨61, 7175740309239901470, .residual 3911410038171665⟩, + ⟨1085, 7148858078349388830, .residual 3300931671773569⟩, + ⟨5437, 6461693248786325790, .residual 278426265174512⟩, + ⟨5693, 2862190729553372190, .residual 4308334562798227⟩ + ], + [ + ⟨62, 8404783183248764190, .residual 226269360933619⟩, + ⟨1086, 7148789079699778590, .residual 3303111367862661⟩, + ⟨5438, 4155298310807281950, .residual 1006134501218224⟩, + ⟨5694, 5446497545397396510, .residual 1755613694320864⟩ + ], + [ + ⟨63, 7395988974230580510, .residual 4348042613567750⟩, + ⟨1087, 6460844003279662110, .residual 752132264057780⟩, + ⟨5439, 4146632896694903070, .residual 279508604273136⟩, + ⟨5695, 5444245720048788510, .residual 3915711179795968⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData08.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData08.lean new file mode 100644 index 00000000..513e27e8 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData08.lean @@ -0,0 +1,119 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 64–71 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets08 : Array (List PatternEntry) := #[ + [ + ⟨64, 416611852544, .sharedThree 1 4 0 5 6⟩, + ⟨832, 3299122094346, .k4 0 [0, 1, 3, 5] 0 1 3 5⟩, + ⟨1088, 3456866238070784, .k4 2 [2, 3, 5, 6] 2 3 5 6⟩, + ⟨6464, 2834705594477568, .k4 1 [1, 5, 6, 4, 3] 1 2 3 4⟩, + ], + [ + ⟨577, 38280600134090752, .k4 2 [2, 3, 6] 2 3 6 7⟩, + ⟨833, 3299122096138, .k4 0 [0, 3, 1, 5] 0 1 3 5⟩, + ⟨1345, 13583787556364288, .k4 1 [1, 5, 6, 4] 1 4 5 6⟩, + ⟨7233, 13593708930801946, .k4 0 [0, 1, 5, 6, 4] 0 3 4 5⟩, + ⟨7745, 97049658853638, .k4 0 [0, 1, 2, 3, 4, 5] 2 4 5 6⟩, + ], + [ + ⟨578, 38281459315769344, .k4 3 [3, 4, 6] 3 4 6 7⟩, + ⟨1602, 92775593869332, .k4 0 [0, 2, 4, 5] 2 4 5 6⟩, + ⟨2114, 1441152469179039772, .k4 0 [0, 4, 7, 2] 0 2 3 4⟩ + ], + [ + ⟨67, 420913217536, .sharedThree 2 4 1 5 6⟩, + ⟨579, 38500502916300800, .k4 3 [3, 5, 6] 3 5 6 7⟩, + ⟨1091, 3659174785843212, .k4 0 [0, 3, 2, 6] 0 2 3 6⟩, + ⟨5187, 6755679788338206, .k4 0 [0, 4, 6, 3, 1] 0 1 2 3⟩, + ⟨5699, 37154697022980362, .k4 0 [0, 1, 3, 2, 6] 1 2 6 7⟩, + ⟨8771, 5801762812669790494, .k4 0 [0, 1, 2, 6, 7, 4] 0 1 3 4⟩ + ], + [ + ⟨68, 422550962176, .sharedThree 3 4 1 5 6⟩, + ⟨836, 3448858747154, .k4 0 [0, 1, 4, 5] 0 1 4 5⟩, + ⟨2884, 1407376011905038, .k4 0 [0, 2, 3, 6, 1] 0 1 3 6⟩, + ⟨4164, 2594218521479752704, .k4 1 [1, 2, 3, 7, 5] 1 2 3 5⟩ + ], + [ + ⟨69, 429496755200, .sharedThree 1 4 2 5 6⟩, + ⟨1093, 3659175792476172, .k4 0 [0, 3, 6, 2] 0 2 3 6⟩, + ⟨1605, 96930238038016, .k4 2 [2, 3, 4, 5] 2 3 5 6⟩, + ⟨6469, 3096246224437534, .k4 0 [0, 1, 4, 6, 2] 0 2 3 6⟩, + ], + [ + ⟨838, 5497560311046, .k4 0 [0, 1, 2, 5] 0 1 2 5⟩, + ⟨1606, 97038091943960, .k4 0 [0, 3, 4, 5] 3 4 5 6⟩, + ⟨5702, 37154718414455058, .k4 0 [0, 1, 4, 2, 6] 1 2 6 7⟩ + ], + [ + ⟨71, 446676625408, .sharedThree 1 4 3 5 6⟩, + ⟨327, 293472829440, .k4 2 [2, 3, 4] 2 3 4 6⟩, + ⟨583, 38843550040899584, .k4 1 [1, 6, 3] 1 3 6 7⟩, + ⟨839, 5497560376582, .k4 0 [0, 1, 2, 5] 0 1 2 5⟩, + ⟨8775, 5802888696483022110, .k4 0 [0, 1, 3, 6, 7, 4] 0 1 2 4⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets08 : Array (List HardEntry) := #[ + [ + ⟨64, 8400275203023187230, .residual 779325855812563⟩, + ⟨1088, 6459722501419330590, .residual 933047028627393⟩, + ⟨5440, 4155289489179336990, .residual 4346960281807369⟩, + ⟨5696, 5442556895958328350, .residual 3512536927900454⟩ + ], + [ + ⟨65, 6166495397074709790, .residual 4277794395533350⟩, + ⟨1089, 4145503412625239070, .residual 760926224276401⟩, + ⟨5441, 3290611554863735070, .residual 4346960281807368⟩, + ⟨5697, 3150432631065338910, .residual 1755733957075168⟩ + ], + [ + ⟨66, 5157689080778599710, .residual 4411569478585472⟩, + ⟨1090, 3145018612410117150, .residual 3363706943147269⟩, + ⟨5442, 6141164599685341470, .residual 3795812839861506⟩, + ⟨5698, 3150423809437393950, .residual 3361557312056832⟩ + ], + [ + ⟨67, 5162203559574908190, .residual 4403871017683984⟩, + ⟨1091, 3136574491957816350, .residual 1231190103736098⟩, + ⟨5443, 3867564906395132190, .residual 3303231626947842⟩, + ⟨5699, 3150417238137431070, .residual 2949724398752550⟩ + ], + [ + ⟨68, 5442550540468235550, .residual 3919108499073160⟩, + ⟨1092, 6163132298061573150, .residual 2053936852036272⟩, + ⟨5444, 5417224136780079390, .residual 271808235357680⟩, + ⟨5700, 6141161301150458910, .residual 3795692580776327⟩ + ], + [ + ⟨69, 5155446064223366430, .residual 3919108499073161⟩, + ⟨1093, 5131176447107558430, .residual 746442617330594⟩, + ⟨5445, 3150353454651859230, .residual 263029311194608⟩, + ⟨5701, 3866720481465000990, .residual 3303111367862663⟩ + ], + [ + ⟨70, 5442549445251575070, .residual 3919108499073162⟩, + ⟨1094, 2852407912913464350, .residual 4317250646643985⟩, + ⟨5446, 3858978275153076510, .residual 4347907321983234⟩, + ⟨5702, 3858839182586864670, .residual 277870066581746⟩ + ], + [ + ⟨71, 5155444969006705950, .residual 3124964257345960⟩, + ⟨1095, 5446477729664363550, .residual 316422467528945⟩, + ⟨5447, 3862203688218190110, .residual 1479389748428370⟩, + ⟨5703, 5564643512151106590, .residual 1755733957075169⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData09.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData09.lean new file mode 100644 index 00000000..180314c6 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData09.lean @@ -0,0 +1,125 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 72–79 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets09 : Array (List PatternEntry) := #[ + [ + ⟨584, 39406498967191552, .k4 2 [2, 3, 6] 2 3 6 7⟩, + ⟨840, 5497560441094, .k4 0 [0, 1, 2, 5] 0 1 2 5⟩, + ⟨1864, 10696049117193478, .k4 0 [0, 1, 2, 6] 1 2 5 6⟩, + ⟨2120, 1729382822000459802, .k4 0 [0, 4, 7, 3] 0 1 3 4⟩ + ], + [ + ⟨73, 562649300992, .sharedThree 2 4 0 1 7⟩, + ⟨585, 39406499973824512, .k4 2 [2, 6, 3] 2 3 6 7⟩, + ⟨841, 5497560441862, .k4 0 [0, 2, 1, 5] 0 1 2 5⟩, + ⟨1097, 4785353782263828, .k4 0 [0, 2, 4, 6] 0 2 4 6⟩, + ⟨1609, 97084253405184, .k4 2 [2, 4, 3, 5] 2 4 5 6⟩, + ⟨1865, 10696049117323526, .k4 0 [0, 1, 2, 6] 1 2 5 6⟩, + ⟨3145, 5066850228715798, .k4 0 [0, 1, 2, 6, 4] 0 1 2 4⟩, + ⟨6217, 92513601020166, .k4 0 [0, 1, 2, 4, 5] 1 2 5 6⟩ + ], + [ + ⟨74, 564838531072, .sharedThree 3 4 0 1 7⟩, + ⟨586, 39406500036739072, .k4 2 [2, 3, 6] 2 3 6 7⟩, + ⟨842, 5498114473996, .k4 0 [0, 2, 3, 5] 0 2 3 5⟩, + ⟨1610, 97174994026520, .k4 0 [0, 3, 4, 5] 3 4 5 6⟩, + ⟨1866, 10696049121371398, .k4 0 [0, 1, 2, 6] 1 2 5 6⟩, + ⟨2122, 1729382830623948828, .k4 0 [0, 4, 7, 3] 0 2 3 4⟩, + ⟨6218, 92515228778508, .k4 0 [0, 2, 3, 4, 5] 2 3 5 6⟩, + ], + [ + ⟨587, 39406500040409088, .k4 2 [2, 6, 3] 2 3 6 7⟩, + ⟨2123, 1729382851813572634, .k4 0 [0, 3, 7, 4] 0 1 3 4⟩, + ⟨2635, 13216423346204, .k4 0 [0, 4, 2, 5, 3] 0 2 3 4⟩ + ], + [ + ⟨76, 573462020096, .sharedThree 3 4 0 2 7⟩, + ⟨1100, 4785362366906642, .k4 0 [0, 1, 4, 6] 0 1 4 6⟩, + ⟨6220, 92532676034572, .k4 0 [0, 2, 3, 4, 5] 2 3 5 6⟩, + ⟨6476, 3096551162462494, .k4 0 [0, 1, 2, 6, 4] 0 3 4 6⟩, + ⟨6732, 9654812157174798, .k4 0 [0, 3, 5, 6, 1] 0 1 2 5⟩, + ⟨8780, 5810207023318574354, .k4 0 [0, 1, 4, 2, 7, 6] 1 2 5 6⟩, + ], + [ + ⟨589, 40533238473555968, .k4 2 [2, 4, 6] 2 4 6 7⟩, + ⟨8781, 5810769973267817746, .k4 0 [0, 1, 4, 2, 7, 6] 1 2 5 6⟩, + ⟨9805, 2460302402738880782, .k4 0 [0, 1, 3, 7, 5, 6, 2] 0 1 2 3⟩ + ], + [ + ⟨78, 588419497984, .sharedThree 2 4 0 3 7⟩, + ⟨590, 40533259129454592, .k4 3 [3, 4, 6] 3 4 6 7⟩, + ⟨846, 5639295270932, .k4 0 [0, 2, 4, 5] 0 2 4 5⟩, + ⟨1102, 4785366667165716, .k4 0 [0, 2, 4, 6] 0 2 4 6⟩, + ⟨1614, 143640897922048, .k4 1 [1, 2, 5, 4] 2 4 5 7⟩ + ], + [ + ⟨79, 691489775872, .sharedThree 1 4 0 5 7⟩, + ⟨591, 40762057137586176, .k4 4 [4, 5, 6] 4 5 6 7⟩, + ⟨847, 5652180172820, .k4 0 [0, 2, 4, 5] 0 2 4 5⟩, + ⟨1103, 4785370961084436, .k4 0 [0, 2, 4, 6] 0 2 4 6⟩, + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets09 : Array (List HardEntry) := #[ + [ + ⟨72, 7395849338384559390, .residual 1988157039375808⟩, + ⟨1096, 5450925404522572830, .residual 4346719763574277⟩, + ⟨5448, 4147065160742396190, .residual 2183194900947538⟩, + ⟨5704, 3280828673173939230, .residual 1007254448117683⟩ + ], + [ + ⟨73, 7389091843033017630, .residual 129319945053040⟩, + ⟨1097, 5162695045550730270, .residual 2508035153971762⟩, + ⟨5449, 3285751732007788830, .residual 4161210715195079⟩, + ⟨5705, 3284630093195043870, .residual 1755613694320865⟩ + ], + [ + ⟨74, 6166494858022759710, .residual 2059470678193712⟩, + ⟨1098, 5131229325436677150, .residual 3262818903856402⟩, + ⟨5450, 3858839182637195550, .residual 4349155010119820⟩, + ⟨5706, 6141095331459425310, .residual 277990329336050⟩ + ], + [ + ⟨75, 6164251841467526430, .residual 620939081163744⟩, + ⟨1099, 5131238018718919710, .residual 837909096354738⟩, + ⟨5451, 3284630230147457310, .residual 2675488465555026⟩, + ⟨5707, 5600374758902522910, .residual 936902869129139⟩ + ], + [ + ⟨76, 6461140884774923550, .residual 1202434926124884⟩, + ⟨1100, 8181864353213475870, .residual 1346467693059776⟩, + ⟨5452, 6141095468411838750, .residual 3668975137729218⟩, + ⟨5708, 6172627260742886430, .residual 4403716935715217⟩ + ], + [ + ⟨77, 6171789023942749470, .residual 2077096158814771⟩, + ⟨1101, 8184107220032056350, .residual 3902339872237968⟩, + ⟨5453, 6425956940936044830, .residual 2965170007136962⟩, + ⟨5709, 5164104614118220830, .residual 2468796906851412⟩ + ], + [ + ⟨78, 7681264814949346590, .residual 1202449987870548⟩, + ⟨1102, 7148782482630405150, .residual 1394214353296690⟩, + ⟨5454, 5564643512201437470, .residual 1752426831602277⟩, + ⟨5710, 3860651038767375390, .residual 4334447695825297⟩ + ], + [ + ⟨79, 7391912954117172510, .residual 2077111220560435⟩, + ⟨1103, 5995852285009751070, .residual 1835341575158225⟩, + ⟨5455, 6137730962830844190, .residual 4046707148285765⟩, + ⟨5711, 2852408767607792670, .residual 2469879245950036⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData10.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData10.lean new file mode 100644 index 00000000..cfd4b47c --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData10.lean @@ -0,0 +1,127 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 80–87 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets10 : Array (List PatternEntry) := #[ + [ + ⟨80, 691500285952, .sharedThree 2 4 0 5 7⟩, + ⟨1104, 4785370962067476, .k4 0 [0, 4, 2, 6] 0 2 4 6⟩, + ⟨1616, 143661052471296, .k4 1 [1, 3, 5, 4] 3 4 5 7⟩, + ], + [ + ⟨81, 694190866432, .sharedThree 3 4 0 5 7⟩, + ⟨1105, 4785385200680984, .k4 0 [0, 3, 4, 6] 0 3 4 6⟩, + ⟨1361, 13601104864501760, .k4 1 [1, 5, 4, 6] 1 4 5 6⟩, + ⟨2385, 38957286686, .k4 0 [0, 1, 2, 4, 3] 0 1 2 3⟩, + ⟨4177, 2594224018553307148, .k4 0 [0, 3, 2, 7, 5] 0 2 3 5⟩, + ⟨6225, 92646741796114, .k4 0 [0, 1, 4, 2, 5] 1 4 5 6⟩, + ⟨9809, 2460302415573975318, .k4 0 [0, 1, 4, 7, 5, 6, 2] 0 1 2 4⟩ + ], + [ + ⟨82, 695795318784, .sharedThree 2 4 1 5 7⟩, + ⟨1106, 4785389227212824, .k4 0 [0, 3, 4, 6] 0 3 4 6⟩, + ⟨3154, 5066867693602842, .k4 0 [0, 3, 4, 6, 1] 0 1 3 4⟩, + ⟨4178, 2594232836036821012, .k4 0 [0, 2, 4, 7, 5] 0 2 4 5⟩, + ⟨6226, 92663922581778, .k4 0 [0, 1, 4, 2, 5] 1 4 5 6⟩, + ], + [ + ⟨83, 698502610944, .sharedThree 3 4 1 5 7⟩, + ⟨595, 41096179823460352, .k4 1 [1, 6, 4] 1 4 6 7⟩, + ⟨851, 6597642824704, .k4 1 [1, 3, 5, 2] 1 2 3 5⟩, + ⟨1107, 4785389478871064, .k4 0 [0, 4, 3, 6] 0 3 4 6⟩, + ⟨1363, 13601242303455232, .k4 1 [1, 5, 6, 4] 1 4 5 6⟩, + ⟨4179, 2594232836037804052, .k4 0 [0, 4, 2, 7, 5] 0 2 4 5⟩, + ], + [ + ⟨84, 704374678528, .sharedThree 1 4 2 5 7⟩, + ⟨596, 41658863502491648, .k4 2 [2, 4, 6] 2 4 6 7⟩, + ⟨2388, 38957354014, .k4 0 [0, 4, 3, 1, 2] 0 1 2 3⟩, + ⟨3412, 9650414110664714, .k4 0 [0, 3, 5, 6, 1] 0 1 3 5⟩, + ⟨4180, 2595975540491969536, .k4 1 [1, 5, 6, 7, 2] 1 2 5 6⟩, + ⟨4692, 88102670591250, .k4 0 [0, 1, 4, 2, 5] 1 2 5 6⟩, + ], + [ + ⟨85, 707126099968, .sharedThree 3 4 2 5 7⟩, + ⟨597, 41659121200529408, .k4 2 [2, 6, 4] 2 4 6 7⟩, + ⟨1365, 13603312483958784, .k4 2 [2, 5, 4, 6] 2 4 5 6⟩, + ⟨2133, 2450169303528563712, .k4 1 [1, 2, 7, 5] 1 2 5 6⟩, + ⟨6485, 3377726586094878, .k4 0 [0, 1, 3, 6, 2, 4] 0 1 2 4⟩, + ⟨8533, 14637008314066186, .k4 0 [0, 1, 3, 2, 4, 6] 1 2 5 6⟩ + ], + [ + ⟨598, 41659138376204288, .k4 2 [2, 4, 6] 2 4 6 7⟩, + ⟨1622, 145860111892480, .k4 2 [2, 3, 5, 4] 3 4 5 7⟩, + ⟨2902, 1688849915331854, .k4 0 [0, 1, 3, 6, 2] 0 1 2 3⟩, + ⟨4182, 2603859038865220608, .k4 1 [1, 6, 5, 7, 2] 1 2 5 6⟩, + ⟨8790, 6954834357664164110, .k4 0 [0, 1, 2, 6, 7, 5] 0 1 3 5⟩ + ], + [ + ⟨87, 721565515776, .sharedThree 2 4 3 5 7⟩, + ⟨599, 41659138379350016, .k4 2 [2, 6, 4] 2 4 6 7⟩, + ⟨1623, 145877225177088, .k4 2 [2, 4, 5, 3] 3 4 5 7⟩, + ⟨2903, 1688849915333646, .k4 0 [0, 3, 1, 6, 2] 0 1 2 3⟩, + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets10 : Array (List HardEntry) := #[ + [ + ⟨80, 7181721629143215390, .residual 1434001270554048⟩, + ⟨1104, 3865150934157388830, .residual 2466098654466387⟩, + ⟨5456, 5563522010341105950, .residual 4161314055964354⟩, + ⟨5712, 6139472451290588190, .residual 3280015953037714⟩ + ], + [ + ⟨81, 7684084094901300510, .residual 1434003178962368⟩, + ⟨1105, 5131230155405552670, .residual 2277607609955554⟩, + ⟨5457, 3858276241273708830, .residual 1440236054166562⟩, + ⟨5713, 3866713884395627550, .residual 3772597165951378⟩ + ], + [ + ⟨82, 6459170576917474590, .residual 3911410038171666⟩, + ⟨1106, 3865016222508149790, .residual 2457440067492148⟩, + ⟨5458, 2850032866341085470, .residual 2487797850035234⟩, + ⟨5714, 3858832585517491230, .residual 3685168810169621⟩ + ], + [ + ⟨83, 7176861673663376670, .residual 4403991276775442⟩, + ⟨1107, 3721463984385715230, .residual 2762492304913601⟩, + ⟨5459, 6176842108091162910, .residual 4409479976808706⟩, + ⟨5715, 3284623633027752990, .residual 3678569492256289⟩ + ], + [ + ⟨84, 7688143357060066590, .residual 4411569478585476⟩, + ⟨1108, 7148773669558840350, .residual 2448646004513073⟩, + ⟨5460, 4149308027560976670, .residual 3527982536284866⟩, + ⟨5716, 2850165361737262110, .residual 1977298036649044⟩ + ], + [ + ⟨85, 7679699108262063390, .residual 4411569478585473⟩, + ⟨1109, 5419387134861143070, .residual 2969521916484257⟩, + ⟨5461, 3862203551316107550, .residual 4046724067059525⟩, + ⟨5717, 2850026269221381150, .residual 1977298036649041⟩ + ], + [ + ⟨86, 5164102519270944030, .residual 138097067231088⟩, + ⟨1110, 5131161156755942430, .residual 2972874238990997⟩, + ⟨5462, 3285751595105706270, .residual 4161451237492418⟩, + ⟨5718, 3281946859336688670, .residual 4325651870951825⟩ + ], + [ + ⟨87, 8190575916684422430, .residual 3918988239981700⟩, + ⟨1111, 6171492125234457630, .residual 822483828394929⟩, + ⟨5463, 3858839045735112990, .residual 3106025427053250⟩, + ⟨5719, 5560768545664066590, .residual 3271220128164242⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData11.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData11.lean new file mode 100644 index 00000000..bdf7754b --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData11.lean @@ -0,0 +1,122 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 88–95 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets11 : Array (List PatternEntry) := #[ + [ + ⟨88, 828928737536, .sharedThree 1 4 0 6 7⟩, + ⟨600, 42784784065232896, .k4 3 [3, 4, 6] 3 4 6 7⟩, + ⟨1368, 13607729046224896, .k4 3 [3, 4, 5, 6] 3 4 5 6⟩, + ⟨2136, 2450173701575073792, .k4 1 [1, 7, 5, 2] 1 2 5 6⟩, + ], + [ + ⟨89, 828941336576, .sharedThree 2 4 0 6 7⟩, + ⟨601, 42785024583401472, .k4 3 [3, 6, 4] 3 4 6 7⟩, + ⟨1369, 13607729314660352, .k4 3 [3, 5, 4, 6] 3 4 5 6⟩, + ⟨1625, 147334566748422, .k4 0 [0, 1, 2, 5] 1 2 5 7⟩, + ⟨2137, 2450178101259329536, .k4 1 [1, 7, 5, 3] 1 3 5 6⟩, + ⟨4441, 10995990274334, .k4 0 [0, 1, 5, 3, 2] 0 2 3 4⟩ + ], + [ + ⟨602, 42785057869398016, .k4 3 [3, 4, 6] 3 4 6 7⟩, + ⟨2138, 2450187316614979584, .k4 1 [1, 7, 5, 4] 1 4 5 6⟩, + ⟨9818, 2461428303765143822, .k4 0 [0, 1, 2, 7, 5, 6, 3] 0 1 2 3⟩ + ], + [ + ⟨91, 833236369408, .sharedThree 2 4 1 6 7⟩, + ⟨603, 42785058674704384, .k4 3 [3, 6, 4] 3 4 6 7⟩, + ⟨1115, 5066850233762816, .k4 1 [1, 6, 4, 2] 1 2 4 6⟩, + ⟨1371, 13607866753613824, .k4 3 [3, 5, 6, 4] 3 4 5 6⟩, + ⟨2907, 1688849948429326, .k4 0 [0, 2, 3, 6, 1] 0 1 2 3⟩, + ⟨10075, 5810282889614484502, .k4 0 [0, 4, 7, 6, 1, 5] 0 1 2 5⟩, + ⟨10587, 3468546323312626718, .k4 0 [0, 2, 4, 7, 5, 6, 1] 0 1 2 3⟩ + ], + [ + ⟨92, 836478435328, .sharedThree 3 4 1 6 7⟩, + ⟨604, 45249301529550848, .k4 1 [1, 5, 6] 1 5 6 7⟩, + ⟨8796, 6955955860610753806, .k4 0 [0, 1, 3, 6, 7, 5] 0 1 2 5⟩, + ⟨9820, 2461428316851175706, .k4 0 [0, 1, 4, 7, 5, 6, 3] 0 1 3 4⟩ + ], + [ + ⟨93, 841813640192, .sharedThree 1 4 2 6 7⟩, + ⟨605, 45251500567429120, .k4 2 [2, 5, 6] 2 5 6 7⟩, + ⟨1629, 147337318638592, .k4 1 [1, 2, 5, 3] 2 3 5 7⟩ + ], + [ + ⟨94, 845101924352, .sharedThree 3 4 2 6 7⟩, + ⟨606, 45255902357356544, .k4 3 [3, 5, 6] 3 5 6 7⟩, + ⟨862, 7696581599494, .k4 0 [0, 1, 2, 5] 0 1 2 5⟩, + ⟨2654, 14294207046670, .k4 0 [0, 3, 5, 2, 1] 0 1 2 5⟩, + ], + [ + ⟨607, 45265656764956672, .k4 4 [4, 5, 6] 4 5 6 7⟩, + ⟨863, 7696581600262, .k4 0 [0, 2, 1, 5] 0 1 2 5⟩, + ⟨1119, 5066868750567424, .k4 1 [1, 6, 4, 3] 1 3 4 6⟩, + ⟨1375, 14161855794667520, .k4 1 [1, 6, 5, 4] 1 4 5 6⟩, + ⟨1631, 148038942336000, .k4 1 [1, 2, 5, 4] 2 4 5 7⟩, + ⟨6239, 96912807100428, .k4 0 [0, 2, 3, 4, 5] 2 3 5 6⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets11 : Array (List HardEntry) := #[ + [ + ⟨88, 6028848096049900830, .residual 3918988239981697⟩, + ⟨1112, 3858394538300697630, .residual 831277788613556⟩, + ⟨5464, 3284630093245374750, .residual 1752291532792421⟩, + ⟨5720, 6137154788874839070, .residual 3045388487022113⟩ + ], + [ + ⟨89, 7676196318743112990, .residual 129318065997680⟩, + ⟨1113, 3857273036440366110, .residual 1012192553183169⟩, + ⟨5465, 6428199807754625310, .residual 2183179864891986⟩, + ⟨5721, 5560702832664437790, .residual 3051987804935445⟩ + ], + [ + ⟨90, 6027669437570100510, .residual 4411569478585474⟩, + ⟨1114, 5131229055910702110, .residual 3916898738204933⟩, + ⟨5466, 6141095331509756190, .residual 4410727664945292⟩, + ⟨5722, 5128357294206673950, .residual 2468796906851409⟩ + ], + [ + ⟨91, 7391345605866958110, .residual 3918988239981698⟩, + ⟨1115, 5131161152477752350, .residual 1785208665339682⟩, + ⟨5467, 5564643375299354910, .residual 2605136886566482⟩, + ⟨5723, 6139406481599554590, .residual 3122356281021717⟩ + ], + [ + ⟨92, 6026825012690300190, .residual 4411689737676935⟩, + ⟨1116, 5131238848687795230, .residual 3793512884687234⟩, + ⟨5468, 6137730825928761630, .residual 1549756363472466⟩, + ⟨5724, 5562954525389153310, .residual 3115756963108385⟩ + ], + [ + ⟨93, 7175172823803505950, .residual 3919108499073159⟩, + ⟨1117, 5419400209010027550, .residual 1422509054762658⟩, + ⟨5469, 5563521873439023390, .residual 4161193796421319⟩, + ⟨5725, 5166346941884851230, .residual 1976215697550420⟩ + ], + [ + ⟨94, 6024064411992403230, .residual 1505314909371952⟩, + ⟨1118, 3716956004160138270, .residual 4249375660746946⟩, + ⟨5470, 6141093141076435230, .residual 1441333429320738⟩, + ⟨5726, 5130600165303444510, .residual 1976215697550417⟩ + ], + [ + ⟨95, 6454720852555541790, .residual 1505316817780272⟩, + ⟨1119, 3857143736701578270, .residual 3475218863138626⟩, + ⟨5471, 5132289015213646110, .residual 2486835773690914⟩, + ⟨5727, 5598408814949360670, .residual 4394921110841745⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData12.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData12.lean new file mode 100644 index 00000000..2cc9640b --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData12.lean @@ -0,0 +1,127 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 96–103 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets12 : Array (List PatternEntry) := #[ + [ + ⟨96, 859006566400, .sharedThree 2 4 3 6 7⟩, + ⟨608, 45741882738794496, .k4 1 [1, 5, 6] 1 5 6 7⟩, + ⟨2912, 1688862750426390, .k4 0 [0, 1, 4, 6, 2] 0 1 2 4⟩, + ⟨6240, 96930214469898, .k4 0 [0, 1, 3, 4, 5] 1 3 5 6⟩, + ⟨9824, 2463680403052134678, .k4 0 [0, 1, 2, 7, 5, 6, 4] 0 1 2 4⟩, + ⟨10080, 7099229921754530830, .k4 0 [0, 3, 5, 7, 1, 6] 0 1 2 6⟩ + ], + [ + ⟨97, 962072731648, .sharedThree 1 4 5 6 7⟩, + ⟨609, 45810052459716608, .k4 1 [1, 6, 5] 1 5 6 7⟩, + ⟨865, 7696583566342, .k4 0 [0, 2, 5, 1] 0 1 2 5⟩, + ⟨1377, 14161993233620992, .k4 1 [1, 6, 4, 5] 1 4 5 6⟩, + ⟨4961, 162872166973464, .k4 0 [0, 3, 4, 5, 2] 2 3 5 7⟩, + ⟨6241, 96930254356492, .k4 0 [0, 2, 3, 4, 5] 2 3 5 6⟩, + ⟨10081, 7099238859027825686, .k4 0 [0, 4, 5, 7, 1, 6] 0 1 2 6⟩ + ], + [ + ⟨98, 962087354368, .sharedThree 2 4 5 6 7⟩, + ⟨9826, 2463680420282138906, .k4 0 [0, 1, 3, 7, 5, 6, 4] 0 1 3 4⟩ + ], + [ + ⟨99, 965830770688, .sharedThree 3 4 5 6 7⟩, + ⟨867, 7696583631110, .k4 0 [0, 1, 5, 2] 0 1 2 5⟩, + ⟨10083, 7100071048686642190, .k4 0 [0, 3, 6, 7, 1, 5] 0 1 2 5⟩ + ], + [ + ⟨100, 15393162788878, .sharedThree 0 5 1 2 3⟩, + ⟨612, 46307031730094080, .k4 2 [2, 5, 6] 2 5 6 7⟩, + ⟨868, 9896158308618, .k4 0 [0, 1, 3, 5] 0 1 3 5⟩, + ⟨1380, 14711877901746176, .k4 2 [2, 6, 4, 5] 2 4 5 6⟩, + ⟨5220, 7047871413100826, .k4 0 [0, 1, 5, 3, 6] 0 3 4 6⟩, + ⟨8804, 6958485835781054742, .k4 0 [0, 1, 2, 5, 7, 6] 0 2 4 6⟩ + ], + [ + ⟨101, 24189255811094, .sharedThree 0 5 1 2 4⟩, + ⟨613, 46373002427760640, .k4 2 [2, 6, 5] 2 5 6 7⟩, + ⟨3941, 216172782206746894, .k4 0 [0, 1, 3, 7, 2] 0 1 2 7⟩, + ⟨4197, 2882453297348881408, .k4 1 [1, 2, 3, 7, 5] 1 2 3 5⟩ + ], + [ + ⟨102, 28587302322202, .sharedThree 0 5 1 3 4⟩, + ⟨614, 46377400470077440, .k4 2 [2, 5, 6] 2 5 6 7⟩, + ⟨870, 9896175085834, .k4 0 [0, 1, 3, 5] 0 1 3 5⟩, + ⟨3942, 216172784362553614, .k4 0 [0, 1, 2, 7, 3] 0 1 3 7⟩ + ], + [ + ⟨103, 30786325577756, .sharedThree 0 5 2 3 4⟩, + ⟨359, 603787886592, .k4 2 [2, 4, 3] 2 3 4 7⟩, + ⟨615, 46377400472174592, .k4 2 [2, 6, 5] 2 5 6 7⟩, + ⟨871, 9896191861002, .k4 0 [0, 1, 3, 5] 0 1 3 5⟩, + ⟨1127, 5154931417833472, .k4 1 [1, 6, 4, 5] 1 4 5 6⟩, + ⟨1383, 14724951783243776, .k4 2 [2, 6, 4, 5] 2 4 5 6⟩, + ⟨3943, 216172803598221590, .k4 0 [0, 1, 4, 7, 2] 0 1 2 7⟩, + ⟨4967, 163281783358738, .k4 0 [0, 1, 4, 2, 5] 2 4 5 7⟩, + ⟨7271, 14434390528508186, .k4 0 [0, 1, 6, 5, 3] 0 3 4 6⟩, + ⟨10087, 7102323126582682646, .k4 0 [0, 4, 6, 7, 1, 5] 0 1 2 5⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets12 : Array (List HardEntry) := #[ + [ + ⟨96, 6028799718126071070, .residual 4411689737676930⟩, + ⟨1120, 2852278069844536350, .residual 4170004660737221⟩, + ⟨5472, 6164806280117018910, .residual 953327621082032⟩, + ⟨5728, 3292495849308349470, .residual 3763801341077906⟩ + ], + [ + ⟨97, 7679580362667797790, .residual 3919108499073154⟩, + ⟨1121, 3713030747648977950, .residual 2317405881600101⟩, + ⟨5473, 3867059112994464030, .residual 1023696118844336⟩, + ⟨5729, 3858823622709273630, .residual 3608201016170017⟩ + ], + [ + ⟨98, 6463393094542306590, .residual 4403871017683988⟩, + ⟨1122, 2851717318914370590, .residual 2982865092065602⟩, + ⟨5474, 5590605597368705310, .residual 945631039630256⟩, + ⟨5730, 3284614670219535390, .residual 3614800334083349⟩ + ], + [ + ⟨99, 6459170970143304990, .residual 4403871017683985⟩, + ⟨1123, 5995847784353786910, .residual 1481298832039378⟩, + ⟨5475, 3858832585567822110, .residual 1873304089393186⟩, + ⟨5731, 2852269131761771550, .residual 2469879245950033⟩ + ], + [ + ⟨100, 5159386447612488990, .residual 629716203341792⟩, + ⟨1124, 6136035516895226910, .residual 2748053695466578⟩, + ⟨5476, 5560702845549338910, .residual 2427322651097122⟩, + ⟨5732, 7148705516495692830, .residual 4049790669524776⟩ + ], + [ + ⟨101, 8257725703402302750, .residual 3911289779080212⟩, + ⟨1125, 5131169850038184990, .residual 4411539413806348⟩, + ⟨5477, 3292858430246150430, .residual 1015999537392560⟩, + ⟨5733, 7146462512775029790, .residual 3792821395080714⟩ + ], + [ + ⟨102, 7176861793085041950, .residual 3911289779080209⟩, + ⟨1126, 5991922527842626590, .residual 4248877701442759⟩, + ⟨5478, 6139406481649885470, .residual 1873168790583330⟩, + ⟨5734, 7148705379593610270, .residual 3300240182167050⟩ + ], + [ + ⟨103, 6451356316910234910, .residual 620937202108384⟩, + ⟨1127, 5130609099108019230, .residual 989142335587282⟩, + ⟨5479, 3284614683104436510, .residual 2427457949906978⟩, + ⟨5735, 7146462375872947230, .residual 4049788786806568⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData13.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData13.lean new file mode 100644 index 00000000..df735beb --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData13.lean @@ -0,0 +1,130 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 104–111 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets13 : Array (List PatternEntry) := #[ + [ + ⟨104, 73667283451904, .sharedThree 2 5 0 1 6⟩, + ⟨616, 47437333426864128, .k4 3 [3, 5, 6] 3 5 6 7⟩, + ⟨872, 9896191862794, .k4 0 [0, 3, 1, 5] 0 1 3 5⟩, + ⟨1128, 5348037442421010, .k4 0 [0, 1, 4, 6] 0 1 4 6⟩, + ⟨1640, 151734802489610, .k4 0 [0, 1, 3, 5] 1 3 5 7⟩, + ⟨3944, 216172823217996058, .k4 0 [0, 1, 4, 7, 3] 0 1 3 7⟩, + ⟨4200, 2882453452204015616, .k4 2 [2, 3, 4, 7, 5] 2 3 4 5⟩, + ⟨4712, 88399018025222, .k4 0 [0, 1, 2, 4, 5] 1 4 5 6⟩, + ⟨6248, 97079951122706, .k4 0 [0, 1, 4, 3, 5] 1 4 5 6⟩, + ⟨6760, 9663749430469654, .k4 0 [0, 4, 5, 6, 1] 0 1 2 5⟩, + ], + [ + ⟨105, 73668403134464, .sharedThree 3 5 0 1 6⟩, + ⟨617, 47498906078019584, .k4 3 [3, 6, 5] 3 5 6 7⟩, + ⟨1385, 15842176655163392, .k4 3 [3, 5, 6, 4] 3 4 5 6⟩, + ⟨2153, 2594284491612775424, .k4 1 [1, 2, 7, 5] 1 2 5 6⟩, + ⟨3945, 216173357640548630, .k4 0 [0, 1, 2, 7, 4] 0 1 4 7⟩, + ⟨7273, 14636849117094166, .k4 0 [0, 1, 2, 4, 6] 1 4 5 6⟩, + ], + [ + ⟨106, 73955041869824, .sharedThree 4 5 0 1 6⟩, + ⟨618, 47507701097299968, .k4 3 [3, 5, 6] 3 5 6 7⟩, + ⟨1386, 15842177192034304, .k4 3 [3, 6, 4, 5] 3 4 5 6⟩, + ⟨3946, 216173375104516378, .k4 0 [0, 1, 3, 7, 4] 0 1 4 7⟩, + ⟨7274, 14636849117160722, .k4 0 [0, 1, 4, 2, 6] 1 4 5 6⟩ + ], + [ + ⟨107, 75866302334208, .sharedThree 1 5 0 2 6⟩, + ⟨619, 47507701634170880, .k4 3 [3, 6, 5] 3 5 6 7⟩, + ⟨875, 9896228028428, .k4 0 [0, 3, 2, 5] 0 2 3 5⟩, + ⟨1387, 15850733035323392, .k4 3 [3, 6, 5, 4] 3 4 5 6⟩, + ⟨5739, 1441152434818256158, .k4 0 [0, 1, 4, 7, 2] 0 1 2 3⟩, + ⟨7275, 14636866297946386, .k4 0 [0, 1, 4, 2, 6] 1 4 5 6⟩ + ], + [ + ⟨620, 49698887648149504, .k4 4 [4, 5, 6] 4 5 6 7⟩, + ⟨876, 10038160654360, .k4 0 [0, 3, 4, 5] 0 3 4 5⟩, + ⟨2156, 2594286690635899904, .k4 1 [1, 5, 7, 2] 1 2 5 6⟩, + ⟨4716, 88416481992970, .k4 0 [0, 1, 3, 4, 5] 1 4 5 6⟩, + ], + [ + ⟨621, 49751664206282752, .k4 4 [4, 6, 5] 4 5 6 7⟩, + ⟨877, 10068225425432, .k4 0 [0, 3, 4, 5] 0 3 4 5⟩, + ⟨1133, 5348308025360658, .k4 0 [0, 1, 6, 4] 0 1 4 6⟩, + ⟨1389, 15850870474276864, .k4 3 [3, 6, 4, 5] 3 4 5 6⟩, + ], + [ + ⟨366, 7696581403910, .k4 0 [0, 1, 5] 0 1 2 5⟩, + ⟨622, 49768981514420224, .k4 4 [4, 5, 6] 4 5 6 7⟩, + ⟨878, 10072251957272, .k4 0 [0, 3, 4, 5] 0 3 4 5⟩, + ⟨1390, 216172782122402054, .k4 0 [0, 1, 2, 7] 0 1 2 7⟩ + ], + [ + ⟨111, 80264353611776, .sharedThree 2 5 0 3 6⟩, + ⟨623, 49769118953373696, .k4 4 [4, 6, 5] 4 5 6 7⟩, + ⟨879, 10072503615512, .k4 0 [0, 4, 3, 5] 0 3 4 5⟩, + ⟨1391, 216172784311632138, .k4 0 [0, 1, 3, 7] 0 1 3 7⟩, + ⟨4207, 2882463232058982424, .k4 0 [0, 3, 4, 7, 5] 0 3 4 5⟩, + ⟨7279, 14636977964146966, .k4 0 [0, 1, 2, 4, 6] 1 2 5 6⟩, + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets13 : Array (List HardEntry) := #[ + [ + ⟨104, 6170944581331856670, .residual 3911289779080210⟩, + ⟨1128, 5131237749192944670, .residual 3793753402863879⟩, + ⟨5480, 6428269058399658270, .residual 3795948131345666⟩, + ⟨5736, 8688943183795184670, .residual 3911135697111444⟩ + ], + [ + ⟨105, 7175740154322627870, .residual 4403871017683986⟩, + ⟨1129, 3713030743370787870, .residual 2316368651169889⟩, + ⟨5481, 4155790866969780510, .residual 3303366918432002⟩, + ⟨5737, 6019017377682416670, .residual 3885159734774419⟩ + ], + [ + ⟨106, 6026829393289555230, .residual 4411569478585479⟩, + ⟨1130, 5131169845759994910, .residual 346164076884082⟩, + ⟨5482, 7364891501338026270, .residual 1084199734522800⟩, + ⟨5738, 5995936430967874590, .residual 3772597165951380⟩ + ], + [ + ⟨107, 7175177204402760990, .residual 3918988239981703⟩, + ⟨1131, 6460928950737792030, .residual 4386519886533904⟩, + ⟨5483, 7366012866296275230, .residual 1084201617241008⟩, + ⟨5739, 8657980938202506270, .residual 3746621203614355⟩ + ], + [ + ⟨108, 6461140884022897950, .residual 1514146473778739⟩, + ⟨1132, 6171858560587361310, .hubPentagon 0 [0, 2, 3, 4, 1, 6, 7, 5] 0 1 2 7 4 3⟩, + ⟨5484, 6426025797853896990, .residual 3794986058614018⟩, + ⟨5740, 8688929985562076190, .residual 935818687453107⟩ + ], + [ + ⟨109, 6171789023190723870, .residual 1765384611160916⟩, + ⟨1133, 3148396187577707550, .residual 768641746508722⟩, + ⟨5485, 7366004198549479710, .residual 1092980530566064⟩, + ⟨5741, 6166510004257612830, .residual 4408277385956864⟩ + ], + [ + ⟨110, 7681264814197320990, .residual 1514161535524403⟩, + ⟨1134, 3141636390559902750, .residual 1202449987870545⟩, + ⟨5486, 4158033476963262750, .residual 3302404845700354⟩, + ⟨5742, 5590049226419266590, .residual 2308685135053024⟩ + ], + [ + ⟨111, 7391912953365146910, .residual 1765399672906580⟩, + ⟨1135, 6032721106497530910, .residual 1342760365907412⟩, + ⟨5487, 7362639556066402590, .residual 1092978647847856⟩, + ⟨5743, 5157703687961502750, .residual 4066688967914278⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData14.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData14.lean new file mode 100644 index 00000000..d756afd3 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData14.lean @@ -0,0 +1,130 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 112–119 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets14 : Array (List PatternEntry) := #[ + [ + ⟨112, 80577881440256, .sharedThree 4 5 0 3 6⟩, + ⟨1392, 216173344754532626, .k4 0 [0, 1, 4, 7] 0 1 4 7⟩, + ⟨1648, 153933869809676, .k4 0 [0, 2, 3, 5] 2 3 5 7⟩, + ⟨4720, 90301693781012, .k4 0 [0, 2, 4, 5, 1] 1 2 5 6⟩, + ], + [ + ⟨625, 504403158274080774, .k4 0 [0, 2, 7] 0 1 2 7⟩, + ⟨881, 10995219573760, .k4 1 [1, 3, 5, 2] 1 2 3 5⟩, + ⟨1137, 5629552421765120, .k4 2 [2, 4, 6, 3] 2 3 4 6⟩, + ⟨1393, 360287972429463564, .k4 0 [0, 2, 3, 7] 0 2 3 7⟩, + ⟨2673, 18833433830678, .k4 0 [0, 1, 4, 2, 5] 0 1 2 5⟩, + ⟨3185, 5348303734719510, .k4 0 [0, 4, 6, 1, 2] 0 1 2 6⟩, + ⟨4209, 2885331819224393728, .k4 1 [1, 5, 6, 7, 3] 1 3 5 6⟩, + ⟨8561, 432345603193340190, .k4 0 [0, 1, 4, 7, 3, 2] 0 1 2 3⟩ + ], + [ + ⟨114, 89060447158272, .sharedThree 2 5 0 4 6⟩, + ⟨882, 10995722497024, .k4 1 [1, 2, 5, 3] 1 2 3 5⟩, + ⟨1138, 5629783007446016, .k4 1 [1, 2, 6, 4] 1 2 4 6⟩, + ⟨1394, 360288541428744212, .k4 0 [0, 2, 4, 7] 0 2 4 7⟩, + ⟨1906, 11821949609074954, .k4 0 [0, 1, 3, 6] 1 3 5 6⟩, + ⟨5746, 1729382817421525022, .k4 0 [0, 2, 3, 7, 4] 0 1 2 4⟩, + ⟨6514, 3399854544519168, .k4 2 [2, 5, 6, 4, 3] 1 2 3 4⟩, + ⟨7282, 14636990850097414, .k4 0 [0, 1, 2, 4, 6] 1 2 5 6⟩, + ⟨7794, 149555621569560, .k4 0 [0, 3, 4, 5, 2, 1] 1 2 5 7⟩ + ], + [ + ⟨115, 89061800804352, .sharedThree 3 5 0 4 6⟩, + ⟨371, 12094627916042, .k4 0 [0, 1, 5] 0 1 3 5⟩, + ⟨627, 792633536615022602, .k4 0 [0, 3, 7] 0 1 3 7⟩, + ⟨1139, 5629800183120896, .k4 1 [1, 2, 4, 6] 1 2 4 6⟩, + ⟨1395, 648518936916131864, .k4 0 [0, 3, 4, 7] 0 3 4 7⟩, + ⟨4211, 2892093816272087040, .k4 1 [1, 6, 5, 7, 3] 1 3 5 6⟩, + ⟨6515, 3399871523586048, .k4 2 [2, 5, 6, 4, 3] 1 2 3 4⟩, + ⟨7283, 14636992477855756, .k4 0 [0, 2, 3, 4, 6] 2 3 5 6⟩, + ⟨8563, 432345607472054558, .k4 0 [0, 1, 3, 7, 4, 2] 0 1 2 4⟩ + ], + [ + ⟨116, 144036031823872, .sharedThree 2 5 0 1 7⟩, + ⟨372, 12095215108106, .k4 0 [0, 3, 5] 0 1 3 5⟩, + ⟨628, 936748722502041612, .k4 0 [0, 2, 7] 0 2 3 7⟩, + ⟨5236, 9570149264878604, .k4 0 [0, 2, 3, 1, 6] 1 2 5 6⟩, + ⟨6516, 3404253125804032, .k4 2 [2, 6, 3, 5, 4] 1 2 3 4⟩, + ⟨7284, 14637009925111820, .k4 0 [0, 2, 3, 4, 6] 2 3 5 6⟩ + ], + [ + ⟨117, 144038221053952, .sharedThree 3 5 0 1 7⟩, + ⟨373, 14293653848076, .k4 0 [0, 2, 5] 0 2 3 5⟩, + ⟨629, 936748724724432908, .k4 0 [0, 3, 7] 0 2 3 7⟩, + ⟨1909, 11821950649248010, .k4 0 [0, 1, 3, 6] 1 3 5 6⟩, + ⟨2165, 2703779357062594560, .k4 2 [2, 6, 7, 5] 0 5 6 7⟩, + ⟨3445, 9659222534938898, .k4 0 [0, 1, 4, 6, 5] 0 1 4 5⟩, + ⟨4213, 2893714496444981248, .k4 1 [1, 5, 7, 3, 6] 1 3 5 6⟩, + ⟨4469, 13220466262046, .k4 0 [0, 3, 5, 2, 4] 0 1 2 4⟩, + ⟨6517, 3404270104870912, .k4 2 [2, 6, 3, 5, 4] 1 2 3 4⟩ + ], + [ + ⟨118, 144598663954432, .sharedThree 4 5 0 1 7⟩, + ⟨374, 14294271918092, .k4 0 [0, 3, 5] 0 2 3 5⟩, + ⟨1142, 5629809918476288, .k4 2 [2, 3, 6, 4] 2 3 4 6⟩, + ⟨3190, 5348304837691418, .k4 0 [0, 4, 6, 1, 3] 0 1 3 6⟩, + ⟨5238, 9570150835776524, .k4 0 [0, 2, 3, 1, 6] 1 3 5 6⟩ + ], + [ + ⟨631, 1369094849361346578, .k4 0 [0, 4, 7] 0 1 4 7⟩, + ⟨1143, 5629827094151168, .k4 2 [2, 3, 4, 6] 2 3 4 6⟩, + ⟨7799, 149573052113940, .k4 0 [0, 2, 4, 1, 3, 5] 1 2 5 7⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets14 : Array (List HardEntry) := #[ + [ + ⟨1136, 3140087176546053150, .residual 1704648176168674⟩, + ⟨5488, 5128989379177079070, .residual 201441638627824⟩, + ⟨5744, 4147200936674780190, .residual 4348749135579527⟩ + ], + [ + ⟨1137, 3148743769030487070, .residual 235185532687729⟩, + ⟨5489, 2860997195188527390, .residual 192662714464752⟩, + ⟨5745, 4147065129808880670, .residual 338600849211634⟩ + ], + [ + ⟨1138, 8192828562639252510, .residual 3792565844454918⟩, + ⟨5490, 5131232109093576990, .residual 201443517733360⟩, + ⟨5746, 5563521979407590430, .residual 2308685135053025⟩ + ], + [ + ⟨1139, 8154843163203824670, .residual 1831596634339923⟩, + ⟨5491, 7364878298609475870, .residual 3792821395080713⟩, + ⟨5747, 5131245298419164190, .residual 1076521948190643⟩ + ], + [ + ⟨1140, 4149440763195386910, .residual 2924577021592352⟩, + ⟨5492, 7362635294888812830, .residual 3792821395080712⟩, + ⟨5748, 8661360575725102110, .residual 3299969599098368⟩ + ], + [ + ⟨1141, 7149979562712591390, .residual 3302014003546497⟩, + ⟨5493, 2858753780761616670, .residual 192664593570288⟩, + ⟨5749, 8661351754097157150, .residual 2308925686251744⟩ + ], + [ + ⟨1142, 7149910564062981150, .residual 3303126400255365⟩, + ⟨5494, 7364878161707393310, .residual 3300240182167048⟩, + ⟨5750, 8661345182797194270, .residual 2941063806858022⟩ + ], + [ + ⟨1143, 8184102838881315870, .residual 3893560959063440⟩, + ⟨5495, 7362635157986730270, .residual 3300240182167049⟩, + ⟨5751, 8155343033993978910, .residual 3363586684062087⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData15.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData15.lean new file mode 100644 index 00000000..e63f5b5c --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData15.lean @@ -0,0 +1,117 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 120–127 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets15 : Array (List PatternEntry) := #[ + [ + ⟨120, 146237277863936, .sharedThree 3 5 0 2 7⟩, + ⟨632, 1513209474805989396, .k4 0 [0, 2, 7] 0 2 4 7⟩, + ⟨1144, 5629827295477760, .k4 2 [2, 4, 3, 6] 2 3 4 6⟩, + ⟨1656, 158484304929792, .k4 1 [1, 2, 4, 5] 1 2 5 7⟩, + ⟨6008, 20890808492318, .k4 0 [0, 1, 3, 5, 2] 0 2 4 5⟩ + ], + [ + ⟨121, 146806277144576, .sharedThree 4 5 0 2 7⟩, + ⟨633, 1513210046027137044, .k4 0 [0, 4, 7] 0 2 4 7⟩, + ⟨1145, 5629827298623488, .k4 2 [2, 6, 4, 3] 2 3 4 6⟩, + ⟨1401, 353502494, .k4 0 [0, 1, 3, 2] 0 2 3 4⟩, + ⟨6009, 20891593941278, .k4 0 [0, 1, 2, 5, 3] 0 3 4 5⟩ + ], + [ + ⟨634, 1801439853380894744, .k4 0 [0, 3, 7] 0 3 4 7⟩, + ⟨1146, 5704420951064576, .k4 2 [2, 4, 5, 6] 2 4 5 6⟩, + ⟨3962, 432351061796364550, .k4 0 [0, 1, 7, 2, 5] 0 1 2 5⟩, + ⟨4218, 2896034912622608384, .k4 3 [3, 7, 5, 6, 4] 3 4 5 6⟩, + ⟨5242, 9570170690494738, .k4 0 [0, 1, 4, 6, 2] 1 2 5 6⟩ + ], + [ + ⟨123, 150633101983744, .sharedThree 2 5 0 3 7⟩, + ⟨635, 1801440439358717976, .k4 0 [0, 4, 7] 0 3 4 7⟩, + ⟨3195, 5348316620539142, .k4 0 [0, 1, 6, 4, 2] 0 1 2 6⟩, + ⟨4219, 2898225002077749248, .k4 3 [3, 4, 7, 6, 5] 3 4 5 6⟩ + ], + [ + ⟨124, 151221503524864, .sharedThree 4 5 0 3 7⟩, + ⟨380, 23089747394580, .k4 0 [0, 2, 5] 0 2 4 5⟩, + ⟨636, 2423430280246198272, .k4 5 [5, 6, 7] 0 5 6 7⟩, + ⟨892, 12094678245642, .k4 0 [0, 1, 3, 5] 0 1 3 5⟩, + ⟨1404, 21476412702, .k4 0 [0, 1, 4, 2] 0 1 2 3⟩, + ], + [ + ⟨381, 23248657973268, .k4 0 [0, 4, 5] 0 2 4 5⟩, + ⟨637, 2449958197300208640, .k4 1 [1, 2, 7] 1 2 5 7⟩, + ⟨893, 12094678247434, .k4 0 [0, 3, 1, 5] 0 1 3 5⟩, + ⟨1405, 21593456670, .k4 0 [0, 3, 4, 2] 0 1 2 3⟩ + ], + [ + ⟨126, 159429195530240, .sharedThree 2 5 0 4 7⟩, + ⟨382, 27488612778008, .k4 0 [0, 3, 5] 0 3 4 5⟩, + ⟨1150, 5717615090597888, .k4 2 [2, 4, 6, 5] 2 4 5 6⟩, + ⟨1406, 26089685022, .k4 0 [0, 2, 3, 4] 0 1 3 4⟩, + ⟨7038, 11350260412588314, .k4 0 [0, 1, 5, 6, 3] 0 3 4 5⟩ + ], + [ + ⟨127, 159431618723840, .sharedThree 3 5 0 4 7⟩, + ⟨383, 27663884353560, .k4 0 [0, 4, 5] 0 3 4 5⟩, + ⟨895, 12095181563914, .k4 0 [0, 3, 5, 1] 0 1 3 5⟩, + ⟨1663, 161091338412306, .k4 0 [0, 1, 4, 5] 1 4 5 7⟩, + ⟨2175, 2882466492194488320, .k4 2 [2, 5, 7, 3] 2 3 4 5⟩, + ⟨3199, 5629783007364374, .k4 0 [0, 1, 2, 6, 4] 0 1 2 4⟩, + ⟨4991, 167822105813258, .k4 0 [0, 1, 3, 5, 4] 1 4 5 7⟩, + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets15 : Array (List HardEntry) := #[ + [ + ⟨1144, 7149908365073280030, .residual 1886795562547506⟩, + ⟨5496, 8686693566026277150, .residual 3917034029789442⟩, + ⟨5752, 4149307722823296030, .residual 2308925686251745⟩ + ], + [ + ⟨1145, 5996973786585984030, .residual 1342760365907409⟩, + ⟨5497, 6455296733343310110, .residual 3915816406444552⟩, + ⟨5753, 6137730521191080990, .residual 338360298012914⟩ + ], + [ + ⟨1146, 4158097218777738270, .residual 4348869394664715⟩, + ⟨5498, 6168192257098440990, .residual 3915816406444553⟩, + ⟨5754, 5442556364409922590, .residual 3885022564084371⟩ + ], + [ + ⟨1147, 3870922648666598430, .residual 3608201016170016⟩, + ⟨5499, 3860667132533203230, .residual 349873322198512⟩, + ⟨5755, 5417224003053020190, .residual 3763801341077908⟩ + ], + [ + ⟨1148, 3148391789498035230, .residual 1823073397568305⟩, + ⟨5500, 5997058082598478110, .residual 342178590499312⟩, + ⟨5756, 8686681890678236190, .residual 3902339872237972⟩ + ], + [ + ⟨1149, 8154776094017940510, .residual 1814279334589236⟩, + ⟨5501, 4147204235209662750, .residual 4348869394664706⟩, + ⟨5757, 8657971881140413470, .residual 3746484032924307⟩ + ], + [ + ⟨1150, 7149910427160898590, .residual 2120263579856577⟩, + ⟨5502, 4149308146414444830, .residual 2042202262924882⟩, + ⟨5758, 6164258461135856670, .residual 1746834693087456⟩ + ], + [ + ⟨1151, 8192759294463667230, .residual 1839033866255040⟩, + ⟨5503, 4147065142693781790, .residual 3919108499073164⟩, + ⟨5759, 5587797683297510430, .residual 4408292418399744⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData16.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData16.lean new file mode 100644 index 00000000..570de3b6 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData16.lean @@ -0,0 +1,125 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 128–135 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets16 : Array (List PatternEntry) := #[ + [ + ⟨128, 212205744210176, .sharedThree 1 5 0 6 7⟩, + ⟨384, 72567773881344, .k4 1 [1, 2, 5] 1 2 5 6⟩, + ⟨1152, 5717889964310528, .k4 2 [2, 4, 5, 6] 2 4 5 6⟩, + ⟨1408, 30115105822, .k4 0 [0, 3, 4, 1] 0 1 2 4⟩, + ⟨3968, 433752939123884294, .k4 0 [0, 1, 7, 2, 6] 0 1 2 6⟩, + ⟨4224, 3458915838688493592, .k4 0 [0, 3, 4, 7, 5] 0 3 4 5⟩, + ], + [ + ⟨129, 212205756809216, .sharedThree 2 5 0 6 7⟩, + ⟨385, 72569411627008, .k4 1 [1, 3, 5] 1 3 5 6⟩, + ⟨897, 12095198339338, .k4 0 [0, 1, 5, 3] 0 1 3 5⟩, + ⟨1409, 30149312542, .k4 0 [0, 3, 4, 2] 0 1 2 4⟩, + ⟨2177, 2882514871541327872, .k4 1 [1, 3, 7, 5] 1 3 5 6⟩, + ], + [ + ⟨130, 212208982163456, .sharedThree 3 5 0 6 7⟩, + ⟨642, 2450119421771907072, .k4 4 [4, 5, 7] 1 4 5 7⟩, + ⟨1410, 38957416478, .k4 0 [0, 2, 4, 3] 0 1 2 3⟩, + ⟨3202, 5629787302266134, .k4 0 [0, 1, 4, 6, 2] 0 1 2 4⟩, + ⟨6530, 5066828804670494, .k4 0 [0, 3, 4, 6, 1, 2] 0 1 2 3⟩, + ⟨8578, 720575964103475486, .k4 0 [0, 1, 4, 7, 2, 3] 0 1 2 3⟩ + ], + [ + ⟨131, 213034672848896, .sharedThree 4 5 0 6 7⟩, + ⟨387, 74766797136896, .k4 1 [1, 2, 5] 1 2 5 6⟩, + ⟨643, 2594073385376064512, .k4 1 [1, 2, 7] 1 2 5 7⟩, + ⟨1155, 5910995991003156, .k4 0 [0, 4, 2, 6] 0 2 4 6⟩, + ⟨1411, 38990253342, .k4 0 [0, 1, 4, 3] 0 1 2 3⟩, + ⟨4739, 92500715070484, .k4 0 [0, 2, 4, 1, 5] 1 2 5 6⟩, + ], + [ + ⟨132, 213305268502528, .sharedThree 2 5 1 6 7⟩, + ⟨900, 13194712720384, .k4 1 [1, 2, 5, 3] 1 2 3 5⟩, + ⟨1156, 5911253684912148, .k4 0 [0, 2, 4, 6] 0 2 4 6⟩, + ⟨2180, 2882517070531028992, .k4 1 [1, 5, 7, 3] 1 3 5 6⟩, + ⟨4484, 19932943821854, .k4 0 [0, 2, 4, 5, 1] 0 1 2 3⟩, + ⟨7300, 14991020705997846, .k4 0 [0, 4, 6, 5, 1] 0 1 2 6⟩, + ⟨7812, 158471503389720, .k4 0 [0, 3, 4, 2, 5, 1] 1 2 5 7⟩ + ], + [ + ⟨133, 213308510568448, .sharedThree 3 5 1 6 7⟩, + ⟨1157, 5911253689040916, .k4 0 [0, 4, 6, 2] 0 2 4 6⟩, + ⟨1413, 43236130846, .k4 0 [0, 2, 3, 4] 0 1 2 4⟩, + ⟨1669, 162885101158400, .k4 2 [2, 3, 4, 5] 2 3 5 7⟩, + ⟨4485, 19932943887390, .k4 0 [0, 4, 5, 1, 2] 0 1 2 3⟩, + ⟨10117, 8108030482475655446, .k4 0 [0, 1, 5, 7, 4, 6] 0 2 4 6⟩ + ], + [ + ⟨134, 214138479443968, .sharedThree 4 5 1 6 7⟩, + ⟨390, 76965818295296, .k4 1 [1, 2, 5] 1 2 5 6⟩, + ⟨646, 2594220719923569664, .k4 1 [1, 5, 7] 1 2 5 7⟩, + ⟨1414, 47244839966, .k4 0 [0, 2, 4, 1] 0 1 3 4⟩, + ⟨1670, 163281783291924, .k4 0 [0, 2, 4, 5] 2 4 5 7⟩ + ], + [ + ⟨135, 215504279094272, .sharedThree 1 5 2 6 7⟩, + ⟨391, 76965820261376, .k4 1 [1, 5, 2] 1 2 5 6⟩, + ⟨647, 2594227319744757760, .k4 3 [3, 5, 7] 2 3 5 7⟩, + ⟨1159, 5911266572959764, .k4 0 [0, 2, 6, 4] 0 2 4 6⟩, + ⟨1671, 163298962112532, .k4 0 [0, 2, 4, 5] 2 4 5 7⟩, + ⟨4487, 19933027118110, .k4 0 [0, 3, 4, 5, 1] 0 1 2 3⟩, + ⟨10119, 8108384237456991506, .k4 0 [0, 1, 4, 7, 5, 6] 1 2 5 6⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets16 : Array (List HardEntry) := #[ + [ + ⟨1152, 4158110292926622750, .residual 3363586684062080⟩, + ⟨5504, 3285751713959174430, .residual 2675625636094546⟩, + ⟨5760, 5155452144839746590, .residual 4066690847019814⟩ + ], + [ + ⟨1153, 3140508291630197790, .residual 2924577021592353⟩, + ⟨5505, 3858839164588581150, .residual 1620245215911506⟩, + ⟨5761, 4149444089998402590, .residual 4349846499895687⟩ + ], + [ + ⟨1154, 3139947540700032030, .residual 2927914223747861⟩, + ⟨5506, 3284630212098842910, .residual 3668475211310791⟩, + ⟨5762, 7581134641813447710, .residual 3364684048378247⟩ + ], + [ + ⟨1155, 2851717181728189470, .residual 195669169027698⟩, + ⟨5507, 6428199926608093470, .residual 3668990170121922⟩, + ⟨5763, 4147065159622517790, .residual 1747075244286177⟩ + ], + [ + ⟨1156, 5995847647167605790, .residual 1180591036317281⟩, + ⟨5508, 6425956922887430430, .residual 3475132492523333⟩, + ⟨5764, 5563522009221227550, .residual 269091065348338⟩ + ], + [ + ⟨1157, 2862200039420881950, .residual 712148126415824⟩, + ⟨5509, 5564643494152823070, .residual 4090947459234498⟩, + ⟨5765, 5128993644064465950, .residual 1077621191612339⟩ + ], + [ + ⟨1158, 3870992742516157470, .residual 1202805157281616⟩, + ⟨5510, 6137730944782229790, .residual 3035521571474114⟩, + ⟨5766, 8659109032603345950, .residual 1747075244286176⟩ + ], + [ + ⟨1159, 6175166435649285150, .residual 349065324160112⟩, + ⟨5511, 5563521992292491550, .residual 2306430243652197⟩, + ⟨5767, 8659100210975400990, .residual 3299984631541248⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData17.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData17.lean new file mode 100644 index 00000000..5dda5991 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData17.lean @@ -0,0 +1,120 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 136–143 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets17 : Array (List PatternEntry) := #[ + [ + ⟨136, 215507567378432, .sharedThree 3 5 2 6 7⟩, + ⟨648, 2594236817460953088, .k4 4 [4, 5, 7] 2 4 5 7⟩, + ⟨2440, 3298621531150, .k4 0 [0, 3, 2, 1, 5] 0 1 2 5⟩, + ⟨4488, 19933043895326, .k4 0 [0, 4, 5, 1, 3] 0 1 2 3⟩, + ⟨5000, 1688850201592094, .k4 0 [0, 1, 6, 2, 3] 0 2 3 4⟩, + ⟨6024, 21062857924870, .k4 0 [0, 1, 5, 4, 3, 2] 0 1 2 5⟩ + ], + [ + ⟨137, 216346092634112, .sharedThree 4 5 2 6 7⟩, + ⟨393, 76965820391424, .k4 1 [1, 5, 2] 1 2 5 6⟩, + ⟨649, 2738188573443531776, .k4 1 [1, 2, 7] 1 2 5 7⟩, + ], + [ + ⟨394, 79166481393664, .k4 1 [1, 3, 5] 1 3 5 6⟩, + ⟨650, 2738188573451789312, .k4 1 [1, 7, 2] 1 2 5 7⟩, + ⟨906, 13349632344064, .k4 2 [2, 3, 4, 5] 2 3 4 5⟩, + ⟨1418, 55835231518, .k4 0 [0, 1, 4, 2] 0 2 3 4⟩, + ], + [ + ⟨139, 219902338662400, .sharedThree 2 5 3 6 7⟩, + ⟨651, 2738188573451887616, .k4 1 [1, 2, 7] 1 2 5 7⟩, + ⟨907, 13366277439488, .k4 2 [2, 3, 5, 4] 2 3 4 5⟩, + ⟨1163, 6755452395192320, .k4 2 [2, 4, 3, 6] 2 3 4 6⟩, + ⟨2443, 3299158270222, .k4 0 [0, 1, 3, 5, 2] 0 2 3 5⟩, + ⟨4747, 92638157079826, .k4 0 [0, 1, 4, 2, 5] 2 4 5 6⟩, + ⟨7307, 15762784721592594, .k4 0 [0, 1, 4, 3, 6] 1 4 5 6⟩, + ], + [ + ⟨140, 220761319014400, .sharedThree 4 5 3 6 7⟩, + ⟨396, 79613392846848, .k4 3 [3, 4, 5] 3 4 5 6⟩, + ⟨652, 2738188573451919360, .k4 1 [1, 7, 2] 1 2 5 7⟩, + ⟨1164, 6755684284647424, .k4 1 [1, 3, 6, 4] 1 3 4 6⟩, + ⟨2188, 2898295061584281600, .k4 3 [3, 7, 5, 6] 3 4 5 6⟩, + ⟨4236, 3458923445398011904, .k4 2 [2, 3, 4, 7, 5] 2 3 4 5⟩, + ⟨7308, 15762793317859348, .k4 0 [0, 2, 4, 3, 6] 2 4 5 6⟩ + ], + [ + ⟨397, 81364967778304, .k4 1 [1, 3, 5] 1 3 5 6⟩, + ⟨2189, 2993135636329791488, .k4 3 [3, 6, 7, 5] 0 5 6 7⟩, + ⟨4493, 19963009638686, .k4 0 [0, 1, 2, 5, 4] 0 2 3 4⟩, + ⟨8333, 11331568246268190, .k4 0 [0, 1, 2, 5, 6, 3] 0 2 3 4⟩ + ], + [ + ⟨142, 228698432208896, .sharedThree 2 5 4 6 7⟩, + ⟨398, 81365471094784, .k4 1 [1, 5, 3] 1 3 5 6⟩, + ⟨654, 2738333708976169984, .k4 1 [1, 7, 5] 1 2 5 7⟩, + ⟨1166, 6755717570643968, .k4 1 [1, 3, 4, 6] 1 3 4 6⟩, + ⟨1422, 6597072399630, .k4 0 [0, 1, 5, 2] 0 1 2 3⟩, + ⟨1678, 167682787770392, .k4 0 [0, 3, 4, 5] 3 4 5 7⟩, + ⟨2190, 2999759093838643200, .k4 3 [3, 5, 7, 6] 0 5 6 7⟩, + ], + [ + ⟨143, 228701908238336, .sharedThree 3 5 4 6 7⟩, + ⟨911, 14293737668620, .k4 0 [0, 3, 2, 5] 0 2 3 5⟩, + ⟨1423, 6597072464910, .k4 0 [0, 2, 5, 1] 0 1 2 3⟩, + ⟨1679, 167716879073304, .k4 0 [0, 3, 4, 5] 3 4 5 7⟩, + ⟨5263, 9649314666138638, .k4 0 [0, 3, 5, 6, 1] 0 1 2 3⟩, + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets17 : Array (List HardEntry) := #[ + [ + ⟨1160, 3871005816665041950, .residual 4348869394664713⟩, + ⟨5512, 4145376318603321630, .residual 1994389914580002⟩, + ⟨5768, 8659093639675438110, .residual 2941065685963558⟩ + ], + [ + ⟨1161, 3726892827612441630, .residual 4348869394664712⟩, + ⟨5513, 5591731479260094750, .residual 936852126455728⟩, + ⟨5769, 4149307752636933150, .residual 269331616547058⟩ + ], + [ + ⟨1162, 4158040199043640350, .residual 333670249292016⟩, + ⟨5514, 4147062943704080670, .residual 1380722880142370⟩, + ⟨5770, 6137730551004718110, .residual 1746834693087457⟩ + ], + [ + ⟨1163, 3866783692266040350, .residual 3608063844275752⟩, + ⟨5515, 6137799802251567390, .residual 3793888694448386⟩, + ⟨5771, 8686677509794882590, .residual 936917930874803⟩ + ], + [ + ⟨1164, 3722670703213440030, .residual 4348869394664714⟩, + ⟨5516, 8401838035908092190, .residual 340013860921840⟩, + ⟨5772, 7608079273227248670, .residual 3911135697111441⟩ + ], + [ + ⟨1165, 4153385690690841630, .residual 2396829421902163⟩, + ⟨5517, 8661430669641703710, .residual 332315396802032⟩, + ⟨5773, 7676198412520842270, .residual 2468811968597076⟩ + ], + [ + ⟨1166, 5420582032932695070, .residual 2286266264038626⟩, + ⟨5518, 8230703861408129310, .residual 3792671071103497⟩, + ⟨5774, 3717098525771228190, .residual 3349285244307858⟩ + ], + [ + ⟨1167, 4153242217308318750, .residual 2526709300056372⟩, + ⟨5519, 8229582359547797790, .residual 3792671071103496⟩, + ⟨5775, 7581128044744074270, .residual 4334447695825298⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData18.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData18.lean new file mode 100644 index 00000000..2f91131c --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData18.lean @@ -0,0 +1,120 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 144–151 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets18 : Array (List PatternEntry) := #[ + [ + ⟨144, 3940649673949198, .sharedThree 0 6 1 2 3⟩, + ⟨400, 81365504647168, .k4 1 [1, 5, 3] 1 3 5 6⟩, + ⟨656, 2882303764279590912, .k4 2 [2, 3, 7] 2 3 5 7⟩, + ⟨4496, 19980188459294, .k4 0 [0, 1, 2, 5, 4] 0 2 3 4⟩, + ⟨7056, 11821950135512326, .k4 0 [0, 1, 2, 3, 6] 1 2 5 6⟩, + ⟨7312, 15762891381735436, .k4 0 [0, 2, 3, 4, 6] 2 3 5 6⟩ + ], + [ + ⟨145, 6192449487634454, .sharedThree 0 6 1 2 4⟩, + ⟨401, 83564031377408, .k4 2 [2, 3, 5] 2 3 5 6⟩, + ⟨657, 2882304486024413184, .k4 3 [3, 4, 7] 3 4 5 7⟩, + ⟨913, 14294207430668, .k4 0 [0, 3, 5, 2] 0 2 3 5⟩, + ⟨1169, 6755726198833152, .k4 2 [2, 3, 4, 6] 2 3 4 6⟩, + ⟨1681, 167727879684096, .k4 2 [2, 4, 3, 5] 2 4 5 7⟩, + ⟨2193, 3026577977501548544, .k4 3 [3, 7, 5, 4] 1 3 4 7⟩, + ⟨7313, 15762908789104906, .k4 0 [0, 1, 3, 4, 6] 1 3 5 6⟩ + ], + [ + ⟨146, 7318349394477082, .sharedThree 0 6 1 3 4⟩, + ⟨914, 14294255730700, .k4 0 [0, 2, 3, 5] 0 2 3 5⟩, + ⟨1682, 167819689852952, .k4 0 [0, 3, 4, 5] 3 4 5 7⟩, + ⟨4242, 3470253037820313600, .k4 3 [3, 6, 5, 7, 4] 3 4 5 6⟩, + ⟨7314, 15762908828991500, .k4 0 [0, 2, 3, 4, 6] 2 3 5 6⟩ + ], + [ + ⟨147, 7881299347898396, .sharedThree 0 6 2 3 4⟩, + ⟨403, 83564566151168, .k4 2 [2, 3, 5] 2 3 5 6⟩, + ⟨659, 2882457693156016128, .k4 2 [2, 5, 7] 2 3 5 7⟩, + ⟨1171, 6755727004663808, .k4 2 [2, 4, 6, 3] 2 3 4 6⟩, + ⟨2451, 3320013005078, .k4 0 [0, 1, 4, 5, 2] 0 1 2 5⟩, + ⟨4243, 3472436674623987712, .k4 1 [1, 5, 7, 4, 6] 1 4 5 6⟩, + ⟨4499, 19980523413790, .k4 0 [0, 1, 5, 4, 3] 0 2 3 4⟩, + ], + [ + ⟨148, 9851624187166720, .sharedThree 2 6 0 1 5⟩, + ⟨660, 2882471608839045120, .k4 4 [4, 5, 7] 3 4 5 7⟩, + ⟨1172, 6834737955995648, .k4 3 [3, 4, 5, 6] 3 4 5 6⟩, + ⟨2452, 3320013005846, .k4 0 [0, 4, 2, 1, 5] 0 1 2 5⟩, + ⟨2964, 2533275881131022, .k4 0 [0, 2, 3, 1, 6] 0 1 3 6⟩ + ], + [ + ⟨149, 9851624772075520, .sharedThree 3 6 0 1 5⟩, + ⟨917, 18833434804244, .k4 0 [0, 2, 4, 5] 0 2 4 5⟩, + ], + [ + ⟨150, 9851774508728320, .sharedThree 4 6 0 1 5⟩, + ⟨406, 88390434291712, .k4 2 [2, 4, 5] 2 4 5 6⟩, + ⟨918, 18834253676568, .k4 0 [0, 3, 4, 5] 0 3 4 5⟩, + ⟨1174, 6835011760160768, .k4 3 [3, 4, 5, 6] 3 4 5 6⟩, + ⟨1430, 7696631737358, .k4 0 [0, 3, 1, 5] 0 1 2 5⟩, + ], + [ + ⟨151, 10414574138303744, .sharedThree 1 6 0 2 5⟩, + ⟨407, 88409485869056, .k4 3 [3, 4, 5] 3 4 5 6⟩, + ⟨663, 3026418952310892544, .k4 1 [1, 3, 7] 1 3 5 7⟩, + ⟨3735, 11348099792371736, .k4 0 [0, 3, 4, 6, 5] 0 3 4 5⟩, + ⟨6551, 5073464481836032, .k4 1 [1, 5, 6, 2, 4] 1 2 3 4⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets18 : Array (List HardEntry) := #[ + [ + ⟨1168, 3722585502941015070, .residual 2771150958996673⟩, + ⟨5520, 8371515816107761950, .residual 3363706943147266⟩, + ⟨5776, 6137724364641592350, .residual 4241517474354721⟩ + ], + [ + ⟨1169, 7149895188114140190, .residual 2517915237077297⟩, + ⟨5521, 4149307735708197150, .residual 2306700892652133⟩, + ⟨5777, 5563515412151854110, .residual 4247019340043541⟩ + ], + [ + ⟨1170, 5420513034283084830, .residual 3043242714776213⟩, + ⟨5522, 3862203259463328030, .residual 2965322298178242⟩, + ⟨5778, 5559643761362396190, .residual 1978395488873556⟩ + ], + [ + ⟨1171, 5132287056177884190, .residual 3039890392269473⟩, + ⟨5523, 4147064731987534110, .residual 4161421172656834⟩, + ⟨5779, 5559574762712785950, .residual 1978395488873553⟩ + ], + [ + ⟨1172, 4158101616623447070, .residual 1765752963262288⟩, + ⟨5524, 3858838753882333470, .residual 3475098603595589⟩, + ⟨5780, 3138394620144706590, .residual 3340489419434386⟩ + ], + [ + ⟨1173, 4158101496834124830, .residual 3089358348928550⟩, + ⟨5525, 3284629801392595230, .residual 3668715729995458⟩, + ⟨5781, 5417216306472084510, .residual 3763801341077905⟩ + ], + [ + ⟨1174, 4158097115967482910, .residual 2316488913924192⟩, + ⟨5526, 6428199515901845790, .residual 3668509100238535⟩, + ⟨5782, 3140501816999470110, .residual 3045523837212193⟩ + ], + [ + ⟨1175, 7185710407163735070, .residual 3793512884687236⟩, + ⟨5527, 6141095039656976670, .residual 2675655733895762⟩, + ⟨5783, 3138258813278807070, .residual 3051025702901013⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData19.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData19.lean new file mode 100644 index 00000000..99f89c0a --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData19.lean @@ -0,0 +1,117 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 152–159 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets19 : Array (List PatternEntry) := #[ + [ + ⟨664, 3026418952310923264, .k4 1 [1, 7, 3] 1 3 5 7⟩, + ⟨920, 18842021536018, .k4 0 [0, 1, 4, 5] 0 1 4 5⟩, + ⟨1176, 6843534049017856, .k4 3 [3, 4, 6, 5] 3 4 5 6⟩, + ⟨1688, 1688849865067534, .k4 0 [0, 2, 6, 1] 0 1 2 3⟩, + ⟨4248, 3474677368994398208, .k4 3 [3, 4, 6, 7, 5] 3 4 5 6⟩ + ], + [ + ⟨665, 3026561888822493184, .k4 3 [3, 7, 5] 1 3 5 7⟩, + ⟨1433, 7697202159886, .k4 0 [0, 1, 3, 5] 0 2 3 5⟩, + ], + [ + ⟨154, 11540474045147392, .sharedThree 1 6 0 3 5⟩, + ⟨922, 18846319706132, .k4 0 [0, 2, 4, 5] 0 2 4 5⟩, + ⟨1178, 6843807853182976, .k4 3 [3, 4, 5, 6] 3 4 5 6⟩, + ], + [ + ⟨155, 11540474047823872, .sharedThree 2 6 0 3 5⟩, + ⟨411, 90580860297216, .k4 1 [1, 5, 4] 1 4 5 6⟩, + ⟨667, 3170534138283819008, .k4 2 [2, 3, 7] 2 3 5 7⟩, + ⟨923, 18850613624852, .k4 0 [0, 2, 4, 5] 0 2 4 5⟩, + ⟨4251, 4792392955699284992, .k4 1 [1, 2, 6, 3, 7] 1 2 3 7⟩, + ⟨6555, 5077846217223168, .k4 1 [1, 5, 6, 3, 4] 1 2 3 4⟩, + ⟨8603, 1297037268292895006, .k4 0 [0, 1, 3, 7, 2, 4] 0 1 2 4⟩ + ], + [ + ⟨156, 11540650138796032, .sharedThree 4 6 0 3 5⟩, + ⟨412, 92651041849344, .k4 2 [2, 4, 5] 2 4 5 6⟩, + ⟨924, 18850614607892, .k4 0 [0, 4, 2, 5] 0 2 4 5⟩, + ⟨2204, 3458919167006605312, .k4 2 [2, 5, 7, 4] 2 3 4 5⟩, + ⟨4252, 4792392955732708352, .k4 1 [1, 3, 6, 2, 7] 1 2 3 7⟩, + ], + [ + ⟨413, 92771300933632, .k4 2 [2, 5, 4] 2 4 5 6⟩, + ⟨669, 3170534140422914048, .k4 2 [2, 3, 7] 2 3 5 7⟩, + ⟨925, 18864318447640, .k4 0 [0, 3, 4, 5] 0 3 4 5⟩, + ⟨1181, 7036914414649368, .k4 0 [0, 4, 3, 6] 0 3 4 6⟩, + ⟨1437, 7855495192854, .k4 0 [0, 1, 4, 5] 0 2 4 5⟩, + ⟨3997, 720585838701879562, .k4 0 [0, 1, 7, 3, 5] 0 1 3 5⟩, + ⟨9885, 2892085019122682894, .k4 0 [0, 2, 3, 7, 5, 6, 1] 0 1 2 3⟩ + ], + [ + ⟨158, 13792273862033408, .sharedThree 2 6 0 4 5⟩, + ⟨414, 92788478705664, .k4 2 [2, 4, 5] 2 4 5 6⟩, + ⟨926, 18868344979480, .k4 0 [0, 3, 4, 5] 0 3 4 5⟩, + ⟨1182, 7037153875853336, .k4 0 [0, 3, 4, 6] 0 3 4 6⟩, + ⟨2718, 19937239311638, .k4 0 [0, 1, 2, 5, 4] 0 1 2 4⟩, + ], + [ + ⟨159, 13792274680905728, .sharedThree 3 6 0 4 5⟩, + ⟨415, 92788479754240, .k4 2 [2, 5, 4] 2 4 5 6⟩, + ⟨671, 3170679275955159040, .k4 3 [3, 7, 5] 2 3 5 7⟩, + ⟨927, 18868596637720, .k4 0 [0, 4, 3, 5] 0 3 4 5⟩, + ⟨1183, 7037154932817944, .k4 0 [0, 4, 6, 3] 0 3 4 6⟩, + ⟨1695, 1970324887325710, .k4 0 [0, 3, 1, 6] 0 1 2 6⟩, + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets19 : Array (List HardEntry) := #[ + [ + ⟨1176, 5456328253332679710, .residual 3915711179795969⟩, + ⟨5528, 6425956512181182750, .residual 1479511857372754⟩, + ⟨5784, 3136569989188346910, .residual 2468811968597073⟩ + ], + [ + ⟨1177, 2862191363117706270, .residual 2694936613328176⟩, + ⟨5529, 6137730534075982110, .residual 3795963163732108⟩, + ⟨5785, 5995919938294440990, .residual 3772597165951377⟩ + ], + [ + ⟨1178, 3145366082195450910, .residual 316285286000884⟩, + ⟨5530, 5563521581586243870, .residual 2182905523662418⟩, + ⟨5786, 6136095572114334750, .residual 2470976698174548⟩ + ], + [ + ⟨1179, 8189454161454197790, .residual 316285286000883⟩, + ⟨5531, 6136041709985521950, .residual 1996314092958754⟩, + ⟨5787, 3716962188409758750, .residual 3121394178987285⟩ + ], + [ + ⟨1180, 6172914892527528990, .residual 3486425606329120⟩, + ⟨5532, 5993615346033680670, .residual 1378528052763682⟩, + ⟨5788, 3714719184689095710, .residual 3115892313298465⟩ + ], + [ + ⟨1181, 7185587263740472350, .residual 3793512884687233⟩, + ⟨5533, 8230695039780184350, .residual 1077585484994480⟩, + ⟨5789, 8252649692777210910, .residual 1976230759296084⟩ + ], + [ + ⟨1182, 7176861672606428190, .residual 3795692580776325⟩, + ⟨5534, 6168183730531918110, .residual 935769794582448⟩, + ⟨5790, 3713021538970690590, .residual 1976230759296081⟩ + ], + [ + ⟨1183, 6460844002744888350, .residual 752132264057777⟩, + ⟨5535, 6453036381428179230, .residual 3915951698029064⟩, + ⟨5791, 8182278732413199390, .residual 3902339872237969⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData20.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData20.lean new file mode 100644 index 00000000..278bf032 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData20.lean @@ -0,0 +1,126 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 160–167 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets20 : Array (List PatternEntry) := #[ + [ + ⟨160, 36873221957681152, .sharedThree 2 6 0 1 7⟩, + ⟨416, 97068139937792, .k4 3 [3, 4, 5] 3 4 5 6⟩, + ⟨672, 3170683671261216768, .k4 2 [2, 7, 5] 2 3 5 7⟩, + ⟨1184, 7037183940624408, .k4 0 [0, 3, 4, 6] 0 3 4 6⟩, + ⟨8096, 9570170740698136, .k4 0 [0, 3, 4, 1, 2, 6] 1 2 5 6⟩ + ], + [ + ⟨161, 36873224146911232, .sharedThree 3 6 0 1 7⟩, + ⟨417, 97171219152896, .k4 3 [3, 5, 4] 3 4 5 6⟩, + ⟨1185, 7037184745930776, .k4 0 [0, 3, 6, 4] 0 3 4 6⟩, + ⟨8097, 9570189742140436, .k4 0 [0, 2, 4, 1, 3, 6] 1 3 5 6⟩ + ], + [ + ⟨162, 36873784589811712, .sharedThree 4 6 0 1 7⟩, + ⟨418, 97205042020352, .k4 3 [3, 4, 5] 3 4 5 6⟩, + ⟨674, 3458765218206711808, .k4 2 [2, 4, 7] 2 4 5 7⟩, + ⟨1186, 9576746282279936, .k4 1 [1, 2, 5, 6] 1 2 5 6⟩, + ⟨1442, 10995720269070, .k4 0 [0, 1, 5, 3] 0 1 2 3⟩, + ⟨2466, 5497610644494, .k4 0 [0, 2, 3, 5, 1] 0 1 2 5⟩ + ], + [ + ⟨163, 37017257972334592, .sharedThree 5 6 0 1 7⟩, + ⟨419, 97205310455808, .k4 3 [3, 5, 4] 3 4 5 6⟩, + ⟨675, 3458765238327836672, .k4 3 [3, 4, 7] 3 4 5 7⟩, + ⟨1187, 9576746284246016, .k4 1 [1, 5, 6, 2] 1 2 5 6⟩, + ⟨1443, 10995737046030, .k4 0 [0, 3, 5, 1] 0 1 2 3⟩, + ⟨1955, 14073899159413010, .k4 0 [0, 1, 4, 6] 1 4 5 6⟩, + ⟨2467, 5497610710030, .k4 0 [0, 3, 1, 2, 5] 0 1 2 5⟩, + ⟨4003, 723109218424504586, .k4 0 [0, 1, 7, 3, 6] 0 1 3 6⟩, + ⟨4771, 97178483712266, .k4 0 [0, 1, 3, 5, 4] 1 4 5 6⟩ + ], + [ + ⟨420, 142936522269696, .k4 1 [1, 2, 5] 1 2 5 7⟩, + ⟨1444, 10995753821454, .k4 0 [0, 1, 5, 3] 0 1 2 3⟩, + ], + [ + ⟨165, 37436174133886976, .sharedThree 3 6 0 2 7⟩, + ⟨677, 3458927241552986112, .k4 2 [2, 5, 7] 2 4 5 7⟩, + ⟨8613, 1441172359171615758, .k4 0 [0, 2, 7, 4, 5, 1] 0 1 2 3⟩ + ], + [ + ⟨166, 37436743133167616, .sharedThree 4 6 0 2 7⟩, + ⟨678, 3458931642540752896, .k4 3 [3, 5, 7] 3 4 5 7⟩, + ⟨1190, 9581145431762944, .k4 1 [1, 3, 5, 6] 1 3 5 6⟩, + ⟨1702, 1970621189734678, .k4 0 [0, 1, 4, 6] 0 2 4 6⟩, + ⟨2470, 5497644786702, .k4 0 [0, 3, 2, 1, 5] 0 1 2 5⟩, + ⟨4262, 4793237378406007046, .k4 0 [0, 1, 2, 7, 6] 0 1 2 6⟩, + ⟨6566, 5348024647172382, .k4 0 [0, 1, 3, 6, 2] 0 2 4 6⟩ + ], + [ + ⟨167, 37582406949011456, .sharedThree 5 6 0 2 7⟩, + ⟨423, 145135545525248, .k4 1 [1, 2, 5] 1 2 5 7⟩, + ⟨935, 19954421212160, .k4 1 [1, 5, 4, 2] 1 2 4 5⟩, + ⟨5031, 2814751177523486, .k4 0 [0, 1, 2, 6, 3] 0 2 3 4⟩, + ⟨6567, 5348025967395102, .k4 0 [0, 1, 2, 6, 3] 0 3 4 6⟩, + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets20 : Array (List HardEntry) := #[ + [ + ⟨672, 8697238970799187230, .hubPentagon 0 [0, 1, 2, 3, 4, 6, 5, 7] 1 0 2 5 6 4⟩, + ⟨1184, 4146624913950796830, .residual 1003398607615937⟩, + ⟨5536, 5591722952693571870, .residual 3915951698029065⟩, + ⟨5792, 8155327640832107550, .residual 4325651870951826⟩ + ], + [ + ⟨673, 8266578970781902110, .residual 3918852948510086⟩, + ⟨1185, 4145503412090465310, .residual 760926224276404⟩, + ⟨5537, 7825369142209470750, .residual 269647263941104⟩, + ⟨5793, 6137715128029209630, .residual 4176650863957269⟩ + ], + [ + ⟨674, 8697232399499224350, .cycleStrip 0 [0, 1, 2, 3, 4, 5, 6, 7] 0 2 1 5 6 7 4⟩, + ⟨1186, 5420580933421132830, .residual 3917860810886405⟩, + ⟨5538, 4149447388533285150, .residual 4349966758980866⟩, + ⟨5794, 5563506175539471390, .residual 4171148998268449⟩ + ], + [ + ⟨675, 8689072911311136030, .residual 1201555500719955⟩, + ⟨1187, 5420513029988183070, .residual 1231054804926242⟩, + ⟨5539, 7797307423927230750, .residual 3364804307463426⟩, + ⟨5795, 6136026303938749470, .residual 2470976698174545⟩ + ], + [ + ⟨676, 6455284343629374750, .residual 4278889880649894⟩, + ⟨1188, 3870997140361866270, .residual 4347907321983243⟩, + ⟨5540, 3281954687505588510, .residual 279504846112240⟩, + ⟨5796, 8661431066944988190, .residual 3349285244307860⟩ + ], + [ + ⟨677, 8688506675741287710, .hubPentagon 0 [0, 1, 2, 4, 5, 6, 3, 7] 0 1 2 3 4 6⟩, + ⟨1189, 4158031522740464670, .residual 3546628365007392⟩, + ⟨5541, 8659170591530737950, .residual 261946920715760⟩, + ⟨5797, 3726877582424663070, .residual 3323309281970835⟩ + ], + [ + ⟨678, 6024071250642167070, .residual 4403974365339923⟩, + ⟨1190, 2860165828355189790, .residual 1261222955753265⟩, + ⟨5542, 5563591007921168670, .residual 3793753402863874⟩, + ⟨5798, 3726822607682135070, .residual 3280015953037716⟩ + ], + [ + ⟨679, 6031614906202809630, .residual 4403974365339924⟩, + ⟨1191, 8153654609119964190, .residual 1252428892774196⟩, + ⟨5543, 4149308163393511710, .residual 4231787769637570⟩, + ⟨5799, 8661345306346644510, .residual 3254039990700691⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData21.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData21.lean new file mode 100644 index 00000000..b5d4e7cd --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData21.lean @@ -0,0 +1,126 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 168–175 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets21 : Array (List PatternEntry) := #[ + [ + ⟨424, 145138297339904, .k4 2 [2, 3, 5] 2 3 5 7⟩, + ⟨2216, 3474747736396398592, .k4 4 [4, 7, 5, 6] 3 4 5 6⟩, + ⟨5032, 2814751177982238, .k4 0 [0, 1, 6, 3, 2] 0 2 3 4⟩ + ], + [ + ⟨169, 38562071818338304, .sharedThree 2 6 0 3 7⟩, + ⟨425, 145839921037312, .k4 2 [2, 4, 5] 2 4 5 7⟩, + ⟨2217, 3571849009859395584, .k4 4 [4, 6, 7, 5] 0 5 6 7⟩, + ⟨3753, 11613042903115786, .k4 0 [0, 3, 6, 5, 1] 0 1 3 6⟩, + ⟨4009, 731914107002871808, .k4 1 [1, 7, 3, 5, 6] 1 3 5 6⟩, + ⟨7081, 12191831605395738, .k4 0 [0, 1, 6, 5, 4] 0 3 4 6⟩ + ], + [ + ⟨170, 38562660219879424, .sharedThree 4 6 0 3 7⟩, + ⟨426, 147334566683648, .k4 1 [1, 2, 5] 1 2 5 7⟩, + ⟨682, 3602880397681139712, .k4 1 [1, 7, 4] 1 4 5 7⟩, + ⟨1450, 12094628113422, .k4 0 [0, 2, 1, 5] 0 1 3 5⟩, + ⟨2218, 3576229326745501696, .k4 4 [4, 5, 7, 6] 0 5 6 7⟩, + ⟨4010, 731914107539742720, .k4 1 [1, 7, 3, 6, 5] 1 3 5 6⟩, + ⟨4266, 4794363278362984714, .k4 0 [0, 1, 3, 7, 6] 0 1 3 6⟩, + ], + [ + ⟨171, 38712704902365184, .sharedThree 5 6 0 3 7⟩, + ⟨683, 3603023334192709632, .k4 4 [4, 7, 5] 1 4 5 7⟩, + ⟨939, 19972403243008, .k4 1 [1, 5, 4, 3] 1 3 4 5⟩, + ⟨1451, 12094630600974, .k4 0 [0, 1, 2, 5] 0 2 3 5⟩, + ⟨5291, 9663629171376406, .k4 0 [0, 1, 4, 6, 5] 0 2 4 5⟩, + ⟨7083, 12384899566822666, .k4 0 [0, 1, 3, 2, 6] 1 3 5 6⟩, + ⟨9899, 2892931643075486734, .k4 0 [0, 3, 7, 5, 1, 6] 0 1 2 6⟩, + ], + [ + ⟨940, 20903605838098, .k4 0 [0, 1, 4, 5] 0 1 4 5⟩, + ⟨7084, 12384899634323722, .k4 0 [0, 1, 3, 2, 6] 1 3 5 6⟩, + ⟨10924, 2885263662928446486, .k4 0 [0, 2, 4, 5, 7, 3, 6, 1] 0 1 2 4⟩ + ], + [ + ⟨173, 40813871632547840, .sharedThree 2 6 0 4 7⟩, + ⟨429, 147334568779776, .k4 1 [1, 5, 2] 1 2 5 7⟩, + ⟨685, 3746995044602609664, .k4 2 [2, 4, 7] 2 4 5 7⟩, + ⟨1709, 2814750924753934, .k4 0 [0, 3, 6, 1] 0 1 2 3⟩, + ], + [ + ⟨174, 40813874055741440, .sharedThree 3 6 0 4 7⟩, + ⟨686, 3746995577178554368, .k4 2 [2, 7, 4] 2 4 5 7⟩, + ⟨1198, 9642716982027264, .k4 1 [1, 2, 5, 6] 1 2 5 6⟩, + ⟨2222, 3603029830901170176, .k4 3 [3, 5, 7, 4] 1 3 4 7⟩, + ⟨4270, 4796615091011240210, .k4 0 [0, 1, 4, 7, 6] 0 1 4 6⟩, + ⟨6062, 23231528447006, .k4 0 [0, 3, 4, 1, 5] 0 1 2 5⟩, + ⟨8622, 2450103333113331998, .k4 0 [0, 1, 3, 7, 5, 2] 0 2 3 4⟩ + ], + [ + ⟨175, 40973300809072640, .sharedThree 5 6 0 4 7⟩, + ⟨431, 149536343851008, .k4 2 [2, 3, 5] 2 3 5 7⟩, + ⟨687, 3746995594350034944, .k4 2 [2, 4, 7] 2 4 5 7⟩, + ⟨7087, 12384900118962438, .k4 0 [0, 1, 2, 3, 6] 1 2 5 6⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets21 : Array (List HardEntry) := #[ + [ + ⟨680, 8694995735922566430, .hubPentagon 0 [0, 1, 2, 3, 4, 6, 5, 7] 1 0 2 5 6 3⟩, + ⟨1192, 7148788942262922270, .residual 1557451065360065⟩, + ⟨5544, 4147065159672848670, .residual 1743768118813285⟩, + ⟨5800, 8658053363130885150, .residual 1006185302497203⟩ + ], + [ + ⟨681, 7690126770580972830, .residual 3917770616636806⟩, + ⟨1193, 3870992639705902110, .residual 2124303467080368⟩, + ⟨5545, 3285751730938241310, .residual 2965307265735362⟩, + ⟨5801, 3871005840320947230, .residual 4346704731131392⟩ + ], + [ + ⟨682, 8686829787667457310, .residual 1200473168846675⟩, + ⟨1194, 2853406031337384990, .residual 745345242176418⟩, + ⟨5546, 3858839181567648030, .residual 3598364165457602⟩, + ⟨5802, 3294545062482600990, .residual 2300026473644256⟩ + ], + [ + ⟨683, 8694980342994658590, .cycleStrip 0 [0, 1, 2, 3, 4, 5, 6, 7] 0 2 1 5 6 7 3⟩, + ⟨1195, 5163823246521953310, .residual 4386519886533905⟩, + ⟨5547, 3284630229077909790, .residual 3483757257779013⟩, + ⟨5803, 2862199524024837150, .residual 4058030306505510⟩ + ], + [ + ⟨684, 8686254751860614430, .hubPentagon 0 [0, 1, 2, 3, 5, 6, 4, 7] 0 1 2 4 3 6⟩, + ⟨1196, 3140070683872619550, .residual 4408292418399749⟩, + ⟨5548, 6428199943587160350, .residual 1479374686682706⟩, + ⟨5804, 6463102140822512670, .residual 4410321790404999⟩ + ], + [ + ⟨685, 5452902448340624670, .residual 4395315711156500⟩, + ⟨1197, 2851840324900776990, .residual 2516829114190386⟩, + ⟨5549, 6425956939866497310, .residual 3598277794842311⟩, + ⟨5805, 3285751563637416990, .residual 2300026473644257⟩ + ], + [ + ⟨686, 5447619063275808030, .residual 4395315711156499⟩, + ⟨1198, 3145366056426040350, .residual 316285286000881⟩, + ⟨5550, 5564643511131889950, .residual 2112843219198546⟩, + ⟨5806, 6428199776286336030, .residual 329821925048562⟩ + ], + [ + ⟨687, 6453032278568428830, .residual 4209620647985318⟩, + ⟨1199, 2857909870174694430, .residual 3755400116770066⟩, + ⟨5551, 6137730961761296670, .residual 2745855209049682⟩, + ⟨5807, 2862131475133424670, .residual 1076536984246195⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData22.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData22.lean new file mode 100644 index 00000000..9fc7e269 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData22.lean @@ -0,0 +1,127 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 176–183 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets22 : Array (List PatternEntry) := #[ + [ + ⟨176, 45317471250456832, .sharedThree 1 6 0 5 7⟩, + ⟨432, 150258088673280, .k4 3 [3, 4, 5] 3 4 5 7⟩, + ⟨3248, 5911253688140822, .k4 0 [0, 4, 6, 2, 1] 0 1 2 6⟩, + ], + [ + ⟨177, 45317471260966912, .sharedThree 2 6 0 5 7⟩, + ⟨689, 3747140729881755648, .k4 4 [4, 7, 5] 2 4 5 7⟩, + ⟨945, 21036749824274, .k4 0 [0, 1, 5, 4] 0 1 4 5⟩, + ], + [ + ⟨178, 45317473951547392, .sharedThree 3 6 0 5 7⟩, + ⟨690, 3747153219658186752, .k4 2 [2, 7, 5] 2 4 5 7⟩, + ⟨1458, 12270721573146, .k4 0 [0, 1, 4, 5] 0 3 4 5⟩, + ⟨2994, 2814750941724942, .k4 0 [0, 1, 2, 6, 3] 0 1 2 3⟩, + ⟨10674, 4945031569138122782, .k4 0 [0, 3, 4, 5, 6, 7, 2] 0 1 2 4⟩ + ], + [ + ⟨179, 45318162740150272, .sharedThree 4 6 0 5 7⟩, + ⟨691, 4035225440875446272, .k4 3 [3, 4, 7] 3 4 5 7⟩, + ⟨10931, 2892085062324536598, .k4 0 [0, 1, 2, 6, 5, 7, 3, 4] 0 1 2 4⟩ + ], + [ + ⟨180, 45598946237743104, .sharedThree 2 6 1 5 7⟩, + ⟨436, 151735322583040, .k4 1 [1, 5, 3] 1 3 5 7⟩, + ⟨692, 4035225956271521792, .k4 3 [3, 7, 4] 3 4 5 7⟩, + ⟨948, 22042379812864, .k4 2 [2, 3, 4, 5] 2 3 4 5⟩, + ⟨1204, 9644916003202048, .k4 1 [1, 2, 6, 5] 1 2 5 6⟩, + ⟨1716, 3096224744033294, .k4 0 [0, 2, 1, 6] 0 1 3 6⟩, + ⟨1972, 14637115403993108, .k4 0 [0, 2, 4, 6] 2 4 5 6⟩, + ⟨10932, 2892647981982485526, .k4 0 [0, 2, 4, 6, 5, 7, 3, 1] 0 1 2 4⟩ + ], + [ + ⟨181, 45598948945035264, .sharedThree 3 6 1 5 7⟩, + ⟨437, 153933853491200, .k4 2 [2, 3, 5] 2 3 5 7⟩, + ⟨693, 4035225988483776512, .k4 3 [3, 4, 7] 3 4 5 7⟩, + ⟨949, 22042581139456, .k4 2 [2, 4, 5, 3] 2 3 4 5⟩, + ⟨1205, 9644916005168128, .k4 1 [1, 6, 5, 2] 1 2 5 6⟩, + ⟨1717, 3096224748617998, .k4 0 [0, 1, 2, 6] 0 2 3 6⟩, + ⟨5301, 10133099218299916, .k4 0 [0, 2, 3, 6, 1] 1 2 5 6⟩ + ], + [ + ⟨182, 45599642011828224, .sharedThree 4 6 1 5 7⟩, + ⟨438, 153934323253248, .k4 2 [2, 5, 3] 2 3 5 7⟩, + ⟨950, 22136264729600, .k4 1 [1, 2, 5, 4] 1 2 4 5⟩, + ⟨1974, 14709567204123648, .k4 1 [1, 5, 6, 4] 1 2 4 6⟩, + ], + [ + ⟨183, 46161896180589568, .sharedThree 1 6 2 5 7⟩, + ⟨439, 153934388264960, .k4 2 [2, 3, 5] 2 3 5 7⟩, + ⟨695, 4035375521259847680, .k4 4 [4, 7, 5] 3 4 5 7⟩, + ⟨951, 22153442501632, .k4 1 [1, 2, 4, 5] 1 2 4 5⟩, + ⟨1207, 9644916005298176, .k4 1 [1, 6, 5, 2] 1 2 5 6⟩, + ⟨1463, 13194948575260, .k4 0 [0, 2, 5, 3] 0 2 3 4⟩, + ⟨2231, 4793032869243053056, .k4 1 [1, 5, 7, 6] 1 2 5 6⟩, + ⟨4279, 4936789616540845318, .k4 0 [0, 1, 2, 7, 6] 0 1 2 6⟩, + ⟨10935, 3463977023622956046, .k4 0 [0, 2, 3, 5, 7, 4, 6, 1] 0 1 2 3⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets22 : Array (List HardEntry) := #[ + [ + ⟨688, 5446478027099301150, .residual 1180592915422816⟩, + ⟨1200, 8190520808261053470, .residual 3340489419434384⟩, + ⟨5552, 5563522009271558430, .residual 3795001091000460⟩, + ⟨5808, 8661921326120494110, .residual 3792550812012032⟩ + ], + [ + ⟨689, 6020686714341254430, .residual 1180591036317280⟩, + ⟨1201, 7175172822746557470, .residual 1385418510359858⟩, + ⟨5553, 5419406829785637150, .residual 1440100703976482⟩, + ⟨5809, 8659669500771886110, .residual 2300146762088672⟩ + ], + [ + ⟨690, 8695556580571833630, .hubPentagon 0 [0, 1, 2, 3, 4, 5, 6, 7] 1 0 2 6 5 4⟩, + ⟨1202, 3714156749630499870, .residual 1836423914256849⟩, + ⟨5554, 5559581359832490270, .residual 2488895302259746⟩, + ⟨5810, 8657980676681425950, .residual 3495217674597158⟩ + ], + [ + ⟨691, 8262373201368802590, .residual 3364699080770950⟩, + ⟨1203, 6171834931792604190, .residual 2466096771748179⟩, + ⟨5555, 7654243378631205150, .residual 1076503153121200⟩, + ⟨5811, 8185658630621291550, .residual 3917740551801223⟩ + ], + [ + ⟨692, 8693867756481373470, .cycleStrip 0 [0, 1, 2, 3, 4, 5, 6, 7] 0 2 1 6 5 7 4⟩, + ⟨1204, 7172921005954329630, .residual 2439850161576241⟩, + ⟨5556, 5420588367487361310, .residual 271811993518576⟩, + ⟨5812, 3862203246043653150, .residual 329701636604146⟩ + ], + [ + ⟨693, 8694645099340719390, .residual 1201420201910099⟩, + ⟨1205, 6137214037938170910, .residual 2457438184773940⟩, + ⟨5557, 7654234557003260190, .residual 3792806362688009⟩, + ⟨5813, 6425956498761507870, .residual 2300146762088673⟩ + ], + [ + ⟨694, 4154172533488968990, .residual 4270231219241126⟩, + ⟨1206, 5993101048885570590, .residual 2762475386139841⟩, + ⟨5558, 7650870051422265630, .residual 3792806362688008⟩, + ⟨5814, 3150416706054251550, .residual 3323172111280787⟩ + ], + [ + ⟨695, 8693798488305788190, .hubPentagon 0 [0, 1, 2, 4, 5, 6, 3, 7] 0 1 2 3 4 5⟩, + ⟨1207, 2858191212510735390, .residual 2277590691181794⟩, + ⟨5559, 8688935906493784350, .residual 3916898738204930⟩, + ⟨5815, 3150353183487943710, .residual 3271220128164244⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData23.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData23.lean new file mode 100644 index 00000000..90c3cbdd --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData23.lean @@ -0,0 +1,116 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 184–191 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets23 : Array (List PatternEntry) := #[ + [ + ⟨440, 153934389837824, .k4 2 [2, 5, 3] 2 3 5 7⟩, + ⟨696, 4035383598751154176, .k4 3 [3, 7, 5] 3 4 5 7⟩, + ⟨1208, 9647115026441216, .k4 1 [1, 2, 5, 6] 1 2 5 6⟩, + ⟨1464, 13194965286940, .k4 0 [0, 3, 5, 2] 0 2 3 4⟩, + ⟨2744, 21032457085974, .k4 0 [0, 4, 5, 1, 2] 0 1 2 5⟩, + ⟨4280, 4936789616540910854, .k4 0 [0, 1, 2, 7, 6] 0 1 2 6⟩, + ], + [ + ⟨697, 4729273289459892224, .k4 5 [5, 6, 7] 0 5 6 7⟩, + ⟨4281, 4937071092621265920, .k4 1 [1, 2, 3, 7, 6] 1 2 3 6⟩, + ], + [ + ⟨442, 159034060570624, .k4 2 [2, 4, 5] 2 4 5 7⟩, + ⟨698, 4755801206516007936, .k4 1 [1, 2, 7] 1 2 6 7⟩, + ⟨4794, 143640897855750, .k4 0 [0, 1, 2, 5, 4] 2 4 5 7⟩, + ], + [ + ⟨187, 47287796098400256, .sharedThree 2 6 3 5 7⟩, + ⟨443, 159054181695488, .k4 3 [3, 4, 5] 3 4 5 7⟩, + ⟨8891, 83602348138774, .k4 0 [0, 1, 2, 4, 3, 5] 1 2 5 6⟩ + ], + [ + ⟨188, 47288517641895936, .sharedThree 4 6 3 5 7⟩, + ⟨1212, 9649315152685056, .k4 1 [1, 3, 6, 5] 1 3 5 6⟩, + ⟨1724, 3096538276446490, .k4 0 [0, 1, 4, 6] 0 3 4 6⟩ + ], + [ + ⟨701, 4793518853395185664, .k4 2 [2, 6, 7] 1 2 6 7⟩, + ⟨1213, 9649315656001536, .k4 1 [1, 6, 5, 3] 1 3 5 6⟩, + ⟨2749, 21033025284122, .k4 0 [0, 4, 5, 1, 3] 0 1 3 5⟩, + ], + [ + ⟨190, 49539595912609792, .sharedThree 2 6 4 5 7⟩, + ⟨702, 4794644756544094208, .k4 3 [3, 6, 7] 1 3 6 7⟩, + ⟨958, 23111221182484, .k4 0 [0, 2, 4, 5] 0 2 4 5⟩, + ⟨1214, 9649315689539584, .k4 1 [1, 3, 5, 6] 1 3 5 6⟩, + ⟨1470, 14294204818702, .k4 0 [0, 1, 3, 5] 0 1 2 5⟩, + ], + [ + ⟨191, 49539598853865472, .sharedThree 3 6 4 5 7⟩, + ⟨447, 161224482398208, .k4 1 [1, 5, 4] 1 4 5 7⟩, + ⟨703, 4796897386326654976, .k4 4 [4, 6, 7] 1 4 6 7⟩, + ⟨959, 23111222165524, .k4 0 [0, 4, 2, 5] 0 2 4 5⟩, + ⟨1215, 9649315689553920, .k4 1 [1, 6, 5, 3] 1 3 5 6⟩, + ⟨1983, 15762908812673024, .k4 2 [2, 3, 4, 6] 2 3 5 6⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets23 : Array (List HardEntry) := #[ + [ + ⟨696, 3723520191431927070, .residual 4334705125450003⟩, + ⟨1208, 3136570097621560350, .residual 3532334445632161⟩, + ⟨5560, 4149307752687264030, .residual 3918146426341516⟩, + ⟨5816, 8659170047632204830, .residual 3340489419434388⟩ + ], + [ + ⟨697, 3718236806367110430, .residual 4334705125450004⟩, + ⟨1209, 2849465621376691230, .residual 3535686768138901⟩, + ⟨5561, 3862203276442394910, .residual 2112813121397330⟩, + ⟨5817, 8659093382465971230, .residual 3253902820010643⟩ + ], + [ + ⟨698, 8697799490038621470, .hubPentagon 0 [0, 1, 2, 3, 4, 5, 6, 7] 1 0 2 6 5 3⟩, + ⟨1210, 6172613626560015390, .residual 941840974194625⟩, + ⟨5562, 4147064748966600990, .residual 2605151948312146⟩, + ⟨5818, 6460859423606891550, .residual 4411419154721159⟩ + ], + [ + ⟨699, 7688164141790618910, .residual 3363616748897670⟩, + ⟨1211, 6171492124699683870, .residual 822483828394932⟩, + ⟨5563, 3858838770861400350, .residual 3598243905914567⟩, + ⟨5819, 7609207234720097310, .residual 3918837916117383⟩ + ], + [ + ⟨700, 8696888256942531870, .residual 1200337870036819⟩, + ⟨1212, 3858394537765923870, .residual 831277788613553⟩, + ⟨5564, 3284629818371662110, .residual 1620108045221458⟩, + ⟨5820, 3870997164017771550, .residual 1738176031678688⟩ + ], + [ + ⟨701, 8693858840599553310, .cycleStrip 0 [0, 1, 2, 3, 4, 5, 6, 7] 0 2 1 6 5 7 3⟩, + ⟨1213, 2857909737550801950, .residual 3362744870465797⟩, + ⟨5565, 6428199532880912670, .residual 3483791146706757⟩, + ⟨5821, 3294536386179425310, .residual 4346719763574272⟩ + ], + [ + ⟨702, 8693789841949943070, .hubPentagon 0 [0, 1, 2, 3, 5, 6, 4, 7] 0 1 2 4 3 5⟩, + ⟨1214, 2849465617098501150, .residual 1785343964149538⟩, + ⟨5566, 6141095056636043550, .residual 4090932426791618⟩, + ⟨5822, 2862190847721661470, .residual 4058032185611046⟩ + ], + [ + ⟨703, 3141767489127671070, .residual 4326046471266580⟩, + ⟨1215, 2860161430275517470, .residual 837910979072946⟩, + ⟨5567, 6425956529160249630, .residual 3598638605584066⟩, + ⟨5823, 3285751593451054110, .residual 260432403939570⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData24.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData24.lean new file mode 100644 index 00000000..11236754 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData24.lean @@ -0,0 +1,132 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 192–199 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets24 : Array (List PatternEntry) := #[ + [ + ⟨192, 1008806316530991118, .sharedThree 0 7 1 2 3⟩, + ⟨448, 163294668128256, .k4 2 [2, 4, 5] 2 4 5 7⟩, + ⟨704, 4899916394591863808, .k4 1 [1, 2, 7] 1 2 6 7⟩, + ⟨960, 23231479218196, .k4 0 [0, 2, 4, 5] 0 2 4 5⟩, + ⟨1984, 15763016129708056, .k4 0 [0, 3, 4, 6] 3 4 5 6⟩, + ⟨2240, 4800837202783429632, .k4 1 [1, 2, 7, 6] 1 2 5 6⟩, + ⟨10944, 3468546353679385870, .k4 0 [0, 1, 2, 6, 5, 7, 4, 3] 0 1 2 3⟩ + ], + [ + ⟨193, 1585267068834414614, .sharedThree 0 7 1 2 4⟩, + ⟨449, 163414927212544, .k4 2 [2, 5, 4] 2 4 5 7⟩, + ⟨705, 4899916397880541184, .k4 2 [2, 3, 7] 2 3 6 7⟩, + ⟨961, 23231481249812, .k4 0 [0, 4, 5, 2] 0 2 4 5⟩, + ⟨1473, 14315129667612, .k4 0 [0, 4, 2, 5] 0 2 3 5⟩, + ⟨1729, 3377701068537884, .k4 0 [0, 2, 6, 3] 0 2 3 4⟩, + ], + [ + ⟨194, 1873497444986126362, .sharedThree 0 7 1 3 4⟩, + ⟨450, 163432104984576, .k4 2 [2, 4, 5] 2 4 5 7⟩, + ⟨706, 4899917236406321152, .k4 2 [2, 4, 7] 2 4 6 7⟩, + ⟨962, 23244364120084, .k4 0 [0, 2, 4, 5] 0 2 4 5⟩, + ⟨1474, 14333178282012, .k4 0 [0, 4, 3, 5] 0 2 3 5⟩, + ⟨1730, 3377701085249564, .k4 0 [0, 3, 6, 2] 0 2 3 4⟩, + ⟨1986, 15835484290836480, .k4 1 [1, 5, 6, 4] 1 3 4 6⟩ + ], + [ + ⟨195, 2017612633061982236, .sharedThree 0 7 2 3 4⟩, + ⟨451, 163432106033152, .k4 2 [2, 5, 4] 2 4 5 7⟩, + ⟨707, 4937634041458377728, .k4 1 [1, 6, 7] 1 2 6 7⟩, + ⟨963, 23244365168660, .k4 0 [0, 2, 5, 4] 0 2 4 5⟩, + ⟨1731, 3377701135122460, .k4 0 [0, 2, 6, 3] 0 2 3 4⟩, + ⟨2243, 4801963102690271232, .k4 1 [1, 7, 6, 2] 1 2 5 6⟩, + ⟨5315, 10205666933812238, .k4 0 [0, 2, 6, 5, 1] 0 1 2 3⟩, + ], + [ + ⟨196, 2522015791329771520, .sharedThree 2 7 0 1 5⟩, + ⟨452, 167712835764224, .k4 3 [3, 4, 5] 3 4 5 7⟩, + ⟨708, 4939322894606925824, .k4 3 [3, 6, 7] 2 3 6 7⟩, + ⟨1732, 3377701151834140, .k4 0 [0, 3, 6, 2] 0 2 3 4⟩, + ⟨2756, 21045342905606, .k4 0 [0, 1, 5, 4, 2] 0 1 2 5⟩, + ], + [ + ⟨197, 2522015791914680320, .sharedThree 3 7 0 1 5⟩, + ⟨453, 167815914979328, .k4 3 [3, 5, 4] 3 4 5 7⟩, + ⟨709, 4941575532945866752, .k4 4 [4, 6, 7] 2 4 6 7⟩, + ⟨2245, 4803089004234858496, .k4 1 [1, 7, 6, 3] 1 3 5 6⟩, + ], + [ + ⟨198, 2522015941651333120, .sharedThree 4 7 0 1 5⟩, + ⟨454, 167849737846784, .k4 3 [3, 4, 5] 3 4 5 7⟩, + ⟨710, 5044031582659331072, .k4 1 [1, 2, 7] 1 2 6 7⟩, + ⟨2502, 6597122729230, .k4 0 [0, 1, 3, 5, 2] 0 1 2 3⟩, + ⟨7110, 12738942809957390, .k4 0 [0, 3, 6, 5, 1] 0 1 2 6⟩, + ], + [ + ⟨199, 2531867415512350720, .sharedThree 6 7 0 1 5⟩, + ⟨455, 167850006282240, .k4 3 [3, 5, 4] 3 4 5 7⟩, + ⟨1223, 9658531045203968, .k4 1 [1, 6, 5, 4] 1 4 5 6⟩, + ⟨2247, 4805341223311171584, .k4 1 [1, 7, 6, 4] 1 4 5 6⟩, + ⟨2503, 6597122731022, .k4 0 [0, 3, 1, 5, 2] 0 1 2 3⟩, + ⟨10439, 1441159062240111630, .k4 0 [0, 3, 4, 7, 2, 5, 1] 0 1 2 3⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets24 : Array (List HardEntry) := #[ + [ + ⟨704, 3149311144688313630, .residual 4326046471266579⟩, + ⟨1216, 8192763675079633950, .residual 1346452657004224⟩, + ⟨5568, 6137730551055048990, .residual 1743497469813349⟩, + ⟨5824, 6428199806099973150, .residual 1738296320123105⟩ + ], + [ + ⟨705, 4154163609050768670, .residual 4200961986576550⟩, + ⟨1217, 2860442772611558430, .residual 3300931671773570⟩, + ⟨5569, 5563521598565310750, .residual 3105888168454850⟩, + ⟨5825, 2862122824499389470, .residual 1077636227667891⟩ + ], + [ + ⟨706, 3145366216958895390, .residual 1171934254014048⟩, + ⟨1218, 3139947540449356830, .residual 1423471131106978⟩, + ⟨5570, 4149305562253943070, .residual 1442295531355170⟩, + ⟨5826, 8661912649817318430, .residual 1738296320123104⟩ + ], + [ + ⟨707, 3721818044823594270, .residual 1171932374908512⟩, + ⟨1219, 3860508104845716510, .residual 2748068731522130⟩, + ⟨5571, 4145367103248195870, .residual 2486971123880994⟩, + ⟨5827, 8659660824468710430, .residual 3792565844454912⟩ + ], + [ + ⟨708, 6028587786195068190, .residual 1231998015078208⟩, + ⟨1220, 3716955866723281950, .residual 4248894620216519⟩, + ⟨5572, 5590597052753568030, .residual 953325712673712⟩, + ⟨5828, 8657972000378250270, .residual 3495219553702694⟩ + ], + [ + ⟨709, 3726950546396570910, .residual 1231999897796416⟩, + ⟨1221, 2852277932407680030, .residual 918775720543186⟩, + ⟨5573, 6164814548788896030, .residual 945629131221936⟩, + ⟨5829, 3862203275857290270, .residual 1738176031678689⟩ + ], + [ + ⟨710, 5454378726616884510, .residual 1223339360894784⟩, + ⟨1222, 3713030610212121630, .residual 1551650411027922⟩, + ⟨5574, 5563515412202184990, .residual 1872341987358754⟩, + ⟨5830, 6425956528575144990, .residual 260552692383986⟩ + ], + [ + ⟨711, 3150498346195641630, .residual 1223341243612992⟩, + ⟨1223, 2851717181477514270, .residual 4349966758980876⟩, + ⟨5575, 3138258826163708190, .residual 2426225198872610⟩, + ⟨5831, 8658044164888519710, .residual 1007284545918899⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData25.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData25.lean new file mode 100644 index 00000000..a3292fc8 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData25.lean @@ -0,0 +1,123 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 200–207 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets25 : Array (List PatternEntry) := #[ + [ + ⟨200, 2666130979403343104, .sharedThree 1 7 0 2 5⟩, + ⟨712, 5044031582667686912, .k4 1 [1, 2, 7] 1 2 6 7⟩, + ⟨968, 26535146825728, .k4 1 [1, 3, 5, 4] 1 3 4 5⟩, + ⟨1736, 3659175787775246, .k4 0 [0, 1, 3, 6] 0 1 2 6⟩, + ⟨1992, 36592588799755264, .k4 1 [1, 2, 6, 4] 2 4 6 7⟩, + ⟨4296, 4938478466485452812, .k4 0 [0, 3, 2, 7, 6] 0 2 3 6⟩, + ], + [ + ⟨713, 5044031582667718656, .k4 1 [1, 7, 2] 1 2 6 7⟩, + ⟨4041, 936748724665877518, .k4 0 [0, 3, 7, 2, 1] 0 1 2 7⟩, + ], + [ + ⟨714, 5080623329640054784, .k4 2 [2, 7, 6] 1 2 6 7⟩, + ⟨970, 26568969693184, .k4 1 [1, 3, 4, 5] 1 3 4 5⟩, + ⟨2762, 22136264656150, .k4 0 [0, 1, 2, 5, 4] 0 1 2 4⟩, + ⟨4554, 27642410641678, .k4 0 [0, 1, 2, 4, 5] 0 1 3 5⟩ + ], + [ + ⟨459, 918092209217792, .k4 1 [1, 5, 6] 0 1 5 6⟩, + ⟨715, 5081186279580812288, .k4 1 [1, 7, 6] 1 2 6 7⟩, + ⟨1739, 3659196177842204, .k4 0 [0, 4, 2, 6] 0 2 3 6⟩, + ⟨4299, 4940730287689629716, .k4 0 [0, 2, 4, 7, 6] 0 2 4 6⟩, + ⟨4555, 72567824149516, .k4 0 [0, 2, 3, 1, 5] 1 2 5 6⟩ + ], + [ + ⟨204, 2954361355555055872, .sharedThree 1 7 0 3 5⟩, + ⟨1228, 10139696235701248, .k4 1 [1, 2, 5, 6] 1 2 5 6⟩, + ⟨1740, 3659214761230364, .k4 0 [0, 4, 3, 6] 0 2 3 6⟩, + ⟨9932, 3469392947265430550, .k4 0 [0, 4, 7, 5, 1, 6] 0 1 2 6⟩, + ⟨10444, 1442841315032714254, .k4 0 [0, 3, 4, 7, 2, 6, 1] 0 1 2 3⟩ + ], + [ + ⟨205, 2954361355557732352, .sharedThree 2 7 0 3 5⟩, + ⟨717, 5188146774032252928, .k4 2 [2, 3, 7] 2 3 6 7⟩, + ⟨973, 26577595793408, .k4 2 [2, 3, 4, 5] 2 3 4 5⟩, + ⟨1485, 19954418066710, .k4 0 [0, 1, 5, 4] 0 1 2 4⟩, + ⟨2253, 4938759941378296832, .k4 1 [1, 6, 7, 2] 1 2 3 6⟩, + ⟨6605, 5642995167264768, .k4 2 [2, 5, 6, 3, 4] 1 2 3 4⟩, + ], + [ + ⟨206, 2954361531648704512, .sharedThree 4 7 0 3 5⟩, + ⟨718, 5188147633213931520, .k4 3 [3, 4, 7] 3 4 6 7⟩, + ⟨4558, 72569395047436, .k4 0 [0, 2, 3, 1, 5] 1 3 5 6⟩, + ⟨6606, 5643012146331648, .k4 2 [2, 5, 6, 3, 4] 1 2 3 4⟩, + ⟨8654, 2603854640815098894, .k4 0 [0, 2, 7, 5, 6, 1] 0 1 2 3⟩, + ⟨10702, 5228698273575021824, .k4 1 [1, 2, 3, 7, 6, 4, 5] 0 1 2 5⟩ + ], + [ + ⟨207, 2965901829600182272, .sharedThree 6 7 0 3 5⟩, + ⟨463, 1483241192226816, .k4 2 [2, 5, 6] 0 2 5 6⟩, + ⟨4303, 4946150858537591808, .k4 1 [1, 5, 6, 7, 2] 1 2 5 6⟩, + ⟨10959, 5224741857310893078, .k4 0 [0, 2, 4, 3, 7, 6, 1, 5] 0 1 2 5⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets25 : Array (List HardEntry) := #[ + [ + ⟨712, 6022942919503668510, .residual 2400121526892880⟩, + ⟨1224, 6139399885039365150, .residual 2912406333990722⟩, + ⟨5576, 7653108657063256350, .residual 1094062862338992⟩, + ⟨5832, 6028513859379717150, .residual 3911135697111442⟩ + ], + [ + ⟨713, 5446490950458696990, .residual 4410727664945291⟩, + ⟨1225, 5995847646916930590, .residual 2317541180409957⟩, + ⟨5577, 3716962188460089630, .residual 1872071338358818⟩, + ⟨5833, 7607518384860226590, .residual 4403716935715218⟩ + ], + [ + ⟨714, 3140087327753790750, .residual 2968558023252640⟩, + ⟨1226, 5131169712601328670, .residual 3545814802741570⟩, + ⟨5578, 8227326153098584350, .residual 1086366280887216⟩, + ⟨5834, 7580567156377052190, .residual 3349285244307857⟩ + ], + [ + ⟨715, 6030757277541623070, .residual 1382169606544948⟩, + ⟨1227, 5991922390405770270, .residual 4249238479218882⟩, + ⟨5579, 6137715140914110750, .residual 2426495847872546⟩, + ⟨5835, 7653172303111971870, .residual 2469909343751252⟩ + ], + [ + ⟨716, 6028514273820960030, .residual 1504382905597377⟩, + ⟨1228, 5130608961671162910, .residual 4169987741963461⟩, + ⟨5580, 8661985203826909470, .residual 3362880162050306⟩, + ⟨5836, 3860514699801584670, .residual 4241652773164577⟩ + ], + [ + ⟨717, 3714855935957034270, .residual 1390963566763569⟩, + ⟨1229, 2860161297651624990, .residual 3301172189950215⟩, + ⟨5581, 6176848712146018590, .residual 348790983099888⟩, + ⟨5837, 3284062743591183390, .residual 4246057263699221⟩ + ], + [ + ⟨718, 6020691094155060510, .residual 4411689737676939⟩, + ⟨1230, 2851717177199324190, .residual 346043814129778⟩, + ⟨5582, 4157549565685981470, .residual 3361662538705416⟩, + ⟨5838, 3292772941797319710, .residual 1978410524929108⟩ + ], + [ + ⟨719, 6029347686639494430, .residual 3532605094632096⟩, + ⟨1231, 5995847642638740510, .residual 2316488913924193⟩, + ⟨5583, 3869323587580780830, .residual 3361662538705417⟩, + ⟨5839, 3284047350663275550, .residual 1978410524929105⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData26.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData26.lean new file mode 100644 index 00000000..d22141fa --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData26.lean @@ -0,0 +1,137 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 208–215 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets26 : Array (List PatternEntry) := #[ + [ + ⟨464, 1970324836992262, .k4 0 [0, 1, 6] 0 1 2 6⟩, + ⟨720, 5227553267483410432, .k4 2 [2, 6, 7] 2 3 6 7⟩, + ⟨1232, 10146294448783360, .k4 2 [2, 3, 5, 6] 2 3 5 6⟩, + ⟨2000, 37155559480754176, .k4 2 [2, 3, 6, 4] 3 4 6 7⟩, + ⟨2512, 6609957823766, .k4 0 [0, 1, 4, 5, 2] 0 1 2 4⟩, + ⟨7376, 2450103332877533454, .k4 0 [0, 1, 3, 7, 5, 2] 0 1 2 3⟩ + ], + [ + ⟨209, 3530822107861680128, .sharedThree 2 7 0 4 5⟩, + ⟨721, 5230931826184290304, .k4 4 [4, 6, 7] 3 4 6 7⟩, + ⟨977, 27527250706456, .k4 0 [0, 4, 3, 5] 0 3 4 5⟩, + ⟨1489, 19971597936922, .k4 0 [0, 1, 5, 4] 0 1 3 4⟩, + ⟨2001, 37155576594038784, .k4 2 [2, 4, 6, 3] 3 4 6 7⟩, + ], + [ + ⟨210, 3530822108680552448, .sharedThree 3 7 0 4 5⟩, + ⟨978, 27629809827864, .k4 0 [0, 3, 4, 5] 0 3 4 5⟩, + ⟨7378, 2450103345712627990, .k4 0 [0, 1, 4, 7, 5, 2] 0 1 2 4⟩ + ], + [ + ⟨211, 3544614381717291008, .sharedThree 6 7 0 4 5⟩, + ⟨979, 27630329921560, .k4 0 [0, 4, 5, 3] 0 3 4 5⟩, + ⟨2003, 37717646887862534, .k4 0 [0, 1, 2, 6] 1 2 6 7⟩, + ⟨6611, 5656326743654400, .k4 2 [2, 6, 4, 5, 3] 1 2 3 4⟩ + ], + [ + ⟨212, 4827858800545562624, .sharedThree 2 7 0 1 6⟩, + ⟨724, 5332261962061465600, .k4 1 [1, 3, 7] 1 3 6 7⟩, + ⟨1236, 10155381459255296, .k4 2 [2, 4, 5, 6] 2 4 5 6⟩, + ⟨1492, 20890724147478, .k4 0 [0, 1, 2, 5] 0 2 4 5⟩, + ⟨4308, 5225019995917912330, .k4 0 [0, 1, 3, 7, 6] 0 1 3 6⟩, + ⟨6612, 5656343722721280, .k4 2 [2, 6, 4, 5, 3] 1 2 3 4⟩ + ], + [ + ⟨213, 4827858801665245184, .sharedThree 3 7 0 1 6⟩, + ⟨469, 2613540766613504, .k4 3 [3, 5, 6] 0 3 5 6⟩, + ⟨725, 5332261962061496320, .k4 1 [1, 7, 3] 1 3 6 7⟩, + ⟨981, 27660143034392, .k4 0 [0, 3, 5, 4] 0 3 4 5⟩, + ⟨4309, 5225019995934689546, .k4 0 [0, 1, 3, 7, 6] 0 1 3 6⟩ + ], + [ + ⟨214, 4827859088303980544, .sharedThree 4 7 0 1 6⟩, + ⟨726, 5368853709033832448, .k4 3 [3, 7, 6] 1 3 6 7⟩, + ⟨982, 844424934409478, .k4 0 [0, 1, 2, 6] 0 1 2 6⟩, + ⟨1494, 20891543019802, .k4 0 [0, 1, 3, 5] 0 3 4 5⟩, + ⟨2774, 22162118803484, .k4 0 [0, 3, 2, 5, 4] 0 2 3 4⟩, + ⟨8662, 2882446700512878878, .k4 0 [0, 1, 2, 5, 7, 3] 0 2 3 4⟩ + ], + [ + ⟨215, 4827932467820232704, .sharedThree 5 7 0 1 6⟩, + ⟨471, 3096225867890698, .k4 0 [0, 3, 6] 0 1 3 6⟩, + ⟨983, 844424934475014, .k4 0 [0, 1, 2, 6] 0 1 2 6⟩, + ⟨1751, 5066850228520214, .k4 0 [0, 1, 6, 4] 0 1 2 4⟩, + ⟨2007, 37717650176623616, .k4 1 [1, 2, 6, 3] 2 3 6 7⟩, + ⟨2263, 4945515340820931584, .k4 1 [1, 6, 7, 2] 1 2 5 6⟩, + ⟨5079, 3377744050192414, .k4 0 [0, 2, 6, 3, 4] 0 1 3 4⟩, + ⟨5847, 7736108523806, .k4 0 [0, 1, 4, 5, 3] 0 2 3 5⟩, + ⟨6615, 5910975890917662, .k4 0 [0, 1, 2, 3, 6] 0 3 4 6⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets26 : Array (List HardEntry) := #[ + [ + ⟨720, 5452053504538993950, .residual 1452521171082801⟩, + ⟨976, 6461210423826017310, .hubPentagon 0 [0, 2, 3, 4, 1, 5, 6, 7] 0 1 2 4 7 3⟩, + ⟨1232, 5456273428076129310, .residual 4408532936632834⟩, + ⟨5584, 3725701255592075550, .residual 333399666336240⟩, + ⟨5840, 5454295824292439070, .residual 3902339872237970⟩ + ], + [ + ⟨721, 3140638170395731230, .residual 1461315131301428⟩, + ⟨977, 6171577092312099870, .residual 4395315711156496⟩, + ⟨1233, 3140091574124375070, .residual 4346960281807362⟩, + ⟨5585, 6463946565752643870, .residual 4410442049490178⟩, + ⟨5841, 3148382858651427870, .residual 3271220128164241⟩ + ], + [ + ⟨722, 3138395166675068190, .residual 1583528430353857⟩, + ⟨978, 5450932123503651870, .residual 4395315711156497⟩, + ⟨1234, 6454735974900526110, .residual 4409479976808713⟩, + ⟨5586, 4149308008977588510, .residual 2912182781847365⟩, + ⟨5842, 5419393459756262430, .residual 3612876155704597⟩ + ], + [ + ⟨723, 5444239125110088990, .residual 1837173720611152⟩, + ⟨979, 5447603640283130910, .residual 3902373695234451⟩, + ⟨1235, 6024079260533222430, .residual 4409479976808712⟩, + ⟨5587, 3862203532732719390, .residual 3598334100622018⟩, + ⟨5843, 5417150456035599390, .residual 3608471665169953⟩ + ], + [ + ⟨724, 3722952748660450590, .residual 2399022269020496⟩, + ⟨980, 5442552740523371550, .residual 2632264696967472⟩, + ⟨1236, 4149453854055951390, .residual 350012371774576⟩, + ⟨5588, 4147065005256925470, .residual 3106040459445954⟩, + ⟨5844, 5419386888456299550, .residual 2469909343751249⟩ + ], + [ + ⟨725, 5455147406041048350, .residual 3531505851210400⟩, + ⟨981, 6031599607043681310, .residual 1835341575158228⟩, + ⟨1237, 6139488811347962910, .residual 342312002915568⟩, + ⟨5589, 3285751576522318110, .residual 2297771582243429⟩, + ⟨5845, 3722600483032458270, .residual 3280015953037713⟩ + ], + [ + ⟨726, 6030757140639540510, .residual 1382169606544945⟩, + ⟨982, 7184588890747530270, .residual 3794595216460164⟩, + ⟨1238, 6452484158108298270, .residual 1491004078448304⟩, + ⟨5590, 3284630074661986590, .residual 4091084640762562⟩, + ⟨5846, 3866981748828595230, .residual 2470991734230100⟩ + ], + [ + ⟨727, 3717098802775614750, .residual 1574734484585921⟩, + ⟨983, 5166976377944632350, .residual 3915846471280129⟩, + ⟨1239, 5420528307154283550, .residual 816811093115810⟩, + ⟨5591, 6428199789171237150, .residual 3364954631334028⟩, + ⟨5847, 5995853968068633630, .residual 3678840141256225⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData27.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData27.lean new file mode 100644 index 00000000..e2307555 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData27.lean @@ -0,0 +1,136 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 216–223 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets27 : Array (List PatternEntry) := #[ + [ + ⟨216, 4971973988617045248, .sharedThree 1 7 0 2 6⟩, + ⟨472, 3659174702022668, .k4 0 [0, 2, 6] 0 2 3 6⟩, + ⟨728, 5476377148036481024, .k4 2 [2, 3, 7] 2 3 6 7⟩, + ⟨984, 844424934539526, .k4 0 [0, 1, 2, 6] 0 1 2 6⟩, + ⟨1240, 10205666931270656, .k4 1 [1, 2, 5, 6] 1 2 5 6⟩, + ⟨6616, 5911253734149150, .k4 0 [0, 3, 4, 1, 6] 0 1 2 6⟩, + ⟨10968, 5233255380138665238, .k4 0 [0, 1, 2, 5, 6, 7, 3, 4] 0 1 2 4⟩ + ], + [ + ⟨217, 4971973989774655488, .sharedThree 3 7 0 2 6⟩, + ⟨473, 3659175854866444, .k4 0 [0, 3, 6] 0 2 3 6⟩, + ⟨985, 844424934540294, .k4 0 [0, 2, 1, 6] 0 1 2 6⟩, + ⟨1241, 10205666935333888, .k4 1 [1, 5, 6, 2] 1 2 5 6⟩, + ⟨2009, 37718488702403584, .k4 1 [1, 2, 6, 4] 2 4 6 7⟩, + ⟨5593, 13591342403823898, .k4 0 [0, 1, 4, 6, 5] 0 1 3 5⟩, + ⟨7385, 2450107731508691214, .k4 0 [0, 1, 2, 7, 5, 3] 0 1 2 3⟩, + ⟨10969, 5233257548864359446, .k4 0 [0, 2, 4, 5, 6, 7, 3, 1] 0 1 2 4⟩ + ], + [ + ⟨730, 5476377150175576064, .k4 2 [2, 3, 7] 2 3 6 7⟩, + ⟨7386, 2450107744594723098, .k4 0 [0, 1, 4, 7, 5, 3] 0 1 3 4⟩ + ], + [ + ⟨219, 4972049854919344128, .sharedThree 5 7 0 2 6⟩, + ⟨2011, 38280597986788352, .k4 1 [1, 2, 3, 6] 1 2 6 7⟩, + ⟨2267, 4949456419991584768, .k4 2 [2, 7, 6, 4] 2 4 5 6⟩, + ⟨4315, 5226427369815952384, .k4 1 [1, 2, 3, 7, 6] 1 2 3 6⟩, + ⟨4827, 145864339292180, .k4 0 [0, 2, 4, 5, 3] 3 4 5 7⟩ + ], + [ + ⟨732, 5513531847096664064, .k4 3 [3, 7, 6] 2 3 6 7⟩, + ⟨988, 844426054222090, .k4 0 [0, 1, 3, 6] 0 1 3 6⟩, + ⟨1756, 5066871703357466, .k4 0 [0, 4, 6, 1] 0 1 3 4⟩, + ⟨2268, 4949548349470539776, .k4 2 [2, 7, 6, 5] 2 4 5 6⟩, + ⟨4060, 1297056080165118226, .k4 0 [0, 1, 7, 4, 5] 0 1 4 5⟩, + ⟨8156, 9649314918908190, .k4 0 [0, 1, 2, 6, 5, 3] 0 2 3 4⟩, + ⟨10716, 5233270876129132574, .k4 0 [0, 2, 3, 7, 6, 5, 4] 0 1 2 4⟩ + ], + [ + ⟨221, 5260204364773523456, .sharedThree 2 7 0 3 6⟩, + ⟨477, 4874551657758720, .k4 4 [4, 5, 6] 0 4 5 6⟩, + ⟨733, 5514657743728279552, .k4 2 [2, 7, 6] 2 3 6 7⟩, + ⟨989, 844426054223882, .k4 0 [0, 3, 1, 6] 0 1 3 6⟩, + ⟨1245, 10207865956623360, .k4 1 [1, 2, 6, 5] 1 2 5 6⟩, + ⟨8669, 2882452236657501206, .k4 0 [0, 4, 3, 7, 5, 1] 0 1 2 5⟩, + ⟨10973, 5801203152944456718, .k4 0 [0, 2, 3, 4, 7, 6, 1, 5] 0 1 2 5⟩ + ], + [ + ⟨222, 5260204678301351936, .sharedThree 4 7 0 3 6⟩, + ⟨1758, 5348024562827542, .k4 0 [0, 1, 2, 6] 0 2 4 6⟩, + ⟨2270, 5017437694924423168, .k4 2 [2, 5, 7, 6] 0 5 6 7⟩, + ⟨4318, 5226427662110031872, .k4 2 [2, 3, 4, 7, 6] 2 3 4 6⟩, + ], + [ + ⟨223, 5260284629117566976, .sharedThree 5 7 0 3 6⟩, + ⟨479, 5348312320311314, .k4 0 [0, 4, 6] 0 1 4 6⟩, + ⟨735, 5764608364861456384, .k4 2 [2, 4, 7] 2 4 6 7⟩, + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets27 : Array (List HardEntry) := #[ + [ + ⟨728, 3714855799054951710, .residual 1390963566763572⟩, + ⟨984, 5166917172072115230, .residual 4408547969025538⟩, + ⟨1240, 5420595106814192670, .residual 3794595216460162⟩, + ⟨5592, 6141095312926368030, .residual 1620230179855954⟩, + ⟨5848, 5993610964347970590, .residual 3683244631790869⟩ + ], + [ + ⟨729, 3148743783336142110, .residual 4349155010119819⟩, + ⟨985, 6031599482976168990, .residual 2051807927923379⟩, + ⟨1241, 3718086284181335070, .residual 4240596747572418⟩, + ⟨5593, 6425956785450574110, .residual 2112568877968978⟩, + ⟨5849, 8227380853451842590, .residual 1977328134450260⟩ + ], + [ + ⟨730, 3714287334548071710, .residual 2969657266674336⟩, + ⟨986, 5450925406644956190, .residual 3885056387080850⟩, + ⟨1242, 4146499994827975710, .residual 3466424917571394⟩, + ⟨5594, 5564643356715966750, .residual 3105542419408583⟩, + ⟨5850, 5993595571420062750, .residual 1977328134450257⟩ + ], + [ + ⟨731, 3722943927032505630, .residual 4350117082851467⟩, + ⟨987, 5162695047673113630, .residual 4408427709883911⟩, + ⟨1243, 3141634327970933790, .residual 4108432009574597⟩, + ⟨5595, 5563521854855635230, .residual 2605274057106002⟩, + ⟨5851, 8181717980948259870, .residual 4394921110841746⟩ + ], + [ + ⟨732, 5454296371357574430, .residual 1513176851365313⟩, + ⟨988, 4158171306167331870, .hubPentagon 0 [0, 2, 3, 4, 1, 6, 5, 7] 0 1 2 4 7 3⟩, + ⟨1244, 3714161027670174750, .residual 2316323549827173⟩, + ⟨5596, 6428193217871274270, .residual 1995487289734178⟩, + ⟨5852, 8154766889367168030, .residual 3340489419434385⟩ + ], + [ + ⟨733, 5452053367636911390, .residual 1452521171082804⟩, + ⟨989, 3871061353839160350, .residual 4326046471266576⟩, + ⟨1245, 3139952075180436510, .residual 3044437743228226⟩, + ⟨5597, 3292862809742434590, .residual 1007220624218032⟩, + ⟨5853, 3858262596370621470, .residual 4175688787612949⟩ + ], + [ + ⟨734, 3140638033493648670, .residual 1461315131301425⟩, + ⟨990, 3141759792546278430, .residual 4326046471266577⟩, + ⟨1246, 5996978064374983710, .residual 2043149273854418⟩, + ⟨5598, 6427636839251370270, .residual 1380587581332514⟩, + ⟨5854, 3281810640160220190, .residual 4171284297078305⟩ + ], + [ + ⟨735, 3148734961708197150, .residual 1836074462738768⟩, + ⟨991, 3145370465184476190, .residual 3340523242430867⟩, + ⟨1247, 6425391775021624350, .residual 2747091622785106⟩, + ⟨5599, 3870928982686490910, .residual 3301307481534722⟩, + ⟨5855, 3858256025070658590, .residual 2470991734230097⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData28.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData28.lean new file mode 100644 index 00000000..f67d8f15 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData28.lean @@ -0,0 +1,136 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 224–231 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets28 : Array (List PatternEntry) := #[ + [ + ⟨480, 5910974516232212, .k4 0 [0, 2, 6] 0 2 4 6⟩, + ⟨736, 5764608385517355008, .k4 3 [3, 4, 7] 3 4 6 7⟩, + ⟨992, 844712692957458, .k4 0 [0, 1, 4, 6] 0 1 4 6⟩, + ⟨1760, 5348025916473626, .k4 0 [0, 1, 3, 6] 0 3 4 6⟩, + ⟨3040, 3096225889404166, .k4 0 [0, 1, 6, 3, 2] 0 1 2 6⟩, + ⟨5856, 7885845176606, .k4 0 [0, 1, 3, 5, 4] 0 2 4 5⟩, + ⟨7392, 2450116690172936470, .k4 0 [0, 1, 2, 7, 5, 4] 0 1 2 4⟩ + ], + [ + ⟨225, 5836665117077471232, .sharedThree 2 7 0 4 6⟩, + ⟨481, 5911270863667220, .k4 0 [0, 4, 6] 0 2 4 6⟩, + ⟨1505, 22162034982940, .k4 0 [0, 2, 5, 4] 0 2 3 4⟩, + ⟨6369, 167300076470284, .k4 0 [0, 2, 3, 4, 5] 2 3 5 7⟩, + ⟨7393, 2450116707402940698, .k4 0 [0, 1, 3, 7, 5, 4] 0 1 3 4⟩, + ⟨9953, 4800911969620754702, .k4 0 [0, 1, 3, 7, 6, 5, 2] 0 1 2 3⟩, + ⟨10977, 5801782698419233806, .k4 0 [0, 2, 3, 6, 7, 4, 5, 1] 0 1 2 3⟩ + ], + [ + ⟨226, 5836665118431117312, .sharedThree 3 7 0 4 6⟩, + ⟨482, 7036875776720920, .k4 0 [0, 3, 6] 0 3 4 6⟩, + ⟨738, 5806265819601043456, .k4 2 [2, 6, 7] 2 4 6 7⟩, + ⟨994, 1407374887830790, .k4 0 [0, 1, 2, 6] 0 1 2 6⟩, + ⟨1506, 22166329884700, .k4 0 [0, 4, 5, 2] 0 2 3 4⟩, + ⟨2018, 38843548983935242, .k4 0 [0, 1, 3, 6] 1 3 6 7⟩, + ⟨4066, 1301822600510488850, .k4 0 [0, 1, 7, 4, 6] 0 1 4 6⟩ + ], + [ + ⟨227, 5836754177514012672, .sharedThree 5 7 0 4 6⟩, + ⟨483, 7037187950379032, .k4 0 [0, 4, 6] 0 3 4 6⟩, + ⟨739, 5807391722983915520, .k4 3 [3, 6, 7] 3 4 6 7⟩, + ⟨995, 1407374887896326, .k4 0 [0, 1, 2, 6] 0 1 2 6⟩, + ⟨1507, 22179213803548, .k4 0 [0, 2, 5, 4] 0 2 3 4⟩, + ⟨2019, 38843549047343104, .k4 1 [1, 3, 6, 2] 2 3 6 7⟩, + ⟨6115, 27629524823070, .k4 0 [0, 2, 4, 1, 5] 0 1 3 5⟩, + ], + [ + ⟨228, 7061644215723360256, .sharedThree 2 7 1 5 6⟩, + ⟨484, 9362341510537472, .k4 1 [1, 5, 6] 0 1 5 6⟩, + ⟨996, 1407374887960838, .k4 0 [0, 1, 2, 6] 0 1 2 6⟩, + ⟨1508, 22183508705308, .k4 0 [0, 4, 5, 2] 0 2 3 4⟩, + ⟨2788, 23231478309910, .k4 0 [0, 2, 4, 1, 5] 0 1 2 5⟩, + ⟨6884, 10224358634037526, .k4 0 [0, 1, 5, 6, 2] 0 2 4 5⟩, + ⟨8676, 2882519267964773642, .k4 0 [0, 1, 3, 2, 7, 5] 1 2 5 6⟩ + ], + [ + ⟨229, 7061644217361104896, .sharedThree 3 7 1 5 6⟩, + ⟨997, 1407374887961606, .k4 0 [0, 2, 1, 6] 0 1 2 6⟩, + ⟨3813, 13584887067975954, .k4 0 [0, 1, 5, 6, 4] 0 1 4 5⟩, + ⟨4325, 5227069485072015360, .k4 1 [1, 6, 7, 3, 5] 1 3 5 6⟩, + ⟨9957, 4800911982455849238, .k4 0 [0, 1, 4, 7, 6, 5, 2] 0 1 2 4⟩ + ], + [ + ⟨230, 7061644636623732736, .sharedThree 4 7 1 5 6⟩, + ⟨998, 1407375978856460, .k4 0 [0, 2, 3, 6] 0 2 3 6⟩, + ⟨4582, 74766847405068, .k4 0 [0, 2, 3, 5, 1] 1 2 5 6⟩, + ⟨8422, 12384938974405906, .k4 0 [0, 1, 4, 2, 3, 6] 1 2 5 6⟩, + ⟨10982, 5809715571966682382, .k4 0 [0, 1, 2, 3, 4, 7, 6, 5] 0 1 2 5⟩ + ], + [ + ⟨231, 7205759403792819200, .sharedThree 1 7 2 5 6⟩, + ⟨743, 5908723544333795328, .k4 1 [1, 7, 4] 1 4 6 7⟩, + ⟨1511, 23089831739420, .k4 0 [0, 3, 2, 5] 0 2 4 5⟩, + ⟨2791, 23231480341526, .k4 0 [0, 4, 5, 2, 1] 0 1 2 5⟩, + ⟨4071, 1310636148279795712, .k4 1 [1, 7, 4, 5, 6] 1 4 5 6⟩, + ⟨4327, 5228776099688742912, .k4 3 [3, 4, 7, 5, 6] 3 4 5 6⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets28 : Array (List HardEntry) := #[ + [ + ⟨736, 5997049396192830750, .residual 712033508203476⟩, + ⟨992, 3714296387598904350, .residual 1836423914256852⟩, + ⟨1248, 5420526108164582430, .residual 4411674705290508⟩, + ⟨5600, 8688942511618187550, .residual 340011981866480⟩ + ], + [ + ⟨737, 6427699539260171550, .residual 2218913724493875⟩, + ⟨993, 7181504760096844830, .residual 3302014003546500⟩, + ⟨1249, 5993052807863823390, .residual 4240219047359687⟩, + ⟨5601, 8373204691001729310, .residual 332317275857392⟩ + ], + [ + ⟨738, 3723449702902621470, .residual 712048544259028⟩, + ⟨994, 2858049375519206430, .residual 3361692603540993⟩, + ⟨1250, 5418843855374085150, .residual 988043092366290⟩, + ⟨5602, 8230703860873355550, .residual 3300089858189832⟩ + ], + [ + ⟨739, 4154099845969962270, .residual 2218928760549427⟩, + ⟨995, 3149291443405286430, .residual 2702633194729776⟩, + ⟨1251, 5132295749192739870, .residual 1985458739798690⟩, + ⟨5603, 8229582359013024030, .residual 3300089858189833⟩ + ], + [ + ⟨740, 5420597722209281310, .residual 711896337513428⟩, + ⟨996, 2851856819445918750, .residual 4346975314200066⟩, + ⟨1252, 6463392430482877470, .residual 348930032675952⟩, + ⟨5604, 8401831412735074590, .residual 3917860810886402⟩ + ], + [ + ⟨741, 6425447996138415390, .residual 2773067585007667⟩, + ⟨997, 3714296126629309470, .residual 2122159506911923⟩, + ⟨1253, 4158110309638302750, .residual 4347907321983241⟩, + ⟨5605, 4149307735173423390, .residual 1549863436361298⟩ + ], + [ + ⟨742, 3149240895737652510, .residual 711911373568980⟩, + ⟨998, 3140070685995002910, .residual 3323205934277266⟩, + ⟨1254, 3725771342480501790, .residual 4347907321983240⟩, + ⟨5606, 3862203258928554270, .residual 3303381950818444⟩ + ], + [ + ⟨743, 4154091169666786590, .residual 2773082621063219⟩, + ⟨999, 2851840327023160350, .residual 4346855055058439⟩, + ⟨1255, 3870935739527162910, .residual 333533078752496⟩, + ⟨5607, 4147064731452760350, .residual 3105559389562567⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData29.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData29.lean new file mode 100644 index 00000000..edffbde3 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData29.lean @@ -0,0 +1,127 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 232–239 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets29 : Array (List PatternEntry) := #[ + [ + ⟨488, 9570149214610432, .k4 1 [1, 2, 6] 1 2 5 6⟩, + ⟨744, 5945315291306131456, .k4 4 [4, 7, 6] 1 4 6 7⟩, + ⟨1768, 5629787302395926, .k4 0 [0, 4, 6, 2] 0 1 2 4⟩, + ⟨4072, 1310636285718749184, .k4 1 [1, 7, 4, 6, 5] 1 4 5 6⟩, + ⟨4328, 5228960684246564888, .k4 0 [0, 3, 4, 7, 6] 0 3 4 6⟩, + ⟨10984, 5809716671493514510, .k4 0 [0, 1, 2, 5, 6, 7, 4, 3] 0 1 2 3⟩ + ], + [ + ⟨489, 9570150852356096, .k4 1 [1, 3, 6] 1 3 5 6⟩, + ⟨2025, 39406498983510028, .k4 0 [0, 2, 3, 6] 2 3 6 7⟩ + ], + [ + ⟨234, 7493989779944531968, .sharedThree 1 7 3 5 6⟩, + ⟨746, 6052838191257354240, .k4 2 [2, 4, 7] 2 4 6 7⟩, + ⟨1002, 1407654061735956, .k4 0 [0, 2, 4, 6] 0 2 4 6⟩, + ⟨1514, 23231478113558, .k4 0 [0, 1, 4, 5] 0 1 2 5⟩, + ⟨4330, 5231010547297681408, .k4 3 [3, 5, 7, 6, 4] 3 4 5 6⟩ + ], + [ + ⟨747, 6052838723833298944, .k4 2 [2, 7, 4] 2 4 6 7⟩, + ⟨1003, 1407666946637844, .k4 0 [0, 2, 4, 6] 0 2 4 6⟩, + ⟨1771, 5629808777691164, .k4 0 [0, 2, 6, 4] 0 2 3 4⟩, + ⟨4331, 5233756715295467520, .k4 1 [1, 5, 6, 7, 3] 1 3 5 6⟩, + ⟨7403, 2594216321969368078, .k4 0 [0, 2, 3, 7, 5, 1] 0 1 2 3⟩, + ], + [ + ⟨748, 6052838741004779520, .k4 2 [2, 4, 7] 2 4 6 7⟩, + ⟨1260, 10216663658528768, .k4 2 [2, 5, 3, 6] 2 3 5 6⟩, + ⟨2284, 5233182770796193792, .k4 1 [1, 3, 7, 6] 1 3 5 6⟩, + ⟨4332, 5234321864278933504, .k4 2 [2, 5, 6, 7, 3] 2 3 5 6⟩, + ⟨8684, 3458908004383534110, .k4 0 [0, 2, 4, 7, 5, 1] 0 1 2 3⟩, + ⟨9964, 4800916368251912462, .k4 0 [0, 1, 2, 7, 6, 5, 3] 0 1 2 3⟩ + ], + [ + ⟨749, 6052838741012119552, .k4 2 [2, 7, 4] 2 4 6 7⟩, + ⟨1773, 5629825956511772, .k4 0 [0, 2, 6, 4] 0 2 3 4⟩, + ⟨4333, 5235507137270016000, .k4 1 [1, 5, 6, 7, 3] 1 3 5 6⟩, + ⟨8685, 3458908004466830366, .k4 0 [0, 3, 4, 7, 5, 1] 0 1 2 3⟩ + ], + [ + ⟨238, 8070450532255268864, .sharedThree 2 7 4 5 6⟩, + ⟨494, 9854922719781120, .k4 1 [1, 5, 6] 0 1 5 6⟩, + ⟨750, 6089993437925343232, .k4 4 [4, 7, 6] 2 4 6 7⟩, + ⟨1774, 5629830251413532, .k4 0 [0, 4, 6, 2] 0 2 3 4⟩, + ⟨9966, 4800916381337944346, .k4 0 [0, 1, 4, 7, 6, 5, 3] 0 1 3 4⟩ + ], + [ + ⟨239, 8070450534126977024, .sharedThree 3 7 4 5 6⟩, + ⟨495, 9923092440703232, .k4 1 [1, 6, 5] 0 1 5 6⟩, + ⟨751, 6093370295845912576, .k4 2 [2, 7, 6] 2 4 6 7⟩, + ⟨1007, 1688850972298240, .k4 1 [1, 3, 6, 2] 1 2 3 6⟩, + ⟨1519, 23279007957020, .k4 0 [0, 3, 4, 5] 0 2 4 5⟩, + ⟨2287, 5233745720716060672, .k4 1 [1, 6, 7, 3] 1 3 5 6⟩, + ⟨4335, 5235522977109377024, .k4 3 [3, 7, 6, 5, 4] 3 4 5 6⟩, + ⟨4847, 149534145750028, .k4 0 [0, 2, 3, 1, 5] 1 2 5 7⟩, + ⟨6127, 74768420400140, .k4 0 [0, 2, 3, 1, 5] 1 3 5 6⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets29 : Array (List HardEntry) := #[ + [ + ⟨744, 7689008565333484830, .residual 3362519384732035⟩, + ⟨1000, 6172702974236912670, .residual 739416805833664⟩, + ⟨1256, 4158101496566737950, .residual 1561370693492400⟩, + ⟨5608, 3285751302718152990, .residual 2182920559717970⟩ + ], + [ + ⟨745, 5446497559543768350, .residual 158131447544564⟩, + ⟨1001, 3871065734438415390, .residual 739418688551872⟩, + ⟨1257, 3140514888198220830, .residual 815713717961634⟩, + ⟨5609, 3858838753347559710, .residual 2605289118851666⟩ + ], + [ + ⟨746, 8263217235462677790, .residual 3362504352289155⟩, + ⟨1002, 5159386478491560990, .residual 174712139397489⟩, + ⟨1258, 3148677529412398110, .residual 3302014003546498⟩, + ⟨5610, 6428199515367072030, .residual 4161283991128770⟩ + ], + [ + ⟨747, 6020706229672961310, .residual 158116415101684⟩, + ⟨1003, 5168043070975994910, .residual 1140736403799778⟩, + ⟨1259, 4148742861646556190, .residual 2747106658840658⟩, + ⟨5611, 6141095039122202910, .residual 2912165811693381⟩ + ], + [ + ⟨748, 5446497533774357790, .residual 158131447544561⟩, + ⟨1004, 5445930199528074270, .residual 782651904673744⟩, + ⟨1260, 3718086147279252510, .residual 4240235966133447⟩, + ⟨5612, 6425956511646408990, .residual 2297906932433509⟩ + ], + [ + ⟨749, 8697231858341602590, .hubPentagon 0 [0, 1, 2, 3, 4, 5, 6, 7] 1 0 2 5 6 4⟩, + ⟨1005, 5159377661141806110, .residual 307643554354420⟩, + ⟨1261, 3141634191068851230, .residual 917676477322194⟩, + ⟨5613, 5564643082911801630, .residual 3105903200847554⟩ + ], + [ + ⟨750, 6455283802471752990, .residual 2471465258043600⟩, + ⟨1006, 5159377652585425950, .residual 307643554354417⟩, + ⟨1262, 3714160890768092190, .residual 2113500852842962⟩, + ⟨5614, 6137730533541208350, .residual 3528272008854210⟩ + ], + [ + ⟨751, 7680143312584008990, .residual 1166830687567330⟩, + ⟨1007, 5452051305548835870, .residual 2437683589634610⟩, + ⟨1263, 3139951938278353950, .residual 4350102050465036⟩, + ⟨5615, 3862196687628591390, .residual 1996449391768610⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData30.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData30.lean new file mode 100644 index 00000000..edd0ea68 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData30.lean @@ -0,0 +1,133 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 240–247 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets30 : Array (List PatternEntry) := #[ + [ + ⟨240, 593166, .k4 0 [0, 1, 2] 0 1 2 3⟩, + ⟨752, 6341068588064964608, .k4 3 [3, 4, 7] 3 4 6 7⟩, + ⟨1776, 5910974516299030, .k4 0 [0, 1, 2, 6] 0 2 4 6⟩, + ⟨4080, 1441152447988432924, .k4 0 [0, 2, 3, 7, 4] 0 2 3 4⟩, + ⟨5104, 5066828754275358, .k4 0 [0, 2, 4, 6, 1] 0 1 2 3⟩ + ], + [ + ⟨241, 658702, .k4 0 [0, 1, 2] 0 1 2 3⟩, + ⟨753, 6341069103461040128, .k4 3 [3, 7, 4] 3 4 6 7⟩, + ⟨1009, 1688851001789440, .k4 1 [1, 2, 6, 3] 1 2 3 6⟩, + ⟨1521, 26539441782810, .k4 0 [0, 4, 5, 3] 0 1 3 4⟩, + ⟨1777, 5910974600577052, .k4 0 [0, 3, 2, 6] 0 2 4 6⟩, + ⟨5105, 5066828754340894, .k4 0 [0, 4, 6, 1, 2] 0 1 2 3⟩, + ⟨9969, 4800925326916157718, .k4 0 [0, 1, 2, 7, 6, 5, 4] 0 1 2 4⟩ + ], + [ + ⟨498, 10133099168031744, .k4 1 [1, 2, 6] 1 2 5 6⟩, + ⟨754, 6341069135673294848, .k4 3 [3, 4, 7] 3 4 6 7⟩, + ⟨2546, 9896175283214, .k4 0 [0, 2, 1, 3, 5] 0 1 3 5⟩, + ⟨4082, 1441152464967958556, .k4 0 [0, 3, 2, 7, 4] 0 2 3 4⟩, + ⟨8178, 9658251872914462, .k4 0 [0, 2, 4, 5, 6, 1] 0 1 2 3⟩ + ], + [ + ⟨243, 723982, .k4 0 [0, 2, 1] 0 1 2 3⟩, + ⟨755, 6341069137552343040, .k4 3 [3, 7, 4] 3 4 6 7⟩, + ⟨1779, 5911253683815702, .k4 0 [0, 1, 4, 6] 0 1 2 6⟩, + ⟨2291, 5237686817066582016, .k4 3 [3, 7, 6, 4] 3 4 5 6⟩, + ⟨3315, 9361242003170566, .k4 0 [0, 1, 2, 5, 6] 0 1 2 6⟩, + ⟨5107, 5066828837571614, .k4 0 [0, 3, 4, 6, 1] 0 1 2 3⟩, + ⟨9971, 4800925344146161946, .k4 0 [0, 1, 3, 7, 6, 5, 4] 0 1 3 4⟩ + ], + [ + ⟨756, 6379349731163766784, .k4 4 [4, 7, 6] 3 4 6 7⟩, + ⟨1268, 10225870458322944, .k4 2 [2, 5, 4, 6] 2 4 5 6⟩, + ⟨1524, 26569254895642, .k4 0 [0, 3, 5, 4] 0 1 3 4⟩, + ⟨2292, 5237783127144792064, .k4 3 [3, 7, 6, 5] 3 4 5 6⟩, + ⟨5108, 5066828854348830, .k4 0 [0, 4, 6, 1, 3] 0 1 2 3⟩, + ⟨8692, 3458913532291064846, .k4 0 [0, 3, 4, 7, 5, 1] 0 1 2 5⟩ + ], + [ + ⟨501, 10210064975553536, .k4 1 [1, 5, 6] 1 2 5 6⟩, + ⟨757, 6381600675473653760, .k4 3 [3, 7, 6] 3 4 6 7⟩, + ⟨1525, 26573533085722, .k4 0 [0, 4, 5, 3] 0 1 3 4⟩, + ⟨2293, 5271957047779262464, .k4 3 [3, 6, 7, 5] 0 5 6 7⟩, + ], + [ + ⟨502, 10216663723016192, .k4 3 [3, 5, 6] 2 3 5 6⟩, + ⟨758, 6999087501654622208, .k4 5 [5, 6, 7] 0 5 6 7⟩, + ⟨2038, 41095909240520978, .k4 0 [0, 1, 4, 6] 1 4 6 7⟩, + ⟨2294, 5305672471796514816, .k4 3 [3, 5, 7, 6] 0 5 6 7⟩, + ⟨4342, 5802985736688893952, .k4 3 [3, 4, 5, 7, 6] 3 4 5 6⟩ + ], + [ + ⟨503, 10225887635046400, .k4 4 [4, 5, 6] 2 4 5 6⟩, + ⟨759, 7026109099418845184, .k4 5 [5, 7, 6] 0 5 6 7⟩, + ⟨1527, 26582156574748, .k4 0 [0, 4, 5, 3] 0 2 3 4⟩, + ⟨1783, 5911301213650972, .k4 0 [0, 3, 4, 6] 0 2 4 6⟩, + ⟨8439, 13583645823020062, .k4 0 [0, 2, 4, 6, 5, 1] 0 1 2 3⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets30 : Array (List HardEntry) := #[ + [ + ⟨752, 4147201482135594270, .residual 1252425101647666⟩, + ⟨1008, 5163820946576993310, .residual 4346855055058437⟩, + ⟨1264, 6427634641840204830, .residual 2903612388423490⟩, + ⟨5616, 3718088070886252830, .residual 1379490129108002⟩ + ], + [ + ⟨753, 8230831648747971870, .residual 3746621203614352⟩, + ⟨1009, 2851861217024240670, .residual 1141835661672162⟩, + ⟨1265, 5996977927472901150, .residual 2316458848637029⟩, + ⟨5617, 8227330533664416030, .residual 1077587367712688⟩ + ], + [ + ⟨754, 8661485077465294110, .hubPentagon 0 [0, 1, 3, 4, 2, 5, 6, 7] 0 1 2 3 4 6⟩, + ⟨1010, 2860517809508674590, .residual 173612881525105⟩, + ⟨1266, 5420525971262499870, .residual 3607387453904194⟩, + ⟨5618, 6461703848537022750, .residual 4411539413806338⟩ + ], + [ + ⟨755, 3714723978626622750, .residual 712048544259025⟩, + ⟨1011, 3149304534265850910, .residual 782514723145680⟩, + ⟨1267, 5993052670961740830, .residual 4240459566044354⟩, + ⟨5619, 7825380016833880350, .residual 3918958175202562⟩ + ], + [ + ⟨756, 8694980340888986910, .hubPentagon 0 [0, 1, 2, 3, 4, 5, 6, 7] 1 0 2 5 6 3⟩, + ⟨1012, 2858265988438256670, .residual 307506372826356⟩, + ⟨1268, 5418843718472002590, .residual 4108415090800837⟩, + ⟨5364, 6168179608612757790, .residual 943464467575728⟩, + ⟨5620, 5600379407741149470, .residual 278422507013616⟩ + ], + [ + ⟨757, 6453032276462757150, .residual 1978884048742608⟩, + ⟨1013, 3140075083573324830, .residual 2446477549853234⟩, + ⟨1269, 2851721579306511390, .residual 1986420816143010⟩, + ⟨5365, 6455283811053461790, .residual 943466375984048⟩, + ⟨5621, 8686682433507221790, .residual 269643505780208⟩ + ], + [ + ⟨758, 6020706229438997790, .residual 158116415101681⟩, + ⟨1014, 2851844724601482270, .residual 4408427709883909⟩, + ⟨1270, 6032720999124986910, .residual 1489957486108339⟩, + ⟨5366, 6173477856109912350, .residual 4411674705290498⟩, + ⟨5622, 3867071920391512350, .residual 1006138292344752⟩ + ], + [ + ⟨759, 8254352418954896670, .residual 1158036741799394⟩, + ⟨1015, 2858265979881876510, .residual 307506372826353⟩, + ⟨1271, 3713174639592238110, .residual 1560309065096883⟩, + ⟨5367, 7824258500651639070, .residual 3919093466686722⟩, + ⟨5623, 4155289076868768030, .residual 3361797830289928⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageData31.lean b/LeanPool/Erdos97ConvexOctagon/CoverageData31.lean new file mode 100644 index 00000000..0aa7caae --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageData31.lean @@ -0,0 +1,147 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageDataTypes + +/-! # Coverage certificate data, buckets 248–255 -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Generated monotone-obstruction entries for this hash-bucket group. -/ +def patternBuckets31 : Array (List PatternEntry) := #[ + [ + ⟨248, 51052558, .k4 0 [0, 2, 3] 0 1 2 3⟩, + ⟨760, 7034975561185230848, .k4 5 [5, 6, 7] 0 5 6 7⟩, + ⟨4088, 1441171276841418772, .k4 0 [0, 2, 7, 4, 5] 0 2 4 5⟩, + ⟨4344, 5803170454122266648, .k4 0 [0, 3, 4, 7, 6] 0 3 4 6⟩ + ], + [ + ⟨249, 83889422, .k4 0 [0, 1, 3] 0 1 2 3⟩, + ⟨761, 7035045929929408512, .k4 5 [5, 7, 6] 0 5 6 7⟩, + ⟨1529, 27488347553820, .k4 0 [0, 2, 3, 5] 0 2 4 5⟩, + ⟨1785, 6755688579596314, .k4 0 [0, 4, 6, 3] 0 1 3 4⟩, + ⟨2297, 5372795191126130688, .k4 3 [3, 7, 6, 4] 1 3 4 7⟩ + ], + [ + ⟨250, 100666638, .k4 0 [0, 1, 3] 0 1 2 3⟩, + ⟨762, 7061716783484428288, .k4 1 [1, 5, 7] 1 5 6 7⟩, + ⟨1018, 1761417629950976, .k4 1 [1, 2, 5, 6] 1 2 5 6⟩, + ⟨1274, 10770815910028288, .k4 1 [1, 2, 6, 5] 1 2 5 6⟩, + ⟨1786, 6755692924895260, .k4 0 [0, 3, 6, 4] 0 2 3 4⟩, + ⟨2042, 41658850617655316, .k4 0 [0, 2, 4, 6] 2 4 6 7⟩, + ⟨2554, 9896211456262, .k4 0 [0, 1, 2, 3, 5] 0 1 2 5⟩, + ⟨2810, 26535130040602, .k4 0 [0, 1, 3, 5, 4] 0 1 3 4⟩, + ⟨3578, 10221481002951680, .k4 1 [1, 2, 6, 5, 4] 1 4 5 6⟩, + ⟨5882, 11008556016670, .k4 0 [0, 3, 4, 5, 1, 2] 0 1 2 4⟩, + ⟨7418, 2882446700193590286, .k4 0 [0, 2, 3, 7, 5, 1] 0 1 2 3⟩, + ⟨8442, 13583645906316318, .k4 0 [0, 3, 4, 6, 5, 1] 0 1 2 3⟩, + ⟨10746, 5809716641126755358, .k4 0 [0, 2, 4, 7, 6, 5, 1] 0 1 2 3⟩ + ], + [ + ⟨251, 101384206, .k4 0 [0, 2, 3] 0 1 2 3⟩, + ⟨763, 7071214364925157376, .k4 1 [1, 6, 7] 1 5 6 7⟩, + ⟨1019, 1761417634014208, .k4 1 [1, 5, 6, 2] 1 2 5 6⟩, + ⟨1531, 27488663699484, .k4 0 [0, 2, 3, 5] 0 3 4 5⟩, + ⟨2043, 41658867796475924, .k4 0 [0, 2, 4, 6] 2 4 6 7⟩, + ⟨5115, 5066875999895838, .k4 0 [0, 1, 6, 4, 2] 0 2 3 4⟩, + ⟨6907, 10696050746731786, .k4 0 [0, 1, 3, 2, 6] 1 3 5 6⟩ + ], + [ + ⟨252, 117441806, .k4 0 [0, 1, 3] 0 1 2 3⟩, + ⟨508, 10696049117258752, .k4 1 [1, 2, 6] 1 2 5 6⟩, + ⟨764, 7205834170598162432, .k4 2 [2, 5, 7] 2 5 6 7⟩, + ⟨1020, 1761417634128896, .k4 1 [1, 2, 5, 6] 1 2 5 6⟩, + ⟨1276, 11269995292026880, .k4 1 [1, 3, 5, 6] 1 3 5 6⟩, + ⟨1788, 6755718392709146, .k4 0 [0, 3, 6, 4] 0 1 3 4⟩, + ⟨2044, 41659125491367956, .k4 0 [0, 2, 4, 6] 2 4 6 7⟩, + ⟨6652, 6768896143654912, .k4 2 [2, 5, 3, 6, 4] 1 2 3 4⟩, + ⟨8188, 9658299117551902, .k4 0 [0, 1, 2, 6, 5, 4] 0 2 3 4⟩, + ⟨8700, 3458980572154717458, .k4 0 [0, 1, 4, 2, 7, 5] 1 2 5 6⟩ + ], + [ + ⟨253, 117443598, .k4 0 [0, 3, 1] 0 1 2 3⟩, + ⟨509, 10696049121321984, .k4 1 [1, 6, 2] 1 2 5 6⟩, + ⟨2045, 41659142670188564, .k4 0 [0, 2, 4, 6] 2 4 6 7⟩, + ⟨6653, 6768913122721792, .k4 2 [2, 5, 3, 6, 4] 1 2 3 4⟩, + ], + [ + ⟨254, 117637134, .k4 0 [0, 2, 3] 0 1 2 3⟩, + ⟨510, 10696049121436672, .k4 1 [1, 2, 6] 1 2 5 6⟩, + ⟨766, 7494068948539801600, .k4 3 [3, 5, 7] 3 5 6 7⟩, + ⟨1022, 1763616653206528, .k4 1 [1, 2, 6, 5] 1 2 5 6⟩, + ⟨2046, 42784754017239064, .k4 0 [0, 3, 4, 6] 3 4 6 7⟩, + ⟨4094, 1445937797188878356, .k4 0 [0, 2, 7, 4, 6] 0 2 4 6⟩, + ], + [ + ⟨255, 118095886, .k4 0 [0, 3, 2] 0 1 2 3⟩, + ⟨511, 10696049121452032, .k4 1 [1, 6, 2] 1 2 5 6⟩, + ⟨1279, 11269995828895744, .k4 1 [1, 5, 3, 6] 1 3 5 6⟩, + ⟨1791, 6755731294388252, .k4 0 [0, 4, 6, 3] 0 2 3 4⟩, + ⟨2047, 42784788108541976, .k4 0 [0, 3, 4, 6] 3 4 6 7⟩ + ] +] + +/-- Generated exact-table entries for this hash-bucket group. -/ +def hardBuckets31 : Array (List HardEntry) := #[ + [ + ⟨760, 4149444092129076510, .residual 1253507433520946⟩, + ⟨1016, 6459803068812979230, .residual 809648111079360⟩, + ⟨1272, 6166509996778613790, .residual 3916658220028288⟩, + ⟨5368, 5599269331305488670, .residual 4410712632558850⟩, + ⟨5624, 3290611142553166110, .residual 3361797830289929⟩ + ], + [ + ⟨761, 7654379448547042590, .residual 3746484032924304⟩, + ⟨1017, 4158165829014481950, .residual 809649993797568⟩, + ⟨1273, 6164258179986385950, .residual 2317466015335520⟩, + ⟨5369, 6453032276488085790, .residual 952245289309104⟩, + ⟨5625, 7794492519778279710, .residual 261950678876656⟩ + ], + [ + ⟨762, 3140515171461653790, .residual 711911373568977⟩, + ⟨1018, 5420581203999943710, .residual 3271614728478994⟩, + ⟨1274, 6163132297259412510, .residual 3581804281346598⟩, + ⟨5370, 8398467607022526750, .residual 3918131393955074⟩, + ⟨5626, 3294477184635429150, .residual 3301172189950210⟩ + ], + [ + ⟨763, 8659233020960728350, .hubPentagon 0 [0, 1, 3, 4, 2, 5, 6, 7] 0 1 2 4 3 6⟩, + ⟨1019, 3145018745552071710, .residual 3764195941392658⟩, + ⟨1275, 5420594007302630430, .residual 3794715475545351⟩, + ⟨5371, 5591718573949313310, .residual 952243380900784⟩, + ⟨5627, 4149308025956655390, .residual 3035328084166343⟩ + ], + [ + ⟨764, 7678023588938016030, .residual 4409615268393217⟩, + ⟨1020, 8190590077489474590, .residual 3300119923025414⟩, + ⟨1276, 3714161023375272990, .residual 2317466015335521⟩, + ⟨5372, 6164801900303212830, .residual 4408547969025545⟩, + ⟨5628, 3862203549711786270, .residual 2745870245105234⟩ + ], + [ + ⟨765, 5446484326750905630, .residual 113169553246065⟩, + ⟨1021, 8192689607827614750, .residual 1338878243561043⟩, + ⟨1277, 5420526103869680670, .residual 347261441049714⟩, + ⟨5373, 5590592947813474590, .residual 4408547969025544⟩, + ⟨5629, 4147065022235992350, .residual 1549726265671250⟩ + ], + [ + ⟨766, 3138398451255502110, .residual 596611038423010⟩, + ⟨1022, 8189173906731002910, .residual 307643554354419⟩, + ⟨1278, 3871005833376721950, .residual 3362504352289152⟩, + ⟨5374, 6173458492787646750, .residual 208057789389296⟩, + ⟨5630, 3285751593501384990, .residual 3302419878086796⟩ + ], + [ + ⟨767, 3138395165605520670, .residual 4410727664945285⟩, + ⟨1023, 8192832944308055070, .residual 3792701135939078⟩, + ⟨1279, 3870997020305157150, .residual 2317586278089824⟩, + ⟨5375, 6164801626499047710, .residual 3915966730421768⟩, + ⟨5631, 3284630091641053470, .residual 2042476604154450⟩ + ] +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageDataTypes.lean b/LeanPool/Erdos97ConvexOctagon/CoverageDataTypes.lean new file mode 100644 index 00000000..c740f967 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageDataTypes.lean @@ -0,0 +1,51 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.Certificates + +/-! # Erdős 97 convex-octagon formalization: Coverage Data Types -/ + +namespace Erdos97Octagon.RawIncidence + +/-- A monotone obstruction pattern paired with its checked witness. -/ +structure PatternEntry where + /-- Identifier of the source classifier record. -/ + origin : ℕ + /-- Packed incidences required by this monotone obstruction. -/ + mask : UInt64 + /-- The obstruction witness attached to the mask. -/ + certificate : PrefixCertificate + +/-- An exact complete table paired with its checked witness. -/ +structure HardEntry where + /-- Identifier of the source classifier record. -/ + origin : ℕ + /-- Packed code for the complete incidence table. -/ + code : UInt64 + /-- The obstruction witness attached to the exact table. -/ + certificate : Certificate + +/-- Validate a pattern witness against precisely its required incidences. -/ +def PatternEntry.validB (entry : PatternEntry) : Bool := + entry.certificate.toCertificate.validB (packedIncidence entry.mask) + +/-- Validate an exact-table witness against its decoded incidence table. -/ +def HardEntry.validB (entry : HardEntry) : Bool := + entry.certificate.validB (packedIncidence entry.code) + +/-- A successful pattern audit supplies its mathematical witness. -/ +theorem PatternEntry.valid_of_validB + {entry : PatternEntry} (hvalid : entry.validB = true) : + entry.certificate.toCertificate.Valid (packedIncidence entry.mask) := + Certificate.valid_of_validB hvalid + +/-- A successful exact-table audit supplies its mathematical witness. -/ +theorem HardEntry.valid_of_validB + {entry : HardEntry} (hvalid : entry.validB = true) : + entry.certificate.Valid (packedIncidence entry.code) := + Certificate.valid_of_validB hvalid + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/CoverageFormula.lean b/LeanPool/Erdos97ConvexOctagon/CoverageFormula.lean new file mode 100644 index 00000000..57ebf777 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CoverageFormula.lean @@ -0,0 +1,512 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageData +import LeanPool.Erdos97ConvexOctagon.LRAT.Semantics + +/-! +# Exhaustive coverage formula + +This module gives mathematical meaning to every clause identifier used by the +checked LRAT certificates. The formula describes normalized balanced +four-out incidence tables, pair sparsity, and the audited geometric +obstructions. +-/ + +namespace Erdos97Octagon + +open LRAT + +namespace RawIncidence + +/-- Decode an eight-bit row mask as a set of octagon vertices. -/ +def packedRow (mask : UInt64) : Finset Vertex := + Finset.univ.filter fun target => bitSetB mask target.val + +@[simp] theorem mem_packedRow (mask : UInt64) (target : Vertex) : + target ∈ packedRow mask ↔ bitSetB mask target.val = true := by + simp [packedRow] + +/-- Five-, two-, and three-subsets in the lexicographic order used by the generator. -/ +def fiveSubsets : List (List Vertex) := + ((List.finRange 8).sublistsLen 5).reverse + +/-- Vertex pairs in the lexicographic order used by the generator. -/ +def vertexPairs : List (List Vertex) := + ((List.finRange 8).sublistsLen 2).reverse + +/-- Vertex triples in the lexicographic order used by the generator. -/ +def vertexTriples : List (List Vertex) := + ((List.finRange 8).sublistsLen 3).reverse + +private def pairAt (index : ℕ) : Vertex × Vertex := + match vertexPairs.getD index [] with + | [a, b] => (a, b) + | _ => (0, 0) + +/-- Semantic tags for clauses shared by every branch certificate. -/ +inductive BaseClauseTag where + | diagonal (vertex : Vertex) + | normalized (target : Vertex) + | rowAtMost (centre : Vertex) (subset : List Vertex) + | rowAtLeast (centre : Vertex) (subset : List Vertex) + | columnAtMost (target : Vertex) (centres : List Vertex) + | columnAtLeast (target : Vertex) (centres : List Vertex) + | pairSparse (a b : Vertex) (centres : List Vertex) + | pattern (origin : ℕ) + | hard (origin : ℕ) + +/-- A shared clause or one of the sixteen row-fixing clauses for a branch. -/ +inductive ClauseTag where + | base (tag : BaseClauseTag) + | branchOne (target : Vertex) (selected : Bool) + | branchTwo (target : Vertex) (selected : Bool) + +private def patternMask (origin : ℕ) : UInt64 := + match patternEntry origin with + | some entry => entry.mask + | none => 0 + +private def hardCode (origin : ℕ) : UInt64 := + match hardEntry origin with + | some entry => entry.code + | none => 0 + +private def unitClause (centre target : Vertex) (selected : Bool) : Clause := + [if selected then .positive (varIndex centre target) else .negative (varIndex centre target)] + +/-- The literal list represented by a shared semantic clause tag. -/ +def BaseClauseTag.toClause : BaseClauseTag → Clause + | .diagonal vertex => [.negative (varIndex vertex vertex)] + | .normalized target => unitClause 0 target (bitSetB 30 target.val) + | .rowAtMost centre subset => subset.map fun target => .negative (varIndex centre target) + | .rowAtLeast centre subset => subset.map fun target => .positive (varIndex centre target) + | .columnAtMost target centres => centres.map fun centre => .negative (varIndex centre target) + | .columnAtLeast target centres => centres.map fun centre => .positive (varIndex centre target) + | .pairSparse a b centres => centres.flatMap fun centre => + [.negative (varIndex centre a), .negative (varIndex centre b)] + | .pattern origin => + ((List.range 64).filter fun index => bitSetB (patternMask origin) index).map .negative + | .hard origin => (List.range 64).map fun index => + if bitSetB (hardCode origin) index then .negative index else .positive index + +/-- The literal list represented by any semantic clause tag. -/ +def ClauseTag.toClause : ClauseTag → Clause + | .base tag => tag.toClause + | .branchOne target selected => unitClause 1 target selected + | .branchTwo target selected => unitClause 2 target selected + +/-- Structural and lookup conditions needed for a shared tag to be meaningful. -/ +def BaseClauseTag.Valid : BaseClauseTag → Prop + | .rowAtMost _ subset | .rowAtLeast _ subset | + .columnAtMost _ subset | .columnAtLeast _ subset => + subset.Nodup ∧ subset.length = 5 + | .pairSparse a b centres => a ≠ b ∧ centres.Nodup ∧ centres.length = 3 + | .pattern origin => + match patternEntry origin with + | some entry => entry.validB = true + | none => False + | .hard origin => + match hardEntry origin with + | some entry => entry.validB = true + | none => False + | _ => True + +/-- Structural and lookup conditions needed for any tag to be meaningful. -/ +def ClauseTag.Valid : ClauseTag → Prop + | .base tag => tag.Valid + | _ => True + +/-- The two branch-unit tags agree with the two rows fixed for this SAT branch. -/ +def ClauseTag.BranchValid (Q : OctagonIncidence) : ClauseTag → Prop + | .branchOne target selected => selected = true ↔ target ∈ Q.targets 1 + | .branchTwo target selected => selected = true ↔ target ∈ Q.targets 2 + | _ => True + +/-- Boolean checker for the structural validity of a semantic clause tag. -/ +def ClauseTag.validB : ClauseTag → Bool + | .base (.rowAtMost _ subset) | .base (.rowAtLeast _ subset) | + .base (.columnAtMost _ subset) | .base (.columnAtLeast _ subset) => + decide (subset.Nodup ∧ subset.length = 5) + | .base (.pairSparse a b centres) => + decide (a ≠ b ∧ centres.Nodup ∧ centres.length = 3) + | .base (.pattern origin) => match patternEntry origin with + | some entry => entry.validB + | none => false + | .base (.hard origin) => match hardEntry origin with + | some entry => entry.validB + | none => false + | _ => true + +theorem ClauseTag.valid_of_validB {tag : ClauseTag} (h : tag.validB = true) : tag.Valid := + by + cases tag with + | base tag => + cases tag <;> simp only [ClauseTag.validB, ClauseTag.Valid, + BaseClauseTag.Valid, decide_eq_true_eq] at h ⊢ + all_goals try exact h + all_goals split <;> simp_all + | branchOne | branchTwo => trivial + +private def branchStart : ℕ := 20659 +private def branchEnd : ℕ := branchStart + 16 + +/-- Decode a generator clause identifier. -/ +def tagOfRef (rowOne rowTwo : UInt64) (reference : ℕ) : ClauseTag := + if reference < 8 then + .base (.diagonal (Fin.ofNat 8 reference)) + else if reference < 16 then + .base (.normalized (Fin.ofNat 8 (reference - 8))) + else if reference < 912 then + let offset := reference - 16 + let centre := Fin.ofNat 8 (offset / 112) + let subset := fiveSubsets.getD ((offset % 112) / 2) [] + .base (if offset % 2 = 0 then .rowAtMost centre subset else .rowAtLeast centre subset) + else if reference < 1808 then + let offset := reference - 912 + let target := Fin.ofNat 8 (offset / 112) + let centres := fiveSubsets.getD ((offset % 112) / 2) [] + .base (if offset % 2 = 0 then .columnAtMost target centres else .columnAtLeast target centres) + else if reference < 3376 then + let offset := reference - 1808 + let pair := pairAt (offset / 56) + .base (.pairSparse pair.1 pair.2 (vertexTriples.getD (offset % 56) [])) + else if reference < 14419 then + .base (.pattern (reference - 3376)) + else if reference < branchStart then + .base (.hard (reference - 14419)) + else if reference < branchStart + 8 then + let target := Fin.ofNat 8 (reference - branchStart) + .branchOne target (bitSetB rowOne target.val) + else + let target := Fin.ofNat 8 (reference - branchStart - 8) + .branchTwo target (bitSetB rowTwo target.val) + +private theorem tagOfRef_branchValid + (Q : OctagonIncidence) {rowOne rowTwo : UInt64} + (hrowOne : Q.targets 1 = packedRow rowOne) + (hrowTwo : Q.targets 2 = packedRow rowTwo) (reference : ℕ) : + (tagOfRef rowOne rowTwo reference).BranchValid Q := by + unfold tagOfRef + split + · trivial + split + · trivial + split + · trivial + split + · trivial + split + · trivial + split + · trivial + split + · trivial + split + · dsimp only [ClauseTag.BranchValid] + rw [hrowOne, mem_packedRow] + · dsimp only [ClauseTag.BranchValid] + rw [hrowTwo, mem_packedRow] + +/-- A shared-clause reference has no branch-specific semantic condition. -/ +theorem tagOfRef_baseBranchValid + (Q : OctagonIncidence) {reference : ℕ} (hreference : reference < branchStart) : + (tagOfRef 0 0 reference).BranchValid Q := by + unfold tagOfRef + split <;> try trivial + split <;> try trivial + split <;> try trivial + split <;> try trivial + split <;> try trivial + split <;> try trivial + +/-- Check that a clause reference is in range and has an audited semantic payload. -/ +def coveredB (rowOne rowTwo : UInt64) (reference : ℕ) : Bool := + decide (reference < branchEnd) && (tagOfRef rowOne rowTwo reference).validB + +/-- The formula encoded by a branch's ordered list of clause references. -/ +def coverageFormula (rowOne rowTwo : UInt64) (references : List ℕ) : Formula := + references.map fun reference => (tagOfRef rowOne rowTwo reference).toClause + +private theorem satisfies_of_not_all_neg + (valuation : Valuation) (clause : Clause) + (h : ¬ List.Forall valuation.falsifies clause) : + valuation.satisfies clause := by + induction clause with + | nil => simp at h + | cons literal clause ih => + intro hliteral + apply ih + intro hrest + apply h + simpa using And.intro hliteral hrest + +private theorem no_five_inside_card_four + {selected : Finset Vertex} (hcard : selected.card = 4) + {vertices : List Vertex} (hnodup : vertices.Nodup) (hlength : vertices.length = 5) + (hsubset : vertices.toFinset ⊆ selected) : False := by + have hfive : vertices.toFinset.card = 5 := by + rw [List.toFinset_card_of_nodup hnodup, hlength] + have hle := Finset.card_le_card hsubset + rw [hfive, hcard] at hle + omega + +private theorem no_card_four_avoids_five + {selected : Finset Vertex} (hcard : selected.card = 4) + {vertices : List Vertex} (hnodup : vertices.Nodup) (hlength : vertices.length = 5) + (havoid : ∀ vertex ∈ vertices, vertex ∉ selected) : False := by + have hfive : vertices.toFinset.card = 5 := by + rw [List.toFinset_card_of_nodup hnodup, hlength] + have hsubset : selected ⊆ Finset.univ \ vertices.toFinset := by + intro vertex hselected + simp only [Finset.mem_sdiff, Finset.mem_univ, true_and, List.mem_toFinset] + exact fun hvertex => havoid vertex hvertex hselected + have hcomplement : (Finset.univ \ vertices.toFinset).card = 3 := by + rw [Finset.card_sdiff_of_subset (Finset.subset_univ _), Finset.card_univ, + Fintype.card_fin, hfive] + have hle := Finset.card_le_card hsubset + rw [hcard, hcomplement] at hle + omega + +private def predecessors (Q : OctagonIncidence) (target : Vertex) : Finset Vertex := + Finset.univ.filter fun centre => target ∈ Q.targets centre + +private theorem card_predecessors (Q : OctagonIncidence) (target : Vertex) : + (predecessors Q target).card = Q.indegree target := by + unfold predecessors OctagonIncidence.indegree + rw [Finset.sum_boole] + norm_num + +private def jointPredecessors + (Q : OctagonIncidence) (a b : Vertex) : Finset Vertex := + Finset.univ.filter fun centre => a ∈ Q.targets centre ∧ b ∈ Q.targets centre + +private theorem card_jointPredecessors (Q : OctagonIncidence) (a b : Vertex) : + (jointPredecessors Q a b).card = Q.pairMultiplicity a b := by + unfold jointPredecessors OctagonIncidence.pairMultiplicity + rw [Finset.sum_boole] + norm_num + +private theorem unitClause_satisfied + (R : RawIncidence) (centre target : Vertex) (selected : Bool) + (hselected : selected = true ↔ target ∈ R centre) : + (valuation R).satisfies (unitClause centre target selected) := by + cases selected <;> + simpa [unitClause, LRAT.Valuation.satisfies, LRAT.Valuation.falsifies, + valuation_variable] using hselected + +private theorem standardTargets_bit (target : Vertex) : + bitSetB 30 target.val = true ↔ target ∈ standardTargets := by + fin_cases target <;> decide + +/-- Every audited semantic clause is satisfied by the corresponding geometric incidence table. -/ +theorem BaseClauseTag.satisfies + {p : Vertex → Plane} {Q : OctagonIncidence} + (hC : ConvexIndependent ℝ p) (hR : Realises p Q) + (hN : Q.Normalized) (hSparse : Q.PairSparse) (hBalanced : Q.Balanced) + (tag : BaseClauseTag) (hvalid : tag.Valid) : + (valuation Q.targets).satisfies tag.toClause := by + cases tag with + | diagonal vertex => + simp only [BaseClauseTag.toClause, LRAT.Valuation.satisfies, + LRAT.Valuation.falsifies] + intro hselected + exact Q.centre_not_mem vertex ((valuation_variable _ _ _).mp hselected) + | normalized target => + apply unitClause_satisfied + rw [hN] + exact standardTargets_bit target + | rowAtMost centre subset => + simp only [BaseClauseTag.Valid] at hvalid + apply satisfies_of_not_all_neg + intro hall + rw [List.forall_iff_forall_mem] at hall + apply no_five_inside_card_four (Q.card_targets centre) hvalid.1 hvalid.2 + intro target htarget + have htargetList : target ∈ subset := by simpa using htarget + apply (valuation_variable Q.targets centre target).mp + exact hall (.negative (varIndex centre target)) + (List.mem_map.mpr ⟨target, htargetList, rfl⟩) + | rowAtLeast centre subset => + simp only [BaseClauseTag.Valid] at hvalid + apply satisfies_of_not_all_neg + intro hall + rw [List.forall_iff_forall_mem] at hall + apply no_card_four_avoids_five (Q.card_targets centre) hvalid.1 hvalid.2 + intro target htarget hselected + exact (hall (.positive (varIndex centre target)) + (List.mem_map.mpr ⟨target, htarget, rfl⟩)) + ((valuation_variable Q.targets centre target).mpr hselected) + | columnAtMost target centres => + simp only [BaseClauseTag.Valid] at hvalid + apply satisfies_of_not_all_neg + intro hall + rw [List.forall_iff_forall_mem] at hall + have hcard : (predecessors Q target).card = 4 := by + rw [card_predecessors, hBalanced target] + apply no_five_inside_card_four hcard hvalid.1 hvalid.2 + intro centre hcentre + have hcentreList : centre ∈ centres := by simpa using hcentre + rw [predecessors, Finset.mem_filter] + exact ⟨Finset.mem_univ _, (valuation_variable Q.targets centre target).mp + (hall (.negative (varIndex centre target)) + (List.mem_map.mpr ⟨centre, hcentreList, rfl⟩))⟩ + | columnAtLeast target centres => + simp only [BaseClauseTag.Valid] at hvalid + apply satisfies_of_not_all_neg + intro hall + rw [List.forall_iff_forall_mem] at hall + have hcard : (predecessors Q target).card = 4 := by + rw [card_predecessors, hBalanced target] + apply no_card_four_avoids_five hcard hvalid.1 hvalid.2 + intro centre hcentre hselected + have htarget : target ∈ Q.targets centre := + (Finset.mem_filter.mp (show centre ∈ Finset.univ.filter + (fun centre => target ∈ Q.targets centre) from hselected)).2 + exact (hall (.positive (varIndex centre target)) + (List.mem_map.mpr ⟨centre, hcentre, rfl⟩)) + ((valuation_variable Q.targets centre target).mpr htarget) + | pairSparse a b centres => + simp only [BaseClauseTag.Valid] at hvalid + apply satisfies_of_not_all_neg + intro hall + rw [List.forall_iff_forall_mem] at hall + have hsubset : centres.toFinset ⊆ jointPredecessors Q a b := by + intro centre hcentre + have hcentreList : centre ∈ centres := by simpa using hcentre + rw [jointPredecessors, Finset.mem_filter] + refine ⟨Finset.mem_univ _, ?_, ?_⟩ + · apply (valuation_variable Q.targets centre a).mp + apply hall (.negative (varIndex centre a)) + change LRAT.Literal.negative (varIndex centre a) ∈ centres.flatMap (fun centre => + [LRAT.Literal.negative (varIndex centre a), + LRAT.Literal.negative (varIndex centre b)]) + rw [List.mem_flatMap] + exact ⟨centre, hcentreList, by simp⟩ + · apply (valuation_variable Q.targets centre b).mp + apply hall (.negative (varIndex centre b)) + change LRAT.Literal.negative (varIndex centre b) ∈ centres.flatMap (fun centre => + [LRAT.Literal.negative (varIndex centre a), + LRAT.Literal.negative (varIndex centre b)]) + rw [List.mem_flatMap] + exact ⟨centre, hcentreList, by simp⟩ + have hthree : centres.toFinset.card = 3 := by + rw [List.toFinset_card_of_nodup hvalid.2.1, hvalid.2.2] + have hle := Finset.card_le_card hsubset + have hsparse : (jointPredecessors Q a b).card ≤ 2 := by + rw [card_jointPredecessors] + exact hSparse hvalid.1 + rw [hthree] at hle + omega + | pattern origin => + simp only [BaseClauseTag.Valid] at hvalid + cases hfind : patternEntry origin with + | none => simp [hfind] at hvalid + | some entry => + have hentryValid : entry.certificate.toCertificate.Valid + (packedIncidence entry.mask) := + PatternEntry.valid_of_validB (by simpa only [hfind] using hvalid) + have hmask : patternMask origin = entry.mask := by simp [patternMask, hfind] + apply satisfies_of_not_all_neg + intro hall + rw [List.forall_iff_forall_mem] at hall + have hextends : Extends (packedIncidence entry.mask) Q.targets := by + intro centre target hselected + apply (valuation_variable Q.targets centre target).mp + apply hall (.negative (varIndex centre target)) + simp only [BaseClauseTag.toClause, hmask, List.mem_map] + refine ⟨varIndex centre target, ?_, rfl⟩ + rw [List.mem_filter] + refine ⟨List.mem_range.mpr ?_, ?_⟩ + · unfold varIndex + omega + · simpa [packedSelectsB] using + (mem_packedIncidence entry.mask centre target).mp hselected + exact Certificate.not_convex_realises entry.certificate.toCertificate + (entry.certificate.valid_mono hextends hentryValid) hC hR + | hard origin => + simp only [BaseClauseTag.Valid] at hvalid + cases hfind : hardEntry origin with + | none => simp [hfind] at hvalid + | some entry => + have hentryValid : entry.certificate.Valid (packedIncidence entry.code) := + HardEntry.valid_of_validB (by simpa only [hfind] using hvalid) + have hcode : hardCode origin = entry.code := by simp [hardCode, hfind] + apply satisfies_of_not_all_neg + intro hall + rw [List.forall_iff_forall_mem] at hall + have htargets : Q.targets = packedIncidence entry.code := by + funext centre + ext target + rw [mem_packedIncidence] + unfold packedSelectsB + cases hbit : bitSetB entry.code (varIndex centre target) with + | false => + simp only [Bool.false_eq_true, iff_false] + intro hselected + have hfalsified := hall (.positive (varIndex centre target)) (by + simp only [BaseClauseTag.toClause, hcode, List.mem_map] + refine ⟨varIndex centre target, List.mem_range.mpr ?_, ?_⟩ + · unfold varIndex + omega + · simp [hbit]) + exact hfalsified ((valuation_variable Q.targets centre target).mpr hselected) + | true => + constructor + · intro _ + trivial + · intro _ + apply (valuation_variable Q.targets centre target).mp + apply hall (.negative (varIndex centre target)) + simp only [BaseClauseTag.toClause, hcode, List.mem_map] + refine ⟨varIndex centre target, List.mem_range.mpr ?_, ?_⟩ + · unfold varIndex + omega + · simp [hbit] + have hcertificate : entry.certificate.Valid Q.targets := by + rw [htargets] + exact hentryValid + exact Certificate.not_convex_realises entry.certificate hcertificate hC hR + +/-- Every audited shared or branch clause is satisfied by the incidence table. -/ +theorem ClauseTag.satisfies + {p : Vertex → Plane} {Q : OctagonIncidence} + (hC : ConvexIndependent ℝ p) (hR : Realises p Q) + (hN : Q.Normalized) (hSparse : Q.PairSparse) (hBalanced : Q.Balanced) + (tag : ClauseTag) (hvalid : tag.Valid) (hbranch : tag.BranchValid Q) : + (valuation Q.targets).satisfies tag.toClause := by + cases tag with + | base baseTag => + exact baseTag.satisfies hC hR hN hSparse hBalanced hvalid + | branchOne target selected => + exact unitClause_satisfied Q.targets 1 target selected hbranch + | branchTwo target selected => + exact unitClause_satisfied Q.targets 2 target selected hbranch + +/-- A covered reference list is satisfied by the corresponding incidence table. -/ +theorem coverageFormula_satisfied + {p : Vertex → Plane} {Q : OctagonIncidence} + (hC : ConvexIndependent ℝ p) (hR : Realises p Q) + (hN : Q.Normalized) (hSparse : Q.PairSparse) (hBalanced : Q.Balanced) + {rowOne rowTwo : UInt64} + (hrowOne : Q.targets 1 = packedRow rowOne) + (hrowTwo : Q.targets 2 = packedRow rowTwo) + (references : List ℕ) + (hcovered : references.all (coveredB rowOne rowTwo) = true) : + (valuation Q.targets).SatisfiesFormula (coverageFormula rowOne rowTwo references) := by + constructor + intro clause hclause + rw [coverageFormula, List.mem_map] at hclause + obtain ⟨reference, hreference, rfl⟩ := hclause + have hcoveredReference := (List.all_eq_true.mp hcovered) reference hreference + simp only [coveredB, Bool.and_eq_true] at hcoveredReference + exact (tagOfRef rowOne rowTwo reference).satisfies hC hR hN hSparse hBalanced + ((tagOfRef rowOne rowTwo reference).valid_of_validB hcoveredReference.2) + (tagOfRef_branchValid Q hrowOne hrowTwo reference) + +end RawIncidence + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/CycleStrip.lean b/LeanPool/Erdos97ConvexOctagon/CycleStrip.lean new file mode 100644 index 00000000..ae50c246 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/CycleStrip.lean @@ -0,0 +1,161 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.Gram + +/-! # Erdős 97 convex-octagon formalization: Cycle Strip -/ + +namespace Erdos97Octagon + +open scoped InnerProductSpace + +private lemma cycle_strip_core + (u1 u2 u3 u4 u5 u6 : Plane) (s s3 s4 s5 : ℝ) (hs0 : 0 < s) + (n1 : ⟪u1, u1⟫_ℝ = s) (n2 : ⟪u2, u2⟫_ℝ = s) (n6 : ⟪u6, u6⟫_ℝ = s) + (ns3 : ⟪u3, u3⟫_ℝ = s3) (ns4 : ⟪u4, u4⟫_ℝ = s4) + (ns5 : ⟪u5, u5⟫_ℝ = s5) + (i12 : ⟪u1, u2⟫_ℝ = s / 2) (i21 : ⟪u2, u1⟫_ℝ = s / 2) + (i23 : ⟪u2, u3⟫_ℝ = s3 / 2) (i32 : ⟪u3, u2⟫_ℝ = s3 / 2) + (i13 : ⟪u1, u3⟫_ℝ = s3 / 2) (i31 : ⟪u3, u1⟫_ℝ = s3 / 2) + (i34 : ⟪u3, u4⟫_ℝ = (s3 + s4 - s) / 2) + (i43 : ⟪u4, u3⟫_ℝ = (s3 + s4 - s) / 2) + (i24 : ⟪u2, u4⟫_ℝ = s4 / 2) (i42 : ⟪u4, u2⟫_ℝ = s4 / 2) + (i45 : ⟪u4, u5⟫_ℝ = (s4 + s5 - s) / 2) + (i54 : ⟪u5, u4⟫_ℝ = (s4 + s5 - s) / 2) + (i35 : ⟪u3, u5⟫_ℝ = (s3 + s5 - s) / 2) + (i53 : ⟪u5, u3⟫_ℝ = (s3 + s5 - s) / 2) + (i56 : ⟪u5, u6⟫_ℝ = s5 / 2) (i65 : ⟪u6, u5⟫_ℝ = s5 / 2) + (i46 : ⟪u4, u6⟫_ℝ = s4 / 2) (i64 : ⟪u6, u4⟫_ℝ = s4 / 2) : + False := by + have hM1 := gram_det_eq_zero ![u1, u2, u3] + rw [gram3_expand] at hM1 + simp only [n1, n2, ns3, i12, i21, i23, i32, i13, i31] at hM1 + have hM2 := gram_det_eq_zero ![u2, u3, u4] + rw [gram3_expand] at hM2 + simp only [n2, ns3, ns4, i23, i32, i34, i43, i24, i42] at hM2 + have hM3 := gram_det_eq_zero ![u3, u4, u5] + rw [gram3_expand] at hM3 + simp only [ns3, ns4, ns5, i34, i43, i45, i54, i35, i53] at hM3 + have hM4 := gram_det_eq_zero ![u4, u5, u6] + rw [gram3_expand] at hM4 + simp only [ns4, ns5, n6, i45, i54, i56, i65, i46, i64] at hM4 + have h1s : s * (s3 * (s3 - 3 * s)) = 0 := by + nlinarith only [hM1] + have h1 : s3 * (s3 - 3 * s) = 0 := + (mul_eq_zero.mp h1s).resolve_left (ne_of_gt hs0) + rcases mul_eq_zero.mp h1 with hc | hc + · rw [hc] at hM2 hM3 + have h2s : s * ((s4 - s) ^ 2) = 0 := by + nlinarith only [hM2] + have hs4 : s4 = s := by + have hh := (mul_eq_zero.mp h2s).resolve_left (ne_of_gt hs0) + have hz := (pow_eq_zero_iff (n := 2) (by norm_num)).1 hh + linarith only [hz] + rw [hs4] at hM3 hM4 + have h3s : s * ((s5 - s) ^ 2) = 0 := by + nlinarith only [hM3] + have hs5 : s5 = s := by + have hh := (mul_eq_zero.mp h3s).resolve_left (ne_of_gt hs0) + have hz := (pow_eq_zero_iff (n := 2) (by norm_num)).1 hh + linarith only [hz] + rw [hs5] at hM4 + have hpos : (0 : ℝ) < s ^ 3 := by positivity + nlinarith only [hM4, hpos] + · have es3 : s3 = 3 * s := by linarith only [hc] + rw [es3] at hM2 hM3 + have h2s : s * ((s4 - 4 * s) * (s4 - s)) = 0 := by + nlinarith only [hM2] + have h2 : (s4 - 4 * s) * (s4 - s) = 0 := + (mul_eq_zero.mp h2s).resolve_left (ne_of_gt hs0) + rcases mul_eq_zero.mp h2 with hc2 | hc2 + · have es4 : s4 = 4 * s := by linarith only [hc2] + rw [es4] at hM3 hM4 + have h4s : s * ((s5 - 3 * s) ^ 2) = 0 := by + nlinarith only [hM4] + have hs5 : s5 = 3 * s := by + have hh := (mul_eq_zero.mp h4s).resolve_left (ne_of_gt hs0) + have hz := (pow_eq_zero_iff (n := 2) (by norm_num)).1 hh + linarith only [hz] + rw [hs5] at hM3 + have hpos : (0 : ℝ) < s ^ 3 := by positivity + nlinarith only [hM3, hpos] + · have es4 : s4 = s := by linarith only [hc2] + rw [es4] at hM3 hM4 + have h3s : s * ((s5 - s) * (s5 - 4 * s)) = 0 := by + nlinarith only [hM3] + have h3 : (s5 - s) * (s5 - 4 * s) = 0 := + (mul_eq_zero.mp h3s).resolve_left (ne_of_gt hs0) + have h4s : s * (s5 * (s5 - 3 * s)) = 0 := by + nlinarith only [hM4] + have h4 : s5 * (s5 - 3 * s) = 0 := + (mul_eq_zero.mp h4s).resolve_left (ne_of_gt hs0) + rcases mul_eq_zero.mp h3 with q | q <;> + rcases mul_eq_zero.mp h4 with r | r <;> + nlinarith only [q, r, hs0] + +/-- The twelve listed equal-length edges cannot form this planar cycle-square strip. -/ +theorem no_unit_cycle_square_strip + {o x1 x2 x3 x4 x5 x6 : Plane} {R : ℝ} (hR : 0 < R) + (e01 : dist o x1 = R) (e02 : dist o x2 = R) (e06 : dist o x6 = R) + (e12 : dist x1 x2 = R) (e13 : dist x1 x3 = R) (e23 : dist x2 x3 = R) + (e24 : dist x2 x4 = R) (e34 : dist x3 x4 = R) (e35 : dist x3 x5 = R) + (e45 : dist x4 x5 = R) (e46 : dist x4 x6 = R) (e56 : dist x5 x6 = R) : + False := by + set s : ℝ := R ^ 2 with hs + have hs0 : 0 < s := by positivity + have norm_sq : ∀ {x : Plane}, dist o x = R → ⟪x - o, x - o⟫_ℝ = s := by + intro x hx + rw [real_inner_self_eq_norm_sq, ← dist_eq_norm, dist_comm, hx, hs] + have inner_pol : ∀ {x y : Plane}, dist x y = R → + ⟪x - o, y - o⟫_ℝ = + (⟪x - o, x - o⟫_ℝ + ⟪y - o, y - o⟫_ℝ - s) / 2 := by + intro x y hxy + have hsub : (x - o) - (y - o) = x - y := by abel + have hxynorm : ‖(x - o) - (y - o)‖ = R := by + rw [hsub, ← dist_eq_norm, hxy] + have hpolar := norm_sub_sq_real (x - o) (y - o) + rw [hxynorm] at hpolar + simp only [real_inner_self_eq_norm_sq] + have hR2 : R ^ 2 = s := hs.symm + nlinarith only [hpolar, hR2] + set s3 : ℝ := ⟪x3 - o, x3 - o⟫_ℝ with hs3 + set s4 : ℝ := ⟪x4 - o, x4 - o⟫_ℝ with hs4 + set s5 : ℝ := ⟪x5 - o, x5 - o⟫_ℝ with hs5 + refine cycle_strip_core (x1 - o) (x2 - o) (x3 - o) (x4 - o) (x5 - o) (x6 - o) + s s3 s4 s5 hs0 (norm_sq e01) (norm_sq e02) (norm_sq e06) rfl rfl rfl + ?_ ?_ ?_ ?_ ?_ ?_ ?_ ?_ ?_ ?_ ?_ ?_ ?_ ?_ ?_ ?_ ?_ ?_ + · rw [inner_pol e12, norm_sq e01, norm_sq e02] + ring + · rw [real_inner_comm, inner_pol e12, norm_sq e01, norm_sq e02] + ring + · rw [inner_pol e23, norm_sq e02, ← hs3] + ring + · rw [real_inner_comm, inner_pol e23, norm_sq e02, ← hs3] + ring + · rw [inner_pol e13, norm_sq e01, ← hs3] + ring + · rw [real_inner_comm, inner_pol e13, norm_sq e01, ← hs3] + ring + · rw [inner_pol e34, ← hs3, ← hs4] + · rw [real_inner_comm, inner_pol e34, ← hs3, ← hs4] + · rw [inner_pol e24, norm_sq e02, ← hs4] + ring + · rw [real_inner_comm, inner_pol e24, norm_sq e02, ← hs4] + ring + · rw [inner_pol e45, ← hs4, ← hs5] + · rw [real_inner_comm, inner_pol e45, ← hs4, ← hs5] + · rw [inner_pol e35, ← hs3, ← hs5] + · rw [real_inner_comm, inner_pol e35, ← hs3, ← hs5] + · rw [inner_pol e56, norm_sq e06, ← hs5] + ring + · rw [real_inner_comm, inner_pol e56, norm_sq e06, ← hs5] + ring + · rw [inner_pol e46, norm_sq e06, ← hs4] + ring + · rw [real_inner_comm, inner_pol e46, norm_sq e06, ← hs4] + ring + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/EquidistantFour.lean b/LeanPool/Erdos97ConvexOctagon/EquidistantFour.lean new file mode 100644 index 00000000..f267dc5a --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/EquidistantFour.lean @@ -0,0 +1,102 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.Basic + +/-! # Erdős 97 convex-octagon formalization: Equidistant Four -/ + +namespace Erdos97Octagon + +open scoped InnerProductSpace +open Module + +/-- Three vectors with the regular-simplex Gram matrix are linearly independent. -/ +theorem linearIndependent_of_regular_gram + {E : Type*} [NormedAddCommGroup E] [InnerProductSpace ℝ E] + {u v w : E} {s : ℝ} (hs : 0 < s) + (huu : ⟪u, u⟫_ℝ = s) (hvv : ⟪v, v⟫_ℝ = s) (hww : ⟪w, w⟫_ℝ = s) + (huv : ⟪u, v⟫_ℝ = s / 2) (huw : ⟪u, w⟫_ℝ = s / 2) + (hvw : ⟪v, w⟫_ℝ = s / 2) : + LinearIndependent ℝ ![u, v, w] := by + rw [Fintype.linearIndependent_iff] + intro g hg + have hsum : g 0 • u + g 1 • v + g 2 • w = 0 := by + have h := hg + simp only [Fin.sum_univ_three, Matrix.cons_val_zero, Matrix.cons_val_one, + Matrix.head_cons, Matrix.cons_val_two, Matrix.tail_cons] at h + simpa [add_assoc] using h + have e1 : ⟪g 0 • u + g 1 • v + g 2 • w, u⟫_ℝ = 0 := by rw [hsum]; simp + have e2 : ⟪g 0 • u + g 1 • v + g 2 • w, v⟫_ℝ = 0 := by rw [hsum]; simp + have e3 : ⟪g 0 • u + g 1 • v + g 2 • w, w⟫_ℝ = 0 := by rw [hsum]; simp + simp only [inner_add_left, real_inner_smul_left] at e1 e2 e3 + have cvu : ⟪v, u⟫_ℝ = s / 2 := by rw [real_inner_comm]; exact huv + have cwu : ⟪w, u⟫_ℝ = s / 2 := by rw [real_inner_comm]; exact huw + have cwv : ⟪w, v⟫_ℝ = s / 2 := by rw [real_inner_comm]; exact hvw + rw [huu, cvu, cwu] at e1 + rw [huv, hvv, cwv] at e2 + rw [huw, hvw, hww] at e3 + have hg0 : g 0 = 0 := by nlinarith only [e1, e2, e3, hs] + have hg1 : g 1 = 0 := by nlinarith only [e1, e2, e3, hs] + have hg2 : g 2 = 0 := by nlinarith only [e1, e2, e3, hs] + intro i + fin_cases i <;> assumption + +/-- Four distinct planar points cannot have all six distances equal. -/ +theorem four_points_not_pairwise_equidistant + {a b c d : Plane} {r : ℝ} + (had : a ≠ d) + (dab : dist a b = r) (dac : dist a c = r) (dad : dist a d = r) + (dbc : dist b c = r) (dbd : dist b d = r) (dcd : dist c d = r) : + False := by + set u : Plane := a - d with hu + set v : Plane := b - d with hv + set w : Plane := c - d with hw + have hr0 : 0 < r := by + have h : (0 : ℝ) < dist a d := dist_pos.mpr had + rwa [dad] at h + set s : ℝ := r ^ 2 with hsdef + have hs : 0 < s := by positivity + have nu : ⟪u, u⟫_ℝ = s := by + rw [real_inner_self_eq_norm_sq, hu, ← dist_eq_norm, dad, hsdef] + have nv : ⟪v, v⟫_ℝ = s := by + rw [real_inner_self_eq_norm_sq, hv, ← dist_eq_norm, dbd, hsdef] + have nw : ⟪w, w⟫_ℝ = s := by + rw [real_inner_self_eq_norm_sq, hw, ← dist_eq_norm, dcd, hsdef] + have huv_norm : ‖u - v‖ = r := by + have h : u - v = a - b := by rw [hu, hv]; abel + rw [h, ← dist_eq_norm, dab] + have huw_norm : ‖u - w‖ = r := by + have h : u - w = a - c := by rw [hu, hw]; abel + rw [h, ← dist_eq_norm, dac] + have hvw_norm : ‖v - w‖ = r := by + have h : v - w = b - c := by rw [hv, hw]; abel + rw [h, ← dist_eq_norm, dbc] + have hnu : ‖u‖ ^ 2 = s := by rw [← real_inner_self_eq_norm_sq]; exact nu + have hnv : ‖v‖ ^ 2 = s := by rw [← real_inner_self_eq_norm_sq]; exact nv + have hnw : ‖w‖ ^ 2 = s := by rw [← real_inner_self_eq_norm_sq]; exact nw + have iuv : ⟪u, v⟫_ℝ = s / 2 := by + have h := norm_sub_sq_real u v + rw [huv_norm, hnu, hnv] at h + rw [hsdef] + linarith + have iuw : ⟪u, w⟫_ℝ = s / 2 := by + have h := norm_sub_sq_real u w + rw [huw_norm, hnu, hnw] at h + rw [hsdef] + linarith + have ivw : ⟪v, w⟫_ℝ = s / 2 := by + have h := norm_sub_sq_real v w + rw [hvw_norm, hnv, hnw] at h + rw [hsdef] + linarith + have hli : LinearIndependent ℝ ![u, v, w] := + linearIndependent_of_regular_gram hs nu nv nw iuv iuw ivw + have hcard := hli.fintype_card_le_finrank + have hfr : finrank ℝ Plane = 2 := by simp [Plane] + rw [hfr, Fintype.card_fin] at hcard + omega + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/FiniteModel.lean b/LeanPool/Erdos97ConvexOctagon/FiniteModel.lean new file mode 100644 index 00000000..c2a166d6 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/FiniteModel.lean @@ -0,0 +1,107 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.Relabelling +import LeanPool.Erdos97ConvexOctagon.LRAT.Semantics +import Mathlib.Data.List.Sort + +/-! # Erdős 97 convex-octagon formalization: Finite Model -/ + +namespace Erdos97Octagon + +/-- An unbundled eight-row incidence table used by the finite certificate. -/ +abbrev RawIncidence := Vertex → Finset Vertex + +namespace RawIncidence + +/-- A four-entry row used by the finite certificate. -/ +abbrev SearchRow := Finset Vertex + +/-- All four-element rows available at a specified centre. -/ +def rowOptions (v : Vertex) : List SearchRow := + (((List.finRange 8).filter (· ≠ v)).sublistsLen 4).map List.toFinset + +/-- Every row of an octagon incidence system occurs in the finite row list. -/ +theorem target_row_mem_rowOptions (Q : OctagonIncidence) (v : Vertex) : + Q.targets v ∈ rowOptions v := by + let row := (Q.targets v).sort (· ≤ ·) + have hnodup : row.Nodup := Finset.sort_nodup _ _ + have hsubset : row ⊆ (List.finRange 8).filter (· ≠ v) := by + intro x hx + rw [List.mem_filter] + have hxQ : x ∈ Q.targets v := by + simpa [row] using hx + exact ⟨List.mem_finRange x, + decide_eq_true (fun h => Q.centre_not_mem v (h ▸ hxQ))⟩ + have hsubperm : row.Subperm ((List.finRange 8).filter (· ≠ v)) := + hnodup.subperm hsubset + have hsortedRow : row.SortedLE := + (Finset.pairwise_sort (Q.targets v) (· ≤ ·)).sortedLE + have hsortedAll : ((List.finRange 8).filter (· ≠ v)).SortedLE := + ((List.sortedLT_finRange 8).sortedLE.pairwise.filter _).sortedLE + have hsublist : row.Sublist ((List.finRange 8).filter (· ≠ v)) := + List.sublist_of_subperm_of_sortedLE hsubperm hsortedRow hsortedAll + have hlength : row.length = 4 := by + rw [← List.toFinset_card_of_nodup hnodup, Finset.sort_toFinset, Q.card_targets] + rw [rowOptions, List.mem_map] + exact ⟨row, List.mem_sublistsLen.mpr ⟨hsublist, hlength⟩, + Finset.sort_toFinset _ _⟩ + +/-- The zero-based SAT variable representing one directed incidence. -/ +def varIndex (centre target : Vertex) : ℕ := + 8 * centre.val + target.val + +/-- A proposition-valued SAT assignment obtained from an incidence table. -/ +def valuation (R : RawIncidence) : LRAT.Valuation := fun index => + ∃ centre target : Vertex, + index = varIndex centre target ∧ target ∈ R centre + +/-- Reading the SAT assignment at an incidence variable recovers membership. -/ +theorem valuation_variable (R : RawIncidence) (centre target : Vertex) : + valuation R (varIndex centre target) ↔ target ∈ R centre := by + constructor + · rintro ⟨centre', target', hindex, hmem⟩ + have hcentreVal : centre'.val = centre.val := by + unfold varIndex at hindex + omega + have htargetVal : target'.val = target.val := by + unfold varIndex at hindex + omega + have hcentre : centre' = centre := Fin.ext hcentreVal + have htarget : target' = target := Fin.ext htargetVal + simpa [hcentre, htarget] using hmem + · intro hmem + exact ⟨centre, target, rfl, hmem⟩ + +/-- Test one bit of a packed 64-bit incidence table. -/ +def bitSetB (code : UInt64) (index : ℕ) : Bool := + ((code >>> UInt64.ofNat index) &&& 1) != 0 + +/-- Read one directed incidence from a packed table. -/ +def packedSelectsB (code : UInt64) (centre target : Vertex) : Bool := + bitSetB code (varIndex centre target) + +/-- Decode a packed table to the mathematical finite-set model. -/ +def packedIncidence (code : UInt64) : RawIncidence := fun centre => + Finset.univ.filter fun target => packedSelectsB code centre target + +@[simp] theorem mem_packedIncidence (code : UInt64) (centre target : Vertex) : + target ∈ packedIncidence code centre ↔ packedSelectsB code centre target = true := by + simp [packedIncidence] + +/-- Pack one finite row into its eight-bit position. -/ +def rowMask (row : SearchRow) : UInt64 := + (List.finRange 8).foldl (fun mask target => + if target ∈ row then mask ||| (1 <<< UInt64.ofNat target.val) else mask) 0 + +/-- Pack all eight rows into one 64-bit key. -/ +def systemCode (R : RawIncidence) : UInt64 := + (List.finRange 8).foldl (fun packed centre => + packed ||| (rowMask (R centre) <<< UInt64.ofNat (8 * centre.val))) 0 + +end RawIncidence + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/GeometryReduction.lean b/LeanPool/Erdos97ConvexOctagon/GeometryReduction.lean new file mode 100644 index 00000000..fde67bb6 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/GeometryReduction.lean @@ -0,0 +1,164 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.Basic +import LeanPool.Erdos97ConvexOctagon.Incidence +import Mathlib.Analysis.Convex.Between +import Mathlib.Analysis.Convex.Independent +import Mathlib.Geometry.Euclidean.PerpBisector + +/-! # Erdős 97 convex-octagon formalization: Geometry Reduction -/ + +namespace Erdos97Octagon + +open scoped RealInnerProductSpace + +/-- A vertex has four other labelled vertices at one common distance. -/ +def HasFourEquidistant (p : Vertex → Plane) (v : Vertex) : Prop := + ∃ S : Finset Vertex, S.card = 4 ∧ v ∉ S ∧ + ∃ r : ℝ, ∀ w ∈ S, dist (p v) (p w) = r + +/-- A labelled incidence system is realised by equal-distance rows in the plane. -/ +def Realises (p : Vertex → Plane) (Q : OctagonIncidence) : Prop := + ∀ v, ∃ r : ℝ, ∀ w ∈ Q.targets v, dist (p v) (p w) = r + +private lemma three_centres_collinear + {a b v₁ v₂ v₃ : Plane} (hab : a ≠ b) + (h1 : dist v₁ a = dist v₁ b) + (h2 : dist v₂ a = dist v₂ b) + (h3 : dist v₃ a = dist v₃ b) : + Collinear ℝ ({v₁, v₂, v₃} : Set Plane) := by + have hne : b -ᵥ a ≠ 0 := fun h => hab (vsub_eq_zero_iff_eq.mp h).symm + have h1' : dist a v₁ = dist b v₁ := by + rw [dist_comm a, dist_comm b] + exact h1 + have h2' : dist a v₂ = dist b v₂ := by + rw [dist_comm a, dist_comm b] + exact h2 + have h3' : dist a v₃ = dist b v₃ := by + rw [dist_comm a, dist_comm b] + exact h3 + have hinn₁₂ : ⟪v₂ -ᵥ v₁, b -ᵥ a⟫ = (0 : ℝ) := + EuclideanGeometry.inner_vsub_vsub_of_dist_eq_of_dist_eq h1' h2' + have hinn₁₃ : ⟪v₃ -ᵥ v₁, b -ᵥ a⟫ = (0 : ℝ) := + EuclideanGeometry.inner_vsub_vsub_of_dist_eq_of_dist_eq h1' h3' + have hfd : Module.finrank ℝ Plane = 1 + 1 := by + rw [finrank_euclideanSpace] + norm_num + letI : Fact (Module.finrank ℝ Plane = 1 + 1) := ⟨hfd⟩ + have hfo : Module.finrank ℝ ((ℝ ∙ (b -ᵥ a) : Submodule ℝ Plane))ᗮ = 1 := + Submodule.finrank_orthogonal_span_singleton hne + have horth : vectorSpan ℝ ({v₁, v₂, v₃} : Set Plane) ≤ + (ℝ ∙ (b -ᵥ a) : Submodule ℝ Plane)ᗮ := by + rw [vectorSpan_eq_span_vsub_set_right_ne ℝ (Set.mem_insert v₁ _)] + rw [Submodule.span_le] + intro w hw + rw [Set.mem_image] at hw + obtain ⟨q, hq, rfl⟩ := hw + have hq_ne : q ≠ v₁ := fun h => hq.2 (by simpa using h) + have hq_cases : q = v₂ ∨ q = v₃ := by + rcases hq.1 with hq | hq + · exact absurd hq hq_ne + rcases hq with hq | hq + · exact Or.inl hq + · simpa using Or.inr hq + rw [SetLike.mem_coe, Submodule.mem_orthogonal_singleton_iff_inner_left] + rcases hq_cases with rfl | rfl + · exact hinn₁₂ + · exact hinn₁₃ + letI : FiniteDimensional ℝ (vectorSpan ℝ ({v₁, v₂, v₃} : Set Plane)) := + Submodule.finiteDimensional_of_le horth + rw [collinear_iff_finrank_le_one] + calc + Module.finrank ℝ (vectorSpan ℝ ({v₁, v₂, v₃} : Set Plane)) ≤ + Module.finrank ℝ ((ℝ ∙ (b -ᵥ a) : Submodule ℝ Plane))ᗮ := + Submodule.finrank_mono horth + _ = 1 := hfo + +/-- Three distinct members of a convex-independent family cannot be collinear. -/ +theorem three_collinear_not_convexIndependent + {p : Vertex → Plane} (hC : ConvexIndependent ℝ p) + {i j k : Vertex} (hij : i ≠ j) (hik : i ≠ k) (hjk : j ≠ k) + (hCol : Collinear ℝ ({p i, p j, p k} : Set Plane)) : + False := by + rcases hCol.wbtw_or_wbtw_or_wbtw with hW | hW | hW + · have hj : j ∈ ({i, k} : Set Vertex) := hC {i, k} j (by + simpa only [Set.image_insert_eq, Set.image_singleton, convexHull_pair] using hW.mem_segment) + simp [hij.symm, hjk] at hj + · have hk : k ∈ ({j, i} : Set Vertex) := hC {j, i} k (by + simpa only [Set.image_insert_eq, Set.image_singleton, convexHull_pair] using hW.mem_segment) + simp [hjk.symm, hik.symm] at hk + · have hi : i ∈ ({k, j} : Set Vertex) := hC {k, j} i (by + simpa only [Set.image_insert_eq, Set.image_singleton, convexHull_pair] using hW.mem_segment) + simp [hij, hik] at hi + +/-- At most two vertices of a convex-independent planar family are equidistant +from any fixed pair of distinct vertices. -/ +theorem equidistantCentres_card_le_two + {p : Vertex → Plane} (hC : ConvexIndependent ℝ p) + {a b : Vertex} (hab : a ≠ b) : + (Finset.univ.filter fun v => dist (p v) (p a) = dist (p v) (p b)).card ≤ 2 := by + classical + by_contra hgt + let S := Finset.univ.filter fun v => dist (p v) (p a) = dist (p v) (p b) + change ¬ S.card ≤ 2 at hgt + have h3 : 3 ≤ S.card := by omega + obtain ⟨v₁, v₂, v₃, hv₁S, hv₂S, hv₃S, h12, h13, h23⟩ : + ∃ v₁ v₂ v₃ : Vertex, v₁ ∈ S ∧ v₂ ∈ S ∧ v₃ ∈ S ∧ + v₁ ≠ v₂ ∧ v₁ ≠ v₃ ∧ v₂ ≠ v₃ := by + obtain ⟨T, hTS, hTcard⟩ := Finset.exists_subset_card_eq h3 + rw [Finset.card_eq_three] at hTcard + obtain ⟨v₁, v₂, v₃, h12, h13, h23, rfl⟩ := hTcard + exact ⟨v₁, v₂, v₃, hTS (by simp), hTS (by simp), hTS (by simp), h12, h13, h23⟩ + have e1 : dist (p v₁) (p a) = dist (p v₁) (p b) := (Finset.mem_filter.mp hv₁S).2 + have e2 : dist (p v₂) (p a) = dist (p v₂) (p b) := (Finset.mem_filter.mp hv₂S).2 + have e3 : dist (p v₃) (p a) = dist (p v₃) (p b) := (Finset.mem_filter.mp hv₃S).2 + have hCol : Collinear ℝ ({p v₁, p v₂, p v₃} : Set Plane) := + three_centres_collinear (hC.injective.ne hab) e1 e2 e3 + exact three_collinear_not_convexIndependent hC h12 h13 h23 hCol + +/-- A realisation in convex position has pair multiplicity at most two. -/ +theorem pairSparse_of_realises + {p : Vertex → Plane} (hC : ConvexIndependent ℝ p) + (Q : OctagonIncidence) (hR : Realises p Q) : + Q.PairSparse := by + classical + intro a b hab + have hsubset : + (Finset.univ.filter fun v => a ∈ Q.targets v ∧ b ∈ Q.targets v) ⊆ + Finset.univ.filter fun v => dist (p v) (p a) = dist (p v) (p b) := by + intro v hv + rw [Finset.mem_filter] at hv ⊢ + obtain ⟨r, hr⟩ := hR v + exact ⟨Finset.mem_univ _, (hr a hv.2.1).trans (hr b hv.2.2).symm⟩ + unfold OctagonIncidence.pairMultiplicity + rw [Finset.sum_boole] + norm_num + exact (Finset.card_le_card hsubset).trans (equidistantCentres_card_le_two hC hab) + +/-- Failure at every vertex canonically yields a four-target incidence system. -/ +theorem incidence_of_all_hasFour + {p : Vertex → Plane} (h : ∀ v, HasFourEquidistant p v) : + ∃ Q : OctagonIncidence, Realises p Q := by + classical + let Q : OctagonIncidence := + { targets := fun v => (h v).choose + card_targets := fun v => (h v).choose_spec.1 + centre_not_mem := fun v => (h v).choose_spec.2.1 } + refine ⟨Q, ?_⟩ + intro v + exact (h v).choose_spec.2.2 + +/-- Any failed convex octagon produces a balanced, pair-sparse incidence system. -/ +theorem reduction_of_all_hasFour + {p : Vertex → Plane} (hC : ConvexIndependent ℝ p) + (h : ∀ v, HasFourEquidistant p v) : + ∃ Q : OctagonIncidence, Realises p Q ∧ Q.PairSparse ∧ Q.Balanced := by + obtain ⟨Q, hR⟩ := incidence_of_all_hasFour h + have hS := pairSparse_of_realises hC Q hR + exact ⟨Q, hR, hS, Q.balanced_of_pairSparse hS⟩ + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/Gram.lean b/LeanPool/Erdos97ConvexOctagon/Gram.lean new file mode 100644 index 00000000..3cd2d14a --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/Gram.lean @@ -0,0 +1,62 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.Basic +import Mathlib.LinearAlgebra.Matrix.Determinant.Basic +import Mathlib.LinearAlgebra.Matrix.ToLinearEquiv + +/-! # Erdős 97 convex-octagon formalization: Gram -/ + +namespace Erdos97Octagon + +open scoped InnerProductSpace +open Module Matrix + +/-- Three vectors in the Euclidean plane cannot be linearly independent. -/ +lemma not_linearIndependent_three (u : Fin 3 → Plane) : + ¬ LinearIndependent ℝ u := by + intro h + have hcard := h.fintype_card_le_finrank + have hfr : finrank ℝ Plane = 2 := by simp [Plane] + rw [hfr, Fintype.card_fin] at hcard + omega + +/-- The determinant of the Gram matrix of three planar vectors vanishes. -/ +lemma gram_det_eq_zero (u : Fin 3 → Plane) : + (Matrix.of fun i j => (⟪u i, u j⟫_ℝ : ℝ)).det = 0 := by + obtain ⟨g, hg, i0, hi0⟩ := + (Fintype.not_linearIndependent_iff).1 (not_linearIndependent_three u) + set G : Matrix (Fin 3) (Fin 3) ℝ := + Matrix.of fun i j => (⟪u i, u j⟫_ℝ : ℝ) with hG + have hker : G *ᵥ g = 0 := by + funext i + rw [Matrix.mulVec, Pi.zero_apply, dotProduct] + have hrew : (∑ j, G i j * g j) = ⟪u i, ∑ j, g j • u j⟫_ℝ := by + rw [inner_sum] + apply Finset.sum_congr rfl + intro j _ + rw [hG, Matrix.of_apply, real_inner_smul_right] + ring + rw [hrew, hg, inner_zero_right] + have hgne : g ≠ 0 := by + intro h + exact hi0 (by rw [h]; rfl) + exact Matrix.exists_mulVec_eq_zero_iff.1 ⟨g, hgne, hker⟩ + +/-- Expands a `3 × 3` Gram determinant into scalar inner products. -/ +lemma gram3_expand (a b c : Plane) : + (Matrix.of fun i j => (⟪(![a, b, c]) i, (![a, b, c]) j⟫_ℝ : ℝ)).det = + ⟪a, a⟫_ℝ * ⟪b, b⟫_ℝ * ⟪c, c⟫_ℝ - + ⟪a, a⟫_ℝ * ⟪b, c⟫_ℝ * ⟪c, b⟫_ℝ - + ⟪a, b⟫_ℝ * ⟪b, a⟫_ℝ * ⟪c, c⟫_ℝ + + ⟪a, b⟫_ℝ * ⟪b, c⟫_ℝ * ⟪c, a⟫_ℝ + + ⟪a, c⟫_ℝ * ⟪b, a⟫_ℝ * ⟪c, b⟫_ℝ - + ⟪a, c⟫_ℝ * ⟪b, b⟫_ℝ * ⟪c, a⟫_ℝ := by + rw [Matrix.det_fin_three] + simp only [Matrix.of_apply, Matrix.cons_val_zero, Matrix.cons_val_one, + Matrix.head_cons, Matrix.cons_val_two, Matrix.tail_cons, Fin.isValue] + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/Incidence.lean b/LeanPool/Erdos97ConvexOctagon/Incidence.lean new file mode 100644 index 00000000..0238c835 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/Incidence.lean @@ -0,0 +1,154 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import Mathlib.Algebra.BigOperators.Ring.Finset +import Mathlib.Algebra.BigOperators.Group.Finset.Sigma +import Mathlib.Algebra.Order.BigOperators.Group.Finset +import Mathlib.Data.Finset.Card +import Mathlib.Tactic.NormNum +import Lean.Elab.Tactic.Omega + +/-! # Erdős 97 convex-octagon formalization: Incidence -/ + +namespace Erdos97Octagon + +open scoped BigOperators + +/-- The labelled vertex set of an octagon. -/ +abbrev Vertex := Fin 8 + +/-- Four selected equidistant witnesses around every labelled octagon vertex. -/ +structure OctagonIncidence where + /-- The four selected witnesses associated with a centre. -/ + targets : Vertex → Finset Vertex + /-- Every witness row has exactly four vertices. -/ + card_targets : ∀ v, (targets v).card = 4 + /-- A centre is not one of its own positive-radius witnesses. -/ + centre_not_mem : ∀ v, v ∉ targets v + +@[ext] +theorem OctagonIncidence.ext {Q R : OctagonIncidence} (h : Q.targets = R.targets) : Q = R := by + cases Q + cases R + cases h + rfl + +namespace OctagonIncidence + +/-- The number of witness rows containing `a`. -/ +def indegree (Q : OctagonIncidence) (a : Vertex) : ℕ := + ∑ v, if a ∈ Q.targets v then 1 else 0 + +/-- The number of witness rows containing both `a` and `b`. -/ +def pairMultiplicity (Q : OctagonIncidence) (a b : Vertex) : ℕ := + ∑ v, if a ∈ Q.targets v ∧ b ∈ Q.targets v then 1 else 0 + +/-- No distinct pair occurs together in more than two witness rows. -/ +def PairSparse (Q : OctagonIncidence) : Prop := + ∀ ⦃a b⦄, a ≠ b → Q.pairMultiplicity a b ≤ 2 + +/-- Every vertex occurs in exactly four witness rows. -/ +def Balanced (Q : OctagonIncidence) : Prop := + ∀ a, Q.indegree a = 4 + +private lemma row_pair_sum (Q : OctagonIncidence) (a v : Vertex) : + (∑ b ∈ Finset.univ.erase a, + if a ∈ Q.targets v ∧ b ∈ Q.targets v then (1 : ℕ) else 0) = + if a ∈ Q.targets v then 3 else 0 := by + classical + by_cases ha : a ∈ Q.targets v + · have hfilter : + (Finset.univ.erase a).filter (fun b => b ∈ Q.targets v) = + (Q.targets v).erase a := by + ext b + simp [and_comm] + rw [if_pos ha] + simp only [ha, true_and, Finset.sum_boole, hfilter] + rw [Finset.card_erase_of_mem ha, Q.card_targets] + norm_num + · simp [ha] + +/-- Double-count pairs in the witness rows containing a fixed vertex. -/ +theorem sum_pairMultiplicity (Q : OctagonIncidence) (a : Vertex) : + (∑ b ∈ Finset.univ.erase a, Q.pairMultiplicity a b) = + 3 * Q.indegree a := by + classical + simp only [pairMultiplicity, indegree] + rw [Finset.sum_comm] + simp_rw [row_pair_sum] + simp only [Finset.mul_sum] + apply Finset.sum_congr rfl + intro v _ + by_cases ha : a ∈ Q.targets v <;> simp [ha] + +/-- Every vertex has indegree at most four when pair multiplicities are at most two. -/ +theorem indegree_le_four (Q : OctagonIncidence) (hQ : Q.PairSparse) (a : Vertex) : + Q.indegree a ≤ 4 := by + have hsum : + (∑ b ∈ Finset.univ.erase a, Q.pairMultiplicity a b) ≤ + ∑ _b ∈ Finset.univ.erase a, 2 := by + exact Finset.sum_le_sum fun b hb => hQ (Finset.ne_of_mem_erase hb).symm + rw [Q.sum_pairMultiplicity] at hsum + norm_num at hsum + omega + +/-- There are exactly 32 selected incidences in an octagon witness system. -/ +theorem sum_indegree (Q : OctagonIncidence) : + ∑ a, Q.indegree a = 32 := by + classical + simp only [indegree] + rw [Finset.sum_comm] + calc + (∑ v : Vertex, ∑ a : Vertex, if a ∈ Q.targets v then 1 else 0) = + ∑ v : Vertex, (Q.targets v).card := by + apply Finset.sum_congr rfl + intro v _ + rw [Finset.sum_boole] + norm_num + _ = ∑ _v : Vertex, 4 := by + apply Finset.sum_congr rfl + intro v _ + exact Q.card_targets v + _ = 32 := by norm_num + +private lemma eq_of_bounded_sum + {α : Type*} [Fintype α] + (f : α → ℕ) (k : ℕ) (hle : ∀ a, f a ≤ k) + (hsum : ∑ a, f a = Fintype.card α * k) (a : α) : + f a = k := by + classical + have ha : a ∈ (Finset.univ : Finset α) := Finset.mem_univ a + have hrest : + (∑ x ∈ (Finset.univ.erase a), f x) ≤ + (Finset.univ.erase a).card • k := + Finset.sum_le_card_nsmul _ _ _ fun x _ => hle x + have hsplit := Finset.sum_erase_add Finset.univ f ha + have hcard := Finset.card_erase_add_one ha + simp only [Finset.card_univ, nsmul_eq_mul] at hrest hcard + have hmul : + Fintype.card α * k = (Finset.univ.erase a).card * k + k := by + rw [← hcard, Nat.add_mul] + simp + have htotal_le : + (∑ x, f x) ≤ (Finset.univ.erase a).card * k + f a := by + calc + (∑ x, f x) = (∑ x ∈ Finset.univ.erase a, f x) + f a := hsplit.symm + _ ≤ (Finset.univ.erase a).card * k + f a := + Nat.add_le_add_right hrest (f a) + rw [hsum] at htotal_le + rw [hmul] at htotal_le + exact Nat.le_antisymm (hle a) (Nat.le_of_add_le_add_left htotal_le) + +/-- Pair sparsity forces the four-in/four-out balanced incidence condition. -/ +theorem balanced_of_pairSparse (Q : OctagonIncidence) (hQ : Q.PairSparse) : + Q.Balanced := by + intro a + apply eq_of_bounded_sum Q.indegree 4 (Q.indegree_le_four hQ) + simpa using Q.sum_indegree + +end OctagonIncidence + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/LRAT/Elab.lean b/LeanPool/Erdos97ConvexOctagon/LRAT/Elab.lean new file mode 100644 index 00000000..e5f07b47 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/LRAT/Elab.lean @@ -0,0 +1,477 @@ +/- +Copyright (c) 2022 Mario Carneiro, 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Mario Carneiro, Egor Lyfar +-/ + +import Lean.Elab.Command +import LeanPool.Erdos97ConvexOctagon.LRAT.Format +import LeanPool.Erdos97ConvexOctagon.MasterFormula + +/-! +# Safe elaboration of the packed master LRAT certificate + +Adapted from `Mathlib/Tactic/Sat/FromLRAT.lean` (Apache-2.0). The +reconstruction reads typed project data, reconstructs unit propagation, and +stores every retained nonempty addition as a stable internal theorem so later +modules cross an ordinary imported-constant boundary. +-/ + +namespace Erdos97Octagon.LRAT + +open Lean Elab Command +open Std + +/-- Fuel for decoding one generated list of at most 500 string literals. -/ +def embeddedCertificatePartFuel : ℕ := 640 + +/-- +Exact maximum number of compiled expression nodes traversed while decoding a +committed generated certificate part. +-/ +def embeddedCertificatePartMaximumExpressionSteps : ℕ := 616 + +instance : ToExpr Literal where + toTypeExpr := mkConst ``Literal + toExpr + | .positive index => mkApp (mkConst ``Literal.positive) (mkRawNatLit index) + | .negative index => mkApp (mkConst ``Literal.negative) (mkRawNatLit index) + +/-- A proved clause in the elaborator database. -/ +private structure GlobalClause where + literals : Array Int + expression : Expr + proof : Expr + +private def buildClause (literals : Array Int) : Expr := + let literalType := mkConst ``Literal + let empty := mkApp (mkConst ``List.nil [0]) literalType + let prepend := mkApp (mkConst ``List.cons [0]) literalType + literals.foldr + (fun literal clause => + mkApp2 prepend (toExpr <| Literal.ofInt literal) clause) + empty + +private def buildProofStep + (database : HashMap ℕ GlobalClause) (newLiterals : Array Int) + (antecedents : Array ℕ) (context clause : Expr) : + Except String Expr := Id.run do + let mut finish := + mkLambda `valuation default (mkConst ``Valuation) ∘ + mkLambda `satisfies default + (mkApp2 (mkConst ``Valuation.SatisfiesFormula) (mkBVar 0) context) + let valuation depth := mkBVar (depth + 1) + let satisfies depth := mkBVar depth + let mut binderTypes := #[] + let mut remainingClause := clause + let mut depth := 0 + let mut literalContext : HashMap Int ℕ := {} + for literal in newLiterals do + let literalExpression := remainingClause.appFn!.appArg! + remainingClause := remainingClause.appArg! + binderTypes := binderTypes.push + (mkApp2 (mkConst ``Valuation.falsifies) + (valuation depth) literalExpression) + depth := depth + 1 + literalContext := literalContext.insert literal depth + finish := finish ∘ binderTypes.foldr (mkLambda `falsified default) + for identifier in antecedents do + let some referenced := database[identifier]? + | return .error s!"missing antecedent clause {identifier}" + let mut unitLiteral : Option Int := none + for literal in referenced.literals do + unless literalContext.contains literal do + if unitLiteral.isSome then + return .error s!"antecedent {identifier} is not unit" + depth := depth + 1 + unitLiteral := some literal + let mut refutation := + mkApp2 referenced.proof (valuation depth) (satisfies depth) + for literal in referenced.literals do + let binderIndex := + match literalContext[literal]? with + | some binderDepth => depth - binderDepth + | none => 0 + refutation := mkApp refutation (mkBVar binderIndex) + let some literal := unitLiteral + | return .ok <| finish refutation + let literalExpression := toExpr <| Literal.ofInt literal + let negatedExpression := toExpr <| Literal.ofInt (-literal) + let priorDepth := depth - 1 + let propagation := + mkApp3 (mkConst ``Valuation.propagateCases) + (valuation priorDepth) negatedExpression <| + mkLambda `falsified default + (mkApp2 (mkConst ``Valuation.falsifies) + (valuation priorDepth) literalExpression) + refutation + let domain := + mkApp2 (mkConst ``Valuation.falsifies) + (valuation priorDepth) negatedExpression + finish := fun expression => + finish <| mkApp propagation <| mkLambda `falsified default domain expression + literalContext := literalContext.insert (-literal) depth + return .error s!"antecedents do not refute clause {newLiterals}" + +private structure DecodedStringList where + strings : List String + expressionSteps : ℕ + +private def decodeStringListWithFuel : + ℕ → Expr → Except String DecodedStringList + | 0, _ => throw "embedded string list exceeds its structural bound" + | fuel + 1, .letE _ _ value body _ => do + let decoded ← decodeStringListWithFuel fuel (body.instantiate1 value) + pure { + strings := decoded.strings + expressionSteps := decoded.expressionSteps + 1 + } + | fuel + 1, .mdata _ expression => do + let decoded ← decodeStringListWithFuel fuel expression + pure { + strings := decoded.strings + expressionSteps := decoded.expressionSteps + 1 + } + | fuel + 1, expression => + let function := expression.getAppFn + if function.isConstOf ``List.nil then + pure { + strings := [] + expressionSteps := 1 + } + else if function.isConstOf ``List.cons then + let arguments := expression.getAppArgs + if arguments.size ≠ 3 then + throw "malformed embedded string list" + else + match arguments[1]!, decodeStringListWithFuel fuel arguments[2]! with + | .lit (.strVal value), .ok remaining => + pure { + strings := value :: remaining.strings + expressionSteps := remaining.expressionSteps + 1 + } + | .lit (.strVal _), .error message => throw message + | _, _ => throw "embedded certificate part is not a literal string" + else + throw "embedded certificate data is not a string list" + +private def readEmbeddedParts + (declarationNames : List Name) : CommandElabM String := do + unless embeddedCertificatePartMaximumExpressionSteps ≤ + embeddedCertificatePartFuel do + throwError "measured string-list expression bound exceeds decoder fuel" + let mut result := "" + let mut measuredMaximum := 0 + for declarationName in declarationNames do + let information ← getConstInfo declarationName + let some value := information.value? + | throwError "embedded certificate part has no value" + let decoded ← + match decodeStringListWithFuel embeddedCertificatePartFuel value with + | .ok decoded => pure decoded + | .error message => throwError message + if embeddedCertificatePartMaximumExpressionSteps < + decoded.expressionSteps then + throwError + "embedded string-list expression exceeds its measured maximum" + measuredMaximum := max measuredMaximum decoded.expressionSteps + result := result ++ String.join decoded.strings + unless measuredMaximum = + embeddedCertificatePartMaximumExpressionSteps do + throwError + "embedded string-list expression maximum does not match its committed bound" + pure result + +private def literalInteger : Literal → Int + | .positive index => Int.ofNat (index + 1) + | .negative index => -Int.ofNat (index + 1) + +private def clauseLiterals (clause : Clause) : Array Int := + clause.toArray.map literalInteger + +private def masterClauses : Array (Array Int) := + RawIncidence.masterFormula.toArray.map clauseLiterals + +private def masterBaseReferences : Array ℕ := + RawIncidence.masterReferences.toArray + +private def masterExcludedMasks : Array ℕ := + RawIncidence.masterExcludedRowMasks.toArray + +private def certificateProofType (clause : Expr) : Expr := + mkApp2 (mkConst ``Formula.Proves) + (mkConst ``RawIncidence.masterFormula) clause + +private def certificateClauseName (baseName : Name) (identifier : ℕ) : Name := + Name.str baseName s!"_c{identifier}" + +private def certificateInitialClauseName (baseName : Name) (identifier : ℕ) : Name := + Name.str baseName s!"_i{identifier}" + +private def requireTheoremWithType (name : Name) (expectedType : Expr) : + MetaM Unit := do + let information ← getConstInfo name + match information with + | .thmInfo _ => pure () + | _ => throwError "imported certificate declaration is not a theorem: {name}" + unless information.type == expectedType do + throwError "imported certificate theorem has the wrong clause type: {name}" + +private def truthProof : Expr := + mkApp2 (mkConst ``Eq.refl [1]) (mkConst ``Bool) (mkConst ``Bool.true) + +private def clauseReflexivity (clause : Expr) : Expr := + mkApp2 (mkConst ``Eq.refl [1]) (mkConst ``Clause) clause + +private def checkedSourceProof (proof clause : Expr) : MetaM Expr := do + let inferredType ← Meta.inferType proof + unless inferredType == certificateProofType clause do + throwError "source-clause theorem did not infer the exact certificate clause type" + pure proof + +private def checkSourceMetadata + (clauses : Array (Array Int)) : Except String Unit := do + unless masterBaseReferences.size = 3224 do + throw "master reference count does not match its committed source metadata" + unless masterExcludedMasks.size = 39 do + throw "excluded-row count does not match its committed source metadata" + unless masterBaseReferences.size + masterExcludedMasks.size = clauses.size do + throw "source metadata does not partition the master formula" + let excludedRows := masterExcludedMasks.toList.map fun mask => + RawIncidence.packedRow (UInt64.ofNat mask) + unless excludedRows == RawIncidence.excludedRows do + throw "excluded-row masks do not match the master formula order" + +private def additionIndices + (initialClauseCount : ℕ) (additions : Array Addition) : + Except String (HashMap ℕ ℕ) := do + let mut indices : HashMap ℕ ℕ := {} + let mut previous := initialClauseCount + for index in [0:additions.size] do + let some addition := additions[index]? + | throw "certificate addition index is out of range" + unless previous < addition.identifier do + throw "certificate addition identifiers are not strictly increasing" + if indices.contains addition.identifier then + throw "certificate contains a duplicate addition identifier" + indices := indices.insert addition.identifier index + previous := addition.identifier + pure indices + +private def neededStageClauses + (initialClauseCount start stop : ℕ) (additions : Array Addition) + (indices : HashMap ℕ ℕ) : + Except String (Array ℕ × Array ℕ) := do + let mut initialSeen : HashMap ℕ Unit := {} + let mut importedSeen : HashMap ℕ Unit := {} + let mut initialIdentifiers := #[] + let mut importedIdentifiers := #[] + for index in [start:stop] do + let some addition := additions[index]? + | throw "certificate addition index is out of range" + for antecedent in addition.antecedents do + if antecedent = 0 then + throw "certificate antecedent identifier cannot be zero" + else if antecedent ≤ initialClauseCount then + unless initialSeen.contains antecedent do + initialSeen := initialSeen.insert antecedent () + initialIdentifiers := initialIdentifiers.push antecedent + else + let some antecedentIndex := indices[antecedent]? + | throw s!"certificate antecedent {antecedent} is not a retained addition" + unless antecedentIndex < index do + throw s!"certificate antecedent {antecedent} is not earlier than its use" + if antecedentIndex < start then + unless importedSeen.contains antecedent do + importedSeen := importedSeen.insert antecedent () + importedIdentifiers := importedIdentifiers.push antecedent + pure (initialIdentifiers, importedIdentifiers) + +private def cacheInitialClauseProof + (clause proof : Expr) (clausePrefix : Name) (identifier : ℕ) : + MetaM Expr := do + let theoremName := certificateInitialClauseName clausePrefix identifier + let theoremType := certificateProofType clause + if (← getEnv).contains theoremName then + requireTheoremWithType theoremName theoremType + else + addDecl <| Declaration.thmDecl { + name := theoremName + levelParams := [] + type := theoremType + value := ← checkedSourceProof proof clause + } + pure <| mkConst theoremName + +private def sourceInitialClause + (clauses : Array (Array Int)) (clausePrefix : Name) (identifier : ℕ) : + MetaM GlobalClause := do + if identifier = 0 ∨ clauses.size < identifier then + throwError "initial certificate clause identifier is out of range" + let index := identifier - 1 + let some literals := clauses[index]? + | throwError "initial certificate clause index is out of range" + let clause := buildClause literals + if index < masterBaseReferences.size then + let some reference := masterBaseReferences[index]? + | throwError "master reference index is out of range" + let tag := RawIncidence.tagOfRef 0 0 reference + unless reference < 20659 ∧ + RawIncidence.masterReferenceUsedB reference ∧ tag.validB do + throwError "master reference metadata is not valid and in range" + unless clauseLiterals tag.toClause == literals do + throwError "master reference clause does not match the certificate formula order" + let proof := mkAppN (mkConst ``RawIncidence.masterBaseClause_proves) + #[mkRawNatLit reference, truthProof, truthProof, truthProof, clause, + clauseReflexivity clause] + pure { + literals + expression := clause + proof := ← cacheInitialClauseProof clause proof clausePrefix identifier + } + else + let maskIndex := index - masterBaseReferences.size + let some mask := masterExcludedMasks[maskIndex]? + | throwError "excluded-row mask index is out of range" + let row := RawIncidence.packedRow (UInt64.ofNat mask) + unless mask < 256 ∧ RawIncidence.masterExcludedMaskUsedB mask ∧ + decide (row ∉ RawIncidence.canonicalRows) do + throwError "excluded-row metadata is not noncanonical and in range" + unless clauseLiterals (RawIncidence.rowExclusionClause row) == literals do + throwError "excluded-row clause does not match the certificate formula order" + let proof := mkAppN (mkConst ``RawIncidence.canonicalRowClause_proves) + #[mkRawNatLit mask, truthProof, truthProof, truthProof, clause, + clauseReflexivity clause] + pure { + literals + expression := clause + proof := ← cacheInitialClauseProof clause proof clausePrefix identifier + } + +private def importedAdditionClause + (additions : Array Addition) (indices : HashMap ℕ ℕ) + (clausePrefix : Name) (identifier : ℕ) : MetaM GlobalClause := do + let some index := indices[identifier]? + | throwError "imported certificate identifier is not a retained addition" + let some addition := additions[index]? + | throwError "imported certificate addition index is out of range" + if addition.literals.isEmpty then + throwError "empty clause cannot be imported as an intermediate theorem" + let clause := buildClause addition.literals + let theoremName := certificateClauseName clausePrefix identifier + requireTheoremWithType theoremName (certificateProofType clause) + pure { + literals := addition.literals + expression := clause + proof := mkConst theoremName + } + +private def reconstructStage + (clauses : Array (Array Int)) (additions : Array Addition) + (start stop : ℕ) (clausePrefix finalTheorem : Name) : MetaM Unit := do + unless start < stop ∧ stop ≤ additions.size do + throwError "certificate stage range is invalid" + unless (certificateClauseName clausePrefix 0).isInternal do + throwError "certificate clause names must be stable internal declarations" + match checkSourceMetadata clauses with + | .ok () => pure () + | .error message => throwError message + let indices ← + match additionIndices clauses.size additions with + | .ok indices => pure indices + | .error message => throwError message + let (initialIdentifiers, importedIdentifiers) ← + match neededStageClauses clauses.size start stop additions indices with + | .ok identifiers => pure identifiers + | .error message => throwError message + let mut database : HashMap ℕ GlobalClause := {} + for identifier in initialIdentifiers do + database := database.insert identifier + (← sourceInitialClause clauses clausePrefix identifier) + for identifier in importedIdentifiers do + database := database.insert identifier + (← importedAdditionClause additions indices clausePrefix identifier) + let context := mkConst ``RawIncidence.masterFormula + let mut derivedEmpty := false + for index in [start:stop] do + let some addition := additions[index]? + | throwError "certificate addition index is out of range" + let clause := buildClause addition.literals + let proof ← + match buildProofStep database addition.literals addition.antecedents + context clause with + | .ok proof => pure proof + | .error message => throwError message + if addition.literals.isEmpty then + unless index + 1 = additions.size ∧ stop = additions.size do + throwError "empty clause occurs before the final certificate addition" + addDecl <| Declaration.thmDecl { + name := finalTheorem + levelParams := [] + type := certificateProofType clause + value := proof + } + addDocStringCore finalTheorem + "Unsatisfiability of the 3,263-clause master coverage formula." + derivedEmpty := true + else + let theoremName := certificateClauseName clausePrefix addition.identifier + addDecl <| Declaration.thmDecl { + name := theoremName + levelParams := [] + type := certificateProofType clause + value := proof + } + database := database.insert addition.identifier { + literals := addition.literals + expression := clause + proof := mkConst theoremName + } + if stop = additions.size then + unless derivedEmpty do + throwError "final certificate stage does not derive the empty clause" + else if derivedEmpty then + throwError "nonfinal certificate stage derived the empty clause" + +/-- +Decode one contiguous range of the packed master certificate. Every nonempty +addition becomes a stable theorem constant for the following stage. +-/ +syntax "master_lrat_stage" + " initial_clauses " num " additions " num + " stage_start " num " stage_stop " num + " clause_prefix " ident " final_theorem " ident + " data_parts " ident* : command + +elab_rules : command + | `(master_lrat_stage + initial_clauses $initialCount:num additions $additionCount:num + stage_start $stageStartSyntax:num stage_stop $stageStopSyntax:num + clause_prefix $clausePrefixSyntax:ident + final_theorem $finalTheoremSyntax:ident + data_parts $parts:ident*) => do + let initialCount := initialCount.getNat + let additionCount := additionCount.getNat + let start := stageStartSyntax.getNat + let stop := stageStopSyntax.getNat + unless masterClauses.size = initialCount do + throwError "master formula clause count does not match certificate metadata" + let currentNamespace ← getCurrNamespace + let partNames := parts.toList.map fun part => + currentNamespace ++ part.getId + let encoded ← readEmbeddedParts partNames + let bytes ← + match decodeBase64 encoded with + | .ok bytes => pure bytes + | .error message => throwError message + let decodedAdditions ← + match decodeAdditions initialCount additionCount bytes with + | .ok result => pure result + | .error message => throwError message + let clausePrefix := currentNamespace ++ clausePrefixSyntax.getId + let finalTheorem := currentNamespace ++ finalTheoremSyntax.getId + Command.liftTermElabM do + reconstructStage masterClauses decodedAdditions start stop + clausePrefix finalTheorem + +end Erdos97Octagon.LRAT diff --git a/LeanPool/Erdos97ConvexOctagon/LRAT/Format.lean b/LeanPool/Erdos97ConvexOctagon/LRAT/Format.lean new file mode 100644 index 00000000..55744dcd --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/LRAT/Format.lean @@ -0,0 +1,266 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.LRAT.Semantics + +/-! +# Versioned packed LRAT format + +Deletion records are omitted because retaining proved clauses is sound. Each +addition stores an identifier delta, signed literals, and backward distances +to its antecedent clauses. Natural numbers use unsigned base-128 varints and +the resulting bytes use unpadded base64. +-/ + +namespace Erdos97Octagon.LRAT + +/-- Maximum number of bytes accepted for one packed natural number. -/ +def packedVarintByteBound : ℕ := 16 + +/-- One reverse-unit-propagation addition. -/ +structure Addition where + /-- Strictly increasing LRAT clause identifier. -/ + identifier : ℕ + /-- Signed DIMACS literals in the derived clause. -/ + literals : Array Int + /-- Earlier clauses used for reverse unit propagation. -/ + antecedents : Array ℕ +deriving BEq + +/-- The current position in a packed byte sequence. -/ +structure Cursor where + /-- Complete packed certificate byte sequence. -/ + bytes : ByteArray + /-- Zero-based position of the next unread byte. -/ + position : ℕ + +private def base64Byte (value : ℕ) : Except String UInt8 := + if value < 26 then + pure (UInt8.ofNat (65 + value)) + else if value < 52 then + pure (UInt8.ofNat (97 + value - 26)) + else if value < 62 then + pure (UInt8.ofNat (48 + value - 52)) + else if value = 62 then + pure 43 + else if value = 63 then + pure 47 + else + throw "base64 value exceeds six bits" + +private def base64Value (character : UInt8) : Except String ℕ := + let value := character.toNat + if 65 ≤ value ∧ value ≤ 90 then + pure (value - 65) + else if 97 ≤ value ∧ value ≤ 122 then + pure (value - 97 + 26) + else if 48 ≤ value ∧ value ≤ 57 then + pure (value - 48 + 52) + else if character = 43 then + pure 62 + else if character = 47 then + pure 63 + else + throw s!"invalid base64 byte {value}" + +/-- Encode bytes as unpadded base64. -/ +def encodeBase64 (bytes : ByteArray) : Except String String := do + let mut output := ByteArray.empty + for block in [0:(bytes.size + 2) / 3] do + let offset := 3 * block + let some first := bytes[offset]? + | throw "base64 encoder index is out of range" + let a := first.toNat + output := output.push (← base64Byte (a / 4)) + if offset + 1 = bytes.size then + output := output.push (← base64Byte ((a % 4) * 16)) + else + let some second := bytes[offset + 1]? + | throw "base64 encoder second byte is missing" + let b := second.toNat + output := output.push (← base64Byte ((a % 4) * 16 + b / 16)) + if offset + 2 = bytes.size then + output := output.push (← base64Byte ((b % 16) * 4)) + else + let some third := bytes[offset + 2]? + | throw "base64 encoder third byte is missing" + let c := third.toNat + output := output.push (← base64Byte ((b % 16) * 4 + c / 64)) + output := output.push (← base64Byte (c % 64)) + match String.fromUTF8? output with + | some text => pure text + | none => throw "base64 encoder produced invalid UTF-8" + +/-- Decode unpadded base64. -/ +def decodeBase64 (text : String) : Except String ByteArray := do + let characters := text.toUTF8 + if characters.size % 4 = 1 then + throw "invalid one-character base64 tail" + let mut output := ByteArray.empty + for block in [0:(characters.size + 3) / 4] do + let offset := 4 * block + let some first := characters[offset]? + | throw "base64 decoder index is out of range" + let some second := characters[offset + 1]? + | throw "base64 decoder second byte is missing" + let a ← base64Value first + let b ← base64Value second + output := output.push (UInt8.ofNat (a * 4 + b / 16)) + if offset + 2 < characters.size then + let some third := characters[offset + 2]? + | throw "base64 decoder third byte is missing" + let c ← base64Value third + output := output.push (UInt8.ofNat ((b % 16) * 16 + c / 4)) + if offset + 3 < characters.size then + let some fourth := characters[offset + 3]? + | throw "base64 decoder fourth byte is missing" + let d ← base64Value fourth + output := output.push (UInt8.ofNat ((c % 4) * 64 + d)) + else if c % 4 ≠ 0 then + throw "nonzero padding bits in base64 tail" + else if b % 16 ≠ 0 then + throw "nonzero padding bits in base64 tail" + pure output + +private def appendVarintWithFuel : + ℕ → ℕ → ByteArray → Except String ByteArray + | 0, _, _ => throw "natural number exceeds packed varint bound" + | fuel + 1, value, output => + if value < 128 then + pure <| output.push (UInt8.ofNat value) + else + appendVarintWithFuel fuel (value / 128) + (output.push (UInt8.ofNat (value % 128 + 128))) + +private def appendVarint (value : ℕ) (output : ByteArray) : + Except String ByteArray := + appendVarintWithFuel packedVarintByteBound value output + +private def readByte (cursor : Cursor) : Except String (UInt8 × Cursor) := + match cursor.bytes[cursor.position]? with + | none => throw "unexpected end of packed certificate" + | some byte => pure (byte, { cursor with position := cursor.position + 1 }) + +private def readVarintWithFuel : + ℕ → ℕ → ℕ → Cursor → Except String (ℕ × Cursor) + | 0, _, _, _ => throw "packed varint exceeds decoder bound" + | fuel + 1, multiplier, value, cursor => do + let (byte, cursor) ← readByte cursor + let payload := byte.toNat % 128 + let value := value + multiplier * payload + if byte.toNat < 128 then + pure (value, cursor) + else + readVarintWithFuel fuel (multiplier * 128) value cursor + +private def readVarint (cursor : Cursor) : Except String (ℕ × Cursor) := + readVarintWithFuel packedVarintByteBound 1 0 cursor + +private def literalCode (literal : Int) : Except String ℕ := + if literal = 0 then + throw "zero is not a literal" + else if literal < 0 then + pure (2 * ((-literal).toNat - 1) + 1) + else + pure (2 * (literal.toNat - 1)) + +private def literalOfCode (code : ℕ) : Int := + if code % 2 = 0 then + Int.ofNat (code / 2 + 1) + else + -Int.ofNat (code / 2 + 1) + +private def appendLiterals + (literals : Array Int) (output : ByteArray) : Except String ByteArray := do + let mut output ← appendVarint literals.size output + for literal in literals do + output ← appendVarint (← literalCode literal) output + pure output + +private def appendAntecedents + (identifier : ℕ) (antecedents : Array ℕ) (output : ByteArray) : + Except String ByteArray := do + let mut output ← appendVarint antecedents.size output + for antecedent in antecedents do + if antecedent = 0 ∨ identifier ≤ antecedent then + throw s!"antecedent {antecedent} is not before clause {identifier}" + output ← appendVarint (identifier - antecedent) output + pure output + +private def appendAddition + (previous : ℕ) (addition : Addition) (output : ByteArray) : + Except String ByteArray := do + if addition.identifier ≤ previous then + throw "clause identifiers are not strictly increasing" + let output ← appendVarint (addition.identifier - previous) output + let output ← appendLiterals addition.literals output + appendAntecedents addition.identifier addition.antecedents output + +/-- Pack additions after the initial clause range. -/ +def encodeAdditions + (initialClauseCount : ℕ) (additions : Array Addition) : + Except String ByteArray := do + let mut previous := initialClauseCount + let mut output := ByteArray.empty + for addition in additions do + output ← appendAddition previous addition output + previous := addition.identifier + pure output + +private def readLiterals + (count : ℕ) (initialCursor : Cursor) : + Except String (Array Int × Cursor) := do + let mut cursor := initialCursor + let mut result := Array.mkEmpty count + for _ in [0:count] do + let (code, nextCursor) ← readVarint cursor + result := result.push (literalOfCode code) + cursor := nextCursor + pure (result, cursor) + +private def readAntecedents + (identifier count : ℕ) (initialCursor : Cursor) : + Except String (Array ℕ × Cursor) := do + let mut cursor := initialCursor + let mut result := Array.mkEmpty count + for _ in [0:count] do + let (distance, nextCursor) ← readVarint cursor + if distance = 0 ∨ identifier < distance then + throw "invalid backward antecedent distance" + result := result.push (identifier - distance) + cursor := nextCursor + pure (result, cursor) + +private def readAddition + (previous : ℕ) (cursor : Cursor) : Except String (Addition × Cursor) := do + let (identifierDelta, cursor) ← readVarint cursor + if identifierDelta = 0 then + throw "zero clause identifier delta" + let identifier := previous + identifierDelta + let (literalCount, cursor) ← readVarint cursor + let (literals, cursor) ← readLiterals literalCount cursor + let (antecedentCount, cursor) ← readVarint cursor + let (antecedents, cursor) ← readAntecedents identifier antecedentCount cursor + pure ({ identifier, literals, antecedents }, cursor) + +/-- Decode exactly `additionCount` packed additions and reject trailing bytes. -/ +def decodeAdditions + (initialClauseCount additionCount : ℕ) (bytes : ByteArray) : + Except String (Array Addition) := do + let mut previous := initialClauseCount + let mut cursor : Cursor := { bytes, position := 0 } + let mut additions := Array.mkEmpty additionCount + for _ in [0:additionCount] do + let (addition, nextCursor) ← readAddition previous cursor + additions := additions.push addition + previous := addition.identifier + cursor := nextCursor + if cursor.position = bytes.size then + pure additions + else + throw "trailing bytes after packed certificate" + +end Erdos97Octagon.LRAT diff --git a/LeanPool/Erdos97ConvexOctagon/LRAT/Semantics.lean b/LeanPool/Erdos97ConvexOctagon/LRAT/Semantics.lean new file mode 100644 index 00000000..9882f859 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/LRAT/Semantics.lean @@ -0,0 +1,113 @@ +/- +Copyright (c) 2022 Mario Carneiro, 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Mario Carneiro, Egor Lyfar +-/ + +import Mathlib.Algebra.Group.Nat.Defs +import Mathlib.Data.List.Basic + +/-! +# Stable propositional semantics for LRAT certificates + +Adapted from `Mathlib/Tactic/Sat/FromLRAT.lean` (Apache-2.0). This +project-owned interface deliberately contains only the definitions and +soundness lemmas needed by the local LRAT elaborator. +-/ + +namespace Erdos97Octagon.LRAT + +/-- A positive or negative occurrence of a zero-based propositional variable. -/ +inductive Literal where + | positive : ℕ → Literal + | negative : ℕ → Literal + +/-- Translate a nonzero DIMACS integer into a literal. -/ +def Literal.ofInt (value : Int) : Literal := + if value < 0 then .negative (-value - 1).toNat else .positive (value - 1).toNat + +/-- Reverse the polarity of a literal. -/ +def Literal.negate : Literal → Literal + | .positive index => .negative index + | .negative index => .positive index + +/-- A clause is a disjunction represented as a list of literals. -/ +abbrev Clause := List Literal + +/-- A formula is a conjunction represented as a list of clauses. -/ +abbrev Formula := List Clause + +/-- A single clause viewed as a formula. -/ +def Formula.one (clause : Clause) : Formula := [clause] + +/-- Conjoin two formulas. -/ +def Formula.and (left right : Formula) : Formula := left ++ right + +/-- Every clause in `smaller` also occurs in `larger`. -/ +structure Formula.Subsumes (larger smaller : Formula) : Prop where + property : ∀ clause, clause ∈ smaller → clause ∈ larger + +theorem Formula.subsumesSelf (formula : Formula) : formula.Subsumes formula := + ⟨fun _ membership => membership⟩ + +theorem Formula.subsumesLeft + (formula left right : Formula) (h : formula.Subsumes (left.and right)) : + formula.Subsumes left := + ⟨fun _ membership => h.property _ <| List.mem_append.mpr <| Or.inl membership⟩ + +theorem Formula.subsumesRight + (formula left right : Formula) (h : formula.Subsumes (left.and right)) : + formula.Subsumes right := + ⟨fun _ membership => h.property _ <| List.mem_append.mpr <| Or.inr membership⟩ + +/-- A proposition-valued assignment of all propositional variables. -/ +abbrev Valuation := ℕ → Prop + +/-- The assertion that a literal is false in a valuation. -/ +def Valuation.falsifies (valuation : Valuation) : Literal → Prop + | .positive index => ¬ valuation index + | .negative index => valuation index + +/-- The assertion that at least one literal in a clause is true. -/ +def Valuation.satisfies (valuation : Valuation) : Clause → Prop + | [] => False + | literal :: clause => valuation.falsifies literal → valuation.satisfies clause + +/-- A clause is satisfied when its literals are not all false. -/ +theorem Valuation.satisfiesOfNotAllFalsified + (valuation : Valuation) (clause : Clause) + (h : ¬ List.Forall valuation.falsifies clause) : + valuation.satisfies clause := by + induction clause with + | nil => simp at h + | cons literal remaining inductionHypothesis => + intro hliteral + apply inductionHypothesis + intro hremaining + apply h + simpa using And.intro hliteral hremaining + +/-- The assertion that every clause in a formula is satisfied. -/ +structure Valuation.SatisfiesFormula + (valuation : Valuation) (formula : Formula) : Prop where + property : ∀ clause, clause ∈ formula → valuation.satisfies clause + +/-- A clause follows semantically from a formula. -/ +def Formula.Proves (formula : Formula) (clause : Clause) : Prop := + ∀ valuation : Valuation, valuation.SatisfiesFormula formula → + valuation.satisfies clause + +/-- Membership in a formula proves a clause. -/ +theorem Formula.provesOfSubsumes {formula : Formula} {clause : Clause} + (h : formula.Subsumes (Formula.one clause)) : formula.Proves clause := + fun _ satisfies => satisfies.property _ <| h.property _ <| List.Mem.head .. + +/-- The sound unit-propagation case split. -/ +theorem Valuation.propagateCases {valuation : Valuation} {literal : Literal} + (positiveCase : valuation.falsifies literal.negate → False) + (negativeCase : valuation.falsifies literal → False) : False := + match literal with + | .positive _ => negativeCase positiveCase + | .negative _ => positiveCase negativeCase + +end Erdos97Octagon.LRAT diff --git a/LeanPool/Erdos97ConvexOctagon/Main.lean b/LeanPool/Erdos97ConvexOctagon/Main.lean new file mode 100644 index 00000000..039d4a6e --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/Main.lean @@ -0,0 +1,23 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.Classification + +/-! +# The convex-octagon case of Erdős problem 97 + +The headline theorem exported by this entry module is +`Erdos97Octagon.erdos97_convex_octagon`: among eight labelled points in convex +position, some point does not have four other points at a common distance. + +The proof reduces a hypothetical counterexample to a normalized balanced +incidence table, classifies its first row up to symmetry, and excludes all +seven canonical masks with one regenerable LRAT certificate checked by a +project-owned kernel-safe checker. + +This is the eight-point convex case only. It does not prove the general open +problem. +-/ diff --git a/LeanPool/Erdos97ConvexOctagon/MasterCertificate.lean b/LeanPool/Erdos97ConvexOctagon/MasterCertificate.lean new file mode 100644 index 00000000..f8474a23 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/MasterCertificate.lean @@ -0,0 +1,9 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.MasterCertificateStage02 + +/-! # Kernel-checked master coverage certificate -/ diff --git a/LeanPool/Erdos97ConvexOctagon/MasterCertificateData0.lean b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData0.lean new file mode 100644 index 00000000..83be7f17 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData0.lean @@ -0,0 +1,517 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.LRAT.Format + +/-! # Generated packed master-certificate data -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Packed certificate data part 0. -/ +def masterCertificatePart0 : List String := [ + "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", + "GqUapBqjGqIaoRqgGp8anhrAFaQUjBqlFIsB4hbkFg/jFuEWxhkHAsMWxBbDE8UUxhTUE9gV+hYBGb0VixW1EcARuRe7F0", + "PxFvMWwhC6EOUXiBn+EqcJAQs5ERUXGyEjKSwwPy6sGqsaqhqpGqgapxqmGqUapBqjGqIaoRqgGp8awRWlFI0aphSMAeMW", + "5RYQ5BbiFscZCAPEFsUWxBPGFMcU+xYCvhUB8BizDp4V8hbzFrsXoAqtCscVjBcBB1YhIykvVF8HqRqmGqMaA88TwRXyGA", + "EKMBEVFxshIyksPySuGq0arBqqGqkaqBqnGqYapRqkGqMaohqhGqcUjxqoFI4B5RbnFhLmFuQWyRkKxhbHFgIFyBDGE8AZ", + "AcMR8RbzFr0UARFSGCEjKS8xP0ROUFZdX293fROvGqwaqxqoGqcaphqlGu4Y3xXKFJcUyBQd/xbBFb8X5hKKGeoJAQk/ER", + "UXGyEjKSwtsBqvGq4arRqrGqoaqRqoGqcaphqkGqMaqRSRGqoUkAHnFukWFOgW5hbLGQKXFJgU9BKsGQzIFskW4BXOEx68", + "EcURjxeSFwOdFQHkE4IXhQ37CYEZAQVCFRdATAauGqkaqBqWGZoZnhUBBUAVF0JKBq8aqhqpGpgZnBmfFQENaREVFxshIy", + "ksMFFWazS0GrMashqxGrAarxquGq0arBqrGqoaqRqoGqcaphrGFQOsFJQarRRRzRbOFs8W0xaTAc0Q7hkG3BPgFeIV1RPq", + "FuwW6xbpFsEZwxnEF8EXyhO8F/0US+0XuxGOF/cWkhnsFLAJAQxRERUXGyEjKSwwVmsdtBqxGq8arhqtGqwaqxqqGqcaBJ", + "UarhRSzhbPFtAW1BbOEAfdE+EV1hO9FwGDF9IYxhWnFcQXAQtrERUXGyEjKSwwViG1GrMasRqwGq8arhqtGqwaqxqpGqga", + "lhqvFAXQFtUWlQFTzxYI7BbuFs8QvhfFGZcVAfQYtgqnFU3CGLATAQZqKjs9TX0FshqrGvkW+xbFFAEJMBEVFxshIyksOL", + "gatxq2GrUatBqzGrIasRqwGq8arhqtGqwaqxqqGrEU/xKYGgeXAdIW0xbXFlXRFu4W8BYb7xbtFtEQxRnHGQGSFQKjFcwT", + "vg6ECq0X6xKTFccXyBcF+xbJFcoVvBPmFcsYhhfwF/AUtQkBC1ERFyExOTs9RE19C7UasRqvGq4a6xc1xxTvF6IZlxnBEA", + "ERZxEVFxsjMTI7PURQVVZfa28auRq4GrcatRq0GrIasRqwGq8apBXYDcMT/RKAEx6xF9cYxRGjFbMZmhftEcIQ+BjIF9oV", + "AQ1pISkvQkRNT11fZWtvBrcashqwGsUNwhGkGQEKMhEVFxshIyksVje8Grsauhq5Grgatxq2GrUatBqzGrIasRqwGq8arh", + "q1FASDE5waC5sB1xDWFtUW1xbbFh/0FvMW8RbyFrUZsxkOBdITmBYDAlOaF50X5xClFcQQAdUYihetFcUSyxf/FqUZlxa6", + "CQEKZxEVFxshIyksVje9Grwauxq6GrkauBq3GrYatRq0GrMashqxGrAarxqnFQy1FJ0athQBBdcW1hbYFtwWnAHRFdYQ9x", + "kP9Rb0FvIW8xasGdMTBrQX2w2ZFqYV2hidF9UUxBHnDY0XgBemGc4VvBGdCskXvgkBClERFRcbISMpLFY3vhq9Grwauxq6", + "GrkauBq3GrYatRq0GrMashqxGrAaDQG2FJ4atxQCBtgW1xbZFt0WnBefF50B0hXXEPEX8Bf4GeYT3xPsFRCnFaoV9hb1Fv", + "MW9BatGY4XK1U6jxeLE/cU0BULvgkBDWkhKS9NT1BWXV9la28Luxq6GrYatBrbEdcUxhH9GNgTqBnJDQEJVhEVFxshIyks", + "M78avhq9Grwauxq6GrkauBq3GrYatRq0GrMashoPuBSgGrkUCNoW2RbbFt8WnwHbEPoZEvgW9xb1FvYW1hMCA54XqRW3Fw", + "TUFa8ZCcoTAdkYjxeRF+AX0xGDFw2BCgEKZxEVFxshIyksMjfBGsAavxq+Gr0avBq7GroauRq4Grcathq1GrQasxqrFRC5", + "FAEJoRq6FNsW2hbcFuAWrBWwF+cU3BCgAfsZuhe3F7gZuhm3GfgW9hb3FvQSCq0Q3w3KE94YzxfRF9kUyBGbF8URhBemGc", + "AJAQkyERUXGyEjKSwxwRrAGr8avhq9Grwauxq6GrkauBq3GrYatRq0GhG6FAKiGrsU3BbbFt0W4RatFaEB/Bn6FvkW9xb4", + "FtYTAaEXqxUK3RC6F7sZuRm4F/USC5oV3hGFF6cZihOdDpAXAQlnERUXGyEjKSw4wxrCGsEawBq/Gr4avRq8Grsauhq5Gr", + "gatxq2GrUarRUSuxQBA6MavBTdFtwW3hbiFtcVhROuFbIXtBeiAf0ZsRmyGWC5F7wX+hb4FvkWDPsMnxb2EuEN4BjbFMoR", + "hhmTF4YXqBm7FcIRxQkBCCwRFRcbISMpK8MawhrBGr4avRq8Grsauhq5GrcathqkGokTvRSjASf8FvsW+Rb6Ft4ZE94W3R", + "bfFgLYFYYTsxlhDaAWAVsErxXYE5MPoxfdGK0V4BG8FwEHWCEjLVRWXQTAGvMY+xj1EwEKXSEjKS01PT9WXwjBGr4auxrd", + "EwHwE9kVihkBDGcRFRcbISMpNTs9VibEGsMawhrBGsAavxq+Gr0avBq7GroauRqwFAO/FKcawBQqgBrjFuUW5BbmFgH2Fv", + "gW/BMQihcn/xSgFacX3hGWF5gT2BXEGAELOxEVFxshIyk1PVYtxhrFGsQawxrCGsEawBq/Gr4avRq8GrsauhqxFATAFKga", + "wRQrgRrkFuYW5RbnFgIs9xb5Fv0TgRQRixeiFSihFb0XuBDwGAGpF6YXX8ATlxfyEAELNREVFxshIykwPVYgyBrGGsQawx", + "rCGsEawBq/Gr4avRq8Grsa4hAFwRSpGsIUhBqCGqgB5RbnFuYW6BYBjhePF9oZA/gW+hYpAQ1rERUXITs9P09WXV9vD8ca", + "xhrCGsEawBq/Gs4U1RGRE8QUqxe2FaUZmxn3EgESOREYGyEjKS09P09dX2Fnb3t9FMoaxxrDGsIawBrqFN0T3xXrFu4W0x", + "aZF50a5RHdFaoK2xfhENkQqBkBDWcRFRcbISMpMDs9Vl0kyxrJGscaxhrFGsQawxrCGsEawBq/Gr4aAwjFFKwaaYcahRqr", + "AegW6hbpFgLGFDmOF5AX/BYB4xnZD+YTyhWOFNgXAQw7ERUXGyEjKTA9Vl0ZyhrIGsYaxRrEGsMawRq/GgQJkhOtGmqIGo", + "Ya6RbrFuoWA48XkRcBrherF4YVAQo9ERUXGyEjKTBWJs0ayxrJGsgaxxrGGsUaxBrDGsIawRrAGgqTE8cUrhqJGocarQHq", + "FuwW7RYFagEy/xb9FoMUF5EXLuUZzhXAE8wVyhDaFwEOZxEXGyEpNTlKVmRoa3sQzBrLGskaxxrGGsUaxBqHFYoTrxfZEN", + "EQuBnoFewY2BMBDGsRFRcbISMpMDU7VjXQGs8azhrNGswayxrKGskayBrHGsYaxRrEGsMawhqqFekQyBQCDMkUsBrcGeAZ", + "ixqJGq8B7BbuFu0WhBeDF4IX1BS8E5MXqRUBsReuF2fcGN8OvBXDCrITihgdxRf6E+wXnhfyCQEMRxg5Oz9LTU9YZ297BM", + "0a6RG0EZ8XARBnERUXGyEjKTU5O0tNVnt9K9AazxrOGs0azBrLGsoayRrIGscaxRrEGrwVqxXjFK0V4BSLF+YVwhTKFA7L", + "FLIaxxeFFz9C3hmLGrMV8BbvFgGyF8IWxQqqEZAZzBjuE54TvBkBCzURFRcbISMpMDtWHNIa0BrOGs0ayxrKGskayBrHGs", + "Ya7BDLFAUPzBSzGuMZjhqyAYcXhRcDlReXFwG0F7EXjBUBCVYRFRcbISMpMAnRGswayxrKGgZv7RDiGQEBEF0RFRcbISot", + "NTs9P09XX28h0xrSGtEa0BrPGs0azBrLGsoayRrIGs8U6RH9EewT3Ba+FJwTzhTxGYUXQpcXmRf1EK4VlRS0F8oXzRK9Er", + "MSphcBDzURFRcbISotOz0/T1dfbxPUGtEa0BrNGswayhrJGr8UwRUBhxeFF4sUjxQfmRewFa8VyxcBD10RFRcbJio0Oz0/", + "T1dfbyPWGtUa1BrTGtIa0RrPGs4azRrMGssayhrRFOsR/xHfFsIV3hbQFIoa8RmZF5sXtgGHF/cQthfPEsMVvxKsFKcX0B", + "e/GbwKAQ87ERUXGyEqLTA9P09XX28k1xrWGtUa0xrSGtAazxrOGs0azBrLGsMV3xbgFp8T0RT+GbcBAgE8iReHF/cSkA2N", + "FCGDGe8ZmxfkEcMSuQq3F84XwRUBCl0RFRcbISMpMD032RrYGtca1hrVGtQa0xrSGtEa0BrPGs4azRrMGssa0RQFFdIUuR", + "rEFZIalBq4AfUW9xb2FvgWAdMUnhegF58XiRfiEXWbE+oZ+RT4FKcXuRXrFXC4Cs0TsRacGekX5hfnEM4XthnCFfoJAQk9", + "ERUXGyEjKTAu2RrYGtca1RrUGtMa0hrRGtAazxrOGs0azBrSFAYW0xS6GsUVkxqVGrkB9hb4FvcW+RYBPosXiRf5EoUZAp", + "8XoRegF7sK+QvTF88X8xDDFesZhgzDErkXAQlrERUXGyEjKTA42xraGtka2BrXGtYa1RrUGtMa0hrRGtAazxrOGs0a0xQB", + "BxfUFLsadsYVlBqWGroB9BD3FvkW+Bb6Fo8XjReOF+sZ6RnfFOUR7xPHE7UV4Q6eF7oX5xjuGLQVvRPQF44TKOoX0A33E6", + "kX/gkBCDARFRcbISMpKdsa2hrZGtca1hrVGtQa0xrSGtEa0BrPGs4aGNUUvBqVGpcauwH4FvoW+Rb7FgJ3jhf1EOwZ6hkB", + "nhegF7UVtxUIxxXiDsYS0RefGb0KAQprERUXGyEjKT1WJ9oa2BrXGtYa1RrUGtMa0RrQGs8aARnJFL0a+BCWGpgaqhbLFN", + "YZ2Bn5FvsW+ha5FhPhFEGOF4wXoBeIFtoQKooZbb0KkQt0AQk9ERUXGyEjKVYn2xraGtka2BrXGtYa1RrUGtMa0hrQGtYU", + "AhrKFL4a+RCXGpkazBTXGdkZ+hb8FgFLoBeiF4gWkxQs7BC7GZcVvBfIFZgL7Q/nGAEMOREVFxshIyk7VmdrNd8a3hrdGt", + "wa2xraGtka2BrXGtYa1RrUGtMa0hrRGvMVyRXXFAEDG8AW2BS/Gs8U1Rm7FpgavgFS/Rb8FpIXkxeRF+MUyxOiF/wYuhaX", + "Fb8XyxX4FdYX2BfIGfsTsQ+dGe4X/RSDCgELZxEVFxshIyk7Vms24BrfGt4a3RrcGtsa2hrZGtga1xrWGtUa1BrTGtIayh", + "XYFAIEHMEW2RTAGtAUvBaZGr8BU/4W/Rb/FpMXlBeSF+QUoxe7FpgVwBfMFdcX2RcB2hnSE/0Y5Q3lEZcYLbAX3BD/F4YK", + "AQo7ERUXGyEjKVZrN+Ea4BrfGt4a3RrcGtsa2hrZGtga1xrWGtUa1BrTGtkUAwUdwhbaFMEa0RS9FpoawAFU/xb+FoAXlB", + "eVF5MX5RSkF7wWAb8Xwhd4yhXNFdkXygqYGPYQpQ/6GL8VzROfGdsZsRfcFYgKAQVKFRdCTgbeGtka2BqyGa8ZzhUBDEcY", + "OTs/S01PX2dvewXfGsYR+xHUErEXAQdmFxsmS1Z7BOEawhfFF50VARE5FRcmMTs/S01PVl9nam9wexLiGt8a3hrdGtwa2x", + "raGs8V3hRS3hPuGALFF/oVvRHOFd8YAQhWERUXGyEjKS3lGuMa4RrgGt8a3hrdGtwa2xraGtka2BoKIq0TxhrfFIERnxqh", + "GsUBhBeDF4UXghcIgAGZF5oXmBcFU6gXqheXGJkYAtAVAeAZ6RPvGIYSpBnFCgEIPREVFxshIyku5hrkGuIa4RrgGt8a3h", + "rdGtwa2xraGtka3xQLAcca4BSCEdIVxgFKI6Aa0xTVFIUXhBeGF4MX4hnTEEvhFI8S+xGXF1SpF6sXnBiHETXGF88SgRaq", + "GQEJOREVFxshIylrOOga5xrmGuUa5BrjGuIa4RrgGt8a3hrdGtwa2xraGvwV4BQBDALIGuEUgxHTFccBggHeGaAXmhecF5", + "sX1BDEFskWzhRSW4YX/BPyEewU1BN/xxerF4EZvhXKE+AXnxibE7IOqxm2F+MVjQoBCGsRFRcbISMpOeka6BrnGuYa5Rrk", + "GuMa4hrhGuAa3xreGt0a3BrbGuEUAg0DyRriFIQR1BXIAYMBoRebF50XnBfVEMUWyhaiGlNchxeIF/0T7RTzEawXgAHIF8", + "QWvxWgGOEX/hAB4xnUEdsT9RfjGIIZjxmRCgERORghJikxOz9LTU9QVFddX2EX6BrmGuUa4RrgGt8a1BKkE9AU/hOuFNkU", + "rRmEGoMU1BnqD5YQuBfgF9MWmxFsAQcpERUXGyEjL+oa6RroGuca5hrlGuQa4xriGuEa4BrfGt4a3RrjFMsa5BTKAQJYWw", + "SfF6MXnhemGqQarRexF68XiReKF4gXD4YRrxSUFgX/E9YVAeUZrRTVGZcQwhXhFwEUOxEXGBseISMmKC0xNDxNVFdda30i", + "6xrqGuka6BrnGuYa5RrkGuIa4RrgGt4azRbYEMgWiBpWX+cUhxSHF68Z0xT2EeYZgxW+F4UZ/xjNEb4Rrxf7F5UNAQtmER", + "UXGyEjMTxXazbtGuwa6xrqGuka6BrnGuYa5RrkGuMa4hrhGuAa3xqIEQK0E9gVzRrmFMwBpRegF6EXnxcB3RnlGdoZ1BSJ", + "F4sXhQGKF4EUzBbMF9YV4xflF7wSxRWGGa0XpQGOD7sTzgrAF6QYsBnjDY0KARRoERUYGyMoKy1PV11fYGRrb3B5fRvrGu", + "oa6BrnGuYa5RrkGuMawhfEF4sZgRmLFa0VavMVlBWKFtcX6xipF6gXzRXmGY4YO9EKAQt7ERUXGyEjMTxXazbvGu4a7Rrs", + "Gusa6hrpGuga5xrmGuUa5BrjGuIa4RraFYoRtBMEzxroFM4BpxeiF6MXoRcD5xncGd8Z1hSLF40XixqMF4MUqRfOFs0WvR", + "MCpxXZFYQB5RjoFwGGFf4V9Q3UGaYY3xWOCgEKaxEVFxshIzE8VyXvGuwa6xrqGuka6BrnGuYa5RrkGuMa4hrbFYsRtRMF", + "0BrpFM8BqBejF6QXohcBbK4WoRhaYwS1F7AXqBqOF/cRgxLEFwEGOi1Nant9Bewa5Rq3F7IXgBUBCTERFRcbISM8VyDxGv", + "Aa7BrrGuoa6RroGuca5RrkGrcTB9Ia6xTRAaoXpRemF6QXAl9ipRijGFxuAdMWjhrtFKEWjRcBAzowPAjwGusa6hroGvcZ", + "gRrlFPIZAQlPFRchIy0vSk0DsBSxFEEBBjgRFRcwPAfyGu0a7BrrGoUa+xm3EwEPexUXGx4hIyYoLTk7TVdrE/Qa8hrvGu", + "0a7BrrGugarxexF+8UkhoCkReNF44X4hPKF8gX1xEBD2sRFRcbISMtMDk7TVddfSH3GvUa8hrxGvAa7xruGu0a6xrpGtca", + "vhPiFQwBc7UWthZhshjWFoEUkxq6F5IU8hS6GZIXjhevD44V+xODGQEJaBgoOTs/V197BPQazBfKF9kRAQlBISMtRkpNYW", + "kG9RrwGu4a+A/MFM4ZAQxfERUXGyEjPD9PV3s1+hr5Gvga9xr2GvUa9BrzGvIa8RrwGu8a7hrtGuwa8xTaGsETCOUVD9kB", + "BQeyF60XrhesF44U9RQDlheWGmfYFrYXyBMCkRXNFwG0GEfYGZkT7BblENsK2RePGooB4xWVCgEOXhEXGx4hIy07TU9XYW", + "8M+hr0GvMa8RrtGmWYF5oT5hD/E7cUixgBCk8RFRcbISM8V3sZ+xr2GvUa8xryGvEa7xruGgr1FNwaCQfbAbQXrxewF64X", + "BWlsAfcUmxcCAQl7ERUXGyEjPFcj/Br5Gvga9xr2GvQa8xryGvAa7xoL6BUS9hTdGgoI3AG1F7AXsRevFwZqbQGbF5gXlR", + "eYFKkWwBneEZQVzxcBCDwRFRcbISNXOf4a/Rr8Gvsa+hr5Gvga9xr2GvUa9BrzGvIa8RrwGvcU3hrFExPpFd0BthexF7IX", + "sBcBetkTvBa9FmgMCwm5GAduwBe8F7YazBSdF5wX9hLoEugZ0hfRF8EZ5g/ZFfQXkxrnFY0W3ReaCgENTREXGy0xOT0/VF", + "dfcAn6Gvca9RqBAZ8XY54TnxSqGQEMMREVFxshIy06P1d7K4Ab/xr+Gv0a/Br7Gvoa+Rr4Gvca9hr1GvMa8hrDE+sVFcYT", + "+RTgGgLfAd8U7hScF5wanRf7Gd4WggHOEwGxF50UkhTUF8MZ+RNttxjWD5QRjhgBD08RFRcbISMtMD9NV19reyqBG4Ab/x", + "r+Gvwa+xr6Gvka+Br3GvYa9BrzGuwVFscT+hThGgPgAfsU/hRlsBedGp0X4gqgE98W4BbPE5EVrBm6GNQUkBiNGMMTswuI", + "GpQZmBUBDk0RFRcbISMtOj9XX2t7I4Eb/xr9Gvwa+xr6Gvka+Br3GvYa9Rr0GgLtFfsU4hoE4QEBoBeZF7oa/hTgFMkXZr", + "EXkxrjCqETrhatGZkVlRmuDAENaxEVFxshIy06P1dfeyGDG4IbgRv/Gv0a/Br7Gvoa+Rr4GvYa9RoDGMkT/BTjGgXiAQG0", + "F/8UoRefGuEW4ha9F7wYuxilFNEZzBm0EwEMXxEVFxshIy06P1d7K4QbgRuAG/8a/hr9Gvwa+xr6Gvka+Br2Ghn9FOQaBg", + "FxdMUXyhe9Abwa5BaGAaIXkxXSE1IEvhj/E+UKhhmPGfwT8xXbF9cXmhqsEeMVgRkBCz8RFRcbISMtOld7KIQbghuBG4Ab", + "/xr+Gv0a/Br7Gvoa+Rr4Gvca8BUa/hTlGgfkAQFsb6IXmxedF8cWpBO9GuMUghWvGcsXlhq1F6IV8QrDFtcX9RjYDQEQXx", + "EVFxshKCsxOT0/TV17fRaGG4Ib/xr+Gv0a/Br7GvgamBSjFIAV5Bb/FOYa2hedF/8Tc70YwBeaESQBCzERFRcbISM6P1d7", + "H4YbhRuEG4IbgRv/Gv4a/Rr8GvoayhMCHM0TgBXyFQnnGqIapBrmAe4Uvhe9F7wXghoBcbAUphOxGQEMaxEXGyEjKy8wV1", + "9wD4gbhBuAG/8a/RrnFoQBwRjAGMIX+xa2FtAZ1Rm5EwERXxEXGx4hIysvMDo9P01XXXANiRuEG4Ib/Rr7GoMVoBcBdsoX", + "tRbpFsMYAQdoGCg9WV19BIYb4BfcF6cVAQ1rERcbISswTVFXXWlwB4sbgxuBG4Ab6hbEGP4LAQo/ERUXGyEjOld7L4sbih", + "uJG4cbhhuFG4QbgxuCG4EbgBv/Gv4aDtIT7BohhRX3FesBBQenGqkawRfCF8MX6hYDdqIXpBePD7YZAgF5zReQFM8UnQGY", + "GM4T/hGTGqEBxwoBBmgYKD1dfQOJG+EXAwEMUBEVFxshIzE6V2t7NY4bjRuMG4sbihuJG4gbhxuGG4UbhBuDG4IbgRuAG3", + "hyAtETENQT7hojhxX5FacXqRetF4Ua/RntAfwUqxrDF8UX7BbtFsgXgRQBohSTEsUY4RfRGaIRnBbjGZcOrBmEGMYViAoB", + "C2sRFRcbISMxOld7No8bjhuNG4wbixuKG4kbiBuHG4YbhRuEG4MbghuBGwPSExHVE+8aJIgV+hWpF6gXqheuF4Ya/hnuAf", + "0UrBrEF8UXxhftFu4WyReCFKMUApQS4hedFgGSD6sU+wqbGO0ZjBmFGPMKiAoBCjERFRcbISM6V3syjxuOG40bjBuLG4ob", + "iRuIG4cbhhuFG4QbgxuCG6sRBBLWE/AaJYkV+xX/GYcaqhepF6sXrxfvAf4UrRrFF8YXxxekFAOfFgF90Re2AcMYtw6wEt", + "MU+hmbGeMX0xnSCgEJexEVFxshIzpXCY4biRuIG4cbBQGeGpQa0xMBCTERFRcbISM6VymRG5AbjxuOG40bjBuLG4obiRuI", + "G4cbhhuFG4QbrREBFNgT8honixWOAZEB0hfXF9EX8QHTFsMYxBitGsgXhQF8lxWtF/kUjRqkFOIT5RcBEC0RFRcbISMrPU", + "tRUlRrcX0kkhuQG48bjhuNG4wbixuKG4kbiBuGG4Ub0RbuE8sa3RbRGs4a8xqMFcAZesQXvhmyF68XsReEF+EUmxKiGJ8Y", + "6RfFC/wS8hcBCDoRFRcbISNXNZQbkxuSG5EbkBuPG44bjRuMG4sbihuJG4gbhxuGGxbaE/QaKY0V/xXzAQOQAZMB1BfZF9", + "MX9BbNAYcBAs8YhReXDwGvGsoXmRWHFIALB68XrBfyGJ0S4xPzF7IZ6xeAFvQVjBgBCDERFRcbISNXKpMbkhuQG48bjhuN", + "G4wbixuKG4kbiBuHG7ARAdsTF/UaKo4VgBb2FoERgBWxGrIaf3n0FIMVsBSwF44a2BmQFcUXCNMSggHZF7sBY74NAQgrER", + "shLTs9ewOmFfQWmAEBA0BKTgiTG48bjhuNG/EZ7hnwFPcZAQtfERUXGyEjLT9XexmXG5YbkhuQG48bjhuNG4sbBN4TGpEV", + "Lfga9wECtBqUFckXxxemFZUVNgHrFAEKexEVFxshIy0/VzeZG5gblxuWG5UblBuTG5IbkRuQG48bjhuNG4wbixsF3xMbkh", + "WEFi4E+Rr4AQGAAYMBthevF7EXhBGcD9EalhXDGckXDNcWuRHZFfgXhRaMF/QZgRrSGJ0VixakGaYY/gruF4kZ+RXyCQEO", + "ORgmKDs9P0tPV11fb30JlxuWG6wUkhMNwhLtF/kXwhEBDF0YHiYoLTs9P1dfeh+aG5kbmBuXG5YblBuPG40blxW5F7cXtx", + "qXAZoB0BrDGpUVrxKFFdwWvheIAdkX/BrJGAGyGvIX2xSDE/gZAQsuERUXGyEjLT9XXzacG5sbmhuZG5gblxuWG5UblBuT", + "G5IbkRuQG48bjhsDCOITHpUVhxYxB/wamAGbAbga+wG4F7oX9xOGFQGAAc0XyxiNF58PyRjRFIQZ/xjHGakYqxiJAesSqB", + "KvGfsXiBT1FLMatQoBCl8RFRcbISMtP1c3nRucG5sbmhuZG5gblxuWG5UblBuTG5IbkRuQG48bBAnjE5YViBYyCP0amQGc", + "AfwB+BMB1RrfF+AXH5kV+xSBAc4XzBigD8oYjheaFcgZqhisGJABhRmAGakS/Bf2FMkP8xewGfwV+AkBCS0RFRcbISM/Vw", + "cFmgGdAQGFAYgB3BYBD18VFyEjJjs9P0pNV11vdgucG5cblhuVG5QbmRXHEj0I/hesDwEJexEVFxshIz9XOKAbnxueG50b", + "nBubG5obmRuYG5cblhuVG5QbkxuSGwzmEwILgBs1mRWLFrsavRr/AYMV/hbbF9wX2BfXF9YX1ReNAZABE6QUwBEBigG4F6", + "MPkhfQGMoZrRiwGKsZ/xeSEvkUwRKQGZgYkwoBDjkYJig7PT9LTVddZm99CJ4bnRujExT0F8kRgBixEwENXxgeJig7PT9N", + "V116fSGhG6AbnxueG50bmxuWG5QbnBXDF/Qa7xqeAbkXwBeDG7YSyhKeFY8B5BfgF8sa2BrRFtAYhRUBuRr5F/0VohP+GQ", + "EIPxEVFxshI1cfohuhG50bnBubG5obmRuYG5YblRsP6RODGzicFYICA58BogEFvhrAGtkX2hfbFwGNAbkX0BipFZABAQY4", + "ERUXMD4HoRucG5sbmhuzGqka5hMBCS0RFRcbISNXXSqlG6QboBufG54bnBubG5obmRuYG5cbkBYQAhE6hRsBnhW/F74XwB", + "fEF4QCwxSgFd0awBTZF9UX6BkY4xL9F5IB5xfSFt8YhxSIFIAUjhkBC3sRGyErLzA7T19vB6Yb4ReEF5MB0xbSFuAYAQ9Q", + "ERUXGyEjRkpNV1hgaXEfpxulG6MbohugG58bnhudG5wbmRuRAYsBkhYSAgQT7BM8hxuaAeoZ4hjCGsIXrQ/AFPwZvw+dGL", + "AOAQlrERUXGyEjV104qBunG6YbpRukG6MbohuhG6AbnxueG50bnBubG5obkxYTAwXtEz2IG6EVwxrFGgTBF8MXwheHAocX", + "mxStFd8X4BfdF7wUG60S+xcU4xekAQGrD+IWlAv6E+ANhhqNGpAZhxi8GpIWnQoBCF0RFRcbISNXOakbqBunG6YbpRukG6", + "MbohuhG6AbnxueG50bnBubG5QWFAbuEz6JG6IVwhfEF8gXwxcFiAIBlgHPAa0U1RbjGATGGuAX4RfeF+IBA70UHOcXyRLs", + "FPwX7BmTGq8PpQy9GrQZiBihFtgRnwoBB1cRFRcbISMkqhupG6cbpBujG6IboRugG58bnRucG4oboxWJAhUBkQGOAdsX4B", + "fZF60PB8kXBsUXwxfnFOYU1hbjGIUUuRicFZURrRoBFVkRFRgbIygrLTM5QUJNT11fa29yfSaqG6kbqBunG6YbpRujG6Ib", + "oRugG58bvhKwErsWphXNF8cUnRX9Fx63GLQW+hLrF68amBrIEa4UsxfgGr4Z+hrjAQHjFe8ZwAGIFgEPUBEVFxshIy06PD", + "9dX3t9MqwbqxuqG6kbqBunG6YbpRukG6MbohuhG6AbnxueGwLxE0GlFYwbiwI54BfvE5wapBqTFcgXyBrKF4oX+hO7Fe0X", + "ixfjGPUUAYAY/xdn6hm7FrIOwhTKGY0YihiCFsoKAQtRERshIysxOT9WXweoG6UbpBujEawRzRTbGQENPBEVFxshIy06P1", + "1ffSStG6wbqxuqG6kbqBunG6YbpRukG6MbohuhG6AbOwSOG0PzE6cVjQLJEeIXnhqmGpUVyhfKGswXAQLuF+0XwRK1EoIY", + "AQs5GCYoPT9WXV9vfQisG6sbwRQighjXEeURjRgBCTEVFyEjLTg6PQetG6gbpxumG8sRnhWrGgEMfREVFxshIy06P11fFK", + "4bqhupG6gbpxumG6MbRgf3E6oVkRsDrRXNFwIBuBrCGvMTAQYqFxsmOlYKrxutG6Yb+Bf3F/kXTuwV6hWSGAEHXBEbISMr", + "VgeuG6sbqhuXAakRshHgGQEILREVFxshIzoRrRusG6sbqhumG5QbCvkTAgHsGtMX0RcDtgGzAZIXAQkxFRchIy84Oj8Hsh", + "utG6wbqxvQEZwVsBoBDz8VFx4hIygvOj1NVl1ffRO1G7MbrxuuG60brBurG6gbsBXXF/sTrxXNF5cbBwG9Gsca+BMBDGsR", + "FRcbISMxOTpfezW3G7YbtRu0G7MbshuxG7AbrxuuG60brBurG6obqRvSEQP8E0yXGw2wFdIa1BqWAvEXlhcElRfuF+8X7B", + "eqASoBqhSuGtIXvBKKGIwBxRbNFKwRxRLuGPUZrhjVGYEVoBaMGq8KAQZ6Ky86T28FsxusG/gX9xe9FQEDMDo+CLYbsRuw", + "G64bvBrGGqsVtxoBCF8RFRcbISM6KLkbuBu3G7UbtBuzG7IbsRuwG68brhutG6wbmhsQgRSzFU8ImQIHBtUa8RfyF+8XLQ", + "QB0xfVF/0TAqkasRoDpwH7F+EOVgEOaBUXJig0OTs/Vl9wcnsSuRu4G7cbtBuyG7EbsBu0FY8YjRiQEpsYuBmZGKcWmBal", + "FrQYAQw0ERUXGyEjLjw/X3s1vBu7G7obuRu4G7cbthu1G7QbsxuyG7EbsBuvG64bgRRRnBsStRWbAgLYF9ga1xraF/AX7x", + "fuF50X9xf4F5oXihRH0RqpAQHLFtMVjxh30hSxEfYY+hmPFZEalxPHGZoYmBbZCgELexEVFxshIy48P18ovRu8G7sbuhu5", + "G7cbthu1G7QbsxuyG7AbUoIUnRsTthWcAgPZGtga7xeeF5sXixRIAZYWuhm3GZISkRj7FZ0WnhipFswPshj3GLIRAQ5ZMz", + "k7P0BCS01PUFZdXwm6G7kbthuzG84WrxOCGqga1BQBDzMXGzk7P0BCS01PUFZdXwi7G7obAf0Z9RnVFKkalg8BCjwRFRcb", + "ISMuP183wBu/G74bvRu8G7sbuhu5G7gbtxu2G7UbtBuzG7IbVRagG4UUuRWfAgbcGtsa3hfcF/QX8xfyF6EXSwO8Af8Wmx", + "T+FvsYnxf+F44VAdUazxjOGIAV4xCqGrET9hmTGJQYnxbYEqgZ2goBCS4RFRcbISM/XzDAG78bvhu9G7wbuxu6G7kbuBu3", + "G7YbtRu0G7MbVhehG4YUuhWgAgfdGtwa3xfdF6IXAasVDne7Fa4B8RcSNNEVmBjYGrkUvQH/F4EV2BTvGJ4ahRqPAbsPAR", + "MxFRcbISYtLzQ5P1VWXV9ob3R5EMAbvxu8G7kbuBu3G/EWrwHPErkY1RmuFqIY+hW/Er4BAQs5ERUXGyEjLTw/XyrDG8Ib", + "wBu/G74bvRu8G7sbuhu5G7gbthu1GwJYGaMbiBS8FaIC9hf3F94U4RS+FYEahxraF6QW2hWVGKAWAdgazAGWFcoR/hj9GK", + "QYoxizFwEKPBEVFxshIy0/XwrBG7wbuxu6GwMBT6sVhxS+GgEKOREVFxshIy0/XzfFG8QbwxvCG8EbwBu/G74bvRu8G7sb", + "uhu5G7gbtxsBCwRaG6UbihS+FbYapBXBFf0apAKpAfYX9BeOAe0UwhXtGfIZ3BemFvEW3BWXGKIWjRTBAYgYoBSEF60Z1B", + "jSGPIRphihGq8WoQoBB0ohIy1ETU4EwhuWGqAamRUBCS0RFRcbISM/Xy/GG8QbwxvCG8EbwBu/G74bvRu8G7obuRsNBlwd", + "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", + "Vl0H3BvZG9gbAZ8ajxrZEQELOhEVFxshLS45PF824hvhG+Ab3xveG90b3BvbG9ob2RvYG9cb1hvVG9QbbwrCG9sVqRQDiB", + "ulFIob/heBGIAYwQLaGpQYlRiWGAHjEdIW0BbyFuoB9BiwGJga2xSCF/gUzwHZGIQQ8BS3GqIYrwGaAsAY+QoBDVkRGyEp", + "Ky07TVJWXX0O4xveG9ob2BvXG40VxBenGgbpE8EPoRidGcEXAQ1SERUbISkrLTtNVl19B98b3BvbGwGiGpIa3BEBD1kRFR", + "cbISktMDk8QlNWaiXkG+Ib4RvfG94b3RvcG9sb2hvYG9cbwRj1FvgWxRveFawUctIB8Rr+GP0Y+hrEAogRmBjnGY8V+hbP", + "AcUY/xXRFu8RgxjOGtYTAQ17GBshKSstO1NYX2F9EeIb4BvdG9sb2Rv6FaIY9hWZGJoYrxS0GOYQ6BDAGs8a/xQBCjkRFR", + "cbIS0uPF835xvmG+Ub5BvjG+Ib4RvgG98b3hvdG9wb2xvaG9kbD8cb4BWuFI8bhRiDGIYYxgKNG5sYmhiZGAgF1hUD6BGA", + "FQrUAQKdGv0UAeMBpRimF7gU0Rq1GP8SxRPyGcUY9hbQFv8Y/Br9CgEJPBEVFxshLS5fDeYb5RvgG98b3hsQrxSOGwFzqx", + "TJF9gaAQxSERUXGyEtLjlXXV816RvoG+cb5hvlG+Qb4xviG+Eb4BvfG94b3RvcG9sb1BYRyRviFbAUAZEbhxiFGIgYyAKP", + "G9UViRbRFeMVrBr8AZkYpxf3Ef8RiBblAcYaxBqiGbcYgxPwEaIWoxjHE/QZ/xr/GNkZ/goBC3sRGyEpKy0wUGl9Eeob5R", + "vkG+Eb3xveG90b/hXIF6IZpBnsEPAUyheeGKsY+hUBC10RFRcbIS0uOVdfJ+sb6hvpG+cb5hvlG+Qb4xviG+Eb4BvfG94b", + "3RsDE8sb5BWyFJMbiRiKGMoCkRvXFdMVixblFZsYiha5GALsEQHnAasYpALLF6YZAQ1KERUbISkrLTA6PVFoGewb6xvnG+", + "Yb5BvjG+Eb4BusGK0Y7RGnGzPKF8sX7gHfAaUZghKGGYAZ/xiMD70S/xkBClcRFRcbIS0uOV8s7BvrG+kb6BvnG+Yb5Rvk", + "G+Mb4hvhG+Ab3xvYFgUVzRvmFbQUlRuLGIkYjBjMApMb2RXVFQLRAZ4YnBjuEZgahBYBwRHWE80X/BXXGqwYqBXeFP0BAQ", + "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", + "FoADBAGFAtQYJwLLG8IVFsEUwBTEGgEJPxEVFxshOVJfOKIcoRygHJ8cnhydHJwcmxyaHJkcmByXHJYclRyUHIIcAUrpFJ", + "sWyRvHG8sbgQODFogWvBbYGNcY2RjaGLUCCpwWuBKwEpoSuRj8Gv4a0BrOF7sWqRKTGcwWjwII2xnwGLgZuBu1GtwYjgyR", + "CwENaxEVFxshMTlCUldZXzSjHKIcoRygHJ8cnhydHJwcmxyaHJkcmByXHJYclRyOF+YUgxwCAUvqFJwWwhjKG8wbvBi+GL", + "0Zthm3GYIDxBWEGIIYuxb+GKgW2RjYGNoY2xhr2wLwAbcV+BrYEIIZthqMF5ULAQwxERUXGyE5QlJXWV8ioxyiHKAcnxye", + "HJ0cnBybHJocmRyYHJcclhyEHAMCTOsUnRbDGMsbzRu/GIMDhRjaGNsYuBUBkQLlGMoClhSOGwELVxEVFxshOUJSWV8bpB", + "ygHJ8cnBybHJocmRyYHIUcBANNnha/GbgZuRmEA9sY2hjcGN0YAWynFPIU4xj0EAEKQhEVFxshOVJZXxekHKEcnxyeHJ0c", + "nBybHJgchhwFBE7tFMUYzRvPG8EYxxUB6hryD5QU8wEBElcRFRchOT1AQ0RNT1ldX294fRalHKMcoByfHJ4cnRycHLsVkh", + "ehFoUbuhOpFJQCGm6gF5kW2BmdGp8ZkBcBCVkRFRcbITlSXyqnHKYcpRykHKMcohyhHKAcnxyeHJ0cmxyaHAcGUKEWiBzv", + "FM8bzRvRG8EYwxiHA8kVgxndGN8Y4BjeGAK+ErYSAewaiRfVDoYbsBKvErwbAQhSERUXGyE5XyaoHKccpRykHKMcohyhHK", + "AcnxyeHJwcmxwIUaIWiRzwFNAbzhvSG4gD4BjfGAG8AhG/ErcSoRLXGgfCGMQY1Re9FZYChxuuFgENaxEVFxshKzs9U11j", + "aCqpHKgcpxymHKUcpByjHKIcoRygHJ8cnRycHLQO5RiJGKsSixijFoocvRqmAqkCnQKUAokDtRPBF50BCeEYxRjJGAyqDL", + "4buhfgGvgYwBWpE6EZAQhZERUXGyE5XyiqHKkcpxylHKQcoxyiHKEcoByeHJ0cCgJTpBaLHPIU0hvQG9QbuxesEooDxRaH", + "GR6PAuAY4hjjGMYYuQLEFQGYAtEC+AGdFLQUlRsBCmsRFRcbITlCT183rByrHKocqRyoHKccphylHKQcoxyiHKEcoByfHJ", + "4cCwMBVKUWjBzzFNMb0RvVG60SiwOLGJAC4RjjGOQYnwKmFpkVsRb6GBL5AbYOvxrDF6wM4hrCFaMZgRurE8wXlBWoAuQZ", + "xBnnGJ0LAQlPERUXGyE5Ql84rRysHKscqhypHKgcpxymHKUcpByjHKIcoRygHJ8cDAQCVaYWjRz0FNQb0hvWG64SjAORAu", + "IY5BjlGKcWxhgBmgLTAqcV+gH7GLwNlxvBFdgS4xqLGeINlxd05xm2GtEWrBO6EZUapBmdCwEIQhEVFxshOV8MrBymHKUc", + "pBwNVvUU1RsBzAEyjhgBBzkRFRcbIV8prhytHKwcqxyqHKkcqBynHKYcpRykHKIcoRwOV6gWjxz2FNYb1BvYG44D5hjnGO", + "UYBrASBAHFEr0SqRfIFYsbyhjJF7cSkBblGsUbxhUBEVkRFRchKSsvOD0/Q01SXV9vGrAcrhysHKscqBynHKYcpRzGEr4S", + "0RXIFqoWqRaKG4wb/xjdDvQasBQ98xTfF6gZ5xmvEwEGaSEpKy9vA6sVnhWeAgEHUhEVFxshXyGxHLAcrhysHKscqhypHK", + "gcpxylHKQcWqsWkhz5FBEDkQPZG9cb6RjbG+gY6hgUrBbJGAGDGQLQATaSGAEGXxEVFxshJrIcsRyvHK0crByrHKocqRyo", + "HKYcpRxbrBaTHPoUkgMS2hvYG+oY3BvpGOsYBAEVzRWtFsoYAoIZhBm/F8sZwRLJEo0b5A4BCmsRFRcbISstQH0otByyHL", + "EcrxyuHK0crByrHKocpxymHJMYqxYBlBynApsCngLRGM4YzBi1EqwS8he6FrkWHuAa7RmBAqAM9hf3FOgYrBusGaoZoxfV", + "EBoBCTwRFRcbISstQya0HLEcsByvHK4crRysHKscqhypHKgcpxxdrhYClRysFpwCnwLSGMsYzRjnGOkYthKtEuAb6xX1F+", + "EaAfYYoBLLGcwZhRPpEocZARFrERcbIS85PT9RV1ldaW9wfQmvHK4crRysHKscogyJD44ZphoBBygRFRcbITk6txy2HLUc", + "tByzHLIcsRywHK8crhytHKwcqxyqHKkcsBYE/hSXHF+WA54CoQLfG80Y0RjPGOEb4Bu4Eq8SIcsC4xoC4BW0FpEW5xh/qg", + "H1F48Z9xYBpAL4GOcZJc0ZzhnNG8cV/w2sGacaoxf+CgERQhEXGyEiLz0/UVJXaG9weH0StxyyHLEcsByvHK4c0hnMGcsZ", + "9hKJE6ga1xe6Gssa5BefAqQMAQcrERUXGyE5LbkcuBy0HLMcshyxHLAcrxyuHK0crByrHAYCYZkcshajAtYYzxjTGNEYmA", + "O6ErES5BuaFtIWnxYj5RrwGPEY7hiBAZQZlxgB9BXPEs8Z8hmFFa8V+hgBBUQ0WWl0BrgcsRyvHLEZshmYFwEGWBEVFxte", + "CbYcsxyyHLEcpQIl2hTbFN0aAQYoERUXGyEUuhy5HLUctByzHLIcrhycHAmDFdkYBWTmG+UbHccBnRj/FKwbAQ1CFRciJj", + "0/UlRvdnl9Ebwcuxy6HLUctByzHLIc1xnQGdEZjhOcGakXpxWyGbUZ4hcBBSERFRcbK70cvBy6HLkcuBy3HLYctRy0HLMc", + "sRywHJ4ctxadAwulAqgC2xjUGNYY2BgDhRUC6BX1GPYY8xjTAeUbtxANthLqGgWNGf0WAfkV1BnVGfISAQdkFDU7S1R7BL", + "0cuRm8GZMXAQlDERUXIystTU4KvBy4HLccthy1HI4WqQHyFO0UiBsBCTwRFRcbIygrXxnAHL8cvRy7HLkcuBy3HLYctByH", + "FaEcA7oW9xv2G6AD9Bj1GLwWAd8BRZYWlxaUGwEGVBQ7RGt7BcAcvxm+GcUZlRcBBkIRFRcbTAa/HJECS5gWmRaXGwEHMx", + "EXOUNKTAfAHLwcuhy5HNcSyxKcGwEMWREVFxsjKCs5Ul1fKMQcwxzAHL8cvhy9HLwcuxy6HLkcuBy3HASLFaUcB74W1xX7", + "G/obpAPeGOAYwBb1GAK4AbcXiBYBONUWgxnaE/gT1BODFIkb4xq9FQELIxEVFxsoKzlSXV8txhzFHMQcwhzBHMAcvxy+HL", + "0cvBy7HLocuRy4HIwVphwIvxb8G/sbpQMBmRkuvRL0GgXCFt8Y4RjBFvYYA7gXiRYCOdMZ1hayEsIChBnGE5oTihoBBkoR", + "FRdDTgnDHL8cvhy9HLwcsAH0FPkUjxsBE1kRGCIoKy05P0ZLTU5SVl1fb30fxxzGHMUcxBzDHMEcwBy/HL4cvRzfFtcW3A", + "KaGcQClxWMG6UXqRfMFKQbvxmhFYcYsBreGYockByKE9sSrRkBCzwRFRcbKCs5Ul1fI8gcxxzFHMMcwhzBHMAcvxy+HLwc", + "uxypHMIWCwPdAqgDjByLHJEc/Rj7GN4VxBbkGOAYAoYXAZ0ZnBnfAtkC3xnUFwEPMxEXKy85Q0xPUlZZX2lvDsYcxRzCHM", + "AcvxzREt0SpxuiG7YUzxaOG7cCwhUBEkoRFRcgKy0vMj1DTFJWXV9vfRXLHMccxhzDHMIcwRzAHL8cxxY+2xbHAokZ4BOP", + "G58ThhiPGvgU/RSUGwEHVBQ0RUtrewTKHMsZzBmeFwEFeSI5UmkHzBzFHMIc4wLkGeMZ2BcBClIRFRcbKCs5XV8rzRzMHM", + "ocyRzIHMccxRzEHMMcwRzAHK4cxxYQrQMI4gKQHJYckRzjFQXKFukY5xjJFv4YwQEBoRkEQd4WygIDixmLF7sCjgPGFasb", + "khu6FAEJIxEVFyAoU11fCM0cxxzGHMUclRWFHIQc6hUBC1kRFRcbKCs5PF1fNtAczxzOHM0czBzLHMocyRzIHMccxhzFHM", + "QcwxzCHMkWErAcAq8DAfYagxbgF4cbiBmCGYQZkhyYHN4C4gJPyxbdFwnHF4wZjRnrGOcYohnLEI0XzAK9Aqwb+hnlG68X", + "uBrFGcAYkQsBCjwRFRcbKCs5XV8w0BzPHM4czRzMHMscyhzJHMgcxxzGHMUcxBzDHMoWE7EcA7ADAokZgxmFGZMcmRzMFt", + "wQ5hXsGOgYAaUZpBmHG00KyhKOF+AWrRvNAtgOvgKQGYwDrBfNEuYbARBKERUXGystLzI5PUNQXV9iJ9Ic0RzQHM4czRzM", + "HMscyhzJHMgcxxzGHMUcxBwLzhbLFhSyHEXNFrED6xi6FoIZBMUB4hYDkBmaHOETjhfwGtcVlxr/FIQVmxsBClkRFRcbKC", + "s5XV830xzSHNEc0BzPHM4czRzMHMscyhzJHMgcxxzGHMUcAgXjF8wWFbMc5RWKGwSGFvkaRuUCsgPsGPIY7hibHJYcwBfs", + "FegZgxnfF+MWxgHPAgHZE5AXzhDAArAb/RnnG7MX3hrIGcMYlwsBCTMRFxs9PlFTXQXMHMoc0BKDFpsBAQlfERUXGygrOV", + "0o1RzUHNMc0BzPHM4czRzMHMscyhzIHMcctRzOFhe0AwIHBAaXHJ0cmBzRFuAQ6hXuGPAYixvQFgEShRlI+xXCF9IS6hmY", + "Gq0VAQszIystLz9CT1JvfQbVHMoXuRbiGZ4BpBUBCjwcIystLz9PUm8P1hzSHNEcyxzKHIkZixmNFpMWAecZ5hnKFaUVlR", + "kBDSMRFRccICgrLz9PUm8X1xzWHNIc0BzPHM4czRzLHJ4V0RaOHOMYpRwBthbVFrIWFYgZoAHKF6YV5RkBCzMRFRcbKCs5", + "PFJdNtkc2BzXHNYc1RzUHNMc0hzRHNAczxzOHM0czBzLHMsWBLkc0hYbwwL2GO8Y8Rge8xi4AwGLGZEZjRntAqEcjxaRFu", + "wSyBe3G+oZ+hfnF6sZ9BOpD88Z7gK3GsQXthmVF8YCmhmCGpsLAQo8ERUXGygrOVJdHNkc1hzUHNMc0RzQHM8czRzMHAW6", + "HNMWHPcY8BjyGPQYuQMCjBmOGe4CAfAZ8RmOE6oTrBkBCjMRFRcbKCs5Ul032xzaHNkc2BzXHNYc1RzUHNMc0hzRHNAczx", + "zOHM0czRYGAbsc1BYdxQL4GPEY8xgg9RiEFroDA8wb7wKjHJ4cowHKF+ISlhbuEpYX7BmLGZ4anxq4G7Mb6RfOAb4VsxiC", + "EOYauBnhGZoLAQlSERUXGygrOV043BzbHNoc2RzYHNcc1hzVHNQc0xzSHNEc0BzPHM4cvBzVFh4HuwPGAvkY8hj0GCH2GA", + "EChRYE8ALyGaQcnxzzGdkWthaMGfIbpAHPAYYUoBOLFL0XD4gb0BmqE9EZzBqOFaAatBu0GJkLAQVSJylUXAbYHNMc0hyI", + "G4oboBcBDjwRFRcbKy8yP0NRU1ldG94c3RzbHNoc2BzWHNUc1BzTHNEcXd4S3xKqEr4c1xbbEr0D7huhGpIZkBm/Fq0V7A", + "KwGesXAQgrERUXGyg5XSnfHN4c3RzaHNkc2BzXHNYc1RzUHNMc0hzRHL8c2BYhvgMKyQL8GPUY9xgk+RgD3xLvF/ECohyq", + "EqsSAbkW3BaIFqAZnxmPGaIaoxqEEwEGKhEVFyAoB94c2BzXHNYcpByXHKYVAQszHiMrLS89Qk1SfQ7gHNwc2hzVHNMc3x", + "e/FssW7Rn6GPwY1BWXFqIZAQpPHiMrLS89TWN6Cd0c2xzWHNQc3xaYFvsYoBnVFQEKQh4jKy0vPU1SfQ/iHN4c3BzXHNUc", + "AvMZ8hmxFQH+GPoYvRbWFaIZAQsjERUXGygtPU1RfQ7iHNwc2xzaHMQcJqoVBJkc5BIBoBayFh0BC3sXGycrLT1GTVZ9Ce", + "Ic4BzZHKAX9RbCGaEXphn0FgEJMxEVFxsoOU9SOOYc5RzkHOMc4hzhHOAc3xzeHN0c3BzbHNoc2RzYHNgWKMYc3xYGxQMH", + "zQLKApcZlRmZGZwZWwKoHK4c+gL1Ap4W4xacFvkS3xe4Gf8YxBv3GYgYlhPcGdEXAeICphmkGc4ayhiiF6oaqwsBCE8RFR", + "cbKDlSIOYc5RzjHOEc4BzeHN0c3BzaHNkcKccc4BYHxgMIywKYGZYZmhmdGQOpHPsC5BaAGQH9Gf4ZmxO3E7kZAQgzERUX", + "Gyg5UjnoHOcc5hzlHOQc4xziHOEc4BzfHN4c3RzcHNsc2hzaFgEqyBzhFoMZgBn/GIYZCMcDCcwCmRmXGZsZnhldiBYE2R", + "v/FrAc/AK6GfsS4Rch7xKrGqwa+RnEG4oYqQ71EcUZ6hqZFowT3hmoCwEHUhEVFxsoOTrpHOgc5xzmHOUc5BzjHOIc4Rzg", + "HN8c3hzdHNwc2xziFivJHMgDCQrQAs0CmhmYGZwZnxleBascsRz9AgKEGYAZIoAXiRbDFr4Sphe7GawarRrFGwH/G/8ZgB", + "rIF8oXkxTzGa0T3BqWG+sapwsBBigRFRcbOS/qHOkc6BzmHOUc5BzjHOIc4RzgHN8c3RzcHOMWLMocyQMKC9ECzgKbGZkZ", + "nRmgGQasHLIcAfUQiRWNG/oX/AK2ErUS0wHnFoMZXdcX4hD/Ga4a9hfiFbwZAQ5GERUXGyMrLTk8QlBSazPrHOoc6RzoHO", + "cc5hzlHOQc4xziHOEc4BzfHN4c3RwtyxzkFgGxFSjVAs8CU8oD/xeJHMcZxhmdGWr7GfoZihmJGYcZqBmmGboUuALAG+cC", + "/A2vG/UTtRCCA8oZgBzUF/0LAQ1rERUXGyMrLTk8QlBSFucc5RzkHOEc3hzMHAIp1gLQAlSAGIoca4sZihmpGbkCAdcUsB", + "v9DQEMUBEVFxsjKy05PEJSIOwc6BznHOYc5RzkHOMc4hzhHOAc3xzXAtECVc0c5hYDKoAWzAOBGIwZixmfGWz8GbsVAasZ", + "8xTXFLEbAQtCERUXGyMrLTk8UiTtHOoc6BznHOYc5RzkHOMc4RzgHCvOHOcWBM0DghiMHKEZoBlt/hn9GY0ZixmMGYAY/x", + "e8FbwZ6gIBqBi7AvgU3xTYGwEKPBEVFxsjKy05UiTvHO4c6xzqHOkc6BznHOYc5RzkHOMc4hzhHDHPHOgWBc4DjRyiGaMZ", + "oRmMGYsZAfwShBO9Fs0b9xK0GrMashrDE5UTrRkBEkIRFSMpKy05Oj9ET1FSV1lffRfvHO0c7BzrHOgc5xzlHOQckBaEGI", + "Yc/xnSF74V7AKwGdkU2hvEG6IPpBi1GL0cAQpNERUXGyMrLTlSJ/Ec8BzuHOwc6xzqHOkc6BznHOYc5BzjHDPRHOoWB9AD", + "jxyFGJAZjhmPGQLrFtkW1QJmoBnoEpEWnhuHHKoWAYYTvxa0GrUapAMBCS0RFRcbIys5UizyHPEc7hztHOwc6xzqHOkc6B", + "znHOYc5RzkHDTSHOsWCNEDkByGGJEZjxmOGQEvphmiGaMZ/xKHE4QWkRfaFs8bzRtawBn6EoQYthq1GoMDxhOxGQEFVCcp", + "Ul4G7hzpHOgcnRu2F58bAQ5LIykrLzk7PUJNT1ldXwzwHO8c7BzpHOIU5hSHGP0U3huQFrgb9hQBC18RFRcbIys5Qk9SNv", + "Uc9BzzHPIc8RzwHO8c7hztHOwc6xzqHOkc6BznHAM31RzuFgu7FTKnHNQDiRirGaoZrRmFGoQa7xaHGIYYjhlowxnoFeIC", + "AbMZwgLnE5EW/w25G/gU0BDKG7YaiRz0FdcV9xrhCwEKTxEVFxsjKzlCUi71HPQc8xzyHPEc8BzvHO4c7RzsHOsc6hzpHO", + "gcBDjWHO8WDLwVM6gc1QOKGKwZrhmGGoUaiBiHGMQZAeACkBmMGZ8W7RLXFukVohuMHLcZrxb3FKgP4BsBCUIRFRcbIys5", + "Uhr2HPUc8xzwHO8c7hztHOwc6RwFOdcc8BYNvRWpHIsYhxqGGokYiBjFGQGSGY8ZkRcBC18ePUpNT1FdYXF9CfMc8RzsHO", + "oc8haRGcwTnhO2GQERTxEXHiAjKSsvOT1AQ0RNXX0W+Rz1HPQc8hzxHO8c7hztHOscvBbXG4ETvRq8Gr4aAZMZjxnaFroZ", + "uRmeEwEIKxEVFxsjOVIw+hz5HPgc9xz2HPQc8xzyHPEc8BzvHO0c7Bw82hzzFhDAFdkDjhgIsBmxGbIZrByvGQOHE48TAZ", + "UZkhmRGdYbkxfbFpQXghNiyBm+GpAcvRqnE4sY2RegE+IaARFLERUXIyk5Oz9PUlleZGhvdBn6HPkc+Bz2HPUc8xzyHPEc", + "8Bz/FvMWjxjlAugC/RqEG+0YpxvcF/IZ5xeIE9sZihqQGAEJPBEVFxsjOUJSOPwc+xz6HPkc+Bz3HPYc9Rz0HPMc8hzxHP", + "Ac7xzuHD7cHAL1FhLCFTmvHLAc2wOQGK4ZrxmLGowae40YjhjKGY8W5gKWGZQZkhnCE84TAckCvxnAGbYY7Bq0F5MDqBqX", + "A90XqBvxGacW0wsBEUsRFRcjKTk7PU1SWVxkdHh9Gfwc+xz6HPgc9hz1HPQc8xzyHIsX9RaRGOEC4xr5Atsa7hiqG94X9B", + "npF4oT3hmNGpIYAQhCERUXGyM5Ujn+HP0c/Bz7HPoc+Rz4HPcc9hz1HPQc8xzyHPEc8Bw7QPcWFN4cxBUE3QOSGLEcshyO", + "Go0akBiPGMwZAp4X2hblAuICrRmXGZkZcccC0BPEEwHLAsEZphiVA7YXnBDuGpIc3xerG/MZpBfWCwEOPBEXHB4gIyotLz", + "lAQ0QZ/xz7HPoc+Rz4HPcc9Rz0HPMc8hzxHLEZsxmyGbsWlxmWGdsbhxPDGsQawhrTE6UTwRkBB1IRFRcbIzkrgB3/HP4c", + "/Bz7HPoc+Rz4HPcc9hz1HPQc8xzyHEL5FhbgHMYV3wMGtByzHAKNE5UTAdwWmRmaGZsZvBawGbEZ3RuTFogTaMQawxrUE6", + "YTwhkBCTwRFRcbIys5Qi+BHYAd/hz9HPsc+hz5HPgc9xz2HPQc8xzHFUP6FhfhHAE+4AOVGJQYgROzGbQZuRmAAUacFp8Z", + "nRn8F48akxjPGaUX/QKoEtcR7gKDG5gY8RjhGf0Vxhq2DgETQBUXGyAjKSsvOT1CTU9QU19haQmCHf4c+Bz3HMcazwL/Ed", + "oQ7BsBCk0RFRcbIys5Qk8lgh2AHf8c/Bz7HPoc+Rz4HPUcA8kVRfwWGeMclhiDE5cYSOcCAv0WnBmiGXb0F5EalBjRGagX", + "8AIB/hHfEeQZ4hmZGAEIQhEVFxsjKzkIgB1BAaICiAHaFtkW1xsBBysRFRcbIzkVhR2BHf0c/Bz7HPocBUcbmBiFE0rpAg", + "GSE5oTyhqNE+Ib4RueFgEGIxEVFxs5FIQdgR3+HP0c/Bz7HMwVHEgGmRhLAbocuRyhFuoCphWlFakbAQ5rERUXGys5PEJP", + "UFJdXzOHHYYdhR2EHYMdgh2BHYAd/xz+HP0c/Bz7HPoc+RxJAYAXHeccRG+aGpsaoRrmA+MZ4hn5Fr8ZuRmCF6YZzByjGf", + "kVyhfDF5oUxxmUAssb1ALCF4oWnRbkGZobwxqmGJYMAQ1QERUXGys5PEJPUl1fNIgdhx2GHYUdhB2DHYIdgR2AHf8c/hz9", + "HPwc+xz6HHBKAoEXHugcRZsanBqiGucD5BnjGfoWwBm6GZsWpxnNHKQZyxfMG54WjhXdG9UC+xn6GQH1AskZxhmKG7IYpx", + "jJGpMMAQxfERUXGys5PEJPUl0ZiB2HHYUdgx2AHf8c/hz8HEsDghcf6RxGnAPoA8EZnBbOHAGlFtYCxheTFfMbAQYmGx0f", + "ICIFiB3QHNEczxz9FgELTxEVFxsrOTxCUl0rih2HHYYdhR2EHYMdgh2BHYAd/xz+HP0c6xwFhBchSJ4DpRrqA+YZ/RbDGb", + "0ZAvUCpRmoGaEZ7BbBFssZzBmYAtgCxRiQA+Abtha3G6wT9Az7GgEOexEVFxsrOUJPUFJdX2szjB2LHYodiR2IHYcdhh2F", + "HYQdgx2CHYEdgB3/HP4cxhnHGQFO7BwGhRciSXTZAp8aoBqmGusD6BnnGYYXrBf+FqUZqxnTAdIcwRn7FcgYnRPPF8cXyB", + "qhA+Eb0BuWFvULAQ1rERUXGys5Qk9QUl1fNI0djB2LHYodiR2IHYcdhh2FHYQdgx2CHYEdgB3/HAJP7RwHhhcjSnWgGqEa", + "pxrsA+kZ6BmHF60X/xamGawZ0xzCGaAU/BXQF9oC0RuiEZsU4hugG4Qa/xkBiQPNGecV8gsBDFARFRcbKzlCT1JdXyGNHY", + "wdiR2IHYcdhR2EHYMdgh2BHYAddgNQ7hwIhxckoBauF6EaqBrtA60Z1BzDGdEX0hv8FAHPGcwZ2xUBC18RFRcbKzlCT1Jd", + "GY0dix2IHYYdhR2EHYEdBFHvHAmIFyVMogOJF68XrhnVHAGrFtwCzBeBFfkbAQpPERUXGys5QlJdN5Adjx2OHY0djB2LHY", + "odiR2IHYcdhh2FHYQdgx2CHU1S8BwKiRcmoxqkGqMDqhrvA+wZ6xmCFwH6AqoZphmtGfEW2AEFsBeZHNYcxRnTF8sXHeET", + "7Rn8F80X+RvRGcoY0BqlA5oW8AsBB0ERFzQ5PkMHjh2JHYcdhh2kE6UTpRwBDlARFyApKy85Q09SVllfEJIdjh2NHYodiR", + "2IHYcd1husF/MXgBWBFQHXGvAbmhMBDnURFRcbKy85PU9SWV1fM5Mdkh2RHZAdjx2OHY0djB2LHYodiR2IHYcdhh2FHfwX", + "A6UWVfMcDYwXKawZ8gPvGe4ZsxfIGcoZ2RzWFwGvFrwW1xrWGtoB5xO5E+gVjxnRGfYanBuVG94b4BaFFacc9AsBDVkRFR", + "cbKy85PU9SXV80lB2THZIdkR2QHY8djh2NHYwdix2KHYkdiB2HHYYdBKYWVvQcDo0XKq0Z8wPwGe8ZtBfJGcsZ2hzXFwEC", + "sBa9Ftga1xrbAegTuhPyGtIZ+hqsGOEWghWGFasaqByJGqkY9gsBBVInKVBUBpAdix2KHdgb2RvYFwELMB4gPUpNT1FdX3", + "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", + "EHUCA5PUB5fQSyHfAa9xqCFgERLBEXGxwgIjk6P0NLU11fb3kNsx2tHaYd6xnqGegZAq0YwQMB0Ba0FvcaAQkvERUXGys5", + "XV8wtB2zHbIdsR2wHa4drR2sHasdqh2pHacdph0OdpQdLkqtF5MEBAVtyxnPGc0XzheVF4IaAwHMHLAX5hnoGbMBwQKmF7", + "sT2xaQHPIa5xPXGLEUqhqTGp4YAQ1KERUXJylCTU9UWF1fDLEdsB2tHawdqx2qHYIDyhHRFooc6xupGgEUMxEVFyAiJykt", + "OT9CTU9TVF1fb30cth21HbIdsB2uHa0drB2rHdAWpBjYGcYYvhmvF8gagx0BxBiEGr0U+BejA8EbrxafEsMC+xqyEwELdR", + "EVFxsrOUJZXV82tx22HbUdtB2zHbIdsR2wHa8drh2tHawdqx2qHakdoBgRA3mXHTFNsBd06hbdG8cY7hvWGfwc1RnTGfYc", + "kxqSGtcXlgS2AdAazxrpGdYYELsX8xn0F8EVpAO5G7MDoRywGvsWwAwBClkRFRcbKzlCXV83uB23HbYdtR20HbMdsh2xHb", + "Adrx2uHa0drB2rHaodEgR6mB0yTrEXdesW3hvIGNcZ/RzWGdQZ9xyUGpMa2BeXBNEa0Bq3AeoZAe8bEbwX9Bn1F8IVpQO0", + "A5YbrRqiHLAazRj8FsIMAQlCERUXGys5XV84uR24Hbcdth21HbQdsx2yHbEdsB2vHa4drR2sHasddhMFe5kdM0+yF9gZ/h", + "zXGdUZ+ByYBLMX6xkBxBED0hrRGrgBBL0X9Rn2F6YDtQO6Fu8b5BfQGOEOzhyyFv0Whxq7G6Mc6hPFDAEHQREVF0NKTAi2", + "HbIdsR2wHa8d7BWDHOcVAQZKERUXQ0wHtx2yHbEdAZYckxynGAEHUCA5P0BpbwS8HYEb+xq1FgEIXxEVFxsrOV0ovR28Hb", + "sduR23HbYdtB2zHbIdsB2vHRd/nR03thdTnAQECdwZ2xnZGfwcrRjWFqoY8RkC7RnSGqUX3RfcF4saDAHaFpUWgBsBCEIR", + "FRcbKzldOb4dvR28Hbsduh25Hbgdtx22HbUdtB2zHbIdsR2wHXsYgAGeHTi3F1QBnQSoA9gZgwHWGdsZ1BndFd4VnxfXF5", + "kazhiGAr0B1xrWGt4X5xbzGYQd1ByWFvkX9xauG4Eb/hrFGscTkxybGsMXnQwBB10RFRcbKzkmvh29HbkduB23HbYdtR20", + "HbIdsR2BAZ8dObgXVZ4EAtkZhAHXGdwZ1RmgF5oahwIZzxi+Ad8X9hn0GYUd+hcBthi1G6gbohYBEVURFRsrLS8xPVFfYG", + "hrb3t9B7oduB23HbYd0BSgDdMbAQgvERUXGys5Qi/AHb8dvR28Hbsduh25Hbgdtx22HbUdtB2zHVcCoR26F36oA6UDoAT3", + "GfAZ9BngF6kXnRfaGdwZiAK0AYkC9xaEFoIajgOuFukYjxrRGAHuG+MWlhzvFJ4PtxoBCFIRFRcbKzlCOcIdwR3AHb8dvh", + "29Hbwdux26HbkduB23HbYdtR20HVgDPKIdhAG7F3+pA6YDtwHcGtYa1RqhBJ4anRq0F/gZ8Rn1GaoXAeEZhx3gGd4ZgBTi", + "FpMUZYUYnxquGP8XgxqPA4Ia6hiCG9UbpRbIDAEHQhEVFxsrOTrDHcIdwR3AHb8dvh29Hbwdux26HbkduB23HbYdtR2AAV", + "kEPaMdhQG8F6oDpwOiBPkZ8hn2GeIXqxcB4hXjFeYbnxrTGLYB3BrbGt0X4xaIHeEZ3xnZHPwWxBawA4cbgxv/F8wToBrW", + "G5gcpRasGMgMAQ4vERUXHikrLTk9Q01ffSXDHcIdwB2/Hb0dvB27HboduR24HbYd4xegF6wXvRfdGd8ZiwK3AYwC+hbYE8", + "wThxa9GIUaohyxFvIUkhqzFboakRitGJEduhunFgEKUhUXJykyOTo/XArCHbwduh1ougGsA6kDphjlFtscAQYrERUXGzkt", + "xh3FHcQdwR3AHb8dvh29Hbwdux25HbgdQIgBvxemHaUEAwetA6oD9xn5GfUZ/BlcrhcC5RniGeQZix2BFwHlFbMY7BbmFe", + "kbohqRE+YWrAGJG/kDAQZOERUXG0IGwx3lAssBnReaHJwXAQZjQUNLT28Dyha5FrUDAQtBERc5PkNLT2Zpbw7GHcMdwR3A", + "Hb8dvh3dE9wT3RypGAHUG+cbvRYBCTMRFRcbOU9dXzjKHckdyB3HHcYdxR3EHcMdwh3BHcAdvx2+Hb0dvB28F4wBwxeqHU", + "QEqQSOHYsdkR2KHd0WxRffFv4Z+hmHAaYX6RcP0RPdE+MZmBqnHNkYjBjoFKca6BvVG7MYwBrtGLIB2xqeFMYD/gPNGJ4M", + "AQlSERUXGzlPXV84yx3KHckdyB3HHcYdxR3EHcMdwh3BHcAdvx2+Hb0djQHEF6sdRQUBqgSPHYwdkh2LHeIa5RrhGt4Wxh", + "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", + "3kF8kdCeIX0wODGv8ZrgHIBOYX9AKbGqwWkxmHGOMc2RzWA7ga0xPkE4sVrwGVHMEQAQkvERUXGylBQl0V6R3kHeEd4B3f", + "Hd0dyh0K4xcjpwHJBAGiGgUEnxfkF/cB1AOnGQEQRxEVFy0xP0FNT11fYmlvcSDqHekd6B3mHeUd4x3iHeEd4B2CEvAQ/x", + "afG5UblhvmF/MZ5BeJHMka2AOxFp4Yqx2tHbgdohX9D9MBoRyEG6UQAQgpERUXG0FCXTnsHesd6h3pHegd5x3mHeUd5B3j", + "HeId4R3gHd8d3h3MHQyuAeUXJakBywQCixqIGoka5heIF/cCpBqeGq8WlhncHOYc2QOoG7AX3hbHGdIBrxqcArwa1AEBwR", + "yzEOoUsR39GNQbqhiKHM0asBiADQEGLBEVFyAoB+sd5R3kHeMdox2wHbMWAQsvERUXGystQU1PXRXrHecd5h3lHeQd4B3p", + "F84dDtgDiBqEGusX+QKxFpgZmRveHNsD6gOpGgEHXREVFxtBQg7tHecd5h3lHbEBKAMCjwGsAQGkHbEdtRYBCC8RFRcbKU", + "FCLe8d7h3tHewd6h3pHegd5x3mHeUd4x3iHQHQHSnpFxDXA9QDFM8EnxqhGqMaphrtF4kazAKYGYgYsxasGd0D1gG/Gukc", + "3xzsA/IYqRSiFOoT5xqDG6QOAQszERcbIjs/QlFrbwbwHekd5x3jFoUb7RMBDSIRFxgbODs/QlFZa28L8R3uHeod5x0Bih", + "uLG4wb/xj+GMEaAQcpERUXG0FCKfId8R3uHe0d7B3rHeod6R3oHeYd5R0EtQHTHewXEyzaA9cDF9IEphqpGgOSGo8alwSe", + "GeADgAIBuRaGGaYd6hPdF6Acgxv/FMIVigQBBkERFRcbQinzHfId8R3wHe4d7R3sHesd6h3pHecd5h22AdQd7RcULdMEAQ", + "eUAcsayhoF2wPYA6MapxqlGpABth3xF40a0ALsFrcWsBnhA+Mc8AOvGgEMIhEVFxspLC8+Qk9dNfUd9B3zHfId8R3wHe8d", + "7h3tHewd6x3qHekd6B3nHQG3AdUd7hcVwgPDA7Ydux3UBI4ajxrRArQXqhqtGvoXuBbfHOID7hzkHPEV5xWDGMUaxhrxA7", + "YYkRW3GLAZzxbdGx7SGmDcDAEMWREVKSsvNEtPX2FxBvQd6BXkFe8a7hryGQELPhEVFxspLC9CT1029x32HfUd9B3zHfId", + "8R3wHe8d7h3tHewd6x3qHekdA7kB1x3wFxfEA8UD1gSQGpEa0wKsGq8auhbmHPAchRjzA9EWshm2G9MZuRoBxxrIGt8BAp", + "UbkxTPEeEcixfREq0c1RqCHN8W5AwBCiwRFRcbKS9CT10w+B33HfYd9R30HfId8R3wHe8d7h3tHesd6h0EugHYHfEXGMUD", + "xgPXBK0asBoBrRfyF4UC4gOOGr0BuxazGfMc9AO1G6cX+xaMG4QblBSJGawdxxrqFLUQvgHuGuQSAQlPERUXGykvQl0t+B", + "33HfYd9R30HfMd8h3xHfAd7x3uHewd6x0F2R3yFxnGA8cD2AQB9BfjA5Majxq+AfYXhAOrGrwWlxjzHOkcyBrzE/0X4xOW", + "FZsV5gOlHPAa/BaNG8YNAQZXFiZZaXkG9x3wHe8duhi5GOAaAQxZGCktOEtNT11fb30E9x2ZGJsVyhoBCEQRFRcbKUJdOf", + "wd+x36Hfkd+B33HfYd9R30HfMd8h3xHfAd7x3uHQi+Adwd9RccNckDygPmHNsEA5samBqZGvYXkBeHA7Qarhq/FvYc7ByA", +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/MasterCertificateData1.lean b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData1.lean new file mode 100644 index 00000000..76809d56 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData1.lean @@ -0,0 +1,517 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.LRAT.Format + +/-! # Generated packed master-certificate data -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Packed certificate data part 1. -/ +def masterCertificatePart1 : List String := [ + "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", + "IU8BTeGukXsx33GPgc2RjiHZwUAewa7RqtGa4ZqRsBCysRFRcbKS8xOj1ENp0enB6bHpoemR6YHpcelh6VHpQekx6SHpEe", + "kB6PHuAWCgHfAf0dPR2WGPwEjB20GrUa1gGZGLsdtR2YHYEEzhrMGkHvF8QXlhnGGbUY+RyuG4oE2hvsGtcY1xqwHK0VlR", + "vKHIYZ2AwBCkQRFRcbKS8xOj0vnR6cHpsemh6ZHpgelx6WHpUelB6THpIekR6QHgsC4AH+HT4elxj9BOEWuRq1GrYa1wGa", + "GJkdggTPGs0aQp4Z8BfFF8cZthj6HIsE2BixHAHjGuUdwQHLDwEJOhEVFxspLzE9OJ8enh6dHpwemx6aHpkemB6XHpYelR", + "6UHpMekh6RHuIWDAPhAf8dPx+YGP4Ejh22Grca2AGbGJodgwTQGs4aQ5gZxhfxF/0XyBm3GLAbjATcG+4aAfgXwRnSFJUb", + "shyKGf8N5BqHHLcd2wwBCUQRFRcbKS8xPTigHp8enh6dHpwemx6aHpkemB6XHpYelR6UHpMekh7jFgENBOIBgB5AIJkY/w", + "S7GrcauBrZAZwYqB36F/0ZhATRGs8aRPwcyRnaE50Urhi4GI0E3RvNHLAE7xq+Ef0YsxzUDrYb5x2JF+4MAQg9ERUXGykv", + "MRmbHpoemR6YHpcekx4OBYEeIbwauBq5Gp0YhQRFyhm5GI4EhwIBwxm0HAK/EQEHMREVFxspLy+hHqAenx6eHpwemx6aHp", + "kemB6XHpUelB7lFg8G5AGCHkIimxiBBb0auRq6GtsBAdUa1BqcHZIdtRfyGvMa0BTZFJkbmBuvFMUZigLLGY8EtxWmGekd", + "wBzkGAEHIhEVFxspLzqjHqIeoR6gHp8enh6dHpwemx6aHpkemB6XHpYelR4H5QGDHkMjnBiCBRABvhq6Grsa3AGwAq4Dnx", + "iHBNQa0hpH+BO7GO4T5hvnG/Ia/RfqHeYY5BjGAYAZoRexGOUaixycGboduhvwEc0V/xzvDAEGLxEVFxspO6Qeox6iHqEe", + "oB6fHp4enR6cHpsemh6ZHpgelx6WHuYBhB5EJJ0YgwURvxq7Grwa3QECsQKvAwHqFrkUsRTnG+kb6BuAHf0cCKQZ8hegGL", + "sd0xpIvBjvE/MatAS1Gb0ZxROmHN0a6w+MHJkb4xj6DAELShEVFxsxPT9PX28jpB6iHqEeoB6fHp0enB6bHpoemB7oFucB", + "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", + "H+0f7B8uvQES2B9VAr8B1gZh4wThBd4FoBynHNEYjhrEG7ocuBwBCb4dOYAfjx+EGYEc2xndGfEc8ByEHoIewh+aGK0Dsh", + "nvF44dix3NHNgdrA0BDkQWKy0vNTs/QEpSX2R0E/of+R/4H/cf8x/xH/Ac2R7VHtYe5B7uF/gXtxniHOMckxuUG4wdARQi", + "ERUYHSAmKy0vMDU7PEVNT1JhfQ/7H/of+R/4H/Qf8x/EHzvdGbUWyxyMH5ASoxuQHQESUhEVGB0gKy0vMDU7PEBKXGR0F/", + "0f/B/4H/cf9R/0H/AfPMEdwgFk5gTkBaMcAsQaqh72FwG5GeAZtRWNHQEHJxEVGysvSjr+H/0f/B/7H/of+R/4H/cf9h/1", + "H/Qf8x/yH/Ef8B8yBFkGwQEW3B/DAWXnBOUF4gWkHKsc2ga2GdUYyBuSGp0flh/jHtwevhy8HKUbiB3uGY4fPcIdAYQaxR", + "r3F9UX4hyhHuMchh6THbwarg0BBisRFRsvSjv/H/4f/R/8H/sf+h/5H/gf9x/2H/Uf9B/zH/If8R8zWsIBF90fxAFm6ATb", + "BgEH5gXjBaUcrBzWGMkbkxq/HL0cBe8Z2Ro+wx2GHAL/FZ8Y1hfHH/QciR6HHrgW4BndHeUdzxyPH+kbmh3qHKQNAQUvER", + "UbShaAIPsf9B/DATTpBAHEHMccwxyoAlsY2BvbG/MFux0/qQaHHMsb5wUBAyAsLgj/H/kf9x/2H8AfsB/5GbMfAQgiERUs", + "LjA1PAyAIP8f+h/5H/gf9x+kH6cfAZoWvRiSHwENKREVI0FESk1PXV9hbw2AIP8f+x/6H/kf+B/7GZgWyAHYHl2XGescAQ", + "lkERUbK0pQYXA4hCCDIIIggSCAIP8f/h/9H/wf+x/6H/kf+B/3H/YfxwEEyQHuBegFhgaABk/iHwPgBs8YohygHKMc4xvF", + "HJYa5RuyHL4d1Rn5HPscAgGfH5wWlB/lGtgc1xyFFdkeXpgZ5hyPHsIe7Ri3DgEIUBEVGytKYXAuhSCEIIIggSCAIP8f/h", + "/9H/wf+h/5H/gf9x/vBcgBBcoBhwaBBlDjHwThBqMcoRykHOQbxhyXGuYbsxy/HdYZAeoXsxOLHoEZX5sW1xzbHNkc5hba", + "FukcAQgiERUsLkVSYgmFIIQg/h/9H/sfqB+aHQWUFgEINBEVGytKYXA5hyCGIIUghCCDIIIggSCAIP8f/h/9H/wf+x/6H/", + "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", + "EQEHaxEVGytKYRynIKYgpSCkIKMgniCLHLYZ7wEHLIogFCvIHMkchByrBvAbAaMWrBbkFdce2R6kGacZuB4BClYRFRsiKz", + "RKUmE3rSCsIKsgqiCpIKggpyCmIKUgpCCjIKIgoSCgIJ8g8AEILQGLIBX0AYkHnQbuHOscyxzMHMoc0QYR2h3WHZQB7x/y", + "HyzBGsMa0xyzH8If2hnRGqUdox3bHpIeih6SGIkdwR2zHsUbsw4BCTQRFRsiK0pSYTiuIK0grCCrIKogqSCoIKcgpiClIK", + "QgoyCiIKEgoCDxAQkuAowgFvUBigeeBu8c7BzMHM0cyxzSBhLbHdcdlQHwH/MfLcIaxBrUHLQfwx/bGdIaph2kHZMeix6T", + "GMIdxhsB8RqpGfwctQ4BDkcnKSs1O0VPWV9ndHt8BaggpSCbHYwegBIBF2MRFR0nKSstNTtASk9RUlRfYWRqb3R8F64grS", + "CrIKogqSCoIKcgpiClIKQg9QGXAaUd7hzEErIeqxneHgGUHfEaxRuVHgEWZBEVHScpKy01O0BKT1FSVF9ham90fALaAgEB", + "CFIRFRsiK0phObIgsSCwIK8griCtIKwgqyCqIKkgqCCnIKYgpSCkIAb1AQ0y9wEaogbzHPAckCDbHRbaHd8d0BzRHM8cjg", + "eZATH3H/QfyBrGGtgc3xkEAZcY+BrJHcMdxh2QH6QayhvfGpQdjx7gHvQavQ4BByIRFRsrSmEtsiCxILAgryCuIK0grCCq", + "IKkgpyCmIKUgG/YBDjP4AQfmBtsd4B2RIPEcmgGcBTL4H/Uf0hzQHMcayRrZHAGaGO0ezBncAswdxR2cH5gfmhuVHZwXAQ", + "ZhERUbK0ohryCuIK0grCCrIKggpyCmIPcBDzQckiDnBuEd0BzRHDPKGgjyHMga2hzhGQG0FuUV7BW/Hr0erxmsGeIeAQhF", + "ERUnKUFKTAixIK0grCCrIKog3BiDH+cYAQhdERUbIitBSiy1ILQgsiCwIK8griCtIKwgqyCpIKgg+QH7AZQgETYCHuMZ/B", + "vUHNMckgf6G6MGGuUdtQbgHPsf+B8Bhx//Hqsdrh3cGb8WhhhJxx3tF7YXhR0BC0IRFRsiK0FKTVVkNrcgtiC1ILQgsyCy", + "ILEgsCCvIK4grSCsIKsgqiCpIAH6AfwBlSASNwMfngaIGtUc1hzTHJMH1xivFqQGG+Id/BuuHYwfyh3LHdEdNvwf+R+2Bt", + "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", + "whmyGaIZkhmCGXIZYhlSGUIZMhkiEBCO8cD84HGJMHyxzbHakbhwfnIOAg5CAXDdoc0hvYGgOZG/UfzhrpGscfzB+3HrYe", + "7RjDFaAYoBSzH+8dFNkZ2QwBDHEQFR0gIjE7SlFreyigIZ8hniGdIZshmiGZIZghlyGUIZMhAhDPBxncHegg4SDlIBjZGq", + "MbDgG7Hb0aCQTHHfYf7BnrGcca+hmKH5YFtx6FHeAZjyABCzEQFR0gIjtKUWt7FKIhoCGbIZQhEdAHGt0d4iAZAaQH8h7E", + "HYkHA80cyhykG7sdAQ4/EBUdJyktLzA7PUZoaxKgIZ8hmiGZIZgh/xqmGxsQjBucG7og9B3yHe8Y5hvkG4AeAQd2FkZRX2", + "FvBKEhhx6IHp8aARNFEBUdJyktLzA7PUFNTlFha3F7GJ8hniGcIZshmiGXIaMWzBnJHR2MB7cbArMdwB2VGu8gAaEU5huE", + "GoofsR+JGgETTRAVHScpLS8wOz1BSk5RYWtxexCjIaIhniGcIZshHo8bAe4f9h/ZGxOBG7ogqyDRGQESThAVHScpLS8wOz", + "1BSlFha3F7CKMhniGdIZwhAe0f7B/OGQEHJiEiKjE5PwSmIdIgziCOGwENPhAVHSAiOz1FSlFrezSpIaghpyGmIaUhpCGj", + "IaIhoSGgIZ8hniGdIZwhmyEHIf8egB+CH+QduxuSG/Ag7SAg6SC9IK4g0BkCoQL3H84dyRsbHeobiBqOH8QejRrKG/cdlB", + "azH58epBjDHdAfkwWgCAEMRRAVHSAiOz1KUWt7JaohqSGoIachpCGhIaAhnyGdIQgigB+BH4Mf5R28G5Mb8SDuICHqINEZ", + "A6ICzx0BhhutG8EgF8AZuxn2GIIZhx67HpUYAQY+MDRESkwEqCGwIL8ghwIBCz0QFR0gIjtKUWt7NqwhqyGqIakhqCGnIa", + "YhpSGkIaMhoiGhIaAhnyGeIQokgh+DH4Uf5x2+G5Ub8yDwICPsIAIFpALRHfUf/R8BiBuvG6gbwyAZwh3CGaUboB6fHp4e", + "hBm5BJYFIL0eghyJHLgfzwwBDh8QFR0gIjtFSk1OUWt7M60hrCGrIaohqSGoIachpiGlIaQhoyGiIaEhoCGfIQELJZYGgx", + "+EH+wB6B33IPYgthuPG6ME8SAk7SC5HcIgsyDUGccbqxauG/of+x3THYYa4BfuG5EekB6kGecUvh7QBJkIAQgePE5RYWtx", + "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", +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/MasterCertificateData2.lean b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData2.lean new file mode 100644 index 00000000..aee1970c --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData2.lean @@ -0,0 +1,517 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.LRAT.Format + +/-! # Generated packed master-certificate data -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Packed certificate data part 2. -/ +def masterCertificatePart2 : List String := [ + "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", + "GuCKMZwR4BCx4QFR0gIzFKUWt7NqkiqCKnIqYipSKkIqMioiKhIqAinyKeIp0inCKbIpYBCR2hASqoAqIcoAEG/B+SB/0f", + "9gcBkAhv0h6cHfMazRj0Gp4Gwh7JG+QbpCHjCMMY+hzOG4chnh/WIPoZkx22H64guh3bDgEOQxAVHSAjMUFKUV1ea3szqi", + "KpIqgipyKmIqUipCKjIqIioSKgIp8iniKdIpwiCgEeK6IBqQKhAfMh9CGiGaQZtRznHdgbnQi2Hrce1h7MH/Mb5BunIKQg", + "oiGfIbcfIfsZiRqfH6sgix3mFP4e0SDrCQEOMhAVHSAjMUFKUV1ea3szqyKqIqkiqCKnIqYipSKkIqMioiKhIqAinyKeIp", + "0iLAsCH6MBqgLyHvQh9SGjGaUZthzoHZ4Itx64HtceoyGgIc0f5RuoIKUgAbofgCG5H+0U9BbVHOEhoB+TH70dhh/rCQEO", + "NRAVHSAjMUFKUV1ea3szrCKrIqoiqSKoIqcipiKlIqQioyKiIqEioCKfIp4iAS0MAyCkAasCnhzrGuka8x71IaQZphm3HO", + "kdlyHiIZ8IuB7YHvQbvwLOH/Ubvx2pIKYggSG4H+schR/9GZQf2CDuCQENXhAVHSAjMUFKUV1rexisIqsipiKfIg0EIaUB", + "rAKkAaUZpxm4HLkeuh7nGwL2GwGlH6Qf/hmBGrkfARNDFRsdICMsMTo8QUpOXWtucnl7EKwiqyKqIqYipSKkIqMipQEl9i", + "DeGuQhvxamIZ4h4xoBDF0QFR0gIzFBSlFreyKuIq0iqyKqIqgipiKlIqQioyIwDwYjpwGuAvYepxmpGboc7B2iCNEfqSAC", + "rRquGq0cAfwgux//IIAa1RqlHwELQRAVHSAjMUpRa3sZqyKpIqYipSKkIjEQB6gBrwL3HqgZqhm7HKMI0h+tIKogAZcIrh", + "qvGtsg3SDvHAELYxUbHSMpK0NHa24IqyKpIqcipiKCGsodwx2yIAEQXRUbHR8jKy86Q0dNT2JrchSxIq8irCKrIqgipyKk", + "IrAcvRy/HqUIqB2yHL8fvwenIfsWuiC8II0XAQoxEBUdICNKUWt7N7MisiKxIrAiryKuIq0irCKrIqoiqSKoIqcipiKlIj", + "SrAfoeJwOGIJwHhyATsgIK/CH9Ie0brRm+HKsZnCGRIdEd6SECAZoIedwesRqyGrMcqB+rH+Ag3iDAH5QapRy4IJkfjB/5", + "CQENXhAVHR4gIy1KTFFrezS0IrMisiKxIrAiryKuIq0irCKrIqoiqSKoIqcipiKbCMweyh7OHtEeATWsAaEBiiCbA4sg+x", + "7BB60cvAaqHBC2G4kayRrLGpIc4CDeIMohxSHBH9QctBmmGYYfkSCpH/QczB2jDQEMLRAVHR4gI0pMUWt7D7UisCKpIgI2", + "rQGcA4wg/B78BsIHlwEB2QixHAELTBAVHR4gI0pRa3sPtiKxIrAiqiKpIgM3rgGMII0g/R6YARLgHgEBDi0VGx0eIzA6QU", + "pNUWFrI7QisyKyIrEisCKuIq0irCKrIqki/h7+BvcexAfSAYwaggOQGtsepAGeCLAc2wiVHLQczSHIIc4eiB2THKEB/yCT", + "G84XwyABD0MQFR0eICMyREpRXV5rezK4IrcitiK1IrQisyKyIrEisCKvIq4irSKsIqsiqiI5BQKwAaUB0B7OHtIe1R7/Hs", + "UHkSCPII4gySHOIeYbsRyqHfQb2R6IHeQgogbFH+MbuBmqGawBrR/THaIemB3uIeYOAQ4yEBUdHiAjREpRXV5rex65Irgi", + "tiK1IrQisyKyIq8iriKtIqsiA7EBOgbPHtYegB/GB5IgkCDKIawbAZMDyR+OIYIXtBfFIAENUxUbHSMrQU1RXWJmayO6Ir", + "gityK0IrIisSKwIq8irSK4GLoY0RqDF+gb2CDEILkCxiDFHKcbpwHwIbMc1x32GdgHGJAg9Aj0HbkI5h71HLUXlx8BDUQQ", + "FR0eICNKUV1ea3sruyK6IrgityK2IrQisyKyIrEisCKvIq0iCAWzAagBPNMe0R7VHtgelCCSILQcgh/IB64bArEdkCGVA+", + "YbAecg4iDHH4sdrRnCIYEGyR3PHY0fAQxeEBUdHiAjSlFda3sgvCK6IrcitSKzIrIisSKwIq4i1B7SHtkePQkGtAGpAYMf", + "yQeVIJMgkiD2HQGNHYoduxuyH64ZpR26GZ4gAQtdEBUdHiAjSlFrew69IrYiryI+CgfKB5QgkyCEBwG4Gbcc1B4BETIVFx", + "sdKzA1OlFVXGFrcXt9Hb4iuyK6IrgityK1IrQisyKwIswhzyH4HpAelh7GH4gilyClCKABnx3iGI8dswbVHuQbiRWTIcgg", + "1RcBE2QVFxsdLzA6QURKTVFcYWtxe30hvSK7IroiuSK4IrcitiK1IrQisyKxIrgciSKGB4YfzAeKG6YItB+2H+MY1h4BsR", + "z6G/kI0gKUIaEZjh+aGtQUySABFEQVFxsdIy8wOkFKTU9RXGFrcXt9Hr0ivCK7IroiuSK3IrYitSK0IgG5HIcHhx/NB4ob", + "ixunCJEaqh3HHsUgnBupIJkblSHiG7sXnh/6COAhAQoeEBUdICNKUWt7JcEivyK8IrsiuiK4IrcitiK1IrQisyKuAQ5CuQ", + "GaIJgglyCIH84HCwSoCOUICuoe5RiMG9geAeUbkh23H54akhqrHcYgAQ4tEBUdICNKTE9RXV5rezPCIsEiwCK/Ir4ivSK8", + "IrsiuiK5IrgityK2IrUitCIPAUO6AakDmSCYIIkHiyKMIokfzwfZGp8ctRzXGpca1hybGuwg7iDYIckh0h67H7gf1h3AGf", + "chlB+CHbYZzh+kIJsc0woBDU8QFR0gI0pMUV1ea3smwyLCIsAivyK+Ir0iuyK5IrgityK2IkQQArsBqgOKH9AHmiCKB4wi", + "oBzZIcoh1x0BwgLtHr0ZuR3OHLYHkSGhF9IdzSDPH4wXAQtdEBUdICNKTFFrexC/Ir0iuCK2IkURA7wBix/RB4sHwxwB0B", + "7WHs8cAQpMEBUdICNKUWt7B8AiuSJGvQGMH6cBAQEPLRUbHSMrMzk9QUpNTmFrC8IiwCK8Irsixh2bGp8akyHdF8EX0iAB", + "CSMQFR0gSlFrezjHIsYixSLEIsMiwiLBIsAivyK+Ir0ivCK7IroiuSK/ARSgIJ4gnSAGkSKQIgJIjh+OB9QHpBzHHN0hzi", + "HbHQH9IcYCwRnSHL8Z0x68HcUaxhy9H78f8B7yIPQgmBqkGtMfmR/MIKAchh2YCgEUMRAVFx0gIisvOj0/QUNMT1Fda28X", + "yCLGIsUiwiLAIr8iviK7IpEc8h3AAZgggx7yHr4ckCKkHLUbwyGuBpgaixbbIAEMXhAVHR4gSkxRXWt7MskiyCLHIsYixS", + "LEIsMiwiLBIsAivyK+Ir0ivCK7IuYe3x7jHuEeAo0BwQG2AbADkB/RBpUirgEBoCCfICXLG/MevxyRIqUcthvQIZgf2iHc", + "AvAdyRmSIdofxRnFG4Yhpx8BEDEQFx0eICIrPUFDTFFdX2sbyiLIIsUixCLDIr0ivCLnG8IB5R7jHuke8BvyHZoghR70Ht", + "kZ3xnAHJIi3Ru3G/gg3SDnII4aAQtdEBUdHiBKTFFrexbLIsYixSK/Ir4iuAEEjwHDAbID0waSH7ABAgGSB6IgoSAn7wj1", + "HsccAQU8GyxLewbGIr8i+B76Ht0chB8BC1UVGx0iKy0xQV1rBswi4BqYA6EX5B+OCQESMRUbHSInKSstNDo9QVFdXmRrC8", + "wiyyLFIsQiwyIB2wXHH/0b3xjJIQELXhAVHSAtSkxRa3s2zyLOIs0izCLLIsoiySLIIscixiLFIsQiwyLCIsEitggIxwG2", + "AwSTAcUFmSKYIpYfmgPjHLQBwhyRIuEe4x7fHqwcvxsBpiDlIdYhqwPvHPYanSHpA9EbzBbcBcUfiRfOHs0Z2yCyH7cKAQ", + "otEBUdIEpMUWt7F88iyyLJIsQiwiIJlAHIAbcDlx+1AZsDsgEFwxwBzxyXB+Me4RnmGecfkQkBCkUnKTE0Oj9KTE8LziLN", + "IsgixyLGIrgD4hj4GswhnyGaHAEPMRUbHSInKTQ6P0pMT2t0FNEi0CLOIs0iyiLIIscixiKZH7kDtAEByR+bIaMhyh/+Gq", + "YanxrpHwESXhAVHR8gIicpOj1KTFFrbnR9HtMi0CLOIswiyiLJIsgixyLFIroI3x7LAZofkx+6A+AenSKwHAGpIOkh2iGv", + "A/oa7QPQFqUb4AW2H40XAQg1JykxOj5KTA3RItAizCLLIsoiySKNG7sDyCHfGJ0hoiH7HQEJTBAVHSBKUWt7I9Ui0yLSIt", + "AizyLMIssiyiLJIsgivAMOmQHNAZwfugG3AQX/HtQCmyKYIqAbCuAcyAgC/BjUHO0bqyABxCHNH+YYAQ1BEBUdHiAtSlFd", + "Xmt7NNYi1SLUItMi0iLRItAizyLOIs0izCLLIsoiySLIIgEPmgHDAc8czgHzHuwe8B7uHvge+h6dH+MH2AjMHAmAHp4iwx", + "u8BqYa6SCaGo4d+CCCIbYfhBzCHc8fyx+VG8sh7h+1HboNAQtVFRcbHSstNTldXgXOIswiuB3qGsEGAQ5EEBUdHiAtNUpR", + "XV5rezPYItci1iLVItQi0yLSItEi0CLPIs4izSLMIssiyiIDAhHFAdEc0AG2IfUe8B7yHu4e+h78HrEgqyCsIKUInAGXG4", + "sdiB3NIdgbnx+gItEbAfoghCHNH7MfwR26ILYfvBu7DQEHUiIyYWtxewTYIu8f8B+9GwEKZxcbHSZGU11rewTXIqUakh26", + "HwENNRAVHR4gLUpRXV5reyzbItki2CLWItUi1CLTItIi0SLQIs8izSIFBhTIAdMB+B7zHvUe8R60IK4gryD9Hv8enwGaG9", + "sboh8C0CHRHNQboyID/BrkHwHnILof2B7YGcAgAQxeEBUdHiAtSlFda3st3CLbItoi2SLYItci1iLVItQi0yLSItEi0CLO", + "Ivke9B72HvIeBxXJAdQB2RygAekHox/SHKQiyRsGsCCpCAHMIdQh3xuKG7ohihqqHegg0h8C/R3tHwELLRAVHR4gSlFda3", + "sh2yLYItci1iLRIs8iFsoBCKEB1QGkH4EfqAPTHOoHoiKlIgHwG9gcxgf0HvsHEP8fixzKG+wZ+iCLIfAgoRoBDDwQHiAs", + "Ok1PUV1rewneItgi0SLrB4ofPLEgsiA6ARI1FRgdJykvMT0/QEpNT11haG8N3SLbItYi1SLUIrAdrx3fId8bvSHUH64fzx", + "QBEUQVFxsnKy8xNDlASk9TZHV5CN4i3CLYItci1iK+IdkfoBIBDWQQFR0eIDFKUV1ea3s04SLgIt8i3iLdItwi2yLaItki", + "2CLXItYi1SLUItMiDBoE2QH7Hs4B9x6nIqQi2AH+HvkepQHaHJ0dnB3OGwP0IO0ggh+eHpUY4wiuCAjFG8MgyCAC3CGKHA", + "G6HIQevh//DgEMMRAVHR4gSlFdXmt7NeIi4SLgIt8i3iLdItwi2yLaItki2CLXItYi1SLUIg0bBdoB/B7PAfgeqCKlItkB", + "/x76HqYB2xyeHZ0dzxsEgx+fHuQItiCvCJ0cCQG4HeIbthq/IMkg3SHaH8Yb7h3cFYQh/w4BETUVGB0nKS89QUpNT1FdXm", + "h2Et8i3CLbItoi2SLYIrQdsx2EH/AFkRy4IewYtB+yH+8d2hXKIAEHUiJCYWtxewTjIvgf9x/IGwELXhAVHR4gSlFda3sw", + "5SLjIuIi4SLgIt4i3SLcItsi2iLXIvsegh/9Hv8eEB7SAQjdAakBqyKoIt4c3AEHoB2hHdIbhh/nCAO8IL4gAuwh+yGgHA", + "H0GvUdwh+HIbMfjBu5GtwV3B8BDTwQHiAsOkpNUV1fa3sO5iLgIt8i2SLYIvMHkh8Izwf9HoEfoB6PHrYgAQwxEB4gPU1R", + "XV9rcXsI5yLgItkihByAH+IZuyCkHgEKXRAVHR4gSlFrexHoIuEi2iITIawBCwMCiR/qCAG/IK8H4xnuCP8eAQZeGx8+S2", + "sF4iLbIvYe+B7xHAENPxUXKS0vMTQ6PUFKTQbnIsYc5xzlIYgIvBwBDUEQFR0eIC0xSlFrb3s06yLqIuki6CLnIuYi5SLk", + "IuMi4iLhIuAi3yLeIt0iFgMk2AHjAdIIrwHkHLIftgPhHLEB/xyNILAisyLYG9EGuxr+IKMdrhYBhh/iIdohoBvwEsAh5B", + "/iH40cwxfgBv4fxRnUDQETNRUXHSImMTo9PkBKTV9ha29xexTrIuki6CLkIuMi4iLhIqsbvR3GIbkI4CETyiGEGNkdhh6B", + "IMofhB4BDG8QFR0eIC0xSlFreybtIusi6iLpIugi5yLlIuMi4iLhIhjaAQUm5QHUCLEBtB+4A+McswGyIrUi2hsCwSC6CN", + "YHlh4B5CHcIYoYoRibG/kgyyGbGgEGbh4tLz1NBeci4CKHH4Uf6xwBC1IQFR0eIC1KUWt7Nu8i7iLtIuwi6yLqIuki6CLn", + "IuYi5SLkIuMi4iLhIhrcAQco5wHoHOQG1gizAbYfgx26A+UctQG0IrciAYcdAsYgtgfIIBYL7BzLHPYhvh+WHtEZyRm3Ie", + "QfnCHZHZQerh2AIMQNAQotEBUdHiBKUWt7M/Ai7iLtIuwi6yLpIugi5yLmIuUi5CLdAQgpG+gB6RzXCLQBtx+EHbsD5hy2", + "AbUiuCIBAt0bA8cgtwfJIO0czByOCPchgwO/H4Ei8B7vHpcelh7KGbgh5R/XIIoe2h36CAEGLhsfPktrBeoi4yKGH4Qf+R", + "wBDG8QHiAxPU1RX2t7fQXyIpcJxiDFIJYZAQs1EBUdHiAxSlFrezbzIvIi8SLwIu8i7iLtIuwi6yLqIuki6CLnIuYi5SIs", + "HgvrAeABA7cB2gjsHLIb6gGgH7kitiKcH/ICrx3EHcIdrh2sGwHnIYYD5giKH5gcth2eHugflgbQH9whxiC+FfggiCDMH5", + "UPAQoxEBUdHiBKUWt7N/Qi8yLyIvEi8CLvIu4i7SLsIusi6iLpIugi5yLmIgwfLewB4QEE2wi4Ae0c6wGhH7oityKdH/MC", + "sB2vHb8bAQLnCI0fix+fHscgwQivHO8hG44dxBu/Fd0gwh/+IPEX0iHRH5cekA8BFjUVFxsdIicpLzA6QUpNT1FcYWtxe3", + "0O9CLsIoIIvAfcCMYdNv0fmAbAFZschyCOINoUAQkeEBUdIEpRa3sv9iL0IvMi8iLxIvAi7yLtIuwi6yLqIuki6CLjASEv", + "7gG6Ab0fDt0IvAEGvCK5Ip8f9QKyHQLNIM8gzCC9B5oZjR8B/SGMIpAdsRzrBsEVgCH7IPEX0xrLIQEMNRAVHSAtPEpRXm", + "t7Nfci9iL1IvQi8yLyIvEi8CLvIu4i7SLsIusi6iLpIjAiAe8B3gjtBbsBwSLAIpkfvh+ECPkI6hy5Iocfix+JH7Ab5xux", + "HOwhigPqFrodoyHsH5EE+BmbHoIZ2R/ZIOAhyyC5HZAe7goBC14QFR0gLTxKUWt7H/Yi9SL0IvMi8SLwIu4i7SLsIuoi3w", + "gjAvABMbwBvx+FCOsciB+KH+gbshwB8CHoIfEfK9Yh4SGmGwEKLRAVHSA8SlFrexf4IvQi8iLtIusiAyQy8QG9AcAfhgi/", + "AcQD7BwB9xziB4ofihqPGroJkCABCjUnKTo8P0FESk8L9yL2IvEi8CLvIocIhRmzG88h7yHDHAEQQRUbHSInKTo8P0RKT1", + "1rdBD6Ivki+CLzIvEi8CKICAHyH/Mh6yHzH7AbyBrPGo8gAQlVJykrMTM1UV4J9yL0IvMi8iLxItYY7xaiHqMhARI1GBsd", + "JykrOjxDR01RXV5rcX0R+iL5Ivgi9SL0IvMi8iKKCLYb8iEBigaXHp8hzBumF8wfARNeEBUdHyAiJyk6PEpNUV1rbnR9Gf", + "4i+yL6Ivki9yL2IvQi8yLyIvAiix/2AcUfiwiKH8ciuBwD0SDnIdwhAfYh7iGsGwEHNScpOjxKTg78Ivsi9yL2IvUi9CLo", + "B4wIihm4G8whxyH0IaYeAQk8EBUdIEpRa3sjgCP+Iv0i+yL6Ivci9iL1IvQi8yIKK/gBOcQB9gXHH40IxgEH/wLDIqwfix", + "3LG/MIAqcZ/hyYHNMgAfgf8CGRGQELNScpMTo9PkFESk0K/iL9Ivgi9yL2IrobjBn1IdYh0xwBEU8VGx0fIicpMTo9QUpN", + "X2R7EYEjgCP/Ivoi+CL3Irwcgh0B8SH5Ifkf+x+3G2fyGZUgAQ1EFRsfIjE0QUpOX2R7DoIjgSP/Ivsi+SL4Ivof0yHLIf", + "wfrxvzGZkg+hkBE0EVGx0fIicpLjE6PUpNUV9rcXsWgiP9Ivsi+iL5IvYipiCqIM0iziLEIvcI9BsCmR/hHAGrG5UZngSX", + "A8cdAQhSJykrMTVRXAiAI/wi+yL6IqgG+BatId8YAQ81JykrLTE6PT5DR1FcYWQXgyOBI4Aj/yL+Iv0i/CL7IvgioBi/Gw", + "GeIpkfmx/tCPoh8x2gHqwekiGpIf4bAQoxEBUdIC1KUWt7JYcjhSOEI4MjgiOAI/8i/SL8Ivsi+SIHQDIR/wGrH/0FywHu", + "CM4f+hzSA8kiA9sg8AfBHIcd8CHlIZof9xsB/iH2IbUbAQZEMzlBSk4HhCOAI/4i/SLYIdAhsxsBCS0QFR0gSlFreyqJI4", + "cjhiOFI4QjgiOAI/8i/iL9IvsiQjQTCYEC/wXTItIirR/wCM0B0B/8HMsiAuAg4iDQB+YciR2QIp8imh8BsBuHGKME5QHM", + "Hcod1x8BEkEVGx0fJykvMTo9PkRKTWt7fRmHI4YjhSOEI4MjgCP/Iv4ixh7VG9EflR39CAmBIvkhnwncHKMYyx3fIYQhhh", + "isGY8hAQs1EBUdIDFKT1FrezaLI4ojiSOII4cjhiOFI4QjgyOCI4EjgCP/Iv4i/SI2FUQCC4MC0SLOIosd1SLFHNQiggKK", + "A/QcxBuWHZ4D/yH+CJgf/hbOHYkdrgalBLQflhnWG/Qh3iCAIKYg1hXsGpAh7R/kH8QKAQpPEBUdIDFKUWt7IoojiSOII4", + "YjhSOEI4IjgSP/Iv4iDEUDNxaEAtIizyKDAosDjB3GHMcflx2ZH4odtR8BgyL7IQLqIfUhuhsBDkQVGx0fKy8xPUpOa3t9", + "J4sjiiOJI4cjhiOFI4MjgiP/Iuch1SHdIdMhrh+fHZgdgB3rItYi2BvJHpkfmx+5G/EIgAnqHL0eiCJGiRikGNAipx3bH5", + "IhuhmvGYohAQkxEBUdIEpRa3sbjCOFI4QjgyMYRwWGAtgi1yKEBoUCjQPRIpkdgQkC9wewIJAJDgG1G58ZqAShA9EdAQh7", + "EBUdIEpRazmPI44jjSOMI4sjiiOJI4gjhyOGI4UjhCODI4IjgSMBhwLmIOgg5SA6Gdgi2SJIhQYGhgKOA9Iiyh+aHdYHnA", + "jsHI8dpSKWIpsfB6kdjh22G7gfqQTcIdwdiB6MF4UgsgbsGrEe3R+UIdAdtwoBEjUVFxsdKy0vMTw+QVJUZGtvfQyPI44j", + "iCOHI4YjzxutAYUg6hWnIJ0g2BkBEk8VFxsdHistMTxBQ1FdX2tvfQ+OI4ojiSOHI4YjgyO8HrccsB+gGqYaAf8hhyLGGw", + "EFXh4rO2sGiyOEI6gfrx+sH5gdAQ9MFRcbHR4rMTs8SlFrcX0PjSOMI4YjhSP6A8Efux+bBwG1IIYJAq4fsR+ZHQEOIxAV", + "HR4gMTU8QUpPUWszlCOTI5IjkSOQI48jjiONI4wjiyOKI4kjiCOHI4YjBowCgQLUH5AJkwnXH40d0xuuGe4dtiABAocJzh", + "6/HsEfsx+xAYci7RrQHLEhoiCyIaQg6SGBHNUZ3BmZF4kg8iDHHI4OAQ01EBUdHiAxPEFKT1FrK5MjkiORI5AjjyOOI40j", + "jCOLI4ojiSOII4cjB40CggLVH5EJlAnYH44d1BvvHbcgA4gJwB60H7IBiCIBAs8ewh+LHd0ighyyIfsS4x/2HYog7xUBDE", + "8QFR0eIDE8QUpRayuTI5IjkSOQI48jjiOMI4sjiiOJI4gjCI4CgwLWH5IJlQnZHwTBHrUfAYQijCL/GMsbkBmeB9AeiwfD", + "H8Mh+h6MHboc6yHFHfQf+SD0IN0a3hnXCQELQRAVHR4gMTxKUWsOkiOQI4sjiSMJ1x+TCdofuSCKCQGyH7UfnR0BEFIQFR", + "0eIC0vMTU8P0RKUWsxmCOXI5YjlSOUI5MjkiORI5AjjyOOI40jjCOLI4ojCgGQAoUC2B+UCZcJ2x/lCOwggQj/A/YhkR3X", + "G54d8h2ZIrofBo4d1ByoCccd0gmNB70criCxHo0gxSGTIZkh9g0BD0QQFR0eIC0vMTU8P0pRazKZI5gjlyOWI5UjlCOTI5", + "IjkSOQI48jjiONI4wjiyMCkQKGAgvZH+YI7SDsIIIIgAT3IZId2BuYCdwfnx3zHZoi1RzRHMgdux8H0wm+HI4gyxnoH+kf", + "/CABnheWH/cf+A0BDjUQFR0eIC0vMTw/SlFrM5ojmSOYI5cjliOVI5QjkyOSI5EjkCOPI44jjSOMIwwDkgKHAtoflgmZCd", + "0f5wjuIIMIgQSTHdkboB30HZsivB8IkB3WHNQJvxwBhh7nHdMZ6R/4IOofgCGUGLEgpCGfF/oNAQ0/EBUdHiAtLzE8SlFr", + "NJsjmiOZI5gjlyOWI5UjlCOTI5IjkSOQI48jjiONIw0EkwKIAtsflwmaCd4f6AjvIIQIggSUHaEdvR8JkR3XHOMi/BwBlS", + "KEGYsepxzIIZAHrCCKG54a+SH5H4UeoyGSIP0e/Q0BCVIVFzE1OTtRXAiXI5MjkiORI5EHtRv9HckhAQ5EEBUdHiAtLzE1", + "PEpRazOdI5wjmyOaI5kjmCOXI5YjlSOUI5MjkiORI5AjjyMGD5UCigIC3R/qCPEg8CCGCIQE+yGcCeAflh3cG7cfth/3Hd", + "kc1RzMHb8fkCLlIqIcAaIXih77H7IglxbrH/sg/h2HDgENNRAVHR4gLS8xPEpRazSeI50jnCObI5ojmSOYI5cjliOVI5Qj", + "kyOSI5EjkCMDBxCWAosC3h+4H7cfuR/rCPIg8SCFBJ0J4R+XHd0b+B2ZHdoclB2RIuYioxwBih7rHQKjF8Eeix7/H/4fwS", + "GzIIcciQ4BDC8QFR0eIC0xPEpRayKdI5wjmyOaI5cjlSOUI5MjCBGXAowC3x/sCIgIhgSeCeIf2xzBHw2VHeciBAGNIpUi", + "iBnNG5kZ/SHHIcwhjhsBBi4eMTthawWZI5IjvB+/H5UcAQxYGDhNT1FdX2FrcX0EnSPyH/Ef7xUBDDUQFR0eIDE7PEpRaz", + "WiI6EjoCOfI54jnSOcI5sjmiOZI5gjlyOWI5UjlCMLFJoCjwLvCPYg9SCLCIkEoQnlH/wdmx3hGwIQA88fuxz2Gbsfxxyj", + "ItwJAfEb8R/FF68guSCsIcIi4h2mFYAilyC6HtcPAQs5GCsvMTs/UV9hawWfI8McqByEHfcfAQs8EBUdHiAxO0pRazakI6", + "MjoiOhI6AjnyOeI50jnCObI5ojmSOYI5cjliMWnAKRAqAJownnH50dEgIN8Qj4II0IiwQEBdEf+Bm9HL0fAZ4i3gmNGbAc", + "mh7qIrUg4B2nGqkhriGBIPIVkB70H4Ihgh7JDwENRBAVHR4gIzE7P0pRazSlI6QjoyOiI6EjoCOfI54jnSOcI5sjmiOZI5", + "gjlyOdApICARe0BJ4drSKhIo4dpAnoH+AeE7sdhwKkA+Eeqx3yCPkgjgiDIt8JmB7DHnTUHZoHsiC2HvQfgyH/F4MgryGQ", + "HtAPAQwjEBUdHiAxOz9KUWsnpiOkI6EjoCOdI5wjmyOaIwIYngKTAqIijx2iCaUJ6R+fHeEeFLwdiAKlA+IerB3zCPogjw", + "jgCZkemwcB8x2VG5wgmRj3GpAeqyEBDmkQFR0eIDE7P0RKUVJrM6cjpiOlI6QjoyOiI6EjoCOfI54jnSOcI5sjmiOZIwMB", + "GZ8ClAKvIqMikB29IMEgviCjCaYJ6h+gHbIetxztGuIeFb0d/B/3H6AgniCJAqYD7SLqHZAe4x6tHYQg+yCQCLAPAQ1SEB", + "UdHiAxOz9ESlFrNKgjpyOmI6UjpCOjI6IjoSOgI58jniOdI5wjmyOaI6AClQIZBAK3BKEdpwnrH7AipCKRHb4gwiC/IOMe", + "Fr4d7hqKAp0HpwPrIu4i5B7rHa4dywb8IJEIhiLXHQH3H6khoyGyDwENVRAVHR4gMTs/REpRazSpI6gjpyOmI6UjpCOjI6", + "IjoSOgI58jniOdI5wjmyMFAxuhApYCsSKlIpIdpQmoCewfoh2UHuQeF78diwKoA+wi7yLlHq8d5R32CP0gkgiHItgdAdwc", + "+h/5H/ETviCzIaQhtg8BDWkQFR0eIDE7P0RKUWs0qiOpI6gjpyOmI6UjpCOjI6IjoSOgI58jniOdI5wjBgQcAaIClwKyIq", + "Yikx2mCakJ7R+jIKIgox3lHhjAHbocuByTHoYejAKpA+0i8CLDIL8gwSD6H64C5h6JGZ0JwR+IIrUPAQxEEBUdHiAxOz9K", + "UWs1qyOqI6kjqCOnI6YjpSOkI6MjoiOhI6AjnyOeI50jBwUdowKYArMipyKUHacJqgnuH6Qd5h4ZwR2NAqoD7iLxIucesR", + "3nHfgI/yCUCIki2h3UHQGwIfof/B+sIQLYIaMgqB+3DwELUhUXJykrL0VPXF8DoQfPBpsbAQs/EBUdHiAxO0pRazatI6wj", + "qyOqI6kjqCOnI6YjpSOkI6MjoiOhI6AjnyMJH6UCmgK1Iqkilh2pCawJ8B/5IugeG8MdjwKsA+kesx36CIEhlgjnCQfzIu", + "kdApke+h0BjBnQHoog0CGjIO4dzx78H5MhwA8BCzMXGx0mMTs9UWF2BqsjpiOkI8sYlxmMIAEQRxcbHSMxNDs9PkNNUVlh", + "fQusI6cjpSOkI80e3h0BqCLIG8cYjSABCzgVFxgjMTQ+Q0VoGbAjryOtI6wjqCOnI6YjpSOGIJ4iqSKfIsIXnB69GeMbqB", + "2EIYUhqAKZGZEgzRiRI4QKARMjFRcYGx0rLzE7PT5KUV9hb3F9GK0jrCOqI6cjpiOjI9Mg7B77IpodzB/+CJgEpB6mB6kc", + "Ao8iAcobgRzeIYMgoBsBDTMXGx0iMTs9Q01Ra30HsSOqI6gjqx6KG6wZwyABC0QQFR0eIDE7SlFrNrMjsiOxI7AjryOuI6", + "0jrCOrI6ojqSOoI6cjpiOlIw8GJasCoALCBJwdzR/OH8wf0h+yCfYf/yLuHskdlQLvHoAJhyGRIgIB+SL2Iqwi7x2nIKAc", + "gxyBIKUgkSGWIYoW4CGsILAf2g8BCjEQFR0eIDtKUWs3tCOzI7IjsSOwI68jriOtI6wjqyOqI6kjqCOnI6YjJqwCoQKwCb", + "MJ9x+AIyIBoB4Hzx/NH9MfEJ0d7x7KHZYCgR7wHoEJiCED+iL3IvAdoRwCrSKEHJohgiCSIc0boxvhIaogsR/cDwEMIxAV", + "HR4gOzxKTFFrNbUjtCOzI7IjsSOwI68jriOtI6wjqyOqI6kjqCOnIwGtAqICiyEmnATcH+Mf3R+MIfQDgSO9B/gfihuOG8", + "obzBsjqx3ZCYkamB3MH78hvSHFIsoiwiCWHf0ZtRqqIJMhiCChHqQgqg4BC0wQFR0eIDs8SlFrMrYjtSO0I7MjsiOxI7Aj", + "ryOuI60jrCOrI6ojqSOoI50E3R/kH94fAq4CowKMISeNIfUDgiO+B/kfJKwd2gmKGs0f3BwB/iL2CZcdyRy8IoYg3R62Gv", + "8hxyCyGtgczx6UIAEGTh4rOz9rBbAjqSPVH84fvR0BCyMQFR0eIDs8SlFrNrgjtyO2I7UjtCOzI7IjsSOwI68jriOtI6wj", + "qyOqIwQCsAKlAo4hKY8hkSH3A4Qjtwn7H/IeASblH+Ae3AmNG64dkRv0HJsdwiHAIcggyCLNIsYgkxuaGc0DgBqNIpggrR", + "bcHIsgqw4BDGMVFxsdMzU7QU1rbgmzI7EjsCOvI64j3h6AG7ohuhQBCjwQFR0eIDtKUWstuiO5I7gjtyO2I7UjtCOxI7Aj", + "ryOuI60jsgKnAgYrkSGTIZAh+QO5Cf0fKAPeCeIeBPQe5x+wHQKCI5sdwCLKIpQeAcQhwiGVG7gYjyLgHJMcyyABFCMVGB", + "sdICswOz0/QUNKTE9RX2txH7sjuiO5I7gjtyOzI7IjsSOwI+Eclh2kHdEdnQK6ApIh3wmxHtIinB3NHPEijiDZHrsahCLI", + "ILka3xyMG7EgAQxMEBUdHiA7P0NKUWs1vCO7I7ojuSO4I7cjtiO1I7QjsyOyI7EjsCOvI64jowQCqQK1HbQCLQjLBKUduw", + "n/H5Mh0h0qBZ4CuwPkHuIcAf8igiP8CZ0d+B2UG80bxiHBIc0g/Bm8GpkgjCCaIagemh7EDwELQxAVHR4gOz9KUWsevSO8", + "I7gjtyO1I7IjsSMJA6oCtQIulCGWIZMhvAmAICsG5R7jHAGWHPgc0yDKIJwbjhuDG74hAQxjFRcbHSMnK0FNa24JuCO2I7", + "UjtCOzI48b+h2/IcEUARAjFRcbHSArMDs9P0FCTWFrHb8jvSO8I7sjuSO2I7UjtCPSHagd1R2aHYQFlyHdCL4DLeceoh3W", + "IqAd9SL7HQHJIcQhnBu6GJQiAQo/EBUdHiA7SlFrN8AjvyO+I70jvCO7I7ojuSO4I7cjtiO1I7QjsyOyIwytArkdMbgCly", + "GZIZYhvwmDIC4J5AnHHwPIB/oeBr0dqR0BgyOGI6Ed/B3XIpgbyiHFIdQg0iCdG7EZgBqVIrgg6R23FuMhxg8BCSAQFR0e", + "O0pRaw/BI7wjuiO1I7MjMoQgLw2YIZohAdwf2h/pHgEGXh4/S2t6Cr0juyO2I7Qj2B/fH9ofxh3HHYcgAQYxHiE/QVEGvC", + "O1I+oJ8x7uHuEfAQYtITxBUXEGviO3I+wJgx/qH4QfAQVxITxBUQe/I7gj7QkB8R/yH/8eAQl8Gx0fPT9LTGsLwCO/I7kj", + "uCPrH/AfxR3JHdgf1h/OHQEGYR4hQVFfBsAjuSPrCfMe9R7eHwEJMxcbHTs9XmBrDsMjwiO/I70joBuUG68J5iHhId4b2R", + "vvIfQhph4BB24dHz5NT3wJwyPCI7wjuyPcH9Yfxx3LHfIfAQxeEBUdHio7P0FKUWs1yiPJI8gjxyPGI8UjxCPDI8IjwSPA", + "I78jviO9I7wjsQniH+cf4B+NIAnCArcC9x4Hwx2UIQWzHdwdAuEithywB5Ab3SGXG6AewiC2Huwe0geHHZoYpyCrIOwh9i", + "GPHOIg7iKzHLYQAQZMLz0/X3wFxSO+I/Af9R/HHQEMORUbHTs9P1JdX2BrC8cjxiPeHL8JuBzXGuAa5SHfIfohmRsBEl0V", + "FxsdISowOz0/QUNNUV9rexnLI8ojxiPFI8QjwyPCI78j+xzHHfEfzB22HeQfBtga4RoB5CK4FqogqyDaF/wb8SIBDzkVFx", + "sdISIqLS87PT9gaw3MI8gjxiPFI8Qjqh3BCfgiuhy0B5QblBfhIQEOVhAVHR4mKi87P0FKUWszzyPOI80jzCPLI8ojySPI", + "I8cjxiPFI8QjwyPCI8EjxwIOvAKSIAUMyB39HgjmH+0ImSEKuB3hHQQC+B+iHfkiAfAc0wLmIvIhxAegIM4apxubG84f8h", + "7tIbAgrSCpDwENJhAVHR4qLzs/QUpRazTQI88jziPNI8wjyyPKI8kjyCPHI8YjxSPEI8MjwiMGyAIPvQKTIP4egB8JyR3n", + "H+4ImiELuR3iHQUD+R8Bux7cGqMd+iIC1ALxHOcizxrFB6EgqBvIIMYgzx/qHrchqw8BDC8QFR0eKjs/QUpRazXRI9Ajzy", + "POI80jzCPLI8ojySPII8cjxiPFI8QjwyPJAhC+ApQgDsodB/8eCugf7wibIQy6HeMdAfQclhwGBPofoR2ZIv0iA+giqCCn", + "IKYgqRudG+8hriCtHq8euhz+IcEPARJMFRcbHTA7PT9BSk9RX2Bre3wRzyPMI8Uj9x/aB9QJxQm7Hd0a+BwG6SKqG70W8C", + "HGAqgeAQwyEBUdHio7P0FKUWs10yPSI9Ej0CPPI84jzSPMI8sjyiPJI8gjxyPGI8UjAssCEsACliDwH+8f8R8QzB37Hp0h", + "Drwd5R3qIgG/HM0duQf8H5kb5iGpHpkX+SLvIokc1xOoIrQgsiCXHtYX4iD+IeQe5BABECMVFxshMzs/QU9RZnF0e3wN0S", + "PNI8wjyyPKI8kjmRyMFrUgsiDQGr8auSEBC0EQFR0eKjs/SlFrJ9Uj1CPTI9AjzyPOI80jzCPLI8ojySPHI80CFMICmCAS", + "AgTyH/Ef8x/9HsccnyEQ5x2hG/Mhqx4DkB0B6SDnIPsiwBqyIcUTAQxiFRchLDEyOzw/a28R1SPTI9AjziPNI8wjySOCII", + "MghCDLHLwHwhzQIvEZ5AntIAEHaBg4UV1xfQTTI6YgqCCmHAEPMhAVHR4qMTs8P0pRXmt9Mtgj1yPWI9Uj1CPTI9Ij0SPQ", + "I88jziPNI8wjyyPKIwPQAhfFAu4f9R+bIL8J8B+lCb8Ehx+kI6Icoxz6H58hAuYVyh78Iv8ivh3SIgGyHpoe+xeoGrUg/y", + "H6IaggxB7LEAENMxcbLzE7P0NPUW9xewjYI9EjzyPPHr8c0xnIHuogAQ1iFRcbHSIyO0BKXWBrGdoj2SPWI9Uj1CPSI9Ej", + "0CPxIMAH8yD1AsMIwQSoIaMhuRnzHIMY/CGuG/0e+CG4IvIWAQ5nFRcYHSEtMUBKUVZeYxbXI9Yj0yPRI6AFqAnCBMIJ0w", + "L0Hv0fuSLdCake/yD9IcgJ/heFHa0gsSC/HwEWOBUYGx0hLzEyOzw/Q01PXWNma297fBnZI9gj1iPVI9Qj0yPSI9EjzyPW", + "Is0cjR+LH4ggth61Hu8h/xezIKwg/hrnHroiwyHGFQENXhAVHR4qMTs8P0pRaybdI9kj2CPXI9Yj1SPUI9Mj0iPRI9Ajzy", + "PECfMf9R/KAhzWHdUC+h+gIBqMH8QEqgmkIQQFiSCZHQPrFQIBwx26HMkcryABCyMVFyEqLjEyPEN2Edwj2yPWI9Uj1CPT", + "I/kZoxzYIvoi7BeRHL0gviDIHske1yABDzIVFxgbHSEqLjE8QEpxfR7dI9wj2yPaI9kj1iPVI9Qj0yOsCcYEoyCmIKIgrh", + "+pHAGCI4UjgCOSHpscsBy9ItkiriC5HqEe2Rj9IQEPfRUXGBsdISouMTs8QEpxEd4j2yPZI9gj1yPWI9QjoyCqHKscAf4Z", + "xhz8IvoiySGxHAEMIhcdISotLkBKUVJdFOAj3yPdI9wjhCOHI6wfyATKCIsdjR2UHtkCiCKPIr8i3x2vHswjvAoBDDwQFR", + "0eKjE7P0pRazXiI+Ej4CPfI94j3SPcI9sj2iPZI9gj1yPWI9Uj1CMNzwIh2gKvCaUgyQTLCNsdBZIf/h9CqSECjiCIIPsc", + "Aacc/Rn+IowdlRyXAsAiyx64HvAXkh75Cdsg3CKzILIg+x7IHPUQAQwjFRcbHSExOz0/XWsQ4iPgI9sj2iPZI4AV/RSoHN", + "cU3RTrIvMg8CDEIMEg+x4BDlkYGx0hKThDTVFdY2txBOAjhxjLH7MgARFeFRcYGx0eISoxOz0/Q01RayDjI+Ej3iPdI9wj", + "2yPaI9cjzAmCIPsf/R/hItAd+B30BKAdEAKGIIkglB+JI4wjCwG1ILYg5BqmHvAezCEBECMVFxsdISotLjE7PUNNYGsM5C", + "PgI94j3SPcI6sc4BTaFIIjzAeEItoYARBiFRcbISInKTEyOz9GX2B7DOYj5CPfI94j3SPcI/4gzQedFqkexCD9EwELMRAV", + "HR4qOz9KUWsl5iPkI+Mj4iPgI98j3iPdI9wj2yMT1QIn4AKrILUJzwThHQb6HfcE8CKMIQOYH4UdkSACjiOLI5sexiIB4h", + "iKH64b+yEBD2IQFR0eJioyOzw/SlFeazLpI+gj5yPmI+Uj5CPjI+Ij4SPgI98j3iPdI9wj2yMUAdYCKOEC0gisILYJ0AmG", + "IP8f0AS2Ibch+SL+IuIdxQHVHMMewh6VIPUhpR3IHJABkyP+IMYhjwG0G5Md5BaLIskPAQ4mEBUdHioyOzw/SlFeazPqI+", + "kj6CPnI+Yj5SPkI+Mj4iPhI+Aj3yPeI90j3CMVAtcCKeIC0witILcJ0QmHIIAg0QS3Ibgh+iL/IuMdxgHWHMQewx6WIKYd", + "kQGUI5QduCAB5x/RIckc0RaMIssgjR/LDwENMhAVHR4qOzw/SlFeayfrI+gj5yPmI+Uj5CPiI+Ej4CPfI94j3SMWA9gCKt", + "QIriDSCYgggSDSBLghuSH7IoAj5B3HAdcclyABox3oHJ0ephzIIMkivSDWFQEQKRUXGx0hLS8zO1FeYWJrbwrmI+Qj4yPm", + "HNMJlh3WB6kY9xX4IQEMPBAVHR4qOz9KUV5rLu0j7CPrI+oj6CPnI+Yj5SPkI+Mj4iPhI+Aj3yMYBdoCLOUC1giwINQJii", + "CDINQEuiG7IeYdugnJAZkgqR0C3xwBlyOnCqUd6hyfHtkcyiD5Idga+BX+IAERIxUXGx0hKi80OT0/QEpdYW8m7iPtI+wj", + "6yPqI+kj6CPmI+Uj5CPjI+Ij8hyzHJ0ftQW7CdUEvSHXCLIgtSCxIOQe6x3aHIsjoRzMIpcbnh76IcwgxB6GH+Yg+yDdGQ", + "EMYhAVHR4qOz9KUV5rNe8j7iPtI+wj6yPqI+kj6CPnI+Yj5SPkI+Mj4iPhIwIaB9wCLucCsiDYCNYJjCCFINgdgR7+BNYE", + "vSHoHbwJ7B2qHYYj2xwBlgGTI5YjhCH9G6sY+yHFHsMb5yCRItse6hbMINoQAQx2IScvOT9PVmZxcnwI7SPpI+cj5iPXId", + "IhzSDcFQELXhAVHR4qOz9KUWsq8SPvI+4j7CPqI+gj5yPmI+Uj4yPYCY4ghyCJIBwJ3gIw6QK0INgEviG/Ib4JzQEC9Rzg", + "HpgB7h8E2h2tGO4d/xuII5UjmCMB7hayHtYhAQpdIS88UV9ha3F7Bewj5SOQHZ4gmRoBDiYQFR0eKi8yOzw/SlFrM/Mj8i", + "PxI/Aj7yPuI+0j7CPrI+oj6SPoI+cj5iPlIx4L4AIy6wICtiDACdoE3AjAIcEhgyOII+wd+h8BzR7MHpkgoCC9HK8dmgGd", + "I74WjR7EHPshiCH9IfMY0SLoIOQg0g8BDTIQFR0eKi87PD9KUWs09CPzI/Ij8SPwI+8j7iPtI+wj6yPqI+kj6CPnI+YjAx", + "8M4QIz7AK3IMEJ2wTdCMEhwiGEI4kj7R37HwLOHs0emiChIL4csB2bAb8W/CGJIf4h0BwBlx22HqwdxyDSItUe7A8BDC8Q", + "FR0eKjs8P0pRazX1I/Qj8yPyI/Ej8CPvI+4j7SPsI+sj6iPpI+gj5yMgDQTiAjTtArggwgncBN4IwyHCIfwf7h0B5R7rHg", + "ObIOoHoiC/HMAclh2fI68KmB2tHYwaoiLSINMi1xu8G/0hhiGoB+8PAQs8EBUdHio7P0pRaxL2I/Ej8CPvI+oj6SPoIwUh", + "DrkgxCHDIQGSIPEamhqcIAESIxUXHSEtOT0/TU9RX2Foa297Evcj9CPxI+8j7iPtI6YZrRm8HKAfnx+8BYMixCHyHKAb1h", + "zXIAEKPxAVHR4qO0pRazD4I/cj9iP1I/Qj8yPyI/Ej8CPvI+0j7CPrI+oj5QI38AK7ICPfBMUJ4QgQxSHGIQLhHYoesx2P", + "IwfyHaEg9R2UIOQcAZ8BmyOeI+UejSGrHtYimR+bH+4gpBkBCTIVFyEqLDE8Pgv3I/Yj8SPwI+8j7iPsIu8ilBqzHJ0jAQ", + "gsFRchKjE8Pg34I/cj8iPxI/Aj7yMBuRyYGugilyOhI44fARIyGBsdITE7PD5DTVFcX2tvcXsT+CP3I/Yj9SPyI/Ej8CPu", + "I/Ei7iKhILUc2BzNIM4glBymFdweqCIBDzkYGyEqLDE7PUNRXWtxexD6I/gj9CPzI/Ij8SPZHKUdtSCiIc8guByjI68cih", + "jaIgEKXRAVHR4qO0pRazf9I/wj+yP6I/kj+CP3I/Yj9SP0I/Mj8iPxI/Aj7yMFPOoC9QKXIJYgwCCcIJgg9h2bHakfqx/E", + "Icsh5ATKCZYdA+Ydjx4B9iKbGuYZ4xzVG8kbpCPbIJojliKbIt4g5h6BA5kbnh3PCfQQAQovGx0fKzw+TU9rCfgj9yPxI/", + "AjgB6JHqsgiyD8HQEKMhAVHR4qO0pRazf/I/4j/SP8I/sj+iP5I/gj9yP2I/Uj9CPzI/Ij8SMH7AL3AgI+wiCeIJogmCCZ", + "IPgdrR+rH+YEzAnGIc0hBOgdkR74Iqgg3By7Hesd0SDSIKkjmBy3Hd0imhuiBYwfxRusIpUh3CCgH/4PAQkqEBUdHjtKUW", + "sdgCT+I/kj+CP3I/Yj8iM/7QL4AgPnCQifIJsgmSCuH6wf5wTNCc4hAfoZnhr1B6EdnSOqI7wdAQ4jEBUdHi8yOzw/SlFd", + "azOBJIAk/yP+I/0j/CP7I/oj+SP4I/cj9iP1I/Qj8yPuAvkCAUD6HcYcSm+8IP8Z9hm5I+UduyOvH4gg/QmACq8gkSOWI8", + "4JzyHbHo4diSKLIo4hzxbUIMEehRv2IN8h7R7pEAENMhAVHR4vOzw/SlFdayOCJIEkgCT/I/0j/CP6I/kj7wL6AgJBS3Dm", + "HbAfiSCgHZIjlyPpBM8J0CHjHdwemx0BmSGrI5EWih37G7AigyKlGAEIOBghUV1hcX0ELL0KvwrrHwENYhAVHR4vOzw/Sl", + "FdazSEJIMkgiSBJIAk/yP+I/0j/CP7I/oj+SP4I/cj9iMC8QL8AgRD5x39HU1yvyDoHbIfiyCiHYAKgwrrBNEJ0iEBnR3l", + "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", +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/MasterCertificateData3.lean b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData3.lean new file mode 100644 index 00000000..25a0febe --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData3.lean @@ -0,0 +1,517 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.LRAT.Format + +/-! # Generated packed master-certificate data -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Packed certificate data part 3. -/ +def masterCertificatePart3 : List String := [ + "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", +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/MasterCertificateData4.lean b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData4.lean new file mode 100644 index 00000000..c1fca57b --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData4.lean @@ -0,0 +1,517 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.LRAT.Format + +/-! # Generated packed master-certificate data -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Packed certificate data part 4. -/ +def masterCertificatePart4 : List String := [ + "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", + "vMJOQkwgLJDgL4KbgmlSa3Jtkqiw6mKPcc+iefIAEPRBsdIystMTI1OUBKUV1rEpUrkiuOK4wriyv0Kf8p4QtE/Qv/D/8C", + "kybVEULkIpMdoygBDVUbHSAtMTI1PEpRXWs0lyuWK5UrlCuTK5IrkSuQK48rjiuNK4wriyuKK4krgANFAoolQ+IL8irxKr", + "YkwCjbJqsnqSeKEZYRvif8JNUkjCqdAfglAYQh6h++KcAj3SWnKKQotCm1Kbgm4SLMKoAoqCaaFQEMLRsdIDEyNTxKUV1r", + "JpYrlSuUK5IrkSuQK48rjiuNK4sriiuBA0YDiyVE4wu3JMEo3CasJ6onixG/J/0k1iSNKp4BAsEj3iX9KQGSKJkiuSb3Jf", + "ooAQxkGx0gMTI1PEpRXWs1mSuYK5crliuVK5QrkyuSK5ErkCuPK44rjSuMK4srggMBRwSYC8UnxydFpCXdJt8m9CrzKrgk", + "jBGmJ6UnlRHzIu8i9SamKKkosCijKaEpjirOIYoi9B/+JokpkyiUKOwnwCm0JqwUAQtdGx0gMTI1PEpRazaaK5krmCuXK5", + "YrlSuUK5MrkiuRK5ArjyuOK40rjCtIBYMDRvUq9Cq5JAECmQvGJ8gnpSXeJuAmjRGnJ6YnlhGUJ/Qi8CL2JsYpxCmqKKco", + "sSiPKs8hiyL/JoophwOWKJ8p7Ce1JqwUAQdSMTk7UVRcBpYrkSuQK8gpxim0IwEKNRsdIDEyPEpRazecK5srmiuZK5grly", + "uWK5UrlCuTK5IrkSuQK48rjisChQNKB+IJgxHJJ8QnwidImBHcJ48l4Sb3KvYq+CaBJYUQjxGPKqIBRAHdHdEqwSWxC68m", + "vymAD+onxSPNIYEqhSiGKJYoiSanFQEMZRgrLThNT1VZa299B5krlCuSK/sl8yfsJ80cARAjICstLjEzNTtFTVVZYGRrH5", + "0rnCuaK5grlyuWK5UrlCuTK5ErpybbI9EkxSaIJZERvCm7Kaoo0yrdIqYmwiayH84frybEJ4cQgyr8KN8hAQo7Gx0gMTU8", + "SlFrK50rmyuaK5krmCuXK5YrlSuUK5IrkSuIA00KS9on+Sr7JoQlmxGeEZIR4yaqJYYRzCfHJ7Qn0yYDkSWJIZohxynMKQ", + "LeEcYmhCoB4SqVDqUhAQl0MTM/Q0dPcnwHmSuYK5YrlSuFKYcplB4BC0QbHSAtMTU8SlFrNqEroCufK54rnSucK5srmiuZ", + "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", +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/MasterCertificateData5.lean b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData5.lean new file mode 100644 index 00000000..81ee692d --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData5.lean @@ -0,0 +1,517 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.LRAT.Format + +/-! # Generated packed master-certificate data -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Packed certificate data part 5. -/ +def masterCertificatePart5 : List String := [ + "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", +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/MasterCertificateData6.lean b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData6.lean new file mode 100644 index 00000000..c8ca04e8 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData6.lean @@ -0,0 +1,517 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.LRAT.Format + +/-! # Generated packed master-certificate data -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Packed certificate data part 6. -/ +def masterCertificatePart6 : List String := [ + "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", + "EKOBUXGy80PEJfbwqJNIg08AX6MpMwiRiqGdct2C3fMgEMMxUXGyEiKy0xUl1rD4w0izSFNIQ0gzTMLPEFiCWeMaExqSWD", + "JYYxgzGuLwEKaRs8Q0tQWWNvewiINIE08gXyGfgZhim8JbUwAQ1TFxsiJyssMTtNUG99IYs0ijSINIc0hjSFNIQ0gTTzBf", + "MZhAH5GbMCsgLZM9szmSitKsUmxTKdGpwvtgy8M/4trTDeMPwu9iPcGdstzC75MgEIahsfKi87PV8MizSKNIQ0gzTSMNQw", + "9AWiLqMutTC6MJEuAQZqGys7PFAkkDSNNIs0ijSJNIg0hzSGNIQ0gzSBGvUFhgEztQIntALbM90zBhC9ML8wDgKvKqgxpz", + "GrMfwFzSy+M68w4SrgMMUqAQooGystMDs8UFNiN5I0kTSQNI80jjSNNIw0izSKNIk0iDSHNIY0hTSENPYF0RQB9hmHAfwZ", + "NLYCKN4x3RTPMIgutQLhMboznSbkL9wzpSzeM5Ea2xDRL5kwmhicMpoygi/6DqczpzGSK5Qn5TCHMbgy/i7yMKofAQliGy", + "stMDs8UFMukzSSNJA0jzSNNIs0ijSJNIg09wXSFAL3GYgB/Rk1twIp3zHeFNAwiS62AuIxniblL90z3zOSGtwQ0i+bGIMv", + "+w6oM6gxkysBmS2dKuEwmzK5MvMw9DDLJQEIahsqLzs9P18MjzSONIg0hzTYMNYw+AWmLqcuuTC+MJAuAQhTGystMDs8UC", + "+VNJM0kjSRNI40jTSMNIs0ijSHNPkFBOAU1BT5GYoB/xk3uQLhMdIwuALkMaAm5y/fM6gs4TOUGt4Q1C+dGIUvqjOlMwKT", + "MJctsTDAM+oBoi/nMPQuijH9MYonAQ0vHiErMTI7PEFDVGRxIZU0lDSTNJE0jzSONI00jDSLNIo0iDTrL+0vuzHUMIka+i", + "2MM7AwsTDKMY4TuQL6BYgM2Q0syiyLMZgnqzGsMYMvARRzFRcYHR4hIiYrLT9BSk9QUmFreiCVNJQ0kzSQNI80jjSNNIw0", + "iTT7GYEa/xeTGpYa1xrWL58YlyugAZ0tqi3mMLMwiS7CLOAyuC+WLY0xgi/3MMQjAQctGyswOzxQOpg0lzSWNJU0lDSTNJ", + "I0kTSQNI80jjSNNIw0izSKNPwFB9cU/BmNAYIaOrwCLuMU1TCOLrsC5DHnMeIz5DPqL+EQlxrXL6AYA4AY2BoBqTGaLbop", + "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", +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/MasterCertificateData7.lean b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData7.lean new file mode 100644 index 00000000..b90c7223 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData7.lean @@ -0,0 +1,517 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.LRAT.Format + +/-! # Generated packed master-certificate data -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Packed certificate data part 7. -/ +def masterCertificatePart7 : List String := [ + "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", + "sjWxNbA1rzWuNa01rDWrNao1WpoHDilRoBuaG6sC2gMG2QOjFM4utS992zK4G7IbgRbXMYEuAvcxwQHlBrwu8C0vrDKuMu", + "stlQeENJ0wgDS7M9grsDPJMoolAQVAFR9GSwezNVubByuUNJM07i4BCmcUKS04S1VdYWMitzW1NbQ1sjWwNa41qzVcnAfb", + "A6cNkzXcA5UFxCqOLfsbyCqPAqgbtTTQM8IvhzKJMtYvuhu3G98xkTG9LZQ0M9EwAQNBFlAntzW0NbI1rzWuNa01XZ0HES", + "xUoxudG64C3QMJ3AOmFLgv0S4D/jGAMv8xyBK6L/0M4DT8Dt00pBiAAd4yuxuELrEwtjOzM/ovAQUuFis4UDy6Nbk1uDW3", + "NbY1tTW0NbM1sjWxNbA1rzWuNa01rDVengcKEi1VpBueG68C3gMBgzPdA6cUgjODNbkvyAbSLskS/Q7NMc8xqTQDLvkxuC", + "81kAX9M/4z4C/+Cv0v8C+PMpAy3DSaLM4vyzKhM98w2B0BBDgWK1AsuzW6Nbg1tjW1NbM1sjWxNV+fBwsTLlalG58bsALf", + "AwKEM94DqBSDM7ovyQbTLv4OLzaqNAHHL6sO3DG1MLobjTH+M6sozDKeLbMq4DC9MwEDKxZQKLw1uTW3NbQ1szWyNbE1YK", + "AHFC9XphugG7EC4AMDhTMM3wOpFIQzhTXULrsvAcoGBTA36i2zNPYt9xsRyC+sDsQtvS2ANAEHJxEfIThjZxe8Nbo1uTW1", + "NbQ1szWyNWGhB5g1mzUPgBz/L4wyjjL+L4AwoTLsLect1jA4AQIWUDa+Nbw1uzW6Nbk1uDW1NbQ1szWyNbE1YqIHFjFZqB", + "uiG7MC4gPhA6sUhzW9L9YuBYYzhzMChTKEMoMyMjkOzRK/L+U0gg37CvobgQ+BMKkYuDDoKegxjTKJLv8vszK2MqAyny0B", + "BjgjK0FLUDu/Nb41vTW8Nbs1ujW5Nbg1tzW2NbU1tDWzNbI1sTVjowcBFzJaqRujG7QC4wPzCY4Bvi+XL+IDvBmELtoriz", + "WYBro02zGtL9ku6TDpMdo0pxmsG4Uz+THFLJkujjLLMpAqgzTlKosw0jO2MqczrzLfIgEHLiMrOT9BUDDANb41vTW8Nbs1", + "ujW5Nbg1tzW2NbU1szWyNWSkBwIzW6obpBu1AuQDwDS/L9Iu4wPcMd4xhS6MNeowui+tG4YzqBnXLeoxiSrXJvYzjDC3Mq", + "wwoDKhMr0sjjLIKAEFSyMrQVASujWzNWWlBwNcpRu2AuUDkAHkA4s1ApkvvhmGLwHgMQEJfShDS1BZY297C2amBwRdrBum", + "G+YD5QOONbUa8CYBBS4jK0FQH8A1vzW8Nbs1ujW5Nbg1tTVnpwcCBRs2Xq0bpxu4AucD5gP3At4rjTXiMb0vyxn0LYw07y", + "2+NAMBCEsVHzk7QEdwEL01vDW6NWioBzjlDMYbwBs/tA6PLjWbLNwwvjMBBCsjQVA9xTXENcM1wjXBNcA1vzW+Nb01vDW7", + "Nbo1uTW4Nbc1aakHBx04YK8bqRu6AukD6AORNY814CuKLgKeBgSGMoUy+QL2MN4xvDTyMNkw+i2zL4szzRmsLuYxuC7RMt", + "Qt1TCaG5kymDKTMJo0wSyjMqwz0y6uIgEJcxEfISMvMzU9IMU1wjXBNb81vjW9Nbs1ujW4NWqqB7gv6jAYoTXqA/4wpDXi", + "Kbsv1zCJHMgbtjPVFo0yljKVMoUsrjHVMd8FAQMjQVAWxTW/Nb41vTVrCR86YrEbqxu8AusD6gOMLgIyoAafBq0vwy/kNA", + "EGSysuOEFQJcY1xTXENcE1wDW/Nb41vTW6NWysBwogO2OsG70C7AMB6wOUNZI11wrmMeQx8jC1G4IyxxvrMe005ivDNMEO", + "7CaYMoElAQU4Ky5BUCDGNcU1wjXBNcA1vzW+Nbs1ba0HCyE8ZLMbrRu+Au0DAuwDzhCTNdgK5zHDLwHRGZIoxDTVK5Evkj", + "QBBC4rQVAQyDXBNcA1vzVurgcMPWW/AgPPEAGGLrYv7zQBBUsrOEFQL8o1yDXHNcY1xDXDNcI1wTXANb01b68HAQ0jPma1", + "G68bwALvAwSQL5oB7gPIGdoKlzWVNeIx+jC4G/cFxjSqAZsw+DSaGc8UnDLvJo804jKKMO4oqjLULAEGPy85QUpQI8o1yD", + "XHNcQ1wzXCNcE1wDVwsAcOJD9nthuwG8EC8AMFkzKyL8w03i7IL+8D9TSYNZ8yoDL/GNYp3ivEMsUyqDABBDgrQVAtzTXK", + "Nck1yDXGNcU1xDXDNcI1wTW/NXGxBwMPJUBosRvCAvED8APcCpk1lzX+MOQx/DC6G5MzAuUM6xqNMp8vyDSdMJ4wlTT9L5", + "E0yiWcMqMyqy4BBDAVHzIEcrIHGdQNAQlwFR8wMztHS3sOzDXINXOzBxrRG94Wmi7RNNU05BuoLLksyTMBBEsrQVAYzjXJ", + "NcI1dLQHEkNruhu0G8UC9AMJBgPzA5o1lS/rMcwvnwG2L/k0mgcBBEAVH0YIzTV1tQcauBavNLoaiy8BCXAVHyArMjt4ex", + "DPNcs1drYH1BudFgRE4RadLtEVzDPfL8wsyDSUCgEEMytBUDHTNdI10TXPNc41zDXLNco1yTXINcc1xTV3twcMCQMGFStG", + "br0btxvIAvcDB5QykzKILvYD8RqfNZ018SvsMYAxmTMgzi/8NLEuohmhMuMw5zKfKaQqlzQBAytBUDDUNdM10jXRNc81zT", + "XMNcs1yjXJNcg1xjV4uAcNFixHb74buBvJAvgD9wOeNQEElDKVMgcKCO8x7THLNIExji6aMyH1Mc8v/TS1LvUG7S7IFOsy", + "yCUBAy5BUCvTNdI10TXQNc41zTXMNcs1yjXJNcc1ebkHDgEXLUi5G8oC+QP7NNoQnDKbMpUR+APzK5EuhC6HMKE1nzXQNP", + "Ex8zHODvkmpjKlMpcwljCyMgEDOEFQPtY11TXUNdM10jXRNdA1zzXONc01zDXLNco1yTXINXq6Bw8CARguSXHAG7obywL6", + "A50ynDKbMvkDojWgNeUK0i/9NPQr0TSmMIcx7TGFMYYB2hTBGIUulzDtJfompzKYMLMy0yWAMp000xngMvQz4TDTM8ciAQ", + "JBUC/VNdQ10zXSNdA1zzXONc01zDXLNck1e7sHGS9KcsEbuxvMAvsD+gOjNaE1EAOeMp0yAgGbDcMv0y+BNfIx8DH1K840", + "pzDnK9AOzCbMMrYwqTKqMt0sAQUjKy44UDzYNdc11jXVNdQ10zXSNdE10DXPNc41zTXMNcs1yjV8vAcBGjBLc8IbvBvNAv", + "wDjAqhM/sDoDPXL6Q1nS72MfQx0i+/FqYb8yvTNIwr9SryLvcyxi+CMvM0lByLLqAr0DK1NNEyoy7BMJcytjLeLKcy9yIB", + "BS0rLjhQPNk12DXXNdY11TXUNdM10jXRNdA1zzXONc01zDXLNX29B6QWAQIbMUx0wxu9G84C/QPeEM8vojP8A6U1ozXoCp", + "Uc9zH1MdMvwBanG/wx2BurMbcuqDK3LYEp5DP1Go0r5jDEMNQ07zKyJs4ytjTCMNgiAQQ4Ky5QKto12DXXNdY10zXSNdE1", + "0DXMNX6+BwMcMk11xBu+G88C/gOjM/0DojOmNaQ16Qr4MdQvwRaoGwEC/DT/NJYc+CuXMNU0tzSqMKgrxRgBAy4rUD7bNd", + "o12TXYNdc11jXVNdQ10zXSNdE10DXPNc41zTV/vwcEHTNOdsUbvxvQAv8DpDP+A6MzpzWlNfox+TH3MdUvwhapGwHbNNQu", + "7S6WHKkyxy+XLtgsuS6FMoA1mjLvMOww/y3MLugywzO4NPUwuTLFMNQypzABBjMXPVBheiDbNdc11TXUNdI10DXONYABwA", + "cFNE/GG8AbgATYG9sboTKQK/8DAaY1nDK2Lv0xzA6qG6Qany/1Me0y9i4BAzgrUDbdNdw12zXaNdk11jXUNdM10jXPNYEB", + "wQcCBh81UHjHG8Eb0gKBBKYzgASlM6k1pzXsCrYGjDHNG/QxrzHXL8QWqxsB2DStMLwBmRyKNeMurDLcLM8t0jK6NL4txy", + "e7MoM09DKAKQEDIytQKd413TXZNdc11jXVNdQ10jXQNYIBwgcBAwcgNlF5whvTAoIEpzOBBKYzqjWoNaMuRvkx9zHiLqYa", + "xS6wMZ8yoS/sMuoy+yrtLfoaAQMnK1A+3zXeNd013DXbNdo12TXYNdc11jXVNdQ10zXSNdE1gwHDBwECBAghN1J6yRvDG9", + "QCgwTVL5suqDOCBKczqzWpNf0rmhxH1jTAMPox+DGnGtwusTGaMKAynDC8MoU0+TL2MvUyHYky1yqrL7Ey4TPbM8UiAQIr", + "UD/gNd813jXdNdw12zXaNdk12DXXNdY11TXUNdM10jWEAcQHCSI4U3vKG8Qb1QKEBKkzgwSoM6w1qjUCAQMFSPsx+TG+Bd", + "c0sDCoGpoumxyJNdsv9C/HFq4bsjH7Kvwatya/Mr00yTCfMOoyxTOyMusz9jD/IAECLlA04TXgNd813jXdNdw12jXZNdg1", + "1zXVNdM1hQHFBwEKIzlUfMsbxRvWAoUEoRGoMqYypzKqM4QEqTOtNas1gDJM5hCHNc0v/yudHNw0sTDMGP0x/zHbL+csrx", + "uwMs4wwCz2MgECOFA/4jXhNeA13zXeNd013DXbNdo12TXYNdc11jXVNdQ1hgHGBwECCyQ6VX3MG8Yb1wKGBKkypzKoMqsz", + "hQSqM6418QqsNZEx3i+7Bp8Lnhz5MdwvsBuMMqwurS6JNaUwgCzdNLIwzRiMKrEywSz3MvAqvzKMLtcy0iIBAVAy4zXiNe", + "E13zXeNdw12zXaNdk11zXVNYcBxwcBAgMMJTuqMqgyqTJWfs0bxxvYAocEhgSvNa01rDOrM0v+MbsG/DGnDd4vsRvULs8v", + "nhyNNekstTKBLPgy+jLCLAEKQhQWICMrLjg8WTfkNeM14jXhNeA13zXeNd013DXbNdo12TXYNdc11jWIAcgHAYcE0w2nHP", + "oH4xW7AoABwQXRG9QbrxaWMZ4cyxv2Mfgx3C/3MKgxlzHuL5kxgwPjG4syX+wwqjDrLfAy3jKQNPYwyjDmM7My2x8BD0IR", + "Fh8nKSs1PT9LTE9qexvkNeI14TXdNds12jWJAckHAt0v3wn+BcIv1RvNNMk0qByXMaswmzDMG44YbMwtxzL+B6gwAQloER", + "8iOENLT2Ii5TXiNd413TXcNds1igHKBwPBNf8FnS/DBYIBjTHENakctTK3MrsrsSvDNPcyijH+MMYsV+UbkzOqMfwHzRvW", + "G5gxAQxiER8jKzk/Qk1PVmog5jXlNeQ14zXiNd813jXdNds1iwHLBwTnL54vpS/CNWLXG74CpTKCFcw00QStMM4wiAHJMu", + "8wzTDzMuYy1CsBDWkpKy01OTs/TU9eYmoV5TXiNd813TWMAcwHBek0sxakFcgwkRjVGzPSBPMziwTDNdMy0TLSMQELUxQW", + "IykrLUNYXmES5jXkNeE14DXfNd41jQHNBwbhL7QWjATWK4s0gzHSMtMy0zEBCkIRHyk1OT0/T2om6jXpNeY15DXiNeE14D", + "XfNd01jgHOBwfqL9wv6jTHL8U1rRzXG9obnTGcMdI0zjTRG7Aw7CulBK0z0S2uMfkyhDOUMvsw/DCKMLgyAQtnFBYgIysu", + "ODxZaTbrNeo16TXoNec15jXlNeQ14zXiNeE14DXfNd413TWPAc8HCKsw+S4HjgTaDYEI6hWHAcICrhzIBdgb2xu2FpIx9T", + "CKM4wzizOdMaUczTHmMugy3QWpMtIb/zH9MeMvwC6pL6AxigPSMuofAQppFBYgIysuODxZN+w16zXqNek16DXnNeY15TXk", + "NeM14jXhNeA13zXeNZAB0AcJCI8E2w2CCOsViAHDAq8cyQXZG9wbtxaTMfYwizONM4wznjGmHM4x3gWqMtMbgDL+MeQvqi", + "+AMKExiwPOM9EzAfcz1DLKMOkfAQpWFBYgIysuODxZN+017DXrNeo16TXoNec15jXlNeQ14zXiNeE14DXfNZEB0QcKCZAE", + "3A2DCOwViQHEAgGwHMoF2hvdG7gWwzK8MpQx9zCMM44zjTOfMeUv3wWrMpk09jPzM9QbgTL/MYwD1DKrL4Ew4THtLu0fAQ", + "lZFBYgIysuODw47jXtNew16zXqNek16DXnNeY15TXkNeM14jXhNeA1kgHSBwuRBN0NhAjtFYoBxQKxHMsF2xveG7kWoDGo", + "HNUbgjKAMuYvgTGyMaMx+C+hMY0D7RuVMvYwAr0yCpUx3TD0M2wB2DGfL9Uz7B8BCCMUFiArLjg8Oe817jXtNew16zXqNe", + "k16DXnNeY15TXkNeM14jXhNZMB0wcMkgTeDYUI7hWLAcYCshzMBdwb3xu6FqExqRzWG4MygTLnL7MxpDH5L6IxjgPuG5Yy", + "9zABlgi/MsAyljEG3jCWNJk0sib6M+oy2THwHwELYhQWIicpKy05Qmoo7zXtNew16TXoNec15jXlNeI1lAHUBw2EM4kzgj", + "O7FpME3w2ZGN0b4BviL4Ax/jCzHOMvojGtHL4y1xuEMrIwtDHvG44c5SrHAs4r2izSMgEJUxQWICsuODxZOPE18DXvNe41", + "7TXsNes16jXpNeg15zXmNeU15DXjNZUB1QcOpC8ClATgDYcI8BXnGLM1tBzOBY0B3hvhG8gCvBa0MOwrozHuNNgbgzL7L7", + "Ux2C2kMeMFrzKaGLcwbM807TKVMdgs0zLTM7Mw1h8BCFkUFiArLjg8JfA17DXrNeU15DWWAdYHDwOVBOENiAjxFegYtDXP", + "BY4B3xviG8kCvRakMdkbhjKEMrYxpTGZMgH/GPktbeEwmxhN+DP5KgEHPBQWICsuOCHyNfA17zXtNek16DXmNZcB1wcQ8h", + "WJCJYE4g2+FuAb4xu2HK0cpTHaG7cxmjIE6RgBxDLDMrUwtDDWMtUyoDABCmkUFiAjKy44WWc39DXzNfI18TXwNe817jXt", + "New16zXqNek16DXnNeY1mAHYBxG0MIIvlwTjDbccigjzFQGQAdEF4RvkG78WijCSK4ArpjGuHNYxtTKzMtsbiDKGMocx7C", + "+JMM0xiDCgNJMD2zLtJ4Az2TObMeYfAQlnFBYgIysuOFk49TX0NfM18jXxNfA17zXuNe017DXrNeo16TXoNec1mQHZBxKY", + "BOQNuByLCPQVApEB0gXiG+UbwBaLMJMrgSunMa8ctjK0MtwbiTKHMogx7S+KMM4xiTCUAwFzxDK7MIYx3TTBJqE08TK0MO", + "YfAQhZFBYgIysuODn2NfU19DXzNfI18TXwNe817jXtNew16zXqNek16DWaAdoHE/UVA5kE5Q25HIwIkgHTBcEWjDDjG+Yb", + "tTKwHLcyqDGKMIkx7i+LMM8x3RuKMogylQOrMQHeMtwyqzS1MMUyiDGBNLww3jTyMpUz5h8BCGcUFiAjKy44Ofc19jX1Nf", + "Q18zXyNfE18DXvNe417TXsNes16jXpNZsB2wcU9hUBBJoE5g26HI0IkwHUBcIWzjLIMscyjTDkG+cbtjKDK5Ur7y+FL7Uw", + "iDG4MqkxizCWA94z3jKMMNAx3huLMoky9jCDM6E0njHqHwEINREjJysxO14Q8zXwNe817jXtNZwB3AcV4CunAecNmge5KJ", + "80pDTZMAEHIxQWICsuODr5Nfg19zX2NfU19DXzNfI18TXwNe817jXtNew16zWdAd0HFpwE6A28HPgVBo8IlQHWBcQWjzDm", + "G+kbujK4MrMc0jGrMY4wjTDxL+AbjTKLMpgDrjEC4TLfMgPKMskyizGKMYQ0vzDVMOE09TIQ7R8BCFMRIycrMzleC/U18j", + "XxNfA17zWeAReXMecrijGcNAELQhEfIysvMzk/UmId+jX5Nfc19jXzNfI18DXvNZ8B3wcY7i+IMPAv7S/WNY8xhzP4DpEI", + "iTG+HLoyzTLOMuws+jL5MtkwAQY4FBYgKy4y+zX5Nfg19zX1NfQ18zXyNfE18DXuNaAB4AcZ+xWSCJ8E6w2/HMcW6RvsG5", + "gB2QW2HK4x4xuQMo4ywDGvMfsbCZIw/C+9MgPyGBejMesw2TSyMBa+MN4yvzCILpYxpjQBCjgRHyMnKC9hY28T/TX8NfY1", + "7zWhAeEHGk/aBa8x2DXxMKMBjDLAHLAxtxzAM58HAQxCER8jJystOTw/T2oh/TX7Nfo1+TX4NfY19TX0NfM18jWiAeIHG/", + "Qv1QKIMOsb7hvwBbwysTHEFOM0qzAXmjHlLZ4r4DKANJkxjTGNMwENaRQWICMoKy4zPFliZzT/Nf41/TX8Nfs1+jX5Nfg1", + "9zX2NfU19DXzNfI18TWjAeMHHI0vvzCiBO4NwhyVCP4VA9YCowfsG+8byhaPMfEv1zLkMbExvBz/Mv0ygTXmG5Ey1C4BiT", + "CyMf4bpjKdMaAx4zKqIAENcREWHyMnMjk9S05jaiL/Nf01/DX5Nfg19jX1NfI1pAHkBx2hAfgvnDHtG/AbsjHnG48yxDHn", + "Ld0v/xvDHNkx8A78A54xiAHlMuMy0jLUMr8wAQ1WFBYgIygrLjM8WWJnNIE2gDb/Nf41/TX8Nfs1+jX5Nfg19zX2NfU19D", + "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", +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/MasterCertificateData8.lean b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData8.lean new file mode 100644 index 00000000..fd98a327 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/MasterCertificateData8.lean @@ -0,0 +1,506 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.LRAT.Format + +/-! # Generated packed master-certificate data -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Packed certificate data part 8. -/ +def masterCertificatePart8 : List String := [ + "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", + "RGSxClOKQ4nTjNA40KxgJxvjKgMoY3/TaLC+g0gjS9MqseAQdnFh8gIyszLqo4qTinOKY4pTijOKI4oTigOJ84njjOA44K", + "xwILL74zojLYDfM3yQWXHpoe8B4IAvs0+jToMrszkTWlMZEeljRH/TXEM9Q23Sq/MIEF6TSpGOUzoi+RNgEIcRYfICMrM1", + "k5qziqOKk4qDinOKY4pTikOKM4ojihOKA4nzieOJ04zwOPCsgCMAwB2Q30N74zvzOjMpgemx7xHpM1kTWVNQnqMs01+jRI", + "ozG9M4QywzOSHrY2/TDgNpA2sjXPAaoYvzS9NJ8tnQjSNLUy6jSqIAEHQRUfITAzSiyqOKk4qDinOKY4pTijOKE4oDifOJ", + "440AOQCskC2g31N/cCmR7tNPA06jTEEM81ngiuHrsZ9zDAMq432TTBHr4Fli+5MkOmNuYx+jLQMr40ojWBL4kwgDUBCV8W", + "HyAjKzNdcTitOKw4qziqOKk4qDinOKY4pTikOKM4ojihOKA4nzjRA5EKygICAw4ywTOlMtsN9jfFMf00/jSVNZM1lzWaHp", + "0e8x6+M78z5zb/MAu4Nrk1zzXWM4kzhjKlNQ2sGMcB2TS2NJYylh3sNPQfAQhdFh8gIyszcTmuOK04rDirOKo4qTioOKc4", + "pjilOKQ4oziiOKE4oDjSA5IKywIDBA8zwjOmMtwN9zf+NP80ljWUNZg1mx6eHvQevzPAMwy5NtA1ijNLyDOHMgHYNsMwrR", + "jIAYAx2jT+MuEq7zTtNPExvTTtHwEHcRYfICMrMyOuOKw4qziqOKk4pzilOKQ40wOTCswCBRA0wzOnMt0N+DeXNZk1nB6f", + "HvUeDdE1TMkzAZYeBIA1wTO6Nq0x2jYBBisWHyAjMyqwOK84rTisOKk4qDimOKU41AOUCs0CETXEM6gy3g35N/YezwUOBp", + "Y1AYM2sh6sHsQy+zCvGKovqjaYNe8ygTXCM9wwvDWvMM4wlx6HBd8xAQd9Fh8gIzNZOrE4sDivOK44rTisOKs4qjipOKg4", + "pzimOKU4pDijONUDlQrOAgESNrgTqBfEM6kyxTPfDfo3nh6hHvc08zT1NPce0AXhL+MvwzL8MMIyD+stuja8Ntk0gS6YNa", + "kx7zKlA4Q2oRGZN902qDWXMbsyvh8BBlkWHyAjMzuyOLE4sDivOK44rTisOKs4qjipOKg4pzimOKU4pDjWA5YKzwICEze5", + "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", + "OM04zDjLOMo4/AO8CvUCASU5Xd8TzxfOG6E4owOeH/AQiA6xNq42xR7IHp41nDWaNYMxpy7/MLwuuDG6NZoz1DGmNac35j", + "PrMuky6zXqNf402je/Ntky+jbMNMEfAQZZFh8gMDM72TjYONc41jjVONQ40zjSONE40DjPOM44zTjMOMs4/QO9CvYCAiYB", + "Ol7gE9AXzxuIA6I4pAOfH/EQiQ6vNukzxh7JHp81nTWbNZQuvjW9NZszmjPeAe4G7DKQMuoy/zTbN6w32jLcM+Yb6jW+Ns", + "00wx8BB0UWHyAwM2c62jjZONg41zjWONU41DjTONI40TjQOM84zjjNOMw4/gO+CvcCAycBAjtf4RPRF9AbiQOcM6M4pQOr", + "Nag1oB+bM+gzig6wNr41xx7KHqA1njWcNdUxpjKxM8EewTbsMtw35DKmN5Qs0DWDG9o0xx8BBmcWHyAwMzvbONo42TjYON", + "c41jjVONQ40zjSONE40DjPOM44zTj/A78K+AIEKAM8YOIT0hfRG4oDpDimA6Ef8xCLDrE2yB7LHqE1nzWdNQGdMwKpNZwz", + "6TO3F8IevzWuA+4ykjLsMt03rjfCNoky7DXoG880xh8BBTAWHyAzM9w42zjZONg41zjWONU41DjSONE40DjPOM44gATACv", + "kCPWEFKaU4pwPjE9MX0huiH/QQjA61NsweojWgNZ41AQTBNb81ly6dM6o16zPnNvUy3jfvMu4ygTXdMus0+i+vAwEINRYf", + "IDNHTFk53TjcONs42jjZONg41zjWONU41DjTONI40TjQOM84gQTBCvoCzzIGKj4BYuQT1BfTG4wEpjiNDsoezR6jNaE1nz", + "XGMrgztjOXLq0uhTWENc0RsDbYA94yhhWfMoUz4DO/NL812QinK4I0iTfcHwEHTBYfIDNHWTreON043DjbONo42TjYONc4", + "1jjVONQ40zjSONE40DiCBMIK+wIHKz8CY+UT1RfUG40EpziODssezh6kNaI1oDWvLpguAa4u0gPOEbE22QOgMuc0hjPhM8", + "w3xR7ANZk0nzOtNcM2jTKKN+81vDPZHwEGWRYfIDNHLN443DjbONo42TjXONU41DjTONI4gwTDCvwCCCxAA2TVG44EqDiP", + "DswepTWjNaE1sC6ZLgHyMoAQqzLwMoE2hTXaA+cw4jPwNdct+DOuNcE1oDMBBkwWHyAzRzvgON843jjdONw42zjaONk42D", + "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", + "TxNJk36zRnU/Q30zbpBoQx9zK8Faw37jOPNtg5uxwBB0c7P0FLT3sakjqPOok6iDq3BfcLsARzcN053znyIMMPgCCDIAq9", + "NVT7FFb2MJo24i/mNuE2zxkBCVkjKS00RUtidB6TOpI6jjqMOos6ijqJOrgF+AuxBHRx3jngOfMgxA+BIIQgC6c14DOkN9", + "svijf+NMMvmjhXCrIxAQY7IC1FTF87lTqUOpM6kjqROpA6jzqOOo06jDqLOoo6iTqIOoc6uQX5C7IEdXLfOeE59CDFD4Ig", + "hSAMC4E1WJw22BNq7jfoN/wa4x/wNIs5qzTXNqc07DTyMro28jf6N74z0CDjNvExszGgOIs3gjWHNdw5xzTZJQEKKy0vO0", + "dMT1ZfcSCVOpM6kDqOOow6iTq6BfoLswR2c+A54jn1IMYPhiANYaw0jDS+Nr02a/0a5B/ZMwuvNYM19DasN641AQtFICw1", + "QUtPXXF7fSCWOpU6kjqOOow6izq7BfsLtAR3dOE54zn2IMcPhCCHIA5svTDyNFrdNv04CqY3gR6nN7E36S/NOeQrAQtFJi", + "g1Oz9BTVJfey2XOpY6lDqTOpI6kDqPOo46jTqLOrwF/Au1BHh14jnkOfcgyA+FIIggD4Q15DNZwTWBNKI3zjnPOVuAFU/C", + "FZ82ghm+NrYfrTIK7DbGOPcxkzOjOAEMIyktLzQ4Q0VLT150Hpg6ljqUOpM6jTqMOr0F/Qu2BHl24znlOfggyQ+JIBDcM9", + "UzizWwOZM5lDnbNqs0vjYFd4MerTIBBUUgLUxfPJo6mTqYOpc6ljqVOpQ6kzqSOpE6kDqPOo46jTqMOr4F/gu3BHp35Dnm", + "Ofkgyg+HIIogEYY1XRChNt0Tb/M37TeBG+gfBdk24DbxBmeROfE0kDTdM7826jSkN8QVDsMz/jCoL4c16Db3N/83+zaCJQ", + "EFOyAtTF88mzqaOpk6mDqXOpY6lTqUOpM6kjqROpA6jzqOOo06vwX/C7gEe3jlOec5+iDLD4ggiyASAV4RojbeE3D0N/g4", + "7jeCG+kf7C/WIIEwBd021DT4Muk2Z8I2wDb4N/03hDT3MbcfuTWILZQ3xBzaON4lAQRfIC1MPZw6mzqaOpk6mDqXOpY6lT", + "qUOpM6kjqROpA6jzqOOsAFgAy5BHx55jnoOfsgzA+JIIwgE18B3TbbNuI28wZpkjSeIME2AhKjNpM53xNx7DT1N/k46h/F", + "M9U03zPGFRCqL4k1uB+yN5Yt6jb5N/w0gyUBBkUgLTtMfTudOpw6mzqaOpk6mDqXOpY6lTqUOpM6kjqROpA6jzrBBYEMug", + "R9euc56Tn8IM0PiiCNIBSJNQFgtTa3NmjhNt825zLoMq80xTb4NJc5sjnHNZYz8DfrH/oyhjjrNu82tjL9Nvo2Z4c15yyP", + "NZM32SUBBkEgLTtMfTSeOp06nDqbOpo6mTqYOpc6lTqUOpM6kjqROpA6wgWCDLsEfnvoOeo5/SDOD4sgjiAVcwECYbY2ac", + "g14jbgNoYV9DcL6TKwNPI4xjazOYMzoDOzN6s3sjKTN4g1/jSkOAEHIyAtNTtMfTqfOp46nTqcOps6mjqZOpg6lzqWOpU6", + "lDqTOpI6kTrDBYMMvAR/fOk56zn+IM8PjCCPIBYCAYg0A2L4N/w4jxPyN4Yb7R/HNrk2XaA5nzO9NZE14TbZIMgWqjjpMu", + "oykDeUN7MyiR6sN4E28SUBBjUgLTtMfTugOp86njqdOpw6mzqaOpk6mDqXOpY6lTqUOpM6kjrEBYQMvQSAAX3qOew5/yDQ", + "D40gkCAXiTQDBGPINrg2ujZr5DbiNuoy6zIC+Tf9OPM37h+hOaAz2iDJFpU3Aec5FdI06iy4OIoetjeCNt8lAQV9IC07TC", + "egOp46nTqcOpo6lzqWOpU6kzrFBYUMvgSBAX7rOe05gCHRD44gkSAYBWS5Nrs2bOU24zazNAQBmzm2Ocs1mjP+OIQx7zby", + "LwEFQSAtO0wzoTqgOp46nTqcOps6mjqZOpg6lzqWOpU6lDrGBYYMvwSCAX/sOe45gSHSD48gkiAZdwEGZck2pCDHNro2uD", + "TEN+Y25DaKFf4z5jnZOdQ0nRUPxyvOOLwy9jiHM5Q1rzcBBUUgLTtMPKM6ojqhOqA6nzqeOp06nDqbOpo6mTqYOpc6ljqV", + "OscFhwzABIMBgAHtOe85giHTD5AgkyAajzUBAgdm/DeTE/Y3ihvxH8o2yDa9Nrk0jDSfOeU23SD6NArqOdU0bcU1mTexL6", + "U4gDfkNPM2iDjlONElAQdZICMtO0x1OqQ6ozqiOqE6oDqfOp46nTqcOps6mjqZOpg6lzqWOsgFiAzBBIQBgQHuOfA5gyHU", + "D5EglCAbAQMCCI01Z/84yzamIMk2/TeBOZQT8h++NmKNNKA5ljXCNeY23iC3NbE3oDjzNt4v0DiCN5g26iUBBnUgIy07TB", + "SlOqQ6nzqYOskFiQyFAYIB7znxOYQhAQkEA48eyjb+N7kygwEBBmIgLTtMdTumOqU6pDqjOqI6oTqgOp86njqdOpw6mzqa", + "Opk6mDrKBYoMwwSGAYMB8DnyOYUh1g+TIJYgHQMFBAppjzWBOc02qCDLNv83gzmWE/QfwDa8NI80ojnoNuAgAe05uze9N5", + "o3zxyiOJA1mjb2NvU20SUBBlkgLTtMdTunOqY6pTqkOqM6ojqhOqA6nzqeOp06nDqbOpo6mTrLBYsMxASHAYQB8TnzOYYh", + "1w+UIJcgHpA1BAYFC2qCOc42qSDMNoA4hDmXE/UfwTa9NJA0oznpNuEgA+45mzcBwDVrvTe0HaM4mzb2NtAlAQV1IC07TD", + "yoOqc6pjqlOqQ6ozqiOqE6oDqfOp46nTqcOps6mjrMBYwMxQSIAYUB8jn0OYch2A+VIJggH5E1BQcGDGuDOc82qiDNNoE4", + "hTmYE/Yfwja+NJE0pDnqNuIgAYYB+DaSHpw2pDi2Mrwy7zm9N8E1qjjVJQEFYiAtO0w8qTqoOqc6pjqlOqQ6ozqiOqE6oD", + "qfOp46nTqcOps6zQWNDMYEiQGGAfM59TmIIdkPliCZICANbAYBBwjBNsM2hDmCOIY5/Df3H842dOs24jSQOIY4jDHjINA2", + "kjSgN6E3kzWvOIs2kx69Mrcy8DnVJQEEOyAtTD2qOqk6qDqnOqY6pTqkOqM6ojqhOqA6nzqeOp06nDrOBY4MxwSKAYcB9D", + "n2OYkh2g+XIJogIQ5twjbENnXuNuw2BwIIgziHOf03+B/jNAnPNpE4hziNMeQgAZw1wzWnNvE5lB63HZ43jDasOKozpDnU", + "JQEFIyAtRUw8qzqqOqk6qDqnOqY6pTqkOqM6ojqhOqA6nzqeOp06zwWPDMgEiwGIAfU59zmKIdsPmCCbICIBD5c1buw26j", + "bxNoIHeMM2xTbuM4I1oTStINA2+R/CMsAyzTeVHro31zi7N5MVwTmHNLU3wS+tOIo3jTaZJQEERSAtTD2sOqs6qjqpOqg6", + "pzqmOqU6pDqjOqI6oTqgOp86njrQBZAMyQSMAYkB9jn4OYsh3A+ZIJwgI5g1AhBv7TbrNvI2gwd5xDbGNoM1ojSuINE2Ad", + "YViDSnOb05/DS2N843+h+QMfw2iTiROPs2+i/DN9g4xDiGJQEEUyAtTD2tOqw6qzqqOqk6qDqnOqY6pTqkOqM6ojqhOqA6", + "nzrRBZEMygSNAYoB9zn5OYwh3Q+aIJ0gJAMRAXDuNuw28zaEB3rFNsc2ozSvINI2a9cViTSoOb45/TTPN60zijn7H6I35j", + "SKMf02jzj8Nuo4qjbJH4UlAQMtIEw+rjqtOqw6qzqqOqk6qDqnOqY6pTqkOqM6ojqhOqA60gWSDMsEjgGLAfg5+jmNId4P", + "myCeICVxBO827Tb0NoUHe6Q0sCDTNhLGNsg2AgGYHmzYFcU3xDeKNKk5vzn+NNA3rjPaOIs5/B+jN5835zSqOLA4hSUBBH", + "UgO0w9rzquOq06rDqrOqo6qTqoOqc6pjqlOqQ6ozqiOqE60wWTDMwEjwGMAfk5+zmOId8PnCCfICaYNXIB3TbZNto2mDS+", + "G8E06jXtNvE2lxWIOIQBepA0xzasHuU52RWZGcEz7DSDN+UwjDe9MoQzqji8N8s4qDf5JgEDOyBMPrA6rzquOq06rDqrOq", + "o6qTqoOqc6pjqlOqQ6ozqiOtQFlAzNBJABjQH6Ofw5jyHgD50goCAncwLeNto22zaZNL8bwjTrNe428jaYFYk4hQG3NJE0", + "yDbmOdoVmhnCM+00hDcBrR7YMOYwjTe+Mpg4rja7OK4zqDf5JgEDcSBMN7E6sDqvOq46rDqrOqo6qDqnOqY6pTqkOqM61Q", + "WVDM4EkQGOAfs5/TmQIeEPniChICgB8jbwNvc2iAcD2zbcNvwy+zLXMMk27DWZFYo4xzmBNRqmN5s1kTW3OPss3TibHsky", + "kDfbL74d2xUBAkwgFrI6sTqrOqQ61gWWDM8EkgGPAfw5/jmRIeIPnyCiIAGFOIcBiDjcNds1yjYBBlQgLTtLTjuzOrI6sT", + "qwOq86rjqtOqw6qzqqOqk6qDqnOqY6pTrXBZcM0ASTAZAB/Tn/OZIh4w+gIKMgKnYByzbONtQR/jP/M2rGNMg03DWPOYY5", + "2Tb1NpsVyDnhM5gzjDXAN8k3mDioN5o4ySyIMZ014TiHN+U0giYBBUEgT119IbM6sjqxOq86qDrYBZgM0QSUAZEB/jmAOp", + "Mh5A+hIKQgK4kBdwJr7jXVEfU2+DbDG941nBXJOZU06jneFewyAQVLIC07Tjy1OrQ6szqyOrE6sDqvOq46rTqsOqs6qjqp", + "Oqg6pzrZBZkM0gSVAZIB/zmBOpQh5Q+iIKUgLHgDzTbQNmzWEYA0yDSBNMo03jXbNso5kTmIOfc2nRXjM441ApY1szOaM8", + "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", + "F7Eto60zrSOv8Fvwz4BLsBuAGlOqc6uiGLEMggUgiRMOg3wjMBBmQ5PU1PYhHbOtY6gAbADPkEvAG5AaY6qDq7IYwQzCAJ", + "rAHlOOc49TEBBVgraHF7Ctk6gQbBDL0BugGpOgqrN7szsTcBByMsLjk7S0wp3TrcOto62TrYOtc61jrVOtQ60jrROtA6gg", + "bCDPsEvgG7Aag6qjq9IY4QC58BrgGjMwqJN6wgzhOIN/s28DPwNKA3+TncMNMwgjO7OdYyjDkBB0srNTtNXX0t3jrdOtw6", + "2zrZOtg61zrWOtU61DrROoMGwwz8BL8BvAGpOqs6viGPEMwgVgygAa8ByDT0NKs0qjSAErs5gzjvOeY0/DYKCdQ3yTW/Ne", + "U4gzDkFYQ6mjMBBkorO01dfSjgOt863TrcOts62TrUOtI6hAbEDP0EwAG9Aao6rDq/IZAQzSDQIFcNoQGwAZ43rSDJH5MB", + "8jT9No82Ca048DlVqi3BNPY30ziyN7AxAQkuLUpNXWRxdHsk4DrcOts62jrZOtc61TrTOoUGxQz+BMEBvgGrOq06wCGREF", + "gOogH+Nq4gpTfKH5gB+jMG9zfmFfg3vzO+OPY14zhR2y8BBX0uS0xdMeE64DrfOt463TrbOto62TrXOtY61DqGBsYM/wTC", + "Ab8BrDquOsEhkhDPINIgWQ+jAf82DrAg0hOVAaE3pDf4NPEbyzSGOPk5BFfnFYc6nzW/OYQ2zzX4N4M22DfUMAEDfTxdF+", + "I64DqHBscMgAXDAcABrTqvOsIhkxDQIFoQD5oBugeYBwOEEoc4+DkEAQZFKy5LTF075DrjOuI64TrgOt863jrdOtw62zra", + "Otk62DrXOtY6iAbIDIEFxAHBAa46sDrDIZQQ0SDUIFsRpQG0AdA1AoE3ELIg1BOON+Yg+jTaNIg4ozf1Ofo5uzX2Mwu0NQ", + "ezAZow/DjpFYAgwzfCM8k44TbfJwEFIy48S1085TrkOuM64jrhOuA63zreOt063DrbOto62TrYOtc6iQbJDIIFxQHCAa86", + "sTrEIZUQ0iDVIFwSpgG1ARECkTeCN4YSsTSwNPo0lTSUMIk4zznBOas3pzf1Ofo5vjXaN8Y1qjObMPA47jjyN8gtwji4N9", + "Q39ycBBSsuS0xdPOY65TrkOuM64jrhOuA63zreOt063DrbOto62TrYOooGygyDBcYBwwGwOrI6xSGWENMg1iBdE6cBtgES", + "tCDWE4M3AsM5ozUEkDfoIPw0ijilN/c5/DmfNfgztjUNCds3oQmAMsU1giDIOLk34zYL4CcBBC48S10g5jrlOuQ64TreOt", + "063DraOosGywyEBccBxAGxOrM6xiGXENQgXhQTBJM3iBL8NIs49zn8OQKNOuwVojMBBUUuS0xdPOg65zrmOuU65DrjOuI6", + "4TrgOt863jrdOtw62zraOowGzAyFBcgBxQGyOrQ6xyGYENUg2CBfFakBuAHUNYU3AgG2INgTrjeqN9E0+jT3G5I3jDj/Of", + "ozDo46mjW/Ne0VvgPeN5Edpzn+N+MtxTi2N/018icBA0s8XTToOuc65jrlOuQ64zriOuA63jrdOtw6jQbNDIYFyQHGAbM6", + "tTrIIZkQ1iDZIGAWqgG5ARUGlTe1NLQ0ihL+NMU5jTivN6s3+Tn+OcI1EN43yjUC8DbTHpk0EeY2zjjQOMExAQQuS0xdPe", + "o66TroOuc65jrlOuQ64zriOuE64DrfOt463TrcOo4GzgyHBcoBxwG0OrY6ySGaENcg2iBhF6sBugGHNwG4INoTBLA3rDf5", + "G9M0/DSOOIE6lDcCxznYMc0xzDjHOOIy/DO9NxC4N5A6hDLIMvU45zbjN/MnAQRZPF1iPes66jrpOug65zrmOuU65DrjOu", + "I64TrgOt863jrdOo8GzwyIBcsByAG1Orc6yiGbENgg2yBiGKwBuwEXCAKXN+0gqTesN7ggrzfUH+E0jzj7OYA6zDUSxDXg", + "N/Q49jgK1zXNNvI2FMw0yDjQOII42jeAJgEGRStLTF19O+w66zrqOuk66DrnOuY65TrkOuM64jrhOuA63zreOpAG0AyJBc", + "wByQG2Org6yyGcENkg3CBjGa0BvAHYNQIDuiDcE5s28za3Abk4qzf9OYI6uQEVtzO8NfY3YbYzti2COJg51h7fOMAwlTq+", + "N+kzwycBA2I8XT7tOuw66zrqOuk66DrnOuY65TrkOuM64jrhOuA63zqRBtEMigXNAcoBtzq5OswhnRDaIN0gZBquAb0BGQ", + "oEmTfvIKs3rje6ILE31h/jNJE4/TmCOhTGNfg49jgM9DYWzjSWGIQ4gjjiN9k1Ao85wDfcN4QmAQUrS0xdfTzuOu067Drr", + "Ouo66TroOuc65jrlOuQ64zriOuE64DqSBtIMiwXOAcsBuDq6Os0hnhDbIN4gZRuvAb4BBAu8IN4TnTb1NgLLOas1uQGtN/", + "85hDq7Aac1F741lzqqGrs4zDMRuTPjN9g19DiKIKs5hDi0JwEDaTxdPu867jrtOuw66zrqOuk66DrnOuY65TrkOuM64jrh", + "OpMG0wyMBc8BzAG5Ors6ziGfENwg3yBmHLABvwEMBhubN/EgrTewN7wgszflNJM4/zmEOs81yDUOGNA0Aoc52B/2NpgY5D", + "fbNdA3zje2K4U42R7RNoImAQNTPF0+8DrvOu467TrsOus66jrpOug65zrmOuU65DrjOuI6lAbUDI0F0AHNAbo6vDrPIaAQ", + "3SDgIGcdsQHAAQ0HARycN/IgrjexN70gtDfmNKA0lDgTgDqFOtE1rTkXyTXlN/k48jgP3DXtNtE0xznVONc49zaGJgECPF", + "0/8TrwOu867jrtOuw66zrqOuk66DrnOuY65TrkOuM6lQbVDI4F0QHOAbs6vTrQIaEQ3iDhIGgesgHBAR0O8yCVOAECCK83", + "sje+ILU3FJ035zSBOoY6GPo48zgWhziGNso1zjjPM9I15jfdNcg5EPg2nTmFJgEHWStFS0xdYjryOvE68DrvOu467TrsOu", + "s66jrpOug65zrmOuU65DqWBtYMjwXSAc8BvDq+OtEhohDfIOIgaR+zAcIBAQQI3jXAIOITnDf0IKE2+TaINeg0sTeDOog6", + "G840GcI1+zeHOIk4+zj9OK851DbPOPUlAQZiK0VLTF078zryOvE68DrvOu467TrsOus66jrpOug65zrmOuU6lwbXDJAF0w", + "HQAb06vzrSIaMQ4CDjIGogtAHDAQnfNR/BIOMTBaI2+jadN/UgiTXpNLI3hDqJOhzPNBrDNfw3ijj8OP44AZU5xjeIOOI3", + "9yUBBlMrRUtMXTv0OvM68jrxOvA67zruOu067DrrOuo66TroOuc65jqYBtgMkQXUAdEBvjrAOtMhpBDhIOQgayG1AcQBAw", + "YK4DXCIOQTnjf2IKM2+zaKNaQ0hTqKOrM30DQbxDX9NwHxNtk46jS5ARfbOJY5jDn5JQEGaStFS0xdO/U69DrzOvI68Trw", + "Ou867jrtOuw66zrqOuk66DrnOpkG2QySBdUB0gG/OsE61CGlEOIg5SBsIrYBxQEEAQcL4TXDIOUTnzf3IKQ2/DaLNYY6iz", + "rfHrQ30TQcxTX+N9c2HqE50jjaOIw4pzWKNvYlAQVFK0tMXTz2OvU69DrzOvI68TrwOu867jrtOuw66zrqOuk66DqaBtoM", + "kwXWAdMBwDrCOtUhphDjIOYgbSO3AcYB4jUFCAzEIOYToDf4IKU2/TaMNYc6jDq1N9I0HcY1H/83Ao044B6MOKI5qDUByD", + "f4OIs2+CUBBCtLTF099zr2OvU69DrzOvI68TrwOu867jrtOuw66zrqOuk6mwbbDJQF1wHUAcE6wzrWIacQ5CDnIG4kuAHH", + "AQ0GxSDnE/42AdQ5CaE3jTW2NyCmNog6jTrTNMc1tDX5ILA1Huw31jXJN8o32TiyCfQ2oznyJeg3AQQjS0xdPfg69zr2Ov", + "U69DrzOvI68TrwOu867jrtOuw66zrqOpwG3AyVBdgB1QHCOsQ61yGoEOUg6CBvJbkByAEBDgfGIOgTvje6N/824TSHHIo1", + "nDiiN4861DSoNOIe6jWoA9U5tDqnMIM5hTiZNu43gTmtOdo21Tj6JgEFYkVLTF08+Tr4Ovc69jr1OvQ68zryOvE68DrvOu", + "467TrsOus6nQbdDJYF2QHWAcM6xTrYIakQ5iDpIHAmugHJAQjlNccg6RMCDwGAN783uzeQOOI0iByLNYcznTijN5A61TSj", + "OvYz/zjWN+I10THeOMw3hDnoJrs5AQRFS0xdPfo6+Tr4Ovc69jr1OvQ68zryOvE68DrvOu467TrsOp4G3gyXBdoB1wHEOs", + "Y62SGqEOcg6iBxJ7sBygHmNQMQAgnIIOoTwDe8N4E34zSJHIw1njikN5E61jSkOvczAZw2/DisNdc34zXwN9IxzTffOPc2", + "6CYBA0xLXT77Ovo6+Tr4Ovc69jr1OvQ68zryOvE68DrvOu467TqfBt8MmAXbAdgBxTrHOtohqxDoIOsgcii8AcsBJ8kg6x", + "MEwTe9N+Q0ihyNNZ84kjoRAwGCN6U32DnXNN4xzTfpMd04zjelOvgz2DjIMJI47zenOZ0w6CYBA2RLXT78Ovs6+jr5Ovg6", + "9zr2OvU69DrzOvI68TrwOu867jqgBuAMmQXcAdkBxjrIOtshrBDpIOwgcym9AcwBCwGdEo81xzTINKA4uzfCN+Y52DmNOp", + "I6jTWRNfY0zDWZNyUg8TfbNeU13jj5NuYeqDn0L843/jipOr0nAQMoS10+/Tr8Ovs6+jr5Ovg69zr2OvU69DrzOvI68Trw", + "Ou86oQbhDJoF3QHaAcc6yTrcIa0Q6iDtIHQqvgHNAQEMAuc1nhKQNcg0yTShOLw3wzfnOdk5jjqTOo41kjX3NIQ4zTWaNy", + "amOt4z2jfdNSDPN4M5ujmTONMnAQJLXT/+Ov06/Dr7Ovo6+Tr4Ovc69jr1OvQ68zryOvE68DqiBuIMmwXeAdsByDrKOt0h", + "rhDrIO4gdSu/Ac4BDQIDkTW9N8Q3jzWTNQHoNZ8SyTTKNNwzojjoOdo5+DSbNyePOpQ6qzq6GiGEOYU4zjXfN903uzmUOM", + "AnAQJFXTf+Ov06/Dr7Ovo6+Dr3OvY69TrzOvE6owbjDJwF3wHcAck6yzreIa8Q7CDvIHYswAHPAQEOvTfAN8M3lTWOHOg0", + "1DaWOus1zCDmG9Y5+TScNyjgNKg64DPNNfwz3DeNM5Y4lTihNqA29TcBAV1AgDv/Ov46/Tr8Ovs6+jr5Ovg69zr2OvU69D", + "rzOvI6pAbkDJ0F4AHdAco6zDrfIbAQ7SDwIHctwQHQAQECvjfBN8Q3D5I1ljXpOd452znaOY8c6TSwNfo01TadN5c6KaEy", + "qTLhNKk6I4I5hjnSN+EzkBf8OP02+DfSJwEBTBaAO/w6+zr1OvQ6pQblDJ4F4QHeAcs6zTrgIbEQAS2sN6Y3zgGXNZM1wz", + "cBATwH/Dr1OgIBrzeoN7kBAQFLF4I7/jr9Ovc69jqnBucMoAXjAeABzTrPOuIhsxADAgGWNcI3yTeUNaw3mDUBABeDO/86", + "/jr4Ovc6qAboDKEF5AHhAc460DrjIbQQBAIBwjfFN8g3ljWaNa03", +] + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/MasterCertificateManifest.lean b/LeanPool/Erdos97ConvexOctagon/MasterCertificateManifest.lean new file mode 100644 index 00000000..efb416e5 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/MasterCertificateManifest.lean @@ -0,0 +1,87 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.LRAT.Format + +/-! # Generated master-certificate manifest -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Packed certificate format version. -/ +def masterCertificateFormatVersion : ℕ := 1 + +/-- Number of initial clauses. -/ +def masterCertificateInitialClauses : ℕ := 3263 + +/-- Number of retained LRAT additions. -/ +def masterCertificateAdditions : ℕ := 4294 + +/-- Number of omitted LRAT deletion records. -/ +def masterCertificateDeletions : ℕ := 3145 + +/-- Total number of actions in the generated LRAT text. -/ +def masterCertificateActions : ℕ := 7439 + +/-- Number of packed bytes. -/ +def masterCertificatePackedBytes : ℕ := 316443 + +/-- Number of base64 characters. -/ +def masterCertificateEncodedCharacters : ℕ := 421924 + +/-- Number of generated data modules. -/ +def masterCertificateDataModules : ℕ := 9 + +/-- Number of sequential proof-stage modules. -/ +def masterCertificateStageModules : ℕ := 3 + +/-- Maximum retained additions reconstructed in one proof stage. -/ +def masterCertificateMaximumAdditionsPerStage : ℕ := 1432 + +/-- Retained additions reconstructed by each sequential proof stage. -/ +def masterCertificateStageAdditionCounts : List ℕ := + [1432, 1432, 1430] + +/-- Zero-based addition boundaries of the sequential proof stages. -/ +def masterCertificateStageBoundaries : List ℕ := + [0, 1432] ++ + [2864, 4294] + +/-- Maximum measured bytes used by one packed natural number. -/ +def masterCertificateMaximumVarintBytes : ℕ := 2 + +/-- Decoder byte bound for one packed natural number. -/ +def masterCertificateVarintByteBound : ℕ := 16 + +/-- Maximum string literals emitted in one generated data part. -/ +def masterCertificateMaximumStringsPerPart : ℕ := 500 + +/-- Maximum measured compiled-expression steps used by one generated data part. -/ +def masterCertificateMaximumStringListExpressionSteps : ℕ := 616 + +/-- Structural fuel used to decode one generated string-list part. -/ +def masterCertificateStringListFuel : ℕ := 640 + +/-- SHA-256 of the generated DIMACS formula. -/ +def masterCertificateCnfSha256 : String := + "08c463f6ab9db9cc6925f59fe09a5db880c0b8e4acbecb36258b2e92572c3ae4" + +/-- SHA-256 of the normalized LRAT text. -/ +def masterCertificateLratSha256 : String := + "e793eacb1b67901daad1a61d11e9c6f20ccc7ad832b67d16fe7550c1ea292e83" + +/-- SHA-256 of the packed certificate bytes. -/ +def masterCertificatePackedSha256 : String := + "55a6fad508976f2ccb1a0ee412ca941564df743a4d6cf4552be1bd3c3360ccae" + +/-- Pinned CaDiCaL source commit. -/ +def masterCertificateCadicalCommit : String := + "c60730422e758ef1cebe7aeddf2dda31c996bf04" + +/-- Pinned drat-trim source commit. -/ +def masterCertificateDratTrimCommit : String := + "2e3b2dc0ecf938addbd779d42877b6ed69d9a985" + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/MasterCertificateStage00.lean b/LeanPool/Erdos97ConvexOctagon/MasterCertificateStage00.lean new file mode 100644 index 00000000..1a164f18 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/MasterCertificateStage00.lean @@ -0,0 +1,41 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.LRAT.Elab +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData0 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData1 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData2 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData3 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData4 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData5 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData6 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData7 +import LeanPool.Erdos97ConvexOctagon.MasterCertificateData8 + +/-! # Master-certificate proof stage 0 -/ + +namespace Erdos97Octagon.RawIncidence + +master_lrat_stage + initial_clauses 3263 + additions 4294 + stage_start 0 + stage_stop 1432 + clause_prefix masterCertificateClause + final_theorem masterFormula_unsatisfiable + data_parts + masterCertificatePart0 + masterCertificatePart1 + masterCertificatePart2 + masterCertificatePart3 + masterCertificatePart4 + masterCertificatePart5 + masterCertificatePart6 + masterCertificatePart7 + masterCertificatePart8 + + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/MasterCertificateStage01.lean b/LeanPool/Erdos97ConvexOctagon/MasterCertificateStage01.lean new file mode 100644 index 00000000..2e8a48dc --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/MasterCertificateStage01.lean @@ -0,0 +1,32 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.MasterCertificateStage00 + +/-! # Master-certificate proof stage 1 -/ + +namespace Erdos97Octagon.RawIncidence + +master_lrat_stage + initial_clauses 3263 + additions 4294 + stage_start 1432 + stage_stop 2864 + clause_prefix masterCertificateClause + final_theorem masterFormula_unsatisfiable + data_parts + masterCertificatePart0 + masterCertificatePart1 + masterCertificatePart2 + masterCertificatePart3 + masterCertificatePart4 + masterCertificatePart5 + masterCertificatePart6 + masterCertificatePart7 + masterCertificatePart8 + + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/MasterCertificateStage02.lean b/LeanPool/Erdos97ConvexOctagon/MasterCertificateStage02.lean new file mode 100644 index 00000000..bdf0ae21 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/MasterCertificateStage02.lean @@ -0,0 +1,32 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.MasterCertificateStage01 + +/-! # Master-certificate proof stage 2 -/ + +namespace Erdos97Octagon.RawIncidence + +master_lrat_stage + initial_clauses 3263 + additions 4294 + stage_start 2864 + stage_stop 4294 + clause_prefix masterCertificateClause + final_theorem masterFormula_unsatisfiable + data_parts + masterCertificatePart0 + masterCertificatePart1 + masterCertificatePart2 + masterCertificatePart3 + masterCertificatePart4 + masterCertificatePart5 + masterCertificatePart6 + masterCertificatePart7 + masterCertificatePart8 + + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/MasterFormula.lean b/LeanPool/Erdos97ConvexOctagon/MasterFormula.lean new file mode 100644 index 00000000..52a8f2db --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/MasterFormula.lean @@ -0,0 +1,179 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.MasterFormulaData + +/-! +# Master coverage formula + +The master formula combines the shared semantic clauses used by the certificate +with the needed noncanonical first-row exclusions. It has 64 variables and 3,263 clauses. +-/ + +namespace Erdos97Octagon.RawIncidence + +open LRAT + +/-- Shared semantic-clause references retained in the unsatisfiable core. -/ +def masterReferences : List ℕ := + (List.range 20659).filter fun reference => + masterReferenceUsedB reference && (tagOfRef 0 0 reference).validB + +/-- The seven canonical first rows viewed as finite sets. -/ +def canonicalRows : List (Finset Vertex) := + List.ofFn fun orbit : Fin 7 => packedRow (canonicalRowMask orbit) + +/-- Noncanonical first-row masks retained in the unsatisfiable core. -/ +def masterExcludedRowMasks : List ℕ := + (List.range 256).filter fun mask => + masterExcludedMaskUsedB mask && + decide (packedRow (UInt64.ofNat mask) ∉ canonicalRows) + +/-- First rows excluded by the committed unsatisfiable core. -/ +def excludedRows : List (Finset Vertex) := + masterExcludedRowMasks.map fun mask => packedRow (UInt64.ofNat mask) + +/-- A clause which is false precisely when row one equals `row`. -/ +def rowExclusionClause (row : Finset Vertex) : Clause := + List.ofFn fun target : Vertex => + if target ∈ row then + .negative (varIndex 1 target) + else + .positive (varIndex 1 target) + +/-- Retained shared clauses. -/ +def masterBaseFormula : Formula := + masterReferences.map fun reference => (tagOfRef 0 0 reference).toClause + +/-- Retained noncanonical first-row exclusion clauses. -/ +def canonicalRowFormula : Formula := + excludedRows.map rowExclusionClause + +/-- The single formula checked by the committed LRAT certificate. -/ +def masterFormula : Formula := + masterBaseFormula ++ canonicalRowFormula + +/-- A valid in-range shared reference gives its clause directly from the master formula. -/ +theorem masterBaseClause_proves + (reference : ℕ) (hrange : decide (reference < 20659) = true) + (hused : masterReferenceUsedB reference = true) + (hvalid : (tagOfRef 0 0 reference).validB = true) + (clause : Clause) (hclause : clause = (tagOfRef 0 0 reference).toClause) : + masterFormula.Proves clause := by + subst clause + intro valuation hsatisfies + apply hsatisfies.property + rw [masterFormula, List.mem_append, masterBaseFormula, List.mem_map] + apply Or.inl + refine ⟨reference, ?_, rfl⟩ + rw [masterReferences, List.mem_filter] + exact ⟨List.mem_range.mpr (of_decide_eq_true hrange), + by simpa only [Bool.and_eq_true] using And.intro hused hvalid⟩ + +/-- A noncanonical in-range row mask gives its exclusion clause from the master formula. -/ +theorem canonicalRowClause_proves + (mask : ℕ) (hrange : decide (mask < 256) = true) + (hused : masterExcludedMaskUsedB mask = true) + (hnoncanonical : + decide (packedRow (UInt64.ofNat mask) ∉ canonicalRows) = true) + (clause : Clause) + (hclause : clause = rowExclusionClause (packedRow (UInt64.ofNat mask))) : + masterFormula.Proves clause := by + subst clause + intro valuation hsatisfies + apply hsatisfies.property + rw [masterFormula, List.mem_append, canonicalRowFormula, List.mem_map] + apply Or.inr + refine ⟨packedRow (UInt64.ofNat mask), ?_, rfl⟩ + rw [excludedRows, List.mem_map] + refine ⟨mask, ?_, rfl⟩ + rw [masterExcludedRowMasks, List.mem_filter] + exact ⟨List.mem_range.mpr (of_decide_eq_true hrange), + by simpa only [Bool.and_eq_true] using And.intro hused hnoncanonical⟩ + +private theorem rowExclusionClause_satisfied + (Q : OctagonIncidence) (row : Finset Vertex) + (hne : Q.targets 1 ≠ row) : + (valuation Q.targets).satisfies (rowExclusionClause row) := by + apply LRAT.Valuation.satisfiesOfNotAllFalsified + intro hall + apply hne + ext target + rw [List.forall_iff_forall_mem] at hall + have hmember : + (if target ∈ row then + LRAT.Literal.negative (varIndex 1 target) + else + LRAT.Literal.positive (varIndex 1 target)) ∈ rowExclusionClause row := by + rw [rowExclusionClause, List.mem_ofFn] + exact ⟨target, rfl⟩ + by_cases htarget : target ∈ row + · have hfalsified := hall _ hmember + simpa [htarget, LRAT.Valuation.falsifies, valuation_variable] using hfalsified + · have hfalsified := hall _ hmember + simpa [htarget, LRAT.Valuation.falsifies, valuation_variable] using hfalsified + +private theorem masterBaseFormula_satisfied + {p : Vertex → Plane} {Q : OctagonIncidence} + (hC : ConvexIndependent ℝ p) (hR : Realises p Q) + (hN : Q.Normalized) (hSparse : Q.PairSparse) (hBalanced : Q.Balanced) : + (valuation Q.targets).SatisfiesFormula masterBaseFormula := by + constructor + intro clause hclause + rw [masterBaseFormula, List.mem_map] at hclause + obtain ⟨reference, hreference, rfl⟩ := hclause + have hparts := List.mem_filter.mp hreference + have hchecks : masterReferenceUsedB reference = true ∧ + (tagOfRef 0 0 reference).validB = true := by + simpa only [Bool.and_eq_true] using hparts.2 + exact (tagOfRef 0 0 reference).satisfies hC hR hN hSparse hBalanced + ((tagOfRef 0 0 reference).valid_of_validB hchecks.2) + (tagOfRef_baseBranchValid Q (List.mem_range.mp hparts.1)) + +/-- The canonical-row clauses are satisfied for one selected canonical orbit. -/ +theorem canonicalRowFormula_satisfied + (Q : OctagonIncidence) (orbit : Fin 7) + (hrow : Q.targets 1 = packedRow (canonicalRowMask orbit)) : + (valuation Q.targets).SatisfiesFormula canonicalRowFormula := by + constructor + intro clause hclause + rw [canonicalRowFormula, List.mem_map] at hclause + obtain ⟨row, hrowExcluded, rfl⟩ := hclause + rw [excludedRows, List.mem_map] at hrowExcluded + obtain ⟨mask, hmask, rfl⟩ := hrowExcluded + apply rowExclusionClause_satisfied + intro hequal + have hcanonical : packedRow (UInt64.ofNat mask) ∈ canonicalRows := by + rw [← hequal, hrow] + unfold canonicalRows + rw [List.mem_ofFn] + exact ⟨orbit, rfl⟩ + have hmaskParts := List.mem_filter.mp hmask + have hmaskChecks : masterExcludedMaskUsedB mask = true ∧ + decide (packedRow (UInt64.ofNat mask) ∉ canonicalRows) = true := by + simpa only [Bool.and_eq_true] using hmaskParts.2 + have hnotCanonical : packedRow (UInt64.ofNat mask) ∉ canonicalRows := + of_decide_eq_true hmaskChecks.2 + exact hnotCanonical hcanonical + +/-- Every hypothetical normalized counterexample with canonical row one +satisfies the master formula. -/ +theorem masterFormula_satisfied + {p : Vertex → Plane} {Q : OctagonIncidence} + (hC : ConvexIndependent ℝ p) (hR : Realises p Q) + (hN : Q.Normalized) (hSparse : Q.PairSparse) (hBalanced : Q.Balanced) + (orbit : Fin 7) + (hrow : Q.targets 1 = packedRow (canonicalRowMask orbit)) : + (valuation Q.targets).SatisfiesFormula masterFormula := by + constructor + intro clause hclause + rw [masterFormula, List.mem_append] at hclause + rcases hclause with hbase | hcanonical + · exact (masterBaseFormula_satisfied hC hR hN hSparse hBalanced).property + clause hbase + · exact (canonicalRowFormula_satisfied Q orbit hrow).property clause hcanonical + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/MasterFormulaData.lean b/LeanPool/Erdos97ConvexOctagon/MasterFormulaData.lean new file mode 100644 index 00000000..00c3f627 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/MasterFormulaData.lean @@ -0,0 +1,111 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.RowSymmetry + +/-! # Generated master-formula core data -/ + +namespace Erdos97Octagon.RawIncidence + +/-- Bitset of source-clause references retained in the unsatisfiable core. -/ +def masterReferenceWords : Array UInt64 := #[ + 65279, 0, 6054245457279494826, 12297664111594611348, + 12290695751026430986, 12296235089538650794, 12106426295073286741, 3038248187879135910, + 11721084945966473888, 11574961440274417160, 10961946942898741376, 2450558704720972168, + 11694200616961870474, 11719078724732854313, 12297829382473034394, 6148914691237915306, + 4701851469463158784, 45812984448, 12286945683374687568, 23090459312810, + 12106426215079870545, 4611686018427423394, 2437239498081285, 12151418273816248840, + 9808839989490943272, 4641568719538129032, 11676180718043533328, 289375150469161128, + 9840365185804533776, 18320652080236200185, 58574344149794816, 156373316796416, + 16140901380827756384, 15690541102385182062, 30751967071090, 135417298944, + 477577216, 20731085583286272, 41049955237888, 2269880263614922752, + 8004453240143872, 699183842149269504, 4613212140566759808, 1351079888211148837, + 1836800, 70532112531456, 137791619776, 269156352, + 11529250230441091264, 603501041765319696, 73325495764123650, 143282615091200, + 5243034671172608000, 15472573364730818014, 15852630545700715455, 17437894875938807039, + 4819694977254616062, 36100282415688704, 8560199916016631808, 9871764977258330315, + 12819198254673535905, 17261909920381464790, 6902962401242775544, 8034395067448667035, + 4232363302896645491, 14399133793503211605, 10093323258898857992, 2670565250079718758, + 18085431369629774830, 15143710956201378379, 6393220096680036367, 1189216040921326938, + 816721704146445073, 623570433608192, 14154657566601415466, 2307603894468616768, + 306256536506597458, 5072302779683373827, 13898250291377119937, 1809901899135090950, + 40134972199227520, 504403158266806272, 154618822656, 73606050007744512, + 2247676679424651, 938112119106699456, 8075657957058021152, 2353412831224795138, + 9223374753690048640, 37520935518278, 648518346341351442, 54043195533426712, + 4415226380289, 576460821022900288, 8589950976, 292770259662815232, + 2256197869633600, 4539611921514496, 67776, 17179869200, + 65536, 144115188075872256, 1275716956061700, 4294967296, + 34359738368, 34359738368, 137438953488, 0, + 4398046511104, 1028, 0, 33554560, + 2097152, 2600, 285873155342336, 144115188177051648, + 5269283053779554304, 4503797222081552, 1153216356278075486, 9871894232631875852, + 1362340264850507824, 70369281458192, 2427440336591651328, 5476377146882523145, + 1125899911036928, 8589951056, 578712556697288720, 4398047035392, + 18014400656967680, 0, 72198331534802944, 25165824, + 8912057139328, 2256197860197376, 9223376778499719168, 2251937386856448, + 0, 262144, 0, 0, + 512, 20266473201074176, 17314086912, 0, + 576465150350000256, 1024, 72060892572811264, 1073741824, + 4503601775378432, 1585267068834516992, 17006598, 0, + 131072, 1162210178838306945, 1126157604880416, 6917529027653666944, + 21163399811432856, 1152921504640401408, 16777216, 0, + 8796094070784, 0, 70368744177664, 18014401093173249, + 0, 562949953421312, 1733885979187478528, 7, + 14289926015827510789, 1081856, 0, 0, + 0, 563499726012544, 4504166563053568, 0, + 0, 0, 0, 196608, + 17609365917696, 0, 2305843009213693952, 0, + 1130847713361920, 0, 1125942856515616, 4611686019503228928, + 17661711884352, 3497170457161891840, 1052736, 8796093022208, + 0, 0, 0, 0, + 9007199254740992, 0, 0, 0, + 0, 0, 0, 0, + 0, 2305843009213693952, 332802, 1152921504741072896, + 9007243548819456, 35185462608132, 45035996282816512, 0, + 0, 0, 0, 1188950301625810944, + 0, 1024, 2048, 4611686035607257088, + 4398046515200, 786480, 0, 9223654164934950912, + 21111552, 18446744073709027328, 18446744073709551615, 7, + 0, 0, 0, 0, + 0, 0, 0, 18444492273895866368, + 18446744073709551615, 18446744073709551615, 2047, 0, + 18446744039349813248, 18446744073709551615, 18446744073709551615, 18446744073709551615, + 18446744073709551615, 140737488355327, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 18446744073709551488, 18446744073709551615, 18446744073709551615, + 18446744073709551615, 18446744073709551615, 18446744073709551615, 18446744073709551615, + 2251799813685247, 0, 0, 0, + 0, 0, 0 +] + +/-- Bitset of first-row masks retained in the unsatisfiable core. -/ +def masterExcludedMaskWords : Array UInt64 := #[ + 153122387330596864, 86168803613876256, 86151340276850688, 72903260267221536 +] + +/-- Whether a shared clause belongs to the committed unsatisfiable core. -/ +def masterReferenceUsedB (reference : ℕ) : Bool := + bitSetB (masterReferenceWords.getD (reference / 64) 0) (reference % 64) + +/-- Whether a noncanonical first-row mask belongs to the committed core. -/ +def masterExcludedMaskUsedB (mask : ℕ) : Bool := + bitSetB (masterExcludedMaskWords.getD (mask / 64) 0) (mask % 64) + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/Erdos97ConvexOctagon/Obstructions.lean b/LeanPool/Erdos97ConvexOctagon/Obstructions.lean new file mode 100644 index 00000000..6db8beaa --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/Obstructions.lean @@ -0,0 +1,155 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CycleStrip +import LeanPool.Erdos97ConvexOctagon.EquidistantFour +import LeanPool.Erdos97ConvexOctagon.Pentagon +import LeanPool.Erdos97ConvexOctagon.Radius + +/-! # Erdős 97 convex-octagon formalization: Obstructions -/ + +namespace Erdos97Octagon + +open scoped InnerProductSpace RealInnerProductSpace + +/-- A four-clique in one radius-labelled graph is impossible in the plane. -/ +theorem no_labelled_k4 + {p : Vertex → Plane} (hp : Function.Injective p) + {Q : OctagonIncidence} (hR : Realises p Q) + {root a b c d : Vertex} (had : a ≠ d) + (hab : Q.LabelledEdge root a b) (hac : Q.LabelledEdge root a c) + (had' : Q.LabelledEdge root a d) (hbc : Q.LabelledEdge root b c) + (hbd : Q.LabelledEdge root b d) (hcd : Q.LabelledEdge root c d) : + False := by + obtain ⟨radius, hpos, hdist⟩ := exists_positive_radii hp Q hR + exact four_points_not_pairwise_equidistant (hp.ne had) + (dist_eq_radius_of_labelledEdge hdist hab) + (dist_eq_radius_of_labelledEdge hdist hac) + (dist_eq_radius_of_labelledEdge hdist had') + (dist_eq_radius_of_labelledEdge hdist hbc) + (dist_eq_radius_of_labelledEdge hdist hbd) + (dist_eq_radius_of_labelledEdge hdist hcd) + +/-- A hub and a five-cycle in one radius-labelled graph are impossible. -/ +theorem no_labelled_hub_pentagon + {p : Vertex → Plane} (hp : Function.Injective p) + {Q : OctagonIncidence} (hR : Realises p Q) + {root o a b c d e : Vertex} + (hoa : Q.LabelledEdge root o a) (hob : Q.LabelledEdge root o b) + (hoc : Q.LabelledEdge root o c) (hod : Q.LabelledEdge root o d) + (hoe : Q.LabelledEdge root o e) (hab : Q.LabelledEdge root a b) + (hbc : Q.LabelledEdge root b c) (hcd : Q.LabelledEdge root c d) + (hde : Q.LabelledEdge root d e) (hea : Q.LabelledEdge root e a) : + False := by + obtain ⟨radius, hpos, hdist⟩ := exists_positive_radii hp Q hR + exact no_unit_pentagon_centre (hpos root) + (dist_eq_radius_of_labelledEdge hdist hoa) + (dist_eq_radius_of_labelledEdge hdist hob) + (dist_eq_radius_of_labelledEdge hdist hoc) + (dist_eq_radius_of_labelledEdge hdist hod) + (dist_eq_radius_of_labelledEdge hdist hoe) + (dist_eq_radius_of_labelledEdge hdist hab) + (dist_eq_radius_of_labelledEdge hdist hbc) + (dist_eq_radius_of_labelledEdge hdist hcd) + (dist_eq_radius_of_labelledEdge hdist hde) + (dist_eq_radius_of_labelledEdge hdist hea) + +/-- A seven-vertex cycle-square strip in one radius-labelled graph is impossible. -/ +theorem no_labelled_cycle_square_strip + {p : Vertex → Plane} (hp : Function.Injective p) + {Q : OctagonIncidence} (hR : Realises p Q) + {root o x1 x2 x3 x4 x5 x6 : Vertex} + (e01 : Q.LabelledEdge root o x1) (e02 : Q.LabelledEdge root o x2) + (e06 : Q.LabelledEdge root o x6) (e12 : Q.LabelledEdge root x1 x2) + (e13 : Q.LabelledEdge root x1 x3) (e23 : Q.LabelledEdge root x2 x3) + (e24 : Q.LabelledEdge root x2 x4) (e34 : Q.LabelledEdge root x3 x4) + (e35 : Q.LabelledEdge root x3 x5) (e45 : Q.LabelledEdge root x4 x5) + (e46 : Q.LabelledEdge root x4 x6) (e56 : Q.LabelledEdge root x5 x6) : + False := by + obtain ⟨radius, hpos, hdist⟩ := exists_positive_radii hp Q hR + exact no_unit_cycle_square_strip (hpos root) + (dist_eq_radius_of_labelledEdge hdist e01) + (dist_eq_radius_of_labelledEdge hdist e02) + (dist_eq_radius_of_labelledEdge hdist e06) + (dist_eq_radius_of_labelledEdge hdist e12) + (dist_eq_radius_of_labelledEdge hdist e13) + (dist_eq_radius_of_labelledEdge hdist e23) + (dist_eq_radius_of_labelledEdge hdist e24) + (dist_eq_radius_of_labelledEdge hdist e34) + (dist_eq_radius_of_labelledEdge hdist e35) + (dist_eq_radius_of_labelledEdge hdist e45) + (dist_eq_radius_of_labelledEdge hdist e46) + (dist_eq_radius_of_labelledEdge hdist e56) + +private lemma common_circle_points_collinear + {A B q1 q2 q3 : Plane} (hAB : A ≠ B) + (hA12 : dist A q1 = dist A q2) (hA13 : dist A q1 = dist A q3) + (hB12 : dist B q1 = dist B q2) (hB13 : dist B q1 = dist B q3) : + Collinear ℝ ({q1, q2, q3} : Set Plane) := by + have hne : B -ᵥ A ≠ 0 := fun h => hAB (vsub_eq_zero_iff_eq.mp h).symm + have h12 : ⟪q2 -ᵥ q1, B -ᵥ A⟫ = (0 : ℝ) := by + rw [real_inner_comm] + exact EuclideanGeometry.inner_vsub_vsub_of_dist_eq_of_dist_eq + (by simpa [dist_comm] using hA12) (by simpa [dist_comm] using hB12) + have h13 : ⟪q3 -ᵥ q1, B -ᵥ A⟫ = (0 : ℝ) := by + rw [real_inner_comm] + exact EuclideanGeometry.inner_vsub_vsub_of_dist_eq_of_dist_eq + (by simpa [dist_comm] using hA13) (by simpa [dist_comm] using hB13) + have hfd : Module.finrank ℝ Plane = 1 + 1 := by + rw [finrank_euclideanSpace] + norm_num + letI : Fact (Module.finrank ℝ Plane = 1 + 1) := ⟨hfd⟩ + have hfo : Module.finrank ℝ ((ℝ ∙ (B -ᵥ A) : Submodule ℝ Plane))ᗮ = 1 := + Submodule.finrank_orthogonal_span_singleton hne + have horth : vectorSpan ℝ ({q1, q2, q3} : Set Plane) ≤ + (ℝ ∙ (B -ᵥ A) : Submodule ℝ Plane)ᗮ := by + rw [vectorSpan_eq_span_vsub_set_right_ne ℝ (Set.mem_insert q1 _)] + rw [Submodule.span_le] + intro w hw + rw [Set.mem_image] at hw + obtain ⟨q, hq, rfl⟩ := hw + have hq_ne : q ≠ q1 := fun h => hq.2 (by simpa using h) + have hq_cases : q = q2 ∨ q = q3 := by + rcases hq.1 with hq | hq + · exact absurd hq hq_ne + rcases hq with hq | hq + · exact Or.inl hq + · simpa using Or.inr hq + rw [SetLike.mem_coe, Submodule.mem_orthogonal_singleton_iff_inner_left] + rcases hq_cases with rfl | rfl + · exact h12 + · exact h13 + letI : FiniteDimensional ℝ (vectorSpan ℝ ({q1, q2, q3} : Set Plane)) := + Submodule.finiteDimensional_of_le horth + rw [collinear_iff_finrank_le_one] + calc + Module.finrank ℝ (vectorSpan ℝ ({q1, q2, q3} : Set Plane)) ≤ + Module.finrank ℝ ((ℝ ∙ (B -ᵥ A) : Submodule ℝ Plane)ᗮ) := + Submodule.finrank_mono horth + _ = 1 := hfo + +/-- Two distinct realised centres cannot share three distinct selected targets +in a convex-independent planar family. -/ +theorem no_three_shared_targets + {p : Vertex → Plane} (hC : ConvexIndependent ℝ p) + {Q : OctagonIncidence} (hR : Realises p Q) + {a b q1 q2 q3 : Vertex} (hab : a ≠ b) + (h12 : q1 ≠ q2) (h13 : q1 ≠ q3) (h23 : q2 ≠ q3) + (ha1 : q1 ∈ Q.targets a) (ha2 : q2 ∈ Q.targets a) + (ha3 : q3 ∈ Q.targets a) (hb1 : q1 ∈ Q.targets b) + (hb2 : q2 ∈ Q.targets b) (hb3 : q3 ∈ Q.targets b) : + False := by + obtain ⟨ra, hra⟩ := hR a + obtain ⟨rb, hrb⟩ := hR b + have hcol : Collinear ℝ ({p q1, p q2, p q3} : Set Plane) := + common_circle_points_collinear (hC.injective.ne hab) + ((hra q1 ha1).trans (hra q2 ha2).symm) + ((hra q1 ha1).trans (hra q3 ha3).symm) + ((hrb q1 hb1).trans (hrb q2 hb2).symm) + ((hrb q1 hb1).trans (hrb q3 hb3).symm) + exact three_collinear_not_convexIndependent hC h12 h13 h23 hcol + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/Pentagon.lean b/LeanPool/Erdos97ConvexOctagon/Pentagon.lean new file mode 100644 index 00000000..d260c284 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/Pentagon.lean @@ -0,0 +1,105 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.Gram + +/-! # Erdős 97 convex-octagon formalization: Pentagon -/ + +namespace Erdos97Octagon + +open scoped InnerProductSpace + +/-- Five equal chords cannot form an odd cycle on a circle with the same radius. -/ +theorem no_unit_pentagon_centre + {o a b c d e : Plane} {R : ℝ} (hR : 0 < R) + (oa : dist o a = R) (ob : dist o b = R) (oc : dist o c = R) + (od : dist o d = R) (oe : dist o e = R) + (ab : dist a b = R) (bc : dist b c = R) (cd : dist c d = R) + (de : dist d e = R) (ea : dist e a = R) : False := by + set u0 : Plane := a - o with hu0 + set u1 : Plane := b - o with hu1 + set u2 : Plane := c - o with hu2 + set u3 : Plane := d - o with hu3 + set u4 : Plane := e - o with hu4 + set s : ℝ := R ^ 2 with hs + have hs0 : 0 < s := by positivity + have norm_sq : ∀ {x : Plane}, dist o x = R → ⟪x - o, x - o⟫_ℝ = s := by + intro x hx + rw [real_inner_self_eq_norm_sq, ← dist_eq_norm, dist_comm, hx, hs] + have n0 : ⟪u0, u0⟫_ℝ = s := norm_sq oa + have n1 : ⟪u1, u1⟫_ℝ = s := norm_sq ob + have n2 : ⟪u2, u2⟫_ℝ = s := norm_sq oc + have n3 : ⟪u3, u3⟫_ℝ = s := norm_sq od + have n4 : ⟪u4, u4⟫_ℝ = s := norm_sq oe + have inner_half : ∀ {x y : Plane}, dist o x = R → dist o y = R → + dist x y = R → ⟪x - o, y - o⟫_ℝ = s / 2 := by + intro x y hox hoy hxy + have hsub : (x - o) - (y - o) = x - y := by abel + have hxynorm : ‖(x - o) - (y - o)‖ = R := by + rw [hsub, ← dist_eq_norm, hxy] + have hpolar := norm_sub_sq_real (x - o) (y - o) + have hnx : ‖x - o‖ ^ 2 = s := by + rw [← real_inner_self_eq_norm_sq] + exact norm_sq hox + have hny : ‖y - o‖ ^ 2 = s := by + rw [← real_inner_self_eq_norm_sq] + exact norm_sq hoy + rw [hxynorm, hnx, hny] at hpolar + have hR2 : R ^ 2 = s := hs.symm + nlinarith only [hpolar, hR2] + have i01 : ⟪u0, u1⟫_ℝ = s / 2 := inner_half oa ob ab + have i12 : ⟪u1, u2⟫_ℝ = s / 2 := inner_half ob oc bc + have i23 : ⟪u2, u3⟫_ℝ = s / 2 := inner_half oc od cd + have i34 : ⟪u3, u4⟫_ℝ = s / 2 := inner_half od oe de + have i40 : ⟪u4, u0⟫_ℝ = s / 2 := inner_half oe oa ea + set p : ℝ := ⟪u0, u2⟫_ℝ with hp + set q : ℝ := ⟪u0, u3⟫_ℝ with hq + have i10 : ⟪u1, u0⟫_ℝ = s / 2 := by rw [real_inner_comm]; exact i01 + have i21 : ⟪u2, u1⟫_ℝ = s / 2 := by rw [real_inner_comm]; exact i12 + have i32 : ⟪u3, u2⟫_ℝ = s / 2 := by rw [real_inner_comm]; exact i23 + have i43 : ⟪u4, u3⟫_ℝ = s / 2 := by rw [real_inner_comm]; exact i34 + have i04 : ⟪u0, u4⟫_ℝ = s / 2 := by rw [real_inner_comm]; exact i40 + have p20 : ⟪u2, u0⟫_ℝ = p := by rw [hp, real_inner_comm] + have q30 : ⟪u3, u0⟫_ℝ = q := by rw [hq, real_inner_comm] + have hE1 := gram_det_eq_zero ![u0, u1, u2] + rw [gram3_expand] at hE1 + simp only [n0, n1, n2, i01, i12, i10, i21, ← hp, p20] at hE1 + have hE2 := gram_det_eq_zero ![u0, u2, u3] + rw [gram3_expand] at hE2 + simp only [n0, n2, n3, i23, i32, ← hp, p20, ← hq, q30] at hE2 + have hE3 := gram_det_eq_zero ![u0, u3, u4] + rw [gram3_expand] at hE3 + simp only [n0, n3, n4, i34, i43, ← hq, q30, i04, i40] at hE3 + ring_nf at hE1 hE2 hE3 + have hp0 : s * ((p - s) * (2 * p + s)) = 0 := by + nlinarith only [hE1] + have hp_factor : (p - s) * (2 * p + s) = 0 := + (mul_eq_zero.mp hp0).resolve_left (ne_of_gt hs0) + have hq0 : s * ((q - s) * (2 * q + s)) = 0 := by + nlinarith only [hE3] + have hq_factor : (q - s) * (2 * q + s) = 0 := + (mul_eq_zero.mp hq0).resolve_left (ne_of_gt hs0) + have hs3 : 0 < s ^ 3 := by positivity + rcases mul_eq_zero.mp hp_factor with hp_branch | hp_branch <;> + rcases mul_eq_zero.mp hq_factor with hq_branch | hq_branch + · have ep : p = s := by linarith only [hp_branch] + have eq : q = s := by linarith only [hq_branch] + rw [ep, eq] at hE2 + nlinarith only [hE2, hs3] + · have ep : p = s := by linarith only [hp_branch] + have eq : q = -(s / 2) := by linarith only [hq_branch] + rw [ep, eq] at hE2 + nlinarith only [hE2, hs3] + · have ep : p = -(s / 2) := by linarith only [hp_branch] + have eq : q = s := by linarith only [hq_branch] + rw [ep, eq] at hE2 + nlinarith only [hE2, hs3] + · have ep : p = -(s / 2) := by linarith only [hp_branch] + have eq : q = -(s / 2) := by linarith only [hq_branch] + rw [ep, eq] at hE2 + nlinarith only [hE2, hs3] + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/Radius.lean b/LeanPool/Erdos97ConvexOctagon/Radius.lean new file mode 100644 index 00000000..4cfe8009 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/Radius.lean @@ -0,0 +1,84 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.GeometryReduction + +/-! # Erdős 97 convex-octagon formalization: Radius -/ + +namespace Erdos97Octagon + +namespace OctagonIncidence + +/-- Two centres are mutually selected. -/ +def Mutual (Q : OctagonIncidence) (a b : Vertex) : Prop := + b ∈ Q.targets a ∧ a ∈ Q.targets b + +/-- Two centres lie in the same connected component of mutual selections. -/ +def SameComponent (Q : OctagonIncidence) (a b : Vertex) : Prop := + Relation.ReflTransGen Q.Mutual a b + +/-- An undirected pair is labelled by the radius of a mutual component when +one endpoint in that component selects the other. -/ +def LabelledEdge (Q : OctagonIncidence) (root a b : Vertex) : Prop := + (Q.SameComponent root a ∧ b ∈ Q.targets a) ∨ + (Q.SameComponent root b ∧ a ∈ Q.targets b) + +end OctagonIncidence + +/-- An injective realisation admits a positive radius at every centre. -/ +theorem exists_positive_radii + {p : Vertex → Plane} (hp : Function.Injective p) + (Q : OctagonIncidence) (hR : Realises p Q) : + ∃ radius : Vertex → ℝ, + (∀ v, 0 < radius v) ∧ + ∀ v w, w ∈ Q.targets v → dist (p v) (p w) = radius v := by + classical + choose radius hradius using hR + refine ⟨radius, ?_, hradius⟩ + intro v + have hne : (Q.targets v).Nonempty := by + rw [Finset.nonempty_iff_ne_empty] + intro hempty + have := Q.card_targets v + rw [hempty] at this + simp at this + obtain ⟨w, hw⟩ := hne + have hvw : v ≠ w := fun h => Q.centre_not_mem v (h ▸ hw) + have hpvw : p v ≠ p w := hp.ne hvw + have hpos : 0 < dist (p v) (p w) := dist_pos.mpr hpvw + rwa [hradius v w hw] at hpos + +/-- Mutual centres have equal radii in any realisation. -/ +theorem radius_eq_of_mutual + {p : Vertex → Plane} {Q : OctagonIncidence} {radius : Vertex → ℝ} + (hR : ∀ v w, w ∈ Q.targets v → dist (p v) (p w) = radius v) + {a b : Vertex} (hab : Q.Mutual a b) : + radius a = radius b := by + rw [← hR a b hab.1, ← hR b a hab.2, dist_comm] + +/-- Radii are constant along a mutual connected component. -/ +theorem radius_eq_of_sameComponent + {p : Vertex → Plane} {Q : OctagonIncidence} {radius : Vertex → ℝ} + (hR : ∀ v w, w ∈ Q.targets v → dist (p v) (p w) = radius v) + {a b : Vertex} (hab : Q.SameComponent a b) : + radius a = radius b := by + induction hab with + | refl => rfl + | tail _ hedge ih => + exact ih.trans (radius_eq_of_mutual hR hedge) + +/-- A labelled edge has the radius of its mutual component. -/ +theorem dist_eq_radius_of_labelledEdge + {p : Vertex → Plane} {Q : OctagonIncidence} {radius : Vertex → ℝ} + (hR : ∀ v w, w ∈ Q.targets v → dist (p v) (p w) = radius v) + {root a b : Vertex} (hab : Q.LabelledEdge root a b) : + dist (p a) (p b) = radius root := by + rcases hab with ⟨hroot, hedge⟩ | ⟨hroot, hedge⟩ + · exact (hR a b hedge).trans (radius_eq_of_sameComponent hR hroot).symm + · rw [dist_comm] + exact (hR b a hedge).trans (radius_eq_of_sameComponent hR hroot).symm + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/Regenerate.lean b/LeanPool/Erdos97ConvexOctagon/Regenerate.lean new file mode 100644 index 00000000..3403c19e --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/Regenerate.lean @@ -0,0 +1,832 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.LRAT.Elab + +/-! +# Deterministic master-certificate regeneration + +Run from the repository root, replacing the two executable paths: + +``` +lake env lean --stdin <<'EOF' +import LeanPool.Erdos97ConvexOctagon.Regenerate +regenerate_erdos97 "check" "." "/path/to/cadical" "/path/to/drat-trim" +EOF +``` + +Use `write` instead of `check` to replace generated Lean modules. The supplied +executables must come from the pinned source commits recorded below. Ordinary +library builds only check the committed packed certificate and never run +external tools. +-/ + +namespace Erdos97Octagon.Regenerate + +open LRAT RawIncidence +open System +open Std + +private def cadicalCommit := + "c60730422e758ef1cebe7aeddf2dda31c996bf04" + +private def dratTrimCommit := + "2e3b2dc0ecf938addbd779d42877b6ed69d9a985" + +private def solverInitialClauseCount := 6582 +private def initialClauseCount := 3263 +private def additionsPerStage := 1432 +private def encodedLineWidth := 94 +private def linesPerDataModule := 500 + +private def stageCount (additionCount : ℕ) : ℕ := + (additionCount + additionsPerStage - 1) / additionsPerStage + +private def stageStart (index : ℕ) : ℕ := + index * additionsPerStage + +private def stageStop (additionCount index : ℕ) : ℕ := + min additionCount ((index + 1) * additionsPerStage) + +private inductive Mode where + | check + | write + +private def Mode.text : Mode → String + | .check => "check" + | .write => "write" + +private structure Configuration where + mode : Mode + repository : FilePath + cadical : FilePath + dratTrim : FilePath + +private inductive ParsedAction where + | deletion + | addition (value : Addition) + +private structure ParsedCertificate where + proofSteps : Array Addition + actions : ℕ + deletions : ℕ + +private structure DerivedCore where + identifiers : HashMap ℕ ℕ + referenceWords : Array UInt64 + excludedMaskWords : Array UInt64 + +private def parseNatural (token : String) : Except String ℕ := + match token.toNat? with + | some value => pure value + | none => throw s!"expected a natural number, got '{token}'" + +private def parseInteger (token : String) : Except String Int := + match token.toInt? with + | some value => pure value + | none => throw s!"expected an integer, got '{token}'" + +private def takeIntegersUntilZero : + List String → Except String (Array Int × List String) + | [] => throw "unterminated integer sequence" + | token :: remaining => do + let value ← parseInteger token + if value = 0 then + pure (#[], remaining) + else + let (values, remaining) ← takeIntegersUntilZero remaining + pure (values.insertIdx 0 value, remaining) + +private def takeNaturalsUntilZero : + List String → Except String (Array ℕ × List String) + | [] => throw "unterminated natural-number sequence" + | token :: remaining => do + let value ← parseNatural token + if value = 0 then + pure (#[], remaining) + else + let (values, remaining) ← takeNaturalsUntilZero remaining + pure (values.insertIdx 0 value, remaining) + +private def lineTokens (line : String) : List String := + (line.trimAscii.copy.splitOn " ").filter fun token => !token.isEmpty + +private def parseActionLine (line : String) : Except String ParsedAction := do + let tokens := lineTokens line + let identifierToken :: remaining := tokens + | throw "empty LRAT action" + let identifier ← parseNatural identifierToken + match remaining with + | "d" :: deletionTokens => + let (_, trailing) ← takeNaturalsUntilZero deletionTokens + unless trailing.isEmpty do + throw "trailing tokens after LRAT deletion" + pure .deletion + | _ => + let (literals, remaining) ← takeIntegersUntilZero remaining + let (antecedents, trailing) ← takeNaturalsUntilZero remaining + unless trailing.isEmpty do + throw "trailing tokens after LRAT addition" + pure <| .addition { identifier, literals, antecedents } + +private def parseCertificate (text : String) : Except String ParsedCertificate := do + let mut proofSteps := #[] + let mut actions := 0 + let mut deletions := 0 + for line in text.splitOn "\n" do + unless line.trimAscii.isEmpty do + actions := actions + 1 + match ← parseActionLine line with + | .deletion => deletions := deletions + 1 + | .addition addition => proofSteps := proofSteps.push addition + pure { proofSteps, actions, deletions } + +private def packedLiteralCode (literal : Int) : Except String ℕ := + if literal = 0 then + throw "zero is not a literal" + else if literal < 0 then + pure (2 * ((-literal).toNat - 1) + 1) + else + pure (2 * (literal.toNat - 1)) + +private def varintByteCountWithFuel : + ℕ → ℕ → Option ℕ + | 0, _ => none + | fuel + 1, value => + if value < 128 then + some 1 + else + (varintByteCountWithFuel fuel (value / 128)).map Nat.succ + +private def packedNaturalValues + (initialClauses : ℕ) (steps : Array Addition) : + Except String (Array ℕ) := do + let mut previous := initialClauses + let mut values := #[] + for addition in steps do + values := values.push (addition.identifier - previous) + values := values.push addition.literals.size + for literal in addition.literals do + values := values.push (← packedLiteralCode literal) + values := values.push addition.antecedents.size + for antecedent in addition.antecedents do + values := values.push (addition.identifier - antecedent) + previous := addition.identifier + pure values + +private def maximumVarintByteCount + (initialClauses : ℕ) (steps : Array Addition) : + Except String ℕ := do + let values ← packedNaturalValues initialClauses steps + let mut maximum := 0 + for value in values do + let some count := + varintByteCountWithFuel packedVarintByteBound value + | throw "packed natural exceeds the decoder byte bound" + maximum := max maximum count + pure maximum + +private def literalInteger : Literal → Int + | .positive index => Int.ofNat (index + 1) + | .negative index => -Int.ofNat (index + 1) + +private def renderClause (clause : Clause) : String := + let literals := clause.map fun literal => toString (literalInteger literal) + String.intercalate " " literals ++ " 0\n" + +private def retiredPatternCount : ℕ := 508 + +private def retiredPatternPackedBytes : ℕ := 5080 + +private def retiredPatternEncoded : String := + String.join [ + "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", + ] + +private def packedByteAt (bytes : ByteArray) (index : ℕ) : Except String ℕ := + match bytes[index]? with + | some byte => pure byte.toNat + | none => throw "retired-pattern data ended early" + +private def decodeLittleEndianUInt64 + (bytes : ByteArray) (offset : ℕ) : Except String UInt64 := do + let mut value : ℕ := 0 + for index in [0:8] do + value := value + (← packedByteAt bytes (offset + index)) * 256 ^ index + pure (UInt64.ofNat value) + +private def decodeRetiredPatterns : Except String (Array (ℕ × UInt64)) := do + let bytes ← decodeBase64 retiredPatternEncoded + unless bytes.size = retiredPatternPackedBytes do + throw "retired-pattern packed size mismatch" + let mut result := Array.mkEmpty retiredPatternCount + let mut previousOrigin : Option ℕ := none + for index in [0:retiredPatternCount] do + let offset := 10 * index + let low ← packedByteAt bytes offset + let high ← packedByteAt bytes (offset + 1) + let origin := low + 256 * high + let mask ← decodeLittleEndianUInt64 bytes (offset + 2) + unless origin < 11043 do + throw s!"retired pattern origin {origin} is out of range" + if let some previous := previousOrigin then + unless previous < origin do + throw "retired pattern origins are not strictly increasing" + result := result.push (origin, mask) + previousOrigin := some origin + pure result + +private def retiredPatternMap : Except String (HashMap ℕ UInt64) := do + let entries ← decodeRetiredPatterns + let mut result : HashMap ℕ UInt64 := {} + for (origin, mask) in entries do + unless (patternEntry origin).isNone do + throw s!"retired pattern origin {origin} remains in semantic coverage data" + result := result.insert origin mask + pure result + +private def solverExcludedMasks : List ℕ := + (List.range 256).filter fun mask => + decide (packedRow (UInt64.ofNat mask) ∉ canonicalRows) + +private def retiredPatternClause (mask : UInt64) : Clause := + ((List.range 64).filter fun index => bitSetB mask index).map .negative + +private def isPatternReference (reference : ℕ) : Bool := + decide (3376 ≤ reference ∧ reference < 14419) + +private def solverReferenceValidB + (retired : HashMap ℕ UInt64) (reference : ℕ) : Bool := + if isPatternReference reference then + (tagOfRef 0 0 reference).validB || + retired.contains (reference - 3376) + else + (tagOfRef 0 0 reference).validB + +private def solverReferenceClause + (retired : HashMap ℕ UInt64) (reference : ℕ) : Clause := + if isPatternReference reference then + match retired[reference - 3376]? with + | some mask => retiredPatternClause mask + | none => (tagOfRef 0 0 reference).toClause + else + (tagOfRef 0 0 reference).toClause + +private def solverReferences (retired : HashMap ℕ UInt64) : List ℕ := + (List.range 20659).filter (solverReferenceValidB retired) + +private def solverFormula (retired : HashMap ℕ UInt64) : Formula := + (solverReferences retired).map (solverReferenceClause retired) ++ + solverExcludedMasks.map fun mask => + rowExclusionClause (packedRow (UInt64.ofNat mask)) + +private def renderMasterCnf (retired : HashMap ℕ UInt64) : + Except String String := do + let formula := solverFormula retired + unless formula.length = solverInitialClauseCount do + throw s!"expected {solverInitialClauseCount} solver clauses, got {formula.length}" + pure <| s!"p cnf 64 {solverInitialClauseCount}\n" ++ + String.join (formula.map renderClause) + +private def bitsetWords + (size : ℕ) (values : Array ℕ) : Except String (Array UInt64) := do + let mut words := Array.replicate ((size + 63) / 64) 0 + for value in values do + unless value < size do + throw s!"bitset value {value} is out of range" + let index := value / 64 + let word := words.getD index 0 + words := words.set! index (word + 2 ^ (value % 64)) + pure <| words.map UInt64.ofNat + +private def deriveCore + (retired : HashMap ℕ UInt64) (steps : Array Addition) : + Except String DerivedCore := do + let mut usedSourceIdentifiers : HashSet ℕ := {} + for addition in steps do + for antecedent in addition.antecedents do + if antecedent ≤ solverInitialClauseCount then + usedSourceIdentifiers := usedSourceIdentifiers.insert antecedent + let mut identifiers : HashMap ℕ ℕ := {} + let mut references := #[] + let mut excludedMasks := #[] + let mut oldIdentifier := 1 + let mut newIdentifier := 1 + for reference in solverReferences retired do + if usedSourceIdentifiers.contains oldIdentifier then + identifiers := identifiers.insert oldIdentifier newIdentifier + references := references.push reference + newIdentifier := newIdentifier + 1 + oldIdentifier := oldIdentifier + 1 + for mask in solverExcludedMasks do + if usedSourceIdentifiers.contains oldIdentifier then + identifiers := identifiers.insert oldIdentifier newIdentifier + excludedMasks := excludedMasks.push mask + newIdentifier := newIdentifier + 1 + oldIdentifier := oldIdentifier + 1 + unless oldIdentifier = solverInitialClauseCount + 1 do + throw "solver source metadata has the wrong clause count" + unless usedSourceIdentifiers.size = newIdentifier - 1 do + throw "certificate contains an invalid source-clause identifier" + unless newIdentifier = initialClauseCount + 1 do + throw s!"expected {initialClauseCount} core clauses, got {newIdentifier - 1}" + pure { + identifiers + referenceWords := ← bitsetWords 20659 references + excludedMaskWords := ← bitsetWords 256 excludedMasks + } + +private def recodeAdditions + (core : DerivedCore) (steps : Array Addition) : + Except String (Array Addition) := do + let mut identifiers := core.identifiers + for index in [0:steps.size] do + let some addition := steps[index]? + | throw "certificate addition index is out of range" + identifiers := identifiers.insert addition.identifier + (initialClauseCount + index + 1) + let mut result := #[] + for addition in steps do + let some identifier := identifiers[addition.identifier]? + | throw "certificate addition identifier is missing" + let mut antecedents := #[] + for antecedent in addition.antecedents do + let some recoded := identifiers[antecedent]? + | throw s!"certificate uses source clause outside the committed core: {antecedent}" + antecedents := antecedents.push recoded + result := result.push { addition with identifier, antecedents } + pure result + +private def processOutput + (executable : FilePath) (arguments : Array String) : IO IO.Process.Output := + IO.Process.output { + cmd := executable.toString + args := arguments + stdout := .piped + stderr := .piped + } + +private def verifySourceCommit + (executable : FilePath) (expected : String) : IO Unit := do + let immediateParent := executable.parent.getD "." + let sourceDirectory := + if executable.fileName.getD "" = "cadical" then + immediateParent.parent.getD "." + else + immediateParent + let output ← processOutput "git" + #["-C", sourceDirectory.toString, "rev-parse", "HEAD"] + unless output.exitCode = 0 do + throw <| IO.userError s!"cannot read tool commit:\n{output.stderr}" + let actual := output.stdout.trimAscii.copy + unless actual = expected do + throw <| IO.userError + s!"tool at {sourceDirectory} is {actual}; expected {expected}" + +private def runCertificateTools + (configuration : Configuration) (directory : FilePath) + (retired : HashMap ℕ UInt64) : + IO (FilePath × FilePath × FilePath) := do + verifySourceCommit configuration.cadical cadicalCommit + verifySourceCommit configuration.dratTrim dratTrimCommit + let cnfPath := directory / "master.cnf" + let dratPath := directory / "master.drat" + let optimizedDratPath := directory / "master-optimized.drat" + let lratPath := directory / "master.lrat" + IO.FS.writeFile cnfPath (← IO.ofExcept <| renderMasterCnf retired) + let solver ← processOutput configuration.cadical + #["-P2", "--shrink=1", "--chrono=0", "--stabilizeonly=true", + cnfPath.toString, dratPath.toString] + unless solver.exitCode = 20 do + throw <| IO.userError + s!"CaDiCaL failed with {solver.exitCode}:\n{solver.stderr}" + let optimizer ← processOutput configuration.dratTrim + #[cnfPath.toString, dratPath.toString, "-O", "-l", optimizedDratPath.toString] + unless optimizer.exitCode = 0 do + throw <| IO.userError + s!"drat-trim optimization failed with {optimizer.exitCode}:\n{optimizer.stderr}" + let converter ← processOutput configuration.dratTrim + #[cnfPath.toString, optimizedDratPath.toString, "-L", lratPath.toString] + unless converter.exitCode = 0 do + throw <| IO.userError + s!"drat-trim failed with {converter.exitCode}:\n{converter.stderr}" + pure (cnfPath, optimizedDratPath, lratPath) + +private def hashOutput (executable : FilePath) (arguments : Array String) : + IO (Option String) := do + try + let output ← processOutput executable arguments + if output.exitCode = 0 then + pure <| (output.stdout.trimAscii.copy.splitOn " ").head? + else + pure none + catch _ => + pure none + +private def sha256 (path : FilePath) : IO String := do + if let some digest ← hashOutput "sha256sum" #[path.toString] then + pure digest + else if let some digest ← hashOutput "shasum" #["-a", "256", path.toString] then + pure digest + else + throw <| IO.userError "neither sha256sum nor shasum is available" + +private def chunksOfWithFuel : + ℕ → ℕ → List α → List (List α) + | 0, _, _ => [] + | _, _, [] => [] + | _fuel + 1, 0, _ => [] + | fuel + 1, size, values => + values.take size :: chunksOfWithFuel fuel size (values.drop size) + +private def chunksOf (size : ℕ) (values : List α) : List (List α) := + chunksOfWithFuel (values.length + 1) size values + +private def encodedLines (encoded : String) : Except String (List String) := do + let bytes := encoded.toUTF8 + let mut result := #[] + for block in [0:(bytes.size + encodedLineWidth - 1) / encodedLineWidth] do + let start := block * encodedLineWidth + let stop := min bytes.size (start + encodedLineWidth) + let mut line := ByteArray.empty + for index in [start:stop] do + let some byte := bytes[index]? + | throw "encoded certificate line index is out of range" + line := line.push byte + let some text := String.fromUTF8? line + | throw "encoded certificate line is not valid UTF-8" + result := result.push text + pure result.toList + +private def header : String := + "/-\n" ++ + "Copyright (c) 2026 Egor Lyfar. All rights reserved.\n" ++ + "Released under Apache 2.0 license as described in the file LICENSE.\n" ++ + "Authors: Egor Lyfar\n" ++ + "-/\n\n" + +private def renderWordArray (words : Array UInt64) : String := + let lines := (chunksOf 4 words.toList).map fun line => + " " ++ String.intercalate ", " (line.map toString) + "#[\n" ++ String.intercalate ",\n" lines ++ "\n]" + +private def renderMasterFormulaData (core : DerivedCore) : String := + header ++ + "import LeanPool.Erdos97ConvexOctagon.RowSymmetry\n\n" ++ + "/-! # Generated master-formula core data -/\n\n" ++ + "namespace Erdos97Octagon.RawIncidence\n\n" ++ + "/-- Bitset of source-clause references retained in the unsatisfiable core. -/\n" ++ + "def masterReferenceWords : Array UInt64 := " ++ + renderWordArray core.referenceWords ++ "\n\n" ++ + "/-- Bitset of first-row masks retained in the unsatisfiable core. -/\n" ++ + "def masterExcludedMaskWords : Array UInt64 := " ++ + renderWordArray core.excludedMaskWords ++ "\n\n" ++ + "/-- Whether a shared clause belongs to the committed unsatisfiable core. -/\n" ++ + "def masterReferenceUsedB (reference : ℕ) : Bool :=\n" ++ + " bitSetB (masterReferenceWords.getD (reference / 64) 0) (reference % 64)\n\n" ++ + "/-- Whether a noncanonical first-row mask belongs to the committed core. -/\n" ++ + "def masterExcludedMaskUsedB (mask : ℕ) : Bool :=\n" ++ + " bitSetB (masterExcludedMaskWords.getD (mask / 64) 0) (mask % 64)\n\n" ++ + "end Erdos97Octagon.RawIncidence\n" + +private def renderDataModule + (moduleIndex : ℕ) (lines : List String) : String := + let name := s!"masterCertificatePart{moduleIndex}" + let body := lines.map fun line => s!" \"{line}\",\n" + header ++ + "import LeanPool.Erdos97ConvexOctagon.LRAT.Format\n\n" ++ + "/-! # Generated packed master-certificate data -/\n\n" ++ + "namespace Erdos97Octagon.RawIncidence\n\n" ++ + s!"/-- Packed certificate data part {moduleIndex}. -/\n" ++ + s!"def {name} : List String := [\n" ++ + String.join body ++ + "]\n\nend Erdos97Octagon.RawIncidence\n" + +private def dataModuleName (index : ℕ) : String := + s!"MasterCertificateData{index}" + +private def stageModuleName (index : ℕ) : String := + if index < 10 then + s!"MasterCertificateStage0{index}" + else + s!"MasterCertificateStage{index}" + +private def renderNaturalList (values : List ℕ) : String := + "[" ++ String.intercalate ", " (values.map toString) ++ "]" + +private def renderManifest + (additionCount deletionCount actionCount dataModuleCount packedByteCount + encodedCharacterCount maximumVarintBytes : ℕ) + (cnfHash lratHash packedHash : String) : String := + let count := stageCount additionCount + let stageCounts := (List.range count).map fun index => + stageStop additionCount index - stageStart index + let stageBoundaries := + (List.range count).map stageStart ++ [additionCount] + let stageBoundarySplit := (stageBoundaries.length + 1) / 2 + header ++ + "import LeanPool.Erdos97ConvexOctagon.LRAT.Format\n\n" ++ + "/-! # Generated master-certificate manifest -/\n\n" ++ + "namespace Erdos97Octagon.RawIncidence\n\n" ++ + "/-- Packed certificate format version. -/\n" ++ + "def masterCertificateFormatVersion : ℕ := 1\n\n" ++ + "/-- Number of initial clauses. -/\n" ++ + s!"def masterCertificateInitialClauses : ℕ := {initialClauseCount}\n\n" ++ + "/-- Number of retained LRAT additions. -/\n" ++ + s!"def masterCertificateAdditions : ℕ := {additionCount}\n\n" ++ + "/-- Number of omitted LRAT deletion records. -/\n" ++ + s!"def masterCertificateDeletions : ℕ := {deletionCount}\n\n" ++ + "/-- Total number of actions in the generated LRAT text. -/\n" ++ + s!"def masterCertificateActions : ℕ := {actionCount}\n\n" ++ + "/-- Number of packed bytes. -/\n" ++ + s!"def masterCertificatePackedBytes : ℕ := {packedByteCount}\n\n" ++ + "/-- Number of base64 characters. -/\n" ++ + s!"def masterCertificateEncodedCharacters : ℕ := {encodedCharacterCount}\n\n" ++ + "/-- Number of generated data modules. -/\n" ++ + s!"def masterCertificateDataModules : ℕ := {dataModuleCount}\n\n" ++ + "/-- Number of sequential proof-stage modules. -/\n" ++ + s!"def masterCertificateStageModules : ℕ := {count}\n\n" ++ + "/-- Maximum retained additions reconstructed in one proof stage. -/\n" ++ + s!"def masterCertificateMaximumAdditionsPerStage : ℕ := {additionsPerStage}\n\n" ++ + "/-- Retained additions reconstructed by each sequential proof stage. -/\n" ++ + "def masterCertificateStageAdditionCounts : List ℕ :=\n" ++ + s!" {renderNaturalList stageCounts}\n\n" ++ + "/-- Zero-based addition boundaries of the sequential proof stages. -/\n" ++ + "def masterCertificateStageBoundaries : List ℕ :=\n" ++ + s!" {renderNaturalList (stageBoundaries.take stageBoundarySplit)} ++\n" ++ + s!" {renderNaturalList (stageBoundaries.drop stageBoundarySplit)}\n\n" ++ + "/-- Maximum measured bytes used by one packed natural number. -/\n" ++ + s!"def masterCertificateMaximumVarintBytes : ℕ := {maximumVarintBytes}\n\n" ++ + "/-- Decoder byte bound for one packed natural number. -/\n" ++ + s!"def masterCertificateVarintByteBound : ℕ := {packedVarintByteBound}\n\n" ++ + "/-- Maximum string literals emitted in one generated data part. -/\n" ++ + s!"def masterCertificateMaximumStringsPerPart : ℕ := {linesPerDataModule}\n\n" ++ + "/-- Maximum measured compiled-expression steps used by one generated data part. -/\n" ++ + "def masterCertificateMaximumStringListExpressionSteps : ℕ := " ++ + s!"{embeddedCertificatePartMaximumExpressionSteps}\n\n" ++ + "/-- Structural fuel used to decode one generated string-list part. -/\n" ++ + s!"def masterCertificateStringListFuel : ℕ := {embeddedCertificatePartFuel}\n\n" ++ + "/-- SHA-256 of the generated DIMACS formula. -/\n" ++ + "def masterCertificateCnfSha256 : String :=\n" ++ + s!" \"{cnfHash}\"\n\n" ++ + "/-- SHA-256 of the normalized LRAT text. -/\n" ++ + "def masterCertificateLratSha256 : String :=\n" ++ + s!" \"{lratHash}\"\n\n" ++ + "/-- SHA-256 of the packed certificate bytes. -/\n" ++ + "def masterCertificatePackedSha256 : String :=\n" ++ + s!" \"{packedHash}\"\n\n" ++ + "/-- Pinned CaDiCaL source commit. -/\n" ++ + "def masterCertificateCadicalCommit : String :=\n" ++ + s!" \"{cadicalCommit}\"\n\n" ++ + "/-- Pinned drat-trim source commit. -/\n" ++ + "def masterCertificateDratTrimCommit : String :=\n" ++ + s!" \"{dratTrimCommit}\"\n\n" ++ + "end Erdos97Octagon.RawIncidence\n" + +private def renderStageModule + (dataModuleCount additionCount stageIndex : ℕ) : String := + let imports := (List.range dataModuleCount).map fun index => + s!"import LeanPool.Erdos97ConvexOctagon.{dataModuleName index}\n" + let parts := (List.range dataModuleCount).map fun index => + s!" masterCertificatePart{index}\n" + let dependencyImport := + if stageIndex = 0 then + "import LeanPool.Erdos97ConvexOctagon.LRAT.Elab\n" ++ + String.join imports + else + s!"import LeanPool.Erdos97ConvexOctagon." ++ + s!"{stageModuleName (stageIndex - 1)}\n" + header ++ + dependencyImport ++ + s!"\n/-! # Master-certificate proof stage {stageIndex} -/\n\n" ++ + "namespace Erdos97Octagon.RawIncidence\n\n" ++ + "master_lrat_stage\n" ++ + s!" initial_clauses {initialClauseCount}\n" ++ + s!" additions {additionCount}\n" ++ + s!" stage_start {stageStart stageIndex}\n" ++ + s!" stage_stop {stageStop additionCount stageIndex}\n" ++ + " clause_prefix masterCertificateClause\n" ++ + " final_theorem masterFormula_unsatisfiable\n" ++ + " data_parts\n" ++ + String.join parts ++ + "\n\nend Erdos97Octagon.RawIncidence\n" + +private def renderCertificateModule (count : ℕ) : String := + header ++ + s!"import LeanPool.Erdos97ConvexOctagon." ++ + s!"{stageModuleName (count - 1)}\n\n" ++ + "/-! # Kernel-checked master coverage certificate -/\n" + +private def generatedDirectory (repository : FilePath) : FilePath := + repository / "LeanPool" / "Erdos97ConvexOctagon" + +private def reconcileFile + (mode : Mode) (path : FilePath) (expected : String) : IO Unit := do + match mode with + | .write => IO.FS.writeFile path expected + | .check => + let fileExists ← path.pathExists + unless fileExists do + throw <| IO.userError s!"generated file is missing: {path}" + let actual ← IO.FS.readFile path + unless actual = expected do + throw <| IO.userError s!"generated file differs: {path}" + +private def removeOrRejectExtraModules + (configuration : Configuration) (stem : String) (expectedCount : ℕ) : + IO Unit := do + let directory := generatedDirectory configuration.repository + for entry in ← directory.readDir do + let name := entry.fileName + if name.startsWith stem ∧ name.endsWith ".lean" then + let suffix := ((name.drop stem.length).dropEnd 5).copy + let isExpected : Bool := + match suffix.toNat? with + | some index => decide (index < expectedCount) + | none => false + unless isExpected do + match configuration.mode with + | .write => IO.FS.removeFile entry.path + | .check => + throw <| IO.userError s!"obsolete generated file remains: {entry.path}" + +private def removeOrRejectObsoleteFile + (configuration : Configuration) (path : FilePath) : IO Unit := do + if ← path.pathExists then + match configuration.mode with + | .write => IO.FS.removeFile path + | .check => throw <| IO.userError s!"obsolete generated file remains: {path}" + +private def generate + (configuration : Configuration) (temporaryDirectory : FilePath) : IO Unit := do + let retired ← IO.ofExcept retiredPatternMap + let (cnfPath, _, lratPath) ← + runCertificateTools configuration temporaryDirectory retired + let lratText ← IO.FS.readFile lratPath + let certificate ← IO.ofExcept <| parseCertificate lratText + let core ← IO.ofExcept <| deriveCore retired certificate.proofSteps + let proofAdditions ← IO.ofExcept <| + recodeAdditions core certificate.proofSteps + let additionCount := proofAdditions.size + let count := stageCount additionCount + for index in [0:proofAdditions.size] do + let some addition := proofAdditions[index]? + | throw <| IO.userError "LRAT addition index is out of range" + if addition.literals.isEmpty ∧ index + 1 ≠ proofAdditions.size then + throw <| IO.userError "empty clause occurs before the final LRAT addition" + let some finalAddition := proofAdditions[proofAdditions.size - 1]? + | throw <| IO.userError "LRAT certificate has no additions" + unless finalAddition.literals.isEmpty do + throw <| IO.userError "final LRAT addition is not the empty clause" + let packed ← IO.ofExcept <| + encodeAdditions initialClauseCount proofAdditions + let encoded ← IO.ofExcept <| encodeBase64 packed + let maximumVarintBytes ← IO.ofExcept <| + maximumVarintByteCount initialClauseCount proofAdditions + let roundTripBytes ← IO.ofExcept <| decodeBase64 encoded + let roundTrip ← IO.ofExcept <| + decodeAdditions initialClauseCount proofAdditions.size roundTripBytes + unless roundTrip == proofAdditions do + throw <| IO.userError "packed certificate round trip changed an action" + let packedPath := temporaryDirectory / "master.packed" + IO.FS.writeBinFile packedPath packed + let lines ← IO.ofExcept <| encodedLines encoded + let lineModules := chunksOf linesPerDataModule lines + let directory := generatedDirectory configuration.repository + reconcileFile configuration.mode + (directory / "MasterFormulaData.lean") + (renderMasterFormulaData core) + for index in List.range lineModules.length do + let lines := lineModules.getD index [] + reconcileFile configuration.mode + (directory / s!"{dataModuleName index}.lean") + (renderDataModule index lines) + removeOrRejectExtraModules configuration + "MasterCertificateData" lineModules.length + removeOrRejectObsoleteFile configuration + (directory / "MasterCertificateContext.lean") + for index in List.range count do + reconcileFile configuration.mode + (directory / s!"{stageModuleName index}.lean") + (renderStageModule lineModules.length additionCount index) + removeOrRejectExtraModules configuration + "MasterCertificateStage" count + reconcileFile configuration.mode + (directory / "MasterCertificateManifest.lean") + (renderManifest additionCount certificate.deletions certificate.actions + lineModules.length packed.size encoded.length maximumVarintBytes + (← sha256 cnfPath) (← sha256 lratPath) (← sha256 packedPath)) + reconcileFile configuration.mode + (directory / "MasterCertificate.lean") + (renderCertificateModule count) + IO.println <| s!"{configuration.mode.text}: {solverInitialClauseCount} solver clauses, " ++ + s!"{initialClauseCount} core clauses, " ++ + s!"{certificate.actions} actions, {proofAdditions.size} additions, " ++ + s!"{packed.size} packed bytes, {lineModules.length} data modules, " ++ + s!"{count} proof stages" + +private def configuration (mode repository cadical dratTrim : String) : + Except String Configuration := do + let parsedMode ← + match mode with + | "check" => pure Mode.check + | "write" => pure Mode.write + | _ => throw "mode must be check or write" + pure { + mode := parsedMode + repository + cadical + dratTrim + } + +/-- Run the deterministic master-certificate generator with explicit tool paths. -/ +syntax (name := regenerateErdos97) + "regenerate_erdos97 " str str str str : command + +elab_rules : command + | `(regenerate_erdos97 $mode:str $repository:str $cadical:str $dratTrim:str) => do + let configuration ← IO.ofExcept <| + configuration mode.getString repository.getString cadical.getString dratTrim.getString + Lean.Elab.Command.liftIO <| IO.FS.withTempDir fun directory => + generate configuration directory + +end Erdos97Octagon.Regenerate diff --git a/LeanPool/Erdos97ConvexOctagon/Relabelling.lean b/LeanPool/Erdos97ConvexOctagon/Relabelling.lean new file mode 100644 index 00000000..caae8272 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/Relabelling.lean @@ -0,0 +1,122 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.GeometryReduction +import Mathlib.Logic.Equiv.Fintype + +/-! # Erdős 97 convex-octagon formalization: Relabelling -/ + +namespace Erdos97Octagon + +/-- The canonical first witness row used by the finite classification. -/ +def standardTargets : Finset Vertex := {1, 2, 3, 4} + +/-- The canonical witness row has four vertices. -/ +@[simp] theorem card_standardTargets : standardTargets.card = 4 := by + decide + +/-- The canonical witness row does not contain its centre. -/ +@[simp] theorem zero_notMem_standardTargets : (0 : Vertex) ∉ standardTargets := by + decide + +namespace OctagonIncidence + +/-- Simultaneously relabel the centres and every entry of their witness rows. -/ +def relabel (Q : OctagonIncidence) (e : Vertex ≃ Vertex) : OctagonIncidence where + targets v := (Q.targets (e.symm v)).map e.toEmbedding + card_targets v := by simp [Q.card_targets] + centre_not_mem v := by simpa using Q.centre_not_mem (e.symm v) + +/-- A system is normalized when row zero is the canonical four-set. -/ +def Normalized (Q : OctagonIncidence) : Prop := + Q.targets 0 = standardTargets + +private theorem exists_perm_fix_zero_map + (S : Finset Vertex) (hcard : S.card = 4) (hzero : (0 : Vertex) ∉ S) : + ∃ e : Vertex ≃ Vertex, + e 0 = 0 ∧ S.map e.toEmbedding = standardTargets := by + classical + obtain ⟨σ, hσ⟩ := Equiv.Perm.exists_map_finset_eq S standardTargets (by + simpa only [card_standardTargets] using hcard) + have hσzero : σ 0 ∉ standardTargets := by + intro hmem + rw [← hσ] at hmem + obtain ⟨x, hxS, hx⟩ := Finset.mem_map.mp hmem + apply hzero + have hxzero : x = 0 := σ.injective (by simpa using hx) + simpa [hxzero] using hxS + let τ : Vertex ≃ Vertex := Equiv.swap (σ 0) 0 + have hτ (x : Vertex) (hx : x ∈ standardTargets) : τ x = x := by + apply Equiv.swap_apply_of_ne_of_ne + · exact fun h => hσzero (h ▸ hx) + · exact fun h => zero_notMem_standardTargets (h ▸ hx) + let e := σ.trans τ + refine ⟨e, ?_, ?_⟩ + · simp [e, τ] + · rw [show e.toEmbedding = σ.toEmbedding.trans τ.toEmbedding by rfl] + rw [← Finset.map_map, hσ] + ext x + constructor + · intro hx + obtain ⟨y, hy, rfl⟩ := Finset.mem_map.mp hx + change τ y ∈ standardTargets + rw [hτ y hy] + exact hy + · intro hx + exact Finset.mem_map.mpr ⟨x, hx, hτ x hx⟩ + +/-- Every octagon incidence system is isomorphic to one with canonical row zero. -/ +theorem exists_normalized_relabel (Q : OctagonIncidence) : + ∃ e : Vertex ≃ Vertex, (Q.relabel e).Normalized := by + obtain ⟨e, he0, hmap⟩ := + exists_perm_fix_zero_map (Q.targets 0) (Q.card_targets 0) (Q.centre_not_mem 0) + have hesymm : e.symm 0 = 0 := by + apply e.injective + simp [he0] + refine ⟨e, ?_⟩ + simpa [Normalized, relabel, hesymm] using hmap + +end OctagonIncidence + +/-- Relabel a planar configuration contragrediently with its incidence system. -/ +def relabelPoints (p : Vertex → Plane) (e : Vertex ≃ Vertex) : Vertex → Plane := + p ∘ e.symm + +/-- Equal-distance realisability is invariant under simultaneous relabelling. -/ +theorem realises_relabel + {p : Vertex → Plane} {Q : OctagonIncidence} (hR : Realises p Q) + (e : Vertex ≃ Vertex) : + Realises (relabelPoints p e) (Q.relabel e) := by + intro v + obtain ⟨r, hr⟩ := hR (e.symm v) + refine ⟨r, fun w hw => ?_⟩ + have hw' : e.symm w ∈ Q.targets (e.symm v) := by + simpa [OctagonIncidence.relabel] using hw + simpa [relabelPoints] using hr (e.symm w) hw' + +/-- Convex independence is invariant under relabelling. -/ +theorem convexIndependent_relabel + {p : Vertex → Plane} (hC : ConvexIndependent ℝ p) (e : Vertex ≃ Vertex) : + ConvexIndependent ℝ (relabelPoints p e) := by + simpa [relabelPoints] using hC.comp_embedding e.symm.toEmbedding + +/-- A failed convex octagon has a normalized balanced pair-sparse realisation. -/ +theorem normalized_reduction_of_all_hasFour + {p : Vertex → Plane} (hC : ConvexIndependent ℝ p) + (h : ∀ v, HasFourEquidistant p v) : + ∃ p' : Vertex → Plane, ∃ Q : OctagonIncidence, + ConvexIndependent ℝ p' ∧ Realises p' Q ∧ Q.Normalized ∧ + Q.PairSparse ∧ Q.Balanced := by + obtain ⟨Q, hR⟩ := incidence_of_all_hasFour h + obtain ⟨e, hN⟩ := Q.exists_normalized_relabel + let p' := relabelPoints p e + let Q' := Q.relabel e + have hC' : ConvexIndependent ℝ p' := convexIndependent_relabel hC e + have hR' : Realises p' Q' := realises_relabel hR e + have hS' : Q'.PairSparse := pairSparse_of_realises hC' Q' hR' + exact ⟨p', Q', hC', hR', hN, hS', Q'.balanced_of_pairSparse hS'⟩ + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra00.lean b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra00.lean new file mode 100644 index 00000000..5d3bb112 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra00.lean @@ -0,0 +1,99 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CayleyMenger +import LeanPool.Erdos97ConvexOctagon.ResidualRepresentatives + +/-! # Erdős 97 convex-octagon formalization: Residual Algebra00 -/ + +namespace Erdos97Octagon + +/-- Residual class 0 has no injective planar realisation. -/ +theorem residualRepresentative00_not_realises + {p : Vertex → Plane} (hp : Function.Injective p) : + ¬ Realises p residualRepresentative00 := by + intro hRealises + obtain ⟨radius, hpos, hdist⟩ := + exists_positive_radii hp residualRepresentative00 hRealises + have r01 : radius 0 = radius 1 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative00]) + have r02 : radius 0 = radius 2 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative00]) + have r15 : radius 1 = radius 5 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative00]) + have r34 : radius 3 = radius 4 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative00]) + have r37 : radius 3 = radius 7 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative00]) + have r46 : radius 4 = radius 6 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative00]) + have radius0 : radius 0 = radius 0 := rfl + have radius1 : radius 1 = radius 0 := (r01).symm + have radius2 : radius 2 = radius 0 := (r02).symm + have radius5 : radius 5 = radius 0 := ((r01).trans r15).symm + have radius3 : radius 3 = radius 3 := rfl + have radius4 : radius 4 = radius 3 := (r34).symm + have radius6 : radius 6 = radius 3 := ((r34).trans r46).symm + have radius7 : radius 7 = radius 3 := (r37).symm + let base : ℝ := radius 0 ^ 2 + have hbase : base ≠ 0 := by + dsimp [base] + exact pow_ne_zero 2 (ne_of_gt (hpos 0)) + let s1 : ℝ := radius 3 ^ 2 / base + have d01 : sqDist (p 0) (p 1) / base = 1 := by + rw [sqDist, hdist 0 1 (by decide), radius0] + exact div_self hbase + have d02 : sqDist (p 0) (p 2) / base = 1 := by + rw [sqDist, hdist 0 2 (by decide), radius0] + exact div_self hbase + have d03 : sqDist (p 0) (p 3) / base = 1 := by + rw [sqDist, hdist 0 3 (by decide), radius0] + exact div_self hbase + have d06 : sqDist (p 0) (p 6) / base = s1 := by + rw [sqDist, dist_comm, hdist 6 0 (by decide), radius6] + have d07 : sqDist (p 0) (p 7) / base = s1 := by + rw [sqDist, dist_comm, hdist 7 0 (by decide), radius7] + have d12 : sqDist (p 1) (p 2) / base = 1 := by + rw [sqDist, hdist 1 2 (by decide), radius1] + exact div_self hbase + have d13 : sqDist (p 1) (p 3) / base = 1 := by + rw [sqDist, hdist 1 3 (by decide), radius1] + exact div_self hbase + have d16 : sqDist (p 1) (p 6) / base = s1 := by + rw [sqDist, dist_comm, hdist 6 1 (by decide), radius6] + have d17 : sqDist (p 1) (p 7) / base = s1 := by + rw [sqDist, dist_comm, hdist 7 1 (by decide), radius7] + have d26 : sqDist (p 2) (p 6) / base = 1 := by + rw [sqDist, hdist 2 6 (by decide), radius2] + exact div_self hbase + have d37 : sqDist (p 3) (p 7) / base = s1 := by + rw [sqDist, hdist 3 7 (by decide), radius3] + have hcm0 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 6) hbase + rw [d01, d02, d06, d12, d16, d26] at hcm0 + have e0 : -2*s1 ^ 2 + 8*s1 - 2 = 0 := by + dsimp [cm4] at hcm0 + nlinarith only [hcm0] + have hcm1 := cm4_normalized_eq_zero + (p 0) (p 1) (p 3) (p 7) hbase + rw [d01, d03, d07, d13, d17, d37] at hcm1 + have e1 : 6*s1 - 2 = 0 := by + dsimp [cm4] at hcm1 + nlinarith only [hcm1] + have certificate : + (9/4 : ℝ) * (-2*s1 ^ 2 + 8*s1 - 2) + + (3/4*s1-11/4 : ℝ) * (6*s1 - 2) = 1 := by + ring + rw [e0, e1] at certificate + norm_num at certificate + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra01.lean b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra01.lean new file mode 100644 index 00000000..c9a81348 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra01.lean @@ -0,0 +1,97 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CayleyMenger +import LeanPool.Erdos97ConvexOctagon.ResidualRepresentatives + +/-! # Erdős 97 convex-octagon formalization: Residual Algebra01 -/ + +namespace Erdos97Octagon + +/-- Residual class 1 has no injective planar realisation. -/ +theorem residualRepresentative01_not_realises + {p : Vertex → Plane} (hp : Function.Injective p) : + ¬ Realises p residualRepresentative01 := by + intro hRealises + obtain ⟨radius, hpos, hdist⟩ := + exists_positive_radii hp residualRepresentative01 hRealises + have r01 : radius 0 = radius 1 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative01]) + have r02 : radius 0 = radius 2 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative01]) + have r34 : radius 3 = radius 4 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative01]) + have r57 : radius 5 = radius 7 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative01]) + have r76 : radius 7 = radius 6 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative01]) + have radius0 : radius 0 = radius 0 := rfl + have radius1 : radius 1 = radius 0 := (r01).symm + have radius2 : radius 2 = radius 0 := (r02).symm + have radius3 : radius 3 = radius 3 := rfl + have radius4 : radius 4 = radius 3 := (r34).symm + have radius5 : radius 5 = radius 5 := rfl + have radius6 : radius 6 = radius 5 := ((r57).trans r76).symm + have radius7 : radius 7 = radius 5 := (r57).symm + let base : ℝ := radius 0 ^ 2 + have hbase : base ≠ 0 := by + dsimp [base] + exact pow_ne_zero 2 (ne_of_gt (hpos 0)) + let s1 : ℝ := radius 3 ^ 2 / base + let s2 : ℝ := radius 5 ^ 2 / base + have d01 : sqDist (p 0) (p 1) / base = 1 := by + rw [sqDist, hdist 0 1 (by decide), radius0] + exact div_self hbase + have d02 : sqDist (p 0) (p 2) / base = 1 := by + rw [sqDist, hdist 0 2 (by decide), radius0] + exact div_self hbase + have d06 : sqDist (p 0) (p 6) / base = s2 := by + rw [sqDist, dist_comm, hdist 6 0 (by decide), radius6] + have d12 : sqDist (p 1) (p 2) / base = 1 := by + rw [sqDist, hdist 1 2 (by decide), radius1] + exact div_self hbase + have d15 : sqDist (p 1) (p 5) / base = 1 := by + rw [sqDist, hdist 1 5 (by decide), radius1] + exact div_self hbase + have d16 : sqDist (p 1) (p 6) / base = s2 := by + rw [sqDist, dist_comm, hdist 6 1 (by decide), radius6] + have d17 : sqDist (p 1) (p 7) / base = s2 := by + rw [sqDist, dist_comm, hdist 7 1 (by decide), radius7] + have d25 : sqDist (p 2) (p 5) / base = 1 := by + rw [sqDist, hdist 2 5 (by decide), radius2] + exact div_self hbase + have d26 : sqDist (p 2) (p 6) / base = 1 := by + rw [sqDist, hdist 2 6 (by decide), radius2] + exact div_self hbase + have d27 : sqDist (p 2) (p 7) / base = s2 := by + rw [sqDist, dist_comm, hdist 7 2 (by decide), radius7] + have d57 : sqDist (p 5) (p 7) / base = s2 := by + rw [sqDist, hdist 5 7 (by decide), radius5] + have hcm0 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 6) hbase + rw [d01, d02, d06, d12, d16, d26] at hcm0 + have e0 : -2*s2 ^ 2 + 8*s2 - 2 = 0 := by + dsimp [cm4] at hcm0 + nlinarith only [hcm0] + have hcm1 := cm4_normalized_eq_zero + (p 1) (p 2) (p 5) (p 7) hbase + rw [d12, d15, d17, d25, d27, d57] at hcm1 + have e1 : 6*s2 - 2 = 0 := by + dsimp [cm4] at hcm1 + nlinarith only [hcm1] + have certificate : + (9/4 : ℝ) * (-2*s2 ^ 2 + 8*s2 - 2) + + (3/4*s2-11/4 : ℝ) * (6*s2 - 2) = 1 := by + ring + rw [e0, e1] at certificate + norm_num at certificate + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra02.lean b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra02.lean new file mode 100644 index 00000000..79826f8e --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra02.lean @@ -0,0 +1,93 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CayleyMenger +import LeanPool.Erdos97ConvexOctagon.ResidualRepresentatives + +/-! # Erdős 97 convex-octagon formalization: Residual Algebra02 -/ + +namespace Erdos97Octagon + +/-- Residual class 2 has no injective planar realisation. -/ +theorem residualRepresentative02_not_realises + {p : Vertex → Plane} (hp : Function.Injective p) : + ¬ Realises p residualRepresentative02 := by + intro hRealises + obtain ⟨radius, hpos, hdist⟩ := + exists_positive_radii hp residualRepresentative02 hRealises + have r01 : radius 0 = radius 1 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative02]) + have r02 : radius 0 = radius 2 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative02]) + have r36 : radius 3 = radius 6 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative02]) + have r67 : radius 6 = radius 7 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative02]) + have r45 : radius 4 = radius 5 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative02]) + have radius0 : radius 0 = radius 0 := rfl + have radius1 : radius 1 = radius 0 := (r01).symm + have radius2 : radius 2 = radius 0 := (r02).symm + have radius3 : radius 3 = radius 3 := rfl + have radius6 : radius 6 = radius 3 := (r36).symm + have radius7 : radius 7 = radius 3 := ((r36).trans r67).symm + have radius4 : radius 4 = radius 4 := rfl + have radius5 : radius 5 = radius 4 := (r45).symm + let base : ℝ := radius 0 ^ 2 + have hbase : base ≠ 0 := by + dsimp [base] + exact pow_ne_zero 2 (ne_of_gt (hpos 0)) + let s1 : ℝ := radius 3 ^ 2 / base + let s2 : ℝ := radius 4 ^ 2 / base + have d01 : sqDist (p 0) (p 1) / base = 1 := by + rw [sqDist, hdist 0 1 (by decide), radius0] + exact div_self hbase + have d02 : sqDist (p 0) (p 2) / base = 1 := by + rw [sqDist, hdist 0 2 (by decide), radius0] + exact div_self hbase + have d04 : sqDist (p 0) (p 4) / base = 1 := by + rw [sqDist, hdist 0 4 (by decide), radius0] + exact div_self hbase + have d12 : sqDist (p 1) (p 2) / base = 1 := by + rw [sqDist, hdist 1 2 (by decide), radius1] + exact div_self hbase + have d14 : sqDist (p 1) (p 4) / base = s2 := by + rw [sqDist, dist_comm, hdist 4 1 (by decide), radius4] + have d15 : sqDist (p 1) (p 5) / base = 1 := by + rw [sqDist, hdist 1 5 (by decide), radius1] + exact div_self hbase + have d24 : sqDist (p 2) (p 4) / base = s2 := by + rw [sqDist, dist_comm, hdist 4 2 (by decide), radius4] + have d25 : sqDist (p 2) (p 5) / base = 1 := by + rw [sqDist, hdist 2 5 (by decide), radius2] + exact div_self hbase + have d45 : sqDist (p 4) (p 5) / base = s2 := by + rw [sqDist, hdist 4 5 (by decide), radius4] + have hcm0 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 4) hbase + rw [d01, d02, d04, d12, d14, d24] at hcm0 + have e0 : -2*s2 ^ 2 + 8*s2 - 2 = 0 := by + dsimp [cm4] at hcm0 + nlinarith only [hcm0] + have hcm1 := cm4_normalized_eq_zero + (p 1) (p 2) (p 4) (p 5) hbase + rw [d12, d14, d15, d24, d25, d45] at hcm1 + have e1 : 6*s2 - 2 = 0 := by + dsimp [cm4] at hcm1 + nlinarith only [hcm1] + have certificate : + (9/4 : ℝ) * (-2*s2 ^ 2 + 8*s2 - 2) + + (3/4*s2-11/4 : ℝ) * (6*s2 - 2) = 1 := by + ring + rw [e0, e1] at certificate + norm_num at certificate + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra03.lean b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra03.lean new file mode 100644 index 00000000..0c209d0e --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra03.lean @@ -0,0 +1,93 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CayleyMenger +import LeanPool.Erdos97ConvexOctagon.ResidualRepresentatives + +/-! # Erdős 97 convex-octagon formalization: Residual Algebra03 -/ + +namespace Erdos97Octagon + +/-- Residual class 3 has no injective planar realisation. -/ +theorem residualRepresentative03_not_realises + {p : Vertex → Plane} (hp : Function.Injective p) : + ¬ Realises p residualRepresentative03 := by + intro hRealises + obtain ⟨radius, hpos, hdist⟩ := + exists_positive_radii hp residualRepresentative03 hRealises + have r01 : radius 0 = radius 1 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative03]) + have r02 : radius 0 = radius 2 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative03]) + have r03 : radius 0 = radius 3 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative03]) + have r04 : radius 0 = radius 4 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative03]) + have r56 : radius 5 = radius 6 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative03]) + have r57 : radius 5 = radius 7 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative03]) + have radius0 : radius 0 = radius 0 := rfl + have radius1 : radius 1 = radius 0 := (r01).symm + have radius2 : radius 2 = radius 0 := (r02).symm + have radius3 : radius 3 = radius 0 := (r03).symm + have radius4 : radius 4 = radius 0 := (r04).symm + have radius5 : radius 5 = radius 5 := rfl + have radius6 : radius 6 = radius 5 := (r56).symm + have radius7 : radius 7 = radius 5 := (r57).symm + let base : ℝ := radius 0 ^ 2 + have hbase : base ≠ 0 := by + dsimp [base] + exact pow_ne_zero 2 (ne_of_gt (hpos 0)) + let s1 : ℝ := radius 5 ^ 2 / base + have d13 : sqDist (p 1) (p 3) / base = 1 := by + rw [sqDist, hdist 1 3 (by decide), radius1] + exact div_self hbase + have d15 : sqDist (p 1) (p 5) / base = 1 := by + rw [sqDist, hdist 1 5 (by decide), radius1] + exact div_self hbase + have d16 : sqDist (p 1) (p 6) / base = s1 := by + rw [sqDist, dist_comm, hdist 6 1 (by decide), radius6] + have d17 : sqDist (p 1) (p 7) / base = s1 := by + rw [sqDist, dist_comm, hdist 7 1 (by decide), radius7] + have d35 : sqDist (p 3) (p 5) / base = 1 := by + rw [sqDist, hdist 3 5 (by decide), radius3] + exact div_self hbase + have d36 : sqDist (p 3) (p 6) / base = s1 := by + rw [sqDist, dist_comm, hdist 6 3 (by decide), radius6] + have d37 : sqDist (p 3) (p 7) / base = 1 := by + rw [sqDist, hdist 3 7 (by decide), radius3] + exact div_self hbase + have d56 : sqDist (p 5) (p 6) / base = s1 := by + rw [sqDist, hdist 5 6 (by decide), radius5] + have d57 : sqDist (p 5) (p 7) / base = s1 := by + rw [sqDist, hdist 5 7 (by decide), radius5] + have hcm0 := cm4_normalized_eq_zero + (p 1) (p 3) (p 5) (p 7) hbase + rw [d13, d15, d17, d35, d37, d57] at hcm0 + have e0 : -2*s1 ^ 2 + 8*s1 - 2 = 0 := by + dsimp [cm4] at hcm0 + nlinarith only [hcm0] + have hcm1 := cm4_normalized_eq_zero + (p 1) (p 3) (p 5) (p 6) hbase + rw [d13, d15, d16, d35, d36, d56] at hcm1 + have e1 : 6*s1 - 2 = 0 := by + dsimp [cm4] at hcm1 + nlinarith only [hcm1] + have certificate : + (9/4 : ℝ) * (-2*s1 ^ 2 + 8*s1 - 2) + + (3/4*s1-11/4 : ℝ) * (6*s1 - 2) = 1 := by + ring + rw [e0, e1] at certificate + norm_num at certificate + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra04.lean b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra04.lean new file mode 100644 index 00000000..bf6b49d8 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra04.lean @@ -0,0 +1,145 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CayleyMenger +import LeanPool.Erdos97ConvexOctagon.ResidualRepresentatives + +/-! # Erdős 97 convex-octagon formalization: Residual Algebra04 -/ + +namespace Erdos97Octagon + +/-- Residual class 4 has no injective planar realisation. -/ +theorem residualRepresentative04_not_realises + {p : Vertex → Plane} (hp : Function.Injective p) : + ¬ Realises p residualRepresentative04 := by + intro hRealises + obtain ⟨radius, hpos, hdist⟩ := + exists_positive_radii hp residualRepresentative04 hRealises + have r01 : radius 0 = radius 1 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative04]) + have r02 : radius 0 = radius 2 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative04]) + have r34 : radius 3 = radius 4 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative04]) + have r56 : radius 5 = radius 6 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative04]) + have r57 : radius 5 = radius 7 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative04]) + have radius0 : radius 0 = radius 0 := rfl + have radius1 : radius 1 = radius 0 := (r01).symm + have radius2 : radius 2 = radius 0 := (r02).symm + have radius3 : radius 3 = radius 3 := rfl + have radius4 : radius 4 = radius 3 := (r34).symm + have radius5 : radius 5 = radius 5 := rfl + have radius6 : radius 6 = radius 5 := (r56).symm + have radius7 : radius 7 = radius 5 := (r57).symm + let base : ℝ := radius 0 ^ 2 + have hbase : base ≠ 0 := by + dsimp [base] + exact pow_ne_zero 2 (ne_of_gt (hpos 0)) + let s1 : ℝ := radius 3 ^ 2 / base + let s2 : ℝ := radius 5 ^ 2 / base + have d01 : sqDist (p 0) (p 1) / base = 1 := by + rw [sqDist, hdist 0 1 (by decide), radius0] + exact div_self hbase + have d02 : sqDist (p 0) (p 2) / base = 1 := by + rw [sqDist, hdist 0 2 (by decide), radius0] + exact div_self hbase + have d03 : sqDist (p 0) (p 3) / base = 1 := by + rw [sqDist, hdist 0 3 (by decide), radius0] + exact div_self hbase + have d04 : sqDist (p 0) (p 4) / base = 1 := by + rw [sqDist, hdist 0 4 (by decide), radius0] + exact div_self hbase + have d05 : sqDist (p 0) (p 5) / base = s2 := by + rw [sqDist, dist_comm, hdist 5 0 (by decide), radius5] + have d12 : sqDist (p 1) (p 2) / base = 1 := by + rw [sqDist, hdist 1 2 (by decide), radius1] + exact div_self hbase + have d13 : sqDist (p 1) (p 3) / base = 1 := by + rw [sqDist, hdist 1 3 (by decide), radius1] + exact div_self hbase + have d14 : sqDist (p 1) (p 4) / base = s1 := by + rw [sqDist, dist_comm, hdist 4 1 (by decide), radius4] + have d15 : sqDist (p 1) (p 5) / base = 1 := by + rw [sqDist, hdist 1 5 (by decide), radius1] + exact div_self hbase + have d17 : sqDist (p 1) (p 7) / base = s2 := by + rw [sqDist, dist_comm, hdist 7 1 (by decide), radius7] + have d23 : sqDist (p 2) (p 3) / base = s1 := by + rw [sqDist, dist_comm, hdist 3 2 (by decide), radius3] + have d24 : sqDist (p 2) (p 4) / base = 1 := by + rw [sqDist, hdist 2 4 (by decide), radius2] + exact div_self hbase + let w2_5 : ℝ := sqDist (p 2) (p 5) / base + have d25 : sqDist (p 2) (p 5) / base = w2_5 := rfl + have d34 : sqDist (p 3) (p 4) / base = s1 := by + rw [sqDist, hdist 3 4 (by decide), radius3] + have d35 : sqDist (p 3) (p 5) / base = s2 := by + rw [sqDist, dist_comm, hdist 5 3 (by decide), radius5] + have d45 : sqDist (p 4) (p 5) / base = s1 := by + rw [sqDist, hdist 4 5 (by decide), radius4] + have d47 : sqDist (p 4) (p 7) / base = s1 := by + rw [sqDist, hdist 4 7 (by decide), radius4] + have d57 : sqDist (p 5) (p 7) / base = s2 := by + rw [sqDist, hdist 5 7 (by decide), radius5] + have hcm0 := cm4_normalized_eq_zero + (p 0) (p 2) (p 4) (p 5) hbase + rw [d02, d04, d05, d24, d25, d45] at hcm0 + have e0 : + -2*s1 ^ 2 + 2*s1*s2 + 2*s1*w2_5 + 2*s1 - 2*s2 ^ 2 + + 2*s2*w2_5 + 2*s2 - 2*w2_5 ^ 2 + 2*w2_5 - 2 = 0 := by + dsimp [cm4] at hcm0 + nlinarith only [hcm0] + have hcm1 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 3) hbase + rw [d01, d02, d03, d12, d13, d23] at hcm1 + have e1 : -2*s1 ^ 2 + 6*s1 = 0 := by + dsimp [cm4] at hcm1 + nlinarith only [hcm1] + have hcm2 := cm4_normalized_eq_zero + (p 0) (p 1) (p 3) (p 4) hbase + rw [d01, d03, d04, d13, d14, d34] at hcm2 + have e2 : -2*s1 ^ 2 + 8*s1 - 2 = 0 := by + dsimp [cm4] at hcm2 + nlinarith only [hcm2] + have hcm3 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 5) hbase + rw [d01, d02, d05, d12, d15, d25] at hcm3 + have e3 : -2*s2 ^ 2 + 2*s2*w2_5 + 4*s2 - 2*w2_5 ^ 2 + 4*w2_5 - 2 = 0 := by + dsimp [cm4] at hcm3 + nlinarith only [hcm3] + have hcm4 := cm4_normalized_eq_zero + (p 0) (p 1) (p 3) (p 5) hbase + rw [d01, d03, d05, d13, d15, d35] at hcm4 + have e4 : -2*s2 ^ 2 + 8*s2 - 2 = 0 := by + dsimp [cm4] at hcm4 + nlinarith only [hcm4] + have hcm5 := cm4_normalized_eq_zero + (p 1) (p 4) (p 5) (p 7) hbase + rw [d14, d15, d17, d45, d47, d57] at hcm5 + have e5 : 8*s1*s2 - 2*s1 - 2*s2 ^ 2 = 0 := by + dsimp [cm4] at hcm5 + nlinarith only [hcm5] + have certificate : + (-1/4 : ℝ) * + (-2*s1 ^ 2 + 2*s1*s2 + 2*s1*w2_5 + 2*s1 - 2*s2 ^ 2 + + 2*s2*w2_5 + 2*s2 - 2*w2_5 ^ 2 + 2*w2_5 - 2) + + (-1/4*w2_5+11/16 : ℝ) * (-2*s1 ^ 2 + 6*s1) + + (1/4*w2_5-7/16 : ℝ) * (-2*s1 ^ 2 + 8*s1 - 2) + + (1/4 : ℝ) * (-2*s2 ^ 2 + 2*s2*w2_5 + 4*s2 - 2*w2_5 ^ 2 + 4*w2_5 - 2) + + (-1/16 : ℝ) * (-2*s2 ^ 2 + 8*s2 - 2) + + (1/16 : ℝ) * (8*s1*s2 - 2*s1 - 2*s2 ^ 2) = 1 := by + ring + rw [e0, e1, e2, e3, e4, e5] at certificate + norm_num at certificate + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra05.lean b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra05.lean new file mode 100644 index 00000000..2caec51b --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra05.lean @@ -0,0 +1,173 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CayleyMenger +import LeanPool.Erdos97ConvexOctagon.ResidualRepresentatives + +/-! # Erdős 97 convex-octagon formalization: Residual Algebra05 -/ + +namespace Erdos97Octagon + +/-- Residual class 5 has no injective planar realisation. -/ +theorem residualRepresentative05_not_realises + {p : Vertex → Plane} (hp : Function.Injective p) : + ¬ Realises p residualRepresentative05 := by + intro hRealises + obtain ⟨radius, hpos, hdist⟩ := + exists_positive_radii hp residualRepresentative05 hRealises + have r01 : radius 0 = radius 1 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative05]) + have r23 : radius 2 = radius 3 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative05]) + have r46 : radius 4 = radius 6 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative05]) + have r57 : radius 5 = radius 7 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative05]) + have radius0 : radius 0 = radius 0 := rfl + have radius1 : radius 1 = radius 0 := (r01).symm + have radius2 : radius 2 = radius 2 := rfl + have radius3 : radius 3 = radius 2 := (r23).symm + have radius4 : radius 4 = radius 4 := rfl + have radius6 : radius 6 = radius 4 := (r46).symm + have radius5 : radius 5 = radius 5 := rfl + have radius7 : radius 7 = radius 5 := (r57).symm + let base : ℝ := radius 0 ^ 2 + have hbase : base ≠ 0 := by + dsimp [base] + exact pow_ne_zero 2 (ne_of_gt (hpos 0)) + let s1 : ℝ := radius 2 ^ 2 / base + let s2 : ℝ := radius 4 ^ 2 / base + let s3 : ℝ := radius 5 ^ 2 / base + have d01 : sqDist (p 0) (p 1) / base = 1 := by + rw [sqDist, hdist 0 1 (by decide), radius0] + exact div_self hbase + have d02 : sqDist (p 0) (p 2) / base = 1 := by + rw [sqDist, hdist 0 2 (by decide), radius0] + exact div_self hbase + have d03 : sqDist (p 0) (p 3) / base = 1 := by + rw [sqDist, hdist 0 3 (by decide), radius0] + exact div_self hbase + have d04 : sqDist (p 0) (p 4) / base = 1 := by + rw [sqDist, hdist 0 4 (by decide), radius0] + exact div_self hbase + have d05 : sqDist (p 0) (p 5) / base = s3 := by + rw [sqDist, dist_comm, hdist 5 0 (by decide), radius5] + have d06 : sqDist (p 0) (p 6) / base = s2 := by + rw [sqDist, dist_comm, hdist 6 0 (by decide), radius6] + have d07 : sqDist (p 0) (p 7) / base = s3 := by + rw [sqDist, dist_comm, hdist 7 0 (by decide), radius7] + have d12 : sqDist (p 1) (p 2) / base = 1 := by + rw [sqDist, hdist 1 2 (by decide), radius1] + exact div_self hbase + have d13 : sqDist (p 1) (p 3) / base = s1 := by + rw [sqDist, dist_comm, hdist 3 1 (by decide), radius3] + have d14 : sqDist (p 1) (p 4) / base = s2 := by + rw [sqDist, dist_comm, hdist 4 1 (by decide), radius4] + have d15 : sqDist (p 1) (p 5) / base = 1 := by + rw [sqDist, hdist 1 5 (by decide), radius1] + exact div_self hbase + have d16 : sqDist (p 1) (p 6) / base = 1 := by + rw [sqDist, hdist 1 6 (by decide), radius1] + exact div_self hbase + have d17 : sqDist (p 1) (p 7) / base = s3 := by + rw [sqDist, dist_comm, hdist 7 1 (by decide), radius7] + have d23 : sqDist (p 2) (p 3) / base = s1 := by + rw [sqDist, hdist 2 3 (by decide), radius2] + have d24 : sqDist (p 2) (p 4) / base = s1 := by + rw [sqDist, hdist 2 4 (by decide), radius2] + have d25 : sqDist (p 2) (p 5) / base = s1 := by + rw [sqDist, hdist 2 5 (by decide), radius2] + have d26 : sqDist (p 2) (p 6) / base = s2 := by + rw [sqDist, dist_comm, hdist 6 2 (by decide), radius6] + have d27 : sqDist (p 2) (p 7) / base = s1 := by + rw [sqDist, hdist 2 7 (by decide), radius2] + have d34 : sqDist (p 3) (p 4) / base = s2 := by + rw [sqDist, dist_comm, hdist 4 3 (by decide), radius4] + have d36 : sqDist (p 3) (p 6) / base = s1 := by + rw [sqDist, hdist 3 6 (by decide), radius3] + have d45 : sqDist (p 4) (p 5) / base = s2 := by + rw [sqDist, hdist 4 5 (by decide), radius4] + have d46 : sqDist (p 4) (p 6) / base = s2 := by + rw [sqDist, hdist 4 6 (by decide), radius4] + have d47 : sqDist (p 4) (p 7) / base = s3 := by + rw [sqDist, dist_comm, hdist 7 4 (by decide), radius7] + have d57 : sqDist (p 5) (p 7) / base = s3 := by + rw [sqDist, hdist 5 7 (by decide), radius5] + have d67 : sqDist (p 6) (p 7) / base = s2 := by + rw [sqDist, hdist 6 7 (by decide), radius6] + have hcm0 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 4) hbase + rw [d01, d02, d04, d12, d14, d24] at hcm0 + have e0 : -2*s1 ^ 2 + 2*s1*s2 + 4*s1 - 2*s2 ^ 2 + 4*s2 - 2 = 0 := by + dsimp [cm4] at hcm0 + nlinarith only [hcm0] + have hcm1 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 5) hbase + rw [d01, d02, d05, d12, d15, d25] at hcm1 + have e1 : -2*s1 ^ 2 + 2*s1*s3 + 4*s1 - 2*s3 ^ 2 + 4*s3 - 2 = 0 := by + dsimp [cm4] at hcm1 + nlinarith only [hcm1] + have hcm2 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 7) hbase + rw [d01, d02, d07, d12, d17, d27] at hcm2 + have e2 : -2*s1 ^ 2 + 4*s1*s3 + 2*s1 - 2*s3 ^ 2 + 4*s3 - 2 = 0 := by + dsimp [cm4] at hcm2 + nlinarith only [hcm2] + have hcm3 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 3) hbase + rw [d01, d02, d03, d12, d13, d23] at hcm3 + have e3 : -2*s1 ^ 2 + 8*s1 - 2 = 0 := by + dsimp [cm4] at hcm3 + nlinarith only [hcm3] + have hcm4 := cm4_normalized_eq_zero + (p 1) (p 3) (p 4) (p 6) hbase + rw [d13, d14, d16, d34, d36, d46] at hcm4 + have e4 : -2*s1 ^ 2 + 8*s1*s2 - 2*s2 = 0 := by + dsimp [cm4] at hcm4 + nlinarith only [hcm4] + have hcm5 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 6) hbase + rw [d01, d02, d06, d12, d16, d26] at hcm5 + have e5 : -2*s2 ^ 2 + 8*s2 - 2 = 0 := by + dsimp [cm4] at hcm5 + nlinarith only [hcm5] + have hcm6 := cm4_normalized_eq_zero + (p 1) (p 4) (p 5) (p 7) hbase + rw [d14, d15, d17, d45, d47, d57] at hcm6 + have e6 : -2*s2 ^ 2 + 8*s2*s3 - 2*s3 = 0 := by + dsimp [cm4] at hcm6 + nlinarith only [hcm6] + have hcm7 := cm4_normalized_eq_zero + (p 0) (p 1) (p 5) (p 7) hbase + rw [d01, d05, d07, d15, d17, d57] at hcm7 + have e7 : -2*s3 ^ 3 + 8*s3 ^ 2 - 2*s3 = 0 := by + dsimp [cm4] at hcm7 + nlinarith only [hcm7] + have hcm8 := cm4_normalized_eq_zero + (p 0) (p 4) (p 6) (p 7) hbase + rw [d04, d06, d07, d46, d47, d67] at hcm8 + have e8 : 8*s2*s3 - 2*s2 - 2*s3 ^ 2 = 0 := by + dsimp [cm4] at hcm8 + nlinarith only [hcm8] + have certificate : + (-47*s3+9 : ℝ) * (-2*s1 ^ 2 + 2*s1*s2 + 4*s1 - 2*s2 ^ 2 + 4*s2 - 2) + + (94*s3-18 : ℝ) * (-2*s1 ^ 2 + 2*s1*s3 + 4*s1 - 2*s3 ^ 2 + 4*s3 - 2) + + (-47*s3+9 : ℝ) * (-2*s1 ^ 2 + 4*s1*s3 + 2*s1 - 2*s3 ^ 2 + 4*s3 - 2) + + (-47/4*s3+9/4 : ℝ) * (-2*s1 ^ 2 + 8*s1 - 2) + + (47/4*s3-9/4 : ℝ) * (-2*s1 ^ 2 + 8*s1*s2 - 2*s2) + + (187/12*s3-11/4 : ℝ) * (-2*s2 ^ 2 + 8*s2 - 2) + + (377/12*s3-25/4 : ℝ) * (-2*s2 ^ 2 + 8*s2*s3 - 2*s3) + + (-187/12 : ℝ) * (-2*s3 ^ 3 + 8*s3 ^ 2 - 2*s3) + + (-377/12*s3+37/4 : ℝ) * (8*s2*s3 - 2*s2 - 2*s3 ^ 2) = 1 := by + ring + rw [e0, e1, e2, e3, e4, e5, e6, e7, e8] at certificate + norm_num at certificate + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra06.lean b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra06.lean new file mode 100644 index 00000000..0bc2645e --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra06.lean @@ -0,0 +1,113 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CayleyMenger +import LeanPool.Erdos97ConvexOctagon.ResidualRepresentatives + +/-! # Erdős 97 convex-octagon formalization: Residual Algebra06 -/ + +namespace Erdos97Octagon + +/-- Residual class 6 has no injective planar realisation. -/ +theorem residualRepresentative06_not_realises + {p : Vertex → Plane} (hp : Function.Injective p) : + ¬ Realises p residualRepresentative06 := by + intro hRealises + obtain ⟨radius, hpos, hdist⟩ := + exists_positive_radii hp residualRepresentative06 hRealises + have r01 : radius 0 = radius 1 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative06]) + have r02 : radius 0 = radius 2 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative06]) + have r03 : radius 0 = radius 3 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative06]) + have r46 : radius 4 = radius 6 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative06]) + have r47 : radius 4 = radius 7 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative06]) + have r65 : radius 6 = radius 5 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative06]) + have radius0 : radius 0 = radius 0 := rfl + have radius1 : radius 1 = radius 0 := (r01).symm + have radius2 : radius 2 = radius 0 := (r02).symm + have radius3 : radius 3 = radius 0 := (r03).symm + have radius4 : radius 4 = radius 4 := rfl + have radius5 : radius 5 = radius 4 := ((r46).trans r65).symm + have radius6 : radius 6 = radius 4 := (r46).symm + have radius7 : radius 7 = radius 4 := (r47).symm + let base : ℝ := radius 0 ^ 2 + have hbase : base ≠ 0 := by + dsimp [base] + exact pow_ne_zero 2 (ne_of_gt (hpos 0)) + let s1 : ℝ := radius 4 ^ 2 / base + have d01 : sqDist (p 0) (p 1) / base = 1 := by + rw [sqDist, hdist 0 1 (by decide), radius0] + exact div_self hbase + have d02 : sqDist (p 0) (p 2) / base = 1 := by + rw [sqDist, hdist 0 2 (by decide), radius0] + exact div_self hbase + have d04 : sqDist (p 0) (p 4) / base = 1 := by + rw [sqDist, hdist 0 4 (by decide), radius0] + exact div_self hbase + have d05 : sqDist (p 0) (p 5) / base = s1 := by + rw [sqDist, dist_comm, hdist 5 0 (by decide), radius5] + have d12 : sqDist (p 1) (p 2) / base = 1 := by + rw [sqDist, hdist 1 2 (by decide), radius1] + exact div_self hbase + have d14 : sqDist (p 1) (p 4) / base = s1 := by + rw [sqDist, dist_comm, hdist 4 1 (by decide), radius4] + have d15 : sqDist (p 1) (p 5) / base = 1 := by + rw [sqDist, hdist 1 5 (by decide), radius1] + exact div_self hbase + have d24 : sqDist (p 2) (p 4) / base = 1 := by + rw [sqDist, hdist 2 4 (by decide), radius2] + exact div_self hbase + have d25 : sqDist (p 2) (p 5) / base = s1 := by + rw [sqDist, dist_comm, hdist 5 2 (by decide), radius5] + have d26 : sqDist (p 2) (p 6) / base = 1 := by + rw [sqDist, hdist 2 6 (by decide), radius2] + exact div_self hbase + have d27 : sqDist (p 2) (p 7) / base = s1 := by + rw [sqDist, dist_comm, hdist 7 2 (by decide), radius7] + have d56 : sqDist (p 5) (p 6) / base = s1 := by + rw [sqDist, hdist 5 6 (by decide), radius5] + have d57 : sqDist (p 5) (p 7) / base = s1 := by + rw [sqDist, hdist 5 7 (by decide), radius5] + have d67 : sqDist (p 6) (p 7) / base = s1 := by + rw [sqDist, hdist 6 7 (by decide), radius6] + have hcm0 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 4) hbase + rw [d01, d02, d04, d12, d14, d24] at hcm0 + have e0 : -2*s1 ^ 2 + 6*s1 = 0 := by + dsimp [cm4] at hcm0 + nlinarith only [hcm0] + have hcm1 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 5) hbase + rw [d01, d02, d05, d12, d15, d25] at hcm1 + have e1 : -2*s1 ^ 2 + 8*s1 - 2 = 0 := by + dsimp [cm4] at hcm1 + nlinarith only [hcm1] + have hcm2 := cm4_normalized_eq_zero + (p 2) (p 5) (p 6) (p 7) hbase + rw [d25, d26, d27, d56, d57, d67] at hcm2 + have e2 : 6*s1 ^ 2 - 2*s1 = 0 := by + dsimp [cm4] at hcm2 + nlinarith only [hcm2] + have certificate : + (11/16 : ℝ) * (-2*s1 ^ 2 + 6*s1) + + (-1/2 : ℝ) * (-2*s1 ^ 2 + 8*s1 - 2) + + (1/16 : ℝ) * (6*s1 ^ 2 - 2*s1) = 1 := by + ring + rw [e0, e1, e2] at certificate + norm_num at certificate + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra07.lean b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra07.lean new file mode 100644 index 00000000..3a15e839 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra07.lean @@ -0,0 +1,129 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CayleyMenger +import LeanPool.Erdos97ConvexOctagon.ResidualRepresentatives + +/-! # Erdős 97 convex-octagon formalization: Residual Algebra07 -/ + +namespace Erdos97Octagon + +/-- Residual class 7 has no injective planar realisation. -/ +theorem residualRepresentative07_not_realises + {p : Vertex → Plane} (hp : Function.Injective p) : + ¬ Realises p residualRepresentative07 := by + intro hRealises + obtain ⟨radius, hpos, hdist⟩ := + exists_positive_radii hp residualRepresentative07 hRealises + have r01 : radius 0 = radius 1 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative07]) + have r23 : radius 2 = radius 3 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative07]) + have r45 : radius 4 = radius 5 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative07]) + have r67 : radius 6 = radius 7 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative07]) + have radius0 : radius 0 = radius 0 := rfl + have radius1 : radius 1 = radius 0 := (r01).symm + have radius2 : radius 2 = radius 2 := rfl + have radius3 : radius 3 = radius 2 := (r23).symm + have radius4 : radius 4 = radius 4 := rfl + have radius5 : radius 5 = radius 4 := (r45).symm + have radius6 : radius 6 = radius 6 := rfl + have radius7 : radius 7 = radius 6 := (r67).symm + let base : ℝ := radius 0 ^ 2 + have hbase : base ≠ 0 := by + dsimp [base] + exact pow_ne_zero 2 (ne_of_gt (hpos 0)) + let s1 : ℝ := radius 2 ^ 2 / base + let s2 : ℝ := radius 4 ^ 2 / base + let s3 : ℝ := radius 6 ^ 2 / base + have d01 : sqDist (p 0) (p 1) / base = 1 := by + rw [sqDist, hdist 0 1 (by decide), radius0] + exact div_self hbase + have d02 : sqDist (p 0) (p 2) / base = 1 := by + rw [sqDist, hdist 0 2 (by decide), radius0] + exact div_self hbase + have d04 : sqDist (p 0) (p 4) / base = 1 := by + rw [sqDist, hdist 0 4 (by decide), radius0] + exact div_self hbase + have d05 : sqDist (p 0) (p 5) / base = s2 := by + rw [sqDist, dist_comm, hdist 5 0 (by decide), radius5] + have d06 : sqDist (p 0) (p 6) / base = s3 := by + rw [sqDist, dist_comm, hdist 6 0 (by decide), radius6] + have d07 : sqDist (p 0) (p 7) / base = s3 := by + rw [sqDist, dist_comm, hdist 7 0 (by decide), radius7] + have d12 : sqDist (p 1) (p 2) / base = 1 := by + rw [sqDist, hdist 1 2 (by decide), radius1] + exact div_self hbase + have d15 : sqDist (p 1) (p 5) / base = 1 := by + rw [sqDist, hdist 1 5 (by decide), radius1] + exact div_self hbase + have d16 : sqDist (p 1) (p 6) / base = s3 := by + rw [sqDist, dist_comm, hdist 6 1 (by decide), radius6] + have d17 : sqDist (p 1) (p 7) / base = s3 := by + rw [sqDist, dist_comm, hdist 7 1 (by decide), radius7] + have d25 : sqDist (p 2) (p 5) / base = s2 := by + rw [sqDist, dist_comm, hdist 5 2 (by decide), radius5] + have d45 : sqDist (p 4) (p 5) / base = s2 := by + rw [sqDist, hdist 4 5 (by decide), radius4] + have d46 : sqDist (p 4) (p 6) / base = s2 := by + rw [sqDist, hdist 4 6 (by decide), radius4] + have d47 : sqDist (p 4) (p 7) / base = s3 := by + rw [sqDist, dist_comm, hdist 7 4 (by decide), radius7] + have d56 : sqDist (p 5) (p 6) / base = s3 := by + rw [sqDist, dist_comm, hdist 6 5 (by decide), radius6] + have d57 : sqDist (p 5) (p 7) / base = s2 := by + rw [sqDist, hdist 5 7 (by decide), radius5] + have d67 : sqDist (p 6) (p 7) / base = s3 := by + rw [sqDist, hdist 6 7 (by decide), radius6] + have hcm0 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 5) hbase + rw [d01, d02, d05, d12, d15, d25] at hcm0 + have e0 : -2*s2 ^ 2 + 8*s2 - 2 = 0 := by + dsimp [cm4] at hcm0 + nlinarith only [hcm0] + have hcm1 := cm4_normalized_eq_zero + (p 0) (p 4) (p 6) (p 7) hbase + rw [d04, d06, d07, d46, d47, d67] at hcm1 + have e1 : -2*s2 ^ 2*s3 + 4*s2*s3 ^ 2 + 2*s2*s3 - 2*s3 ^ 3 + 4*s3 ^ 2 - 2*s3 = 0 := by + dsimp [cm4] at hcm1 + nlinarith only [hcm1] + have hcm2 := cm4_normalized_eq_zero + (p 0) (p 5) (p 6) (p 7) hbase + rw [d05, d06, d07, d56, d57, d67] at hcm2 + have e2 : -2*s2 ^ 2*s3 + 8*s2*s3 ^ 2 - 2*s3 ^ 3 = 0 := by + dsimp [cm4] at hcm2 + nlinarith only [hcm2] + have hcm3 := cm4_normalized_eq_zero + (p 0) (p 1) (p 6) (p 7) hbase + rw [d01, d06, d07, d16, d17, d67] at hcm3 + have e3 : 6*s3 ^ 2 - 2*s3 = 0 := by + dsimp [cm4] at hcm3 + nlinarith only [hcm3] + have hcm4 := cm4_normalized_eq_zero + (p 0) (p 4) (p 5) (p 7) hbase + rw [d04, d05, d07, d45, d47, d57] at hcm4 + have e4 : 8*s2*s3 - 2*s2 - 2*s3 ^ 2 = 0 := by + dsimp [cm4] at hcm4 + nlinarith only [hcm4] + have certificate : + (-1/2 : ℝ) * (-2*s2 ^ 2 + 8*s2 - 2) + + (-25/4 : ℝ) * + (-2*s2 ^ 2*s3 + 4*s2*s3 ^ 2 + 2*s2*s3 - 2*s3 ^ 3 + + 4*s3 ^ 2 - 2*s3) + + (33/4 : ℝ) * (-2*s2 ^ 2*s3 + 8*s2*s3 ^ 2 - 2*s3 ^ 3) + + (-37*s2+33/4*s3+25/4 : ℝ) * (6*s3 ^ 2 - 2*s3) + + (1/2*s2+91/4*s3-2 : ℝ) * (8*s2*s3 - 2*s2 - 2*s3 ^ 2) = 1 := by + ring + rw [e0, e1, e2, e3, e4] at certificate + norm_num at certificate + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra08.lean b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra08.lean new file mode 100644 index 00000000..df48db21 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra08.lean @@ -0,0 +1,101 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CayleyMenger +import LeanPool.Erdos97ConvexOctagon.ResidualRepresentatives + +/-! # Erdős 97 convex-octagon formalization: Residual Algebra08 -/ + +namespace Erdos97Octagon + +/-- Residual class 8 has no injective planar realisation. -/ +theorem residualRepresentative08_not_realises + {p : Vertex → Plane} (hp : Function.Injective p) : + ¬ Realises p residualRepresentative08 := by + intro hRealises + obtain ⟨radius, hpos, hdist⟩ := + exists_positive_radii hp residualRepresentative08 hRealises + have r01 : radius 0 = radius 1 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative08]) + have r04 : radius 0 = radius 4 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative08]) + have r15 : radius 1 = radius 5 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative08]) + have r23 : radius 2 = radius 3 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative08]) + have r67 : radius 6 = radius 7 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative08]) + have radius0 : radius 0 = radius 0 := rfl + have radius1 : radius 1 = radius 0 := (r01).symm + have radius4 : radius 4 = radius 0 := (r04).symm + have radius5 : radius 5 = radius 0 := ((r01).trans r15).symm + have radius2 : radius 2 = radius 2 := rfl + have radius3 : radius 3 = radius 2 := (r23).symm + have radius6 : radius 6 = radius 6 := rfl + have radius7 : radius 7 = radius 6 := (r67).symm + let base : ℝ := radius 0 ^ 2 + have hbase : base ≠ 0 := by + dsimp [base] + exact pow_ne_zero 2 (ne_of_gt (hpos 0)) + let s1 : ℝ := radius 2 ^ 2 / base + let s2 : ℝ := radius 6 ^ 2 / base + have d01 : sqDist (p 0) (p 1) / base = 1 := by + rw [sqDist, hdist 0 1 (by decide), radius0] + exact div_self hbase + have d02 : sqDist (p 0) (p 2) / base = 1 := by + rw [sqDist, hdist 0 2 (by decide), radius0] + exact div_self hbase + have d07 : sqDist (p 0) (p 7) / base = s2 := by + rw [sqDist, dist_comm, hdist 7 0 (by decide), radius7] + have d12 : sqDist (p 1) (p 2) / base = 1 := by + rw [sqDist, hdist 1 2 (by decide), radius1] + exact div_self hbase + have d17 : sqDist (p 1) (p 7) / base = s2 := by + rw [sqDist, dist_comm, hdist 7 1 (by decide), radius7] + have d27 : sqDist (p 2) (p 7) / base = s2 := by + rw [sqDist, dist_comm, hdist 7 2 (by decide), radius7] + have d45 : sqDist (p 4) (p 5) / base = 1 := by + rw [sqDist, hdist 4 5 (by decide), radius4] + exact div_self hbase + have d46 : sqDist (p 4) (p 6) / base = 1 := by + rw [sqDist, hdist 4 6 (by decide), radius4] + exact div_self hbase + have d47 : sqDist (p 4) (p 7) / base = 1 := by + rw [sqDist, hdist 4 7 (by decide), radius4] + exact div_self hbase + have d56 : sqDist (p 5) (p 6) / base = 1 := by + rw [sqDist, hdist 5 6 (by decide), radius5] + exact div_self hbase + have d57 : sqDist (p 5) (p 7) / base = 1 := by + rw [sqDist, hdist 5 7 (by decide), radius5] + exact div_self hbase + have d67 : sqDist (p 6) (p 7) / base = s2 := by + rw [sqDist, hdist 6 7 (by decide), radius6] + have hcm0 := cm4_normalized_eq_zero + (p 4) (p 5) (p 6) (p 7) hbase + rw [d45, d46, d47, d56, d57, d67] at hcm0 + have e0 : -2*s2 ^ 2 + 6*s2 = 0 := by + dsimp [cm4] at hcm0 + nlinarith only [hcm0] + have hcm1 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 7) hbase + rw [d01, d02, d07, d12, d17, d27] at hcm1 + have e1 : 6*s2 - 2 = 0 := by + dsimp [cm4] at hcm1 + nlinarith only [hcm1] + have certificate : + (9/16 : ℝ) * (-2*s2 ^ 2 + 6*s2) + + (3/16*s2-1/2 : ℝ) * (6*s2 - 2) = 1 := by + ring + rw [e0, e1] at certificate + norm_num at certificate + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra09.lean b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra09.lean new file mode 100644 index 00000000..067a9050 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra09.lean @@ -0,0 +1,94 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CayleyMenger +import LeanPool.Erdos97ConvexOctagon.ResidualRepresentatives + +/-! # Erdős 97 convex-octagon formalization: Residual Algebra09 -/ + +namespace Erdos97Octagon + +/-- Residual class 9 has no injective planar realisation. -/ +theorem residualRepresentative09_not_realises + {p : Vertex → Plane} (hp : Function.Injective p) : + ¬ Realises p residualRepresentative09 := by + intro hRealises + obtain ⟨radius, hpos, hdist⟩ := + exists_positive_radii hp residualRepresentative09 hRealises + have r01 : radius 0 = radius 1 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative09]) + have r04 : radius 0 = radius 4 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative09]) + have r15 : radius 1 = radius 5 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative09]) + have r23 : radius 2 = radius 3 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative09]) + have r26 : radius 2 = radius 6 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative09]) + have r37 : radius 3 = radius 7 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative09]) + have radius0 : radius 0 = radius 0 := rfl + have radius1 : radius 1 = radius 0 := (r01).symm + have radius4 : radius 4 = radius 0 := (r04).symm + have radius5 : radius 5 = radius 0 := ((r01).trans r15).symm + have radius2 : radius 2 = radius 2 := rfl + have radius3 : radius 3 = radius 2 := (r23).symm + have radius6 : radius 6 = radius 2 := (r26).symm + have radius7 : radius 7 = radius 2 := ((r23).trans r37).symm + let base : ℝ := radius 0 ^ 2 + have hbase : base ≠ 0 := by + dsimp [base] + exact pow_ne_zero 2 (ne_of_gt (hpos 0)) + let s1 : ℝ := radius 2 ^ 2 / base + have d01 : sqDist (p 0) (p 1) / base = 1 := by + rw [sqDist, hdist 0 1 (by decide), radius0] + exact div_self hbase + have d02 : sqDist (p 0) (p 2) / base = 1 := by + rw [sqDist, hdist 0 2 (by decide), radius0] + exact div_self hbase + have d03 : sqDist (p 0) (p 3) / base = 1 := by + rw [sqDist, hdist 0 3 (by decide), radius0] + exact div_self hbase + have d06 : sqDist (p 0) (p 6) / base = s1 := by + rw [sqDist, dist_comm, hdist 6 0 (by decide), radius6] + have d12 : sqDist (p 1) (p 2) / base = 1 := by + rw [sqDist, hdist 1 2 (by decide), radius1] + exact div_self hbase + have d13 : sqDist (p 1) (p 3) / base = 1 := by + rw [sqDist, hdist 1 3 (by decide), radius1] + exact div_self hbase + have d16 : sqDist (p 1) (p 6) / base = s1 := by + rw [sqDist, dist_comm, hdist 6 1 (by decide), radius6] + have d23 : sqDist (p 2) (p 3) / base = s1 := by + rw [sqDist, hdist 2 3 (by decide), radius2] + have d26 : sqDist (p 2) (p 6) / base = s1 := by + rw [sqDist, hdist 2 6 (by decide), radius2] + have hcm0 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 3) hbase + rw [d01, d02, d03, d12, d13, d23] at hcm0 + have e0 : -2*s1 ^ 2 + 6*s1 = 0 := by + dsimp [cm4] at hcm0 + nlinarith only [hcm0] + have hcm1 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 6) hbase + rw [d01, d02, d06, d12, d16, d26] at hcm1 + have e1 : 6*s1 - 2 = 0 := by + dsimp [cm4] at hcm1 + nlinarith only [hcm1] + have certificate : + (9/16 : ℝ) * (-2*s1 ^ 2 + 6*s1) + + (3/16*s1-1/2 : ℝ) * (6*s1 - 2) = 1 := by + ring + rw [e0, e1] at certificate + norm_num at certificate + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra10.lean b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra10.lean new file mode 100644 index 00000000..a3c1d356 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra10.lean @@ -0,0 +1,147 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CayleyMenger +import LeanPool.Erdos97ConvexOctagon.ResidualRepresentatives + +/-! # Erdős 97 convex-octagon formalization: Residual Algebra10 -/ + +namespace Erdos97Octagon + +/-- Residual class 10 has no injective planar realisation. -/ +theorem residualRepresentative10_not_realises + {p : Vertex → Plane} (hp : Function.Injective p) : + ¬ Realises p residualRepresentative10 := by + intro hRealises + obtain ⟨radius, hpos, hdist⟩ := + exists_positive_radii hp residualRepresentative10 hRealises + have r01 : radius 0 = radius 1 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative10]) + have r23 : radius 2 = radius 3 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative10]) + have r45 : radius 4 = radius 5 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative10]) + have r67 : radius 6 = radius 7 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative10]) + have radius0 : radius 0 = radius 0 := rfl + have radius1 : radius 1 = radius 0 := (r01).symm + have radius2 : radius 2 = radius 2 := rfl + have radius3 : radius 3 = radius 2 := (r23).symm + have radius4 : radius 4 = radius 4 := rfl + have radius5 : radius 5 = radius 4 := (r45).symm + have radius6 : radius 6 = radius 6 := rfl + have radius7 : radius 7 = radius 6 := (r67).symm + let base : ℝ := radius 0 ^ 2 + have hbase : base ≠ 0 := by + dsimp [base] + exact pow_ne_zero 2 (ne_of_gt (hpos 0)) + let s1 : ℝ := radius 2 ^ 2 / base + let s2 : ℝ := radius 4 ^ 2 / base + let s3 : ℝ := radius 6 ^ 2 / base + have d01 : sqDist (p 0) (p 1) / base = 1 := by + rw [sqDist, hdist 0 1 (by decide), radius0] + exact div_self hbase + have d02 : sqDist (p 0) (p 2) / base = 1 := by + rw [sqDist, hdist 0 2 (by decide), radius0] + exact div_self hbase + have d03 : sqDist (p 0) (p 3) / base = 1 := by + rw [sqDist, hdist 0 3 (by decide), radius0] + exact div_self hbase + have d04 : sqDist (p 0) (p 4) / base = 1 := by + rw [sqDist, hdist 0 4 (by decide), radius0] + exact div_self hbase + have d05 : sqDist (p 0) (p 5) / base = s2 := by + rw [sqDist, dist_comm, hdist 5 0 (by decide), radius5] + have d06 : sqDist (p 0) (p 6) / base = s3 := by + rw [sqDist, dist_comm, hdist 6 0 (by decide), radius6] + have d07 : sqDist (p 0) (p 7) / base = s3 := by + rw [sqDist, dist_comm, hdist 7 0 (by decide), radius7] + have d12 : sqDist (p 1) (p 2) / base = 1 := by + rw [sqDist, hdist 1 2 (by decide), radius1] + exact div_self hbase + have d13 : sqDist (p 1) (p 3) / base = 1 := by + rw [sqDist, hdist 1 3 (by decide), radius1] + exact div_self hbase + have d14 : sqDist (p 1) (p 4) / base = s2 := by + rw [sqDist, dist_comm, hdist 4 1 (by decide), radius4] + have d16 : sqDist (p 1) (p 6) / base = s3 := by + rw [sqDist, dist_comm, hdist 6 1 (by decide), radius6] + have d17 : sqDist (p 1) (p 7) / base = s3 := by + rw [sqDist, dist_comm, hdist 7 1 (by decide), radius7] + have d23 : sqDist (p 2) (p 3) / base = s1 := by + rw [sqDist, hdist 2 3 (by decide), radius2] + have d24 : sqDist (p 2) (p 4) / base = s1 := by + rw [sqDist, hdist 2 4 (by decide), radius2] + have d26 : sqDist (p 2) (p 6) / base = s1 := by + rw [sqDist, hdist 2 6 (by decide), radius2] + have d27 : sqDist (p 2) (p 7) / base = s3 := by + rw [sqDist, dist_comm, hdist 7 2 (by decide), radius7] + have d45 : sqDist (p 4) (p 5) / base = s2 := by + rw [sqDist, hdist 4 5 (by decide), radius4] + have d46 : sqDist (p 4) (p 6) / base = s2 := by + rw [sqDist, hdist 4 6 (by decide), radius4] + have d47 : sqDist (p 4) (p 7) / base = s2 := by + rw [sqDist, hdist 4 7 (by decide), radius4] + have d56 : sqDist (p 5) (p 6) / base = s2 := by + rw [sqDist, hdist 5 6 (by decide), radius5] + have d57 : sqDist (p 5) (p 7) / base = s2 := by + rw [sqDist, hdist 5 7 (by decide), radius5] + have d67 : sqDist (p 6) (p 7) / base = s3 := by + rw [sqDist, hdist 6 7 (by decide), radius6] + have hcm0 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 4) hbase + rw [d01, d02, d04, d12, d14, d24] at hcm0 + have e0 : -2*s1 ^ 2 + 2*s1*s2 + 4*s1 - 2*s2 ^ 2 + 4*s2 - 2 = 0 := by + dsimp [cm4] at hcm0 + nlinarith only [hcm0] + have hcm1 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 6) hbase + rw [d01, d02, d06, d12, d16, d26] at hcm1 + have e1 : -2*s1 ^ 2 + 4*s1*s3 + 2*s1 - 2*s3 ^ 2 + 4*s3 - 2 = 0 := by + dsimp [cm4] at hcm1 + nlinarith only [hcm1] + have hcm2 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 3) hbase + rw [d01, d02, d03, d12, d13, d23] at hcm2 + have e2 : -2*s1 ^ 2 + 6*s1 = 0 := by + dsimp [cm4] at hcm2 + nlinarith only [hcm2] + have hcm3 := cm4_normalized_eq_zero + (p 4) (p 5) (p 6) (p 7) hbase + rw [d45, d46, d47, d56, d57, d67] at hcm3 + have e3 : 6*s2 ^ 2*s3 - 2*s2*s3 ^ 2 = 0 := by + dsimp [cm4] at hcm3 + nlinarith only [hcm3] + have hcm4 := cm4_normalized_eq_zero + (p 0) (p 5) (p 6) (p 7) hbase + rw [d05, d06, d07, d56, d57, d67] at hcm4 + have e4 : 6*s2*s3 ^ 2 - 2*s3 ^ 3 = 0 := by + dsimp [cm4] at hcm4 + nlinarith only [hcm4] + have hcm5 := cm4_normalized_eq_zero + (p 0) (p 1) (p 2) (p 7) hbase + rw [d01, d02, d07, d12, d17, d27] at hcm5 + have e5 : 6*s3 - 2 = 0 := by + dsimp [cm4] at hcm5 + nlinarith only [hcm5] + have certificate : + (-81/80 : ℝ) * (-2*s1 ^ 2 + 2*s1*s2 + 4*s1 - 2*s2 ^ 2 + 4*s2 - 2) + + (-243/320*s2+243/320 : ℝ) * (-2*s1 ^ 2 + 4*s1*s3 + 2*s1 - 2*s3 ^ 2 + 4*s3 - 2) + + (243/320*s2+81/320 : ℝ) * (-2*s1 ^ 2 + 6*s1) + + (-81/80 : ℝ) * (6*s2 ^ 2*s3 - 2*s2*s3 ^ 2) + + (189/40 : ℝ) * (6*s2*s3 ^ 2 - 2*s3 ^ 3) + + (81/160*s1*s2-81/160*s1+81/80*s2 ^ 2-1701/320*s2*s3-81/64*s2+ + 63/40*s3 ^ 2+249/320*s3-79/320 : ℝ) * + (6*s3 - 2) = 1 := by + ring + rw [e0, e1, e2, e3, e4, e5] at certificate + norm_num at certificate + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra11.lean b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra11.lean new file mode 100644 index 00000000..f49ac0fe --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra11.lean @@ -0,0 +1,555 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CayleyMenger +import LeanPool.Erdos97ConvexOctagon.ResidualRepresentatives +import Mathlib.Analysis.Convex.Combination + +/-! # The final residual incidence class + +The metric constraints of residual class 11 determine a normalized quadratic +parameter. Each of its two possible ranges puts a labelled vertex in the +convex hull of four other vertices. +-/ + +namespace Erdos97Octagon + +open scoped InnerProductSpace + +private structure Residual11Distances (p : Vertex → Plane) where + base : ℝ + s : ℝ + w05 : ℝ + w13 : ℝ + w27 : ℝ + w46 : ℝ + hbase : base ≠ 0 + hbase_pos : 0 < base + hs : 0 < s + d01 : sqDist (p 0) (p 1) / base = 1 + d02 : sqDist (p 0) (p 2) / base = 1 + d03 : sqDist (p 0) (p 3) / base = 1 + d04 : sqDist (p 0) (p 4) / base = 1 + d05 : sqDist (p 0) (p 5) / base = w05 + d06 : sqDist (p 0) (p 6) / base = s + d07 : sqDist (p 0) (p 7) / base = s + d12 : sqDist (p 1) (p 2) / base = 1 + d13 : sqDist (p 1) (p 3) / base = w13 + d14 : sqDist (p 1) (p 4) / base = s + d15 : sqDist (p 1) (p 5) / base = 1 + d16 : sqDist (p 1) (p 6) / base = 1 + d17 : sqDist (p 1) (p 7) / base = s + d23 : sqDist (p 2) (p 3) / base = s + d24 : sqDist (p 2) (p 4) / base = s + d25 : sqDist (p 2) (p 5) / base = s + d26 : sqDist (p 2) (p 6) / base = s + d27 : sqDist (p 2) (p 7) / base = w27 + d34 : sqDist (p 3) (p 4) / base = 1 + d35 : sqDist (p 3) (p 5) / base = 1 + d36 : sqDist (p 3) (p 6) / base = s + d37 : sqDist (p 3) (p 7) / base = 1 + d45 : sqDist (p 4) (p 5) / base = s + d46 : sqDist (p 4) (p 6) / base = w46 + d47 : sqDist (p 4) (p 7) / base = s + d56 : sqDist (p 5) (p 6) / base = 1 + d57 : sqDist (p 5) (p 7) / base = 1 + d67 : sqDist (p 6) (p 7) / base = s + +private noncomputable def residual11_distances + {p : Vertex → Plane} (hC : ConvexIndependent ℝ p) + (hRealises : Realises p residualRepresentative11) : + Residual11Distances p := by + classical + let radius := Classical.choose + (exists_positive_radii hC.injective residualRepresentative11 hRealises) + have hradius := Classical.choose_spec + (exists_positive_radii hC.injective residualRepresentative11 hRealises) + have hpos : ∀ v : Vertex, 0 < radius v := by + simpa [radius] using hradius.1 + have hdist : + ∀ v w : Vertex, w ∈ residualRepresentative11.targets v → + dist (p v) (p w) = radius v := by + simpa [radius] using hradius.2 + have r01 : radius 0 = radius 1 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative11]) + have r03 : radius 0 = radius 3 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative11]) + have r15 : radius 1 = radius 5 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative11]) + have r24 : radius 2 = radius 4 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative11]) + have r26 : radius 2 = radius 6 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative11]) + have r47 : radius 4 = radius 7 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative11]) + have radius0 : radius 0 = radius 0 := rfl + have radius1 : radius 1 = radius 0 := r01.symm + have radius2 : radius 2 = radius 2 := rfl + have radius3 : radius 3 = radius 0 := r03.symm + have radius4 : radius 4 = radius 2 := r24.symm + have radius5 : radius 5 = radius 0 := (r01.trans r15).symm + have radius6 : radius 6 = radius 2 := r26.symm + have radius7 : radius 7 = radius 2 := (r24.trans r47).symm + let base : ℝ := radius 0 ^ 2 + have hbase : base ≠ 0 := by + dsimp [base] + exact pow_ne_zero 2 (ne_of_gt (hpos 0)) + have hbase_pos : 0 < base := by + dsimp [base] + positivity + let s : ℝ := radius 2 ^ 2 / base + have hs : 0 < s := by + dsimp [s] + exact div_pos (pow_pos (hpos 2) 2) hbase_pos + let w05 : ℝ := sqDist (p 0) (p 5) / base + let w13 : ℝ := sqDist (p 1) (p 3) / base + let w27 : ℝ := sqDist (p 2) (p 7) / base + let w46 : ℝ := sqDist (p 4) (p 6) / base + have d01 : sqDist (p 0) (p 1) / base = 1 := by + rw [sqDist, hdist 0 1 (by decide), radius0] + exact div_self hbase + have d02 : sqDist (p 0) (p 2) / base = 1 := by + rw [sqDist, hdist 0 2 (by decide), radius0] + exact div_self hbase + have d03 : sqDist (p 0) (p 3) / base = 1 := by + rw [sqDist, hdist 0 3 (by decide), radius0] + exact div_self hbase + have d04 : sqDist (p 0) (p 4) / base = 1 := by + rw [sqDist, hdist 0 4 (by decide), radius0] + exact div_self hbase + have d05 : sqDist (p 0) (p 5) / base = w05 := rfl + have d06 : sqDist (p 0) (p 6) / base = s := by + rw [sqDist, dist_comm, hdist 6 0 (by decide), radius6] + have d07 : sqDist (p 0) (p 7) / base = s := by + rw [sqDist, dist_comm, hdist 7 0 (by decide), radius7] + have d12 : sqDist (p 1) (p 2) / base = 1 := by + rw [sqDist, hdist 1 2 (by decide), radius1] + exact div_self hbase + have d13 : sqDist (p 1) (p 3) / base = w13 := rfl + have d14 : sqDist (p 1) (p 4) / base = s := by + rw [sqDist, dist_comm, hdist 4 1 (by decide), radius4] + have d15 : sqDist (p 1) (p 5) / base = 1 := by + rw [sqDist, hdist 1 5 (by decide), radius1] + exact div_self hbase + have d16 : sqDist (p 1) (p 6) / base = 1 := by + rw [sqDist, hdist 1 6 (by decide), radius1] + exact div_self hbase + have d17 : sqDist (p 1) (p 7) / base = s := by + rw [sqDist, dist_comm, hdist 7 1 (by decide), radius7] + have d23 : sqDist (p 2) (p 3) / base = s := by + rw [sqDist, hdist 2 3 (by decide), radius2] + have d24 : sqDist (p 2) (p 4) / base = s := by + rw [sqDist, hdist 2 4 (by decide), radius2] + have d25 : sqDist (p 2) (p 5) / base = s := by + rw [sqDist, hdist 2 5 (by decide), radius2] + have d26 : sqDist (p 2) (p 6) / base = s := by + rw [sqDist, hdist 2 6 (by decide), radius2] + have d27 : sqDist (p 2) (p 7) / base = w27 := rfl + have d34 : sqDist (p 3) (p 4) / base = 1 := by + rw [sqDist, hdist 3 4 (by decide), radius3] + exact div_self hbase + have d35 : sqDist (p 3) (p 5) / base = 1 := by + rw [sqDist, hdist 3 5 (by decide), radius3] + exact div_self hbase + have d36 : sqDist (p 3) (p 6) / base = s := by + rw [sqDist, dist_comm, hdist 6 3 (by decide), radius6] + have d37 : sqDist (p 3) (p 7) / base = 1 := by + rw [sqDist, hdist 3 7 (by decide), radius3] + exact div_self hbase + have d45 : sqDist (p 4) (p 5) / base = s := by + rw [sqDist, hdist 4 5 (by decide), radius4] + have d46 : sqDist (p 4) (p 6) / base = w46 := rfl + have d47 : sqDist (p 4) (p 7) / base = s := by + rw [sqDist, hdist 4 7 (by decide), radius4] + have d56 : sqDist (p 5) (p 6) / base = 1 := by + rw [sqDist, hdist 5 6 (by decide), radius5] + exact div_self hbase + have d57 : sqDist (p 5) (p 7) / base = 1 := by + rw [sqDist, hdist 5 7 (by decide), radius5] + exact div_self hbase + have d67 : sqDist (p 6) (p 7) / base = s := by + rw [sqDist, hdist 6 7 (by decide), radius6] + exact { + base, s, w05, w13, w27, w46, hbase, hbase_pos, hs, + d01, d02, d03, d04, d05, d06, d07, d12, d13, d14, d15, + d16, d17, d23, d24, d25, d26, d27, d34, d35, d36, d37, + d45, d46, d47, d56, d57, d67 + } + +private structure Residual11Normalized (p : Vertex → Plane) where + base : ℝ + s : ℝ + hbase : base ≠ 0 + hbase_pos : 0 < base + hs : 0 < s + hs_ne_two : s ≠ 2 + eS : s ^ 2 - 4 * s + 1 = 0 + d01 : sqDist (p 0) (p 1) / base = 1 + d02 : sqDist (p 0) (p 2) / base = 1 + d03 : sqDist (p 0) (p 3) / base = 1 + d04 : sqDist (p 0) (p 4) / base = 1 + d05 : sqDist (p 0) (p 5) / base = 2 + d06 : sqDist (p 0) (p 6) / base = s + d07 : sqDist (p 0) (p 7) / base = s + d12 : sqDist (p 1) (p 2) / base = 1 + d13 : sqDist (p 1) (p 3) / base = 2 + d15 : sqDist (p 1) (p 5) / base = 1 + d23 : sqDist (p 2) (p 3) / base = s + d24 : sqDist (p 2) (p 4) / base = s + d25 : sqDist (p 2) (p 5) / base = s + d26 : sqDist (p 2) (p 6) / base = s + d27 : sqDist (p 2) (p 7) / base = 2 * s + d35 : sqDist (p 3) (p 5) / base = 1 + d46 : sqDist (p 4) (p 6) / base = 2 * s + d47 : sqDist (p 4) (p 7) / base = s + d67 : sqDist (p 6) (p 7) / base = s + +private def Residual11Distances.normalize + {p : Vertex → Plane} (D : Residual11Distances p) : + Residual11Normalized p := by + have hcmS := cm4_normalized_eq_zero (p 0) (p 1) (p 2) (p 4) D.hbase + rw [D.d01, D.d02, D.d04, D.d12, D.d14, D.d24] at hcmS + have eS : D.s ^ 2 - 4 * D.s + 1 = 0 := by + dsimp [cm4] at hcmS + nlinarith only [hcmS] + have hcm05a := cm4_normalized_eq_zero (p 0) (p 1) (p 2) (p 5) D.hbase + rw [D.d01, D.d02, D.d05, D.d12, D.d15, D.d25] at hcm05a + have e05a : + D.s ^ 2 - D.s * D.w05 - 2 * D.s + D.w05 ^ 2 - 2 * D.w05 + 1 = 0 := by + dsimp [cm4] at hcm05a + nlinarith only [hcm05a] + have hcm05b := cm4_normalized_eq_zero (p 0) (p 1) (p 4) (p 5) D.hbase + rw [D.d01, D.d04, D.d05, D.d14, D.d15, D.d45] at hcm05b + have e05b : D.s ^ 2 + D.s * D.w05 ^ 2 - 3 * D.s * D.w05 - 2 * D.s + 1 = 0 := by + dsimp [cm4] at hcm05b + nlinarith only [hcm05b] + have hcm13a := cm4_normalized_eq_zero (p 0) (p 1) (p 2) (p 3) D.hbase + rw [D.d01, D.d02, D.d03, D.d12, D.d13, D.d23] at hcm13a + have e13a : + D.s ^ 2 - D.s * D.w13 - 2 * D.s + D.w13 ^ 2 - 2 * D.w13 + 1 = 0 := by + dsimp [cm4] at hcm13a + nlinarith only [hcm13a] + have hcm13b := cm4_normalized_eq_zero (p 0) (p 1) (p 3) (p 6) D.hbase + rw [D.d01, D.d03, D.d06, D.d13, D.d16, D.d36] at hcm13b + have e13b : D.s ^ 2 + D.s * D.w13 ^ 2 - 3 * D.s * D.w13 - 2 * D.s + 1 = 0 := by + dsimp [cm4] at hcm13b + nlinarith only [hcm13b] + have hcm27a := cm4_normalized_eq_zero (p 0) (p 1) (p 2) (p 7) D.hbase + rw [D.d01, D.d02, D.d07, D.d12, D.d17, D.d27] at hcm27a + have e27a : + D.s ^ 2 - 2 * D.s * D.w27 - 2 * D.s + D.w27 ^ 2 - D.w27 + 1 = 0 := by + dsimp [cm4] at hcm27a + nlinarith only [hcm27a] + have hcm27b := cm4_normalized_eq_zero (p 0) (p 2) (p 4) (p 7) D.hbase + rw [D.d02, D.d04, D.d07, D.d24, D.d27, D.d47] at hcm27b + have e27b : D.s ^ 3 - 2 * D.s ^ 2 - 3 * D.s * D.w27 + D.s + D.w27 ^ 2 = 0 := by + dsimp [cm4] at hcm27b + nlinarith only [hcm27b] + have hcm46a := cm4_normalized_eq_zero (p 0) (p 3) (p 4) (p 6) D.hbase + rw [D.d03, D.d04, D.d06, D.d34, D.d36, D.d46] at hcm46a + have e46a : + D.s ^ 2 - 2 * D.s * D.w46 - 2 * D.s + D.w46 ^ 2 - D.w46 + 1 = 0 := by + dsimp [cm4] at hcm46a + nlinarith only [hcm46a] + have hcm46b := cm4_normalized_eq_zero (p 0) (p 2) (p 4) (p 6) D.hbase + rw [D.d02, D.d04, D.d06, D.d24, D.d26, D.d46] at hcm46b + have e46b : D.s ^ 3 - 2 * D.s ^ 2 - 3 * D.s * D.w46 + D.s + D.w46 ^ 2 = 0 := by + dsimp [cm4] at hcm46b + nlinarith only [hcm46b] + have w05_eq : D.w05 = 2 := by + have factor : (D.w05 - 1) * (D.w05 - 2) = 0 := by + nlinarith only [eS, e05b] + rcases mul_eq_zero.mp factor with h | h + · have hw : D.w05 = 1 := by linarith only [h] + rw [hw] at e05a + nlinarith only [eS, e05a] + · linarith only [h] + have w13_eq : D.w13 = 2 := by + have factor : (D.w13 - 1) * (D.w13 - 2) = 0 := by + nlinarith only [eS, e13b] + rcases mul_eq_zero.mp factor with h | h + · have hw : D.w13 = 1 := by linarith only [h] + rw [hw] at e13a + nlinarith only [eS, e13a] + · linarith only [h] + have es3 : D.s ^ 3 = 15 * D.s - 4 := by + nlinarith only [eS] + have w27_eq : D.w27 = 2 * D.s := by + have factor : (D.w27 - 1) * (D.w27 - 2 * D.s) = 0 := by + nlinarith only [eS, e27a] + rcases mul_eq_zero.mp factor with h | h + · have hw : D.w27 = 1 := by linarith only [h] + rw [hw] at e27b + nlinarith only [eS, e27b, es3] + · linarith only [h] + have w46_eq : D.w46 = 2 * D.s := by + have factor : (D.w46 - 1) * (D.w46 - 2 * D.s) = 0 := by + nlinarith only [eS, e46a] + rcases mul_eq_zero.mp factor with h | h + · have hw : D.w46 = 1 := by linarith only [h] + rw [hw] at e46b + nlinarith only [eS, e46b, es3] + · linarith only [h] + have hs_ne_two : D.s ≠ 2 := by + intro hs2 + rw [hs2] at eS + norm_num at eS + exact { + base := D.base, s := D.s, hbase := D.hbase, hbase_pos := D.hbase_pos, + hs := D.hs, hs_ne_two, eS, d01 := D.d01, d02 := D.d02, d03 := D.d03, + d04 := D.d04, d05 := D.d05.trans w05_eq, d06 := D.d06, d07 := D.d07, + d12 := D.d12, d13 := D.d13.trans w13_eq, d15 := D.d15, d23 := D.d23, + d24 := D.d24, d25 := D.d25, d26 := D.d26, d27 := D.d27.trans w27_eq, + d35 := D.d35, d46 := D.d46.trans w46_eq, d47 := D.d47, d67 := D.d67 + } + +private lemma scaled_of_div_eq + {p : Vertex → Plane} {base x : ℝ} {i j : Vertex} + (hbase : base ≠ 0) (h : sqDist (p i) (p j) / base = x) : + sqDist (p i) (p j) = x * base := + (div_eq_iff hbase).mp h + +private lemma inner_scaled + {p : Vertex → Plane} {base : ℝ} (o x y : Vertex) (A B C : ℝ) + (hox : sqDist (p o) (p x) = A * base) + (hoy : sqDist (p o) (p y) = B * base) + (hxy : sqDist (p x) (p y) = C * base) : + ⟪p x - p o, p y - p o⟫_ℝ = (A + B - C) * base / 2 := by + rw [inner_sub_sub_eq, hox, hoy, hxy] + ring + +private lemma self_scaled + {p : Vertex → Plane} {base : ℝ} (o x : Vertex) (A : ℝ) + (hox : sqDist (p o) (p x) = A * base) : + ⟪p x - p o, p x - p o⟫_ℝ = A * base := by + have hxx : sqDist (p x) (p x) = 0 := by simp [sqDist] + have hinner := inner_scaled o x x A A 0 hox hox (by simpa using hxx) + nlinarith only [hinner] + +private lemma residual11_lt_contradiction + {p : Vertex → Plane} (hC : ConvexIndependent ℝ p) + (D : Residual11Normalized p) (hslt : D.s < 2) : False := by + let alpha : ℝ := (2 - D.s) / 4 + let beta : ℝ := D.s / 4 + have halpha : 0 ≤ alpha := by dsimp [alpha]; linarith + have hbeta : 0 ≤ beta := by + dsimp [beta] + exact div_nonneg (le_of_lt D.hs) (by norm_num) + have hab : 2 * alpha + 2 * beta = 1 := by + dsimp [alpha, beta] + ring + have q01 := scaled_of_div_eq D.hbase D.d01 + have q02 := scaled_of_div_eq D.hbase D.d02 + have q03 := scaled_of_div_eq D.hbase D.d03 + have q05 := scaled_of_div_eq D.hbase D.d05 + have q12 := scaled_of_div_eq D.hbase D.d12 + have q13 := scaled_of_div_eq D.hbase D.d13 + have q15 := scaled_of_div_eq D.hbase D.d15 + have q23 := scaled_of_div_eq D.hbase D.d23 + have q25 := scaled_of_div_eq D.hbase D.d25 + have q35 := scaled_of_div_eq D.hbase D.d35 + let u1 := p 1 - p 0 + let u2 := p 2 - p 0 + let u3 := p 3 - p 0 + let u5 := p 5 - p 0 + have i11 : ⟪u1, u1⟫_ℝ = D.base := by + simpa [u1] using self_scaled 0 1 1 q01 + have i22 : ⟪u2, u2⟫_ℝ = D.base := by + simpa [u2] using self_scaled 0 2 1 q02 + have i33 : ⟪u3, u3⟫_ℝ = D.base := by + simpa [u3] using self_scaled 0 3 1 q03 + have i55 : ⟪u5, u5⟫_ℝ = 2 * D.base := by + simpa [u5] using self_scaled 0 5 2 q05 + have i12 : ⟪u1, u2⟫_ℝ = D.base / 2 := by + simpa [u1, u2] using inner_scaled 0 1 2 1 1 1 q01 q02 q12 + have i13 : ⟪u1, u3⟫_ℝ = 0 := by + have h := inner_scaled 0 1 3 1 1 2 q01 q03 q13 + dsimp [u1, u3] at h ⊢ + ring_nf at h ⊢ + exact h + have i15 : ⟪u1, u5⟫_ℝ = D.base := by + simpa [u1, u5] using inner_scaled 0 1 5 1 2 1 q01 q05 q15 + have i23 : ⟪u2, u3⟫_ℝ = (2 - D.s) * D.base / 2 := by + have h := inner_scaled 0 2 3 1 1 D.s q02 q03 q23 + dsimp [u2, u3] at h ⊢ + ring_nf at h ⊢ + exact h + have i25 : ⟪u2, u5⟫_ℝ = (3 - D.s) * D.base / 2 := by + have h := inner_scaled 0 2 5 1 2 D.s q02 q05 q25 + dsimp [u2, u5] at h ⊢ + ring_nf at h ⊢ + exact h + have i35 : ⟪u3, u5⟫_ℝ = D.base := by + simpa [u3, u5] using inner_scaled 0 3 5 1 2 1 q03 q05 q35 + have i21 : ⟪u2, u1⟫_ℝ = D.base / 2 := by rw [real_inner_comm]; exact i12 + have i31 : ⟪u3, u1⟫_ℝ = 0 := by rw [real_inner_comm]; exact i13 + have i51 : ⟪u5, u1⟫_ℝ = D.base := by rw [real_inner_comm]; exact i15 + have i32 : ⟪u3, u2⟫_ℝ = (2 - D.s) * D.base / 2 := by + rw [real_inner_comm] + exact i23 + have i52 : ⟪u5, u2⟫_ℝ = (3 - D.s) * D.base / 2 := by + rw [real_inner_comm] + exact i25 + have i53 : ⟪u5, u3⟫_ℝ = D.base := by rw [real_inner_comm]; exact i35 + let z := u2 - (alpha • u5 + alpha • u3 + beta • u1) + have hzinner : ⟪z, z⟫_ℝ = 0 := by + dsimp [z] + simp only [inner_sub_left, inner_sub_right, inner_add_left, inner_add_right, + real_inner_smul_left, real_inner_smul_right] + rw [i11, i22, i33, i55, i12, i13, i15, i23, i25, i35, + i21, i31, i51, i32, i52, i53] + dsimp [alpha, beta] + linear_combination (norm := ring) (-D.base / 4) * D.eS + have hz : z = 0 := inner_self_eq_zero.mp hzinner + have hu : u2 = alpha • u5 + alpha • u3 + beta • u1 := sub_eq_zero.mp hz + have affine : p 2 = + alpha • p 5 + alpha • p 3 + beta • p 0 + beta • p 1 := by + dsimp [u1, u2, u3, u5] at hu + linear_combination (norm := module) hu - hab • p 0 + have hmem : p 2 ∈ convexHull ℝ (p '' ({0, 1, 3, 5} : Set Vertex)) := by + refine mem_convexHull_of_exists_fintype + ![alpha, alpha, beta, beta] ![p 5, p 3, p 0, p 1] ?_ ?_ ?_ ?_ + · intro i + fin_cases i <;> assumption + · simp only [Fin.sum_univ_four, Matrix.cons_val_zero, Matrix.cons_val_one, + Matrix.cons_val_two, Matrix.cons_val_three, Matrix.tail_cons, Matrix.head_cons] + nlinarith only [hab] + · intro i + fin_cases i <;> simp + · simp [Fin.sum_univ_four, affine, add_assoc] + have htwo := hC ({0, 1, 3, 5} : Set Vertex) 2 hmem + simp at htwo + +private lemma residual11_gt_contradiction + {p : Vertex → Plane} (hC : ConvexIndependent ℝ p) + (D : Residual11Normalized p) (hsgt : D.s > 2) : False := by + have hproduct : D.s * (4 - D.s) = 1 := by nlinarith only [D.eS] + have hproduct_pos : 0 < D.s * (4 - D.s) := by rw [hproduct]; norm_num + have hslt4 : D.s < 4 := by + rcases (mul_pos_iff.mp hproduct_pos) with h | h + · linarith only [h.2] + · linarith only [D.hs, h.1] + let alpha : ℝ := (D.s - 2) / 4 + let beta : ℝ := (4 - D.s) / 4 + have halpha : 0 ≤ alpha := by dsimp [alpha]; linarith + have hbeta : 0 ≤ beta := by dsimp [beta]; linarith + have hab : 2 * alpha + 2 * beta = 1 := by + dsimp [alpha, beta] + ring + have q20 : sqDist (p 2) (p 0) = D.base := by + have h := scaled_of_div_eq D.hbase D.d02 + simpa [sqDist, dist_comm] using h + have q24 := scaled_of_div_eq D.hbase D.d24 + have q26 := scaled_of_div_eq D.hbase D.d26 + have q27 := scaled_of_div_eq D.hbase D.d27 + have q04 := scaled_of_div_eq D.hbase D.d04 + have q06 := scaled_of_div_eq D.hbase D.d06 + have q07 := scaled_of_div_eq D.hbase D.d07 + have q46 := scaled_of_div_eq D.hbase D.d46 + have q47 := scaled_of_div_eq D.hbase D.d47 + have q67 := scaled_of_div_eq D.hbase D.d67 + let v0 := p 0 - p 2 + let v4 := p 4 - p 2 + let v6 := p 6 - p 2 + let v7 := p 7 - p 2 + have i00 : ⟪v0, v0⟫_ℝ = D.base := by + simpa [v0] using self_scaled 2 0 1 (by simpa using q20) + have i44 : ⟪v4, v4⟫_ℝ = D.s * D.base := by + simpa [v4] using self_scaled 2 4 D.s q24 + have i66 : ⟪v6, v6⟫_ℝ = D.s * D.base := by + simpa [v6] using self_scaled 2 6 D.s q26 + have i77 : ⟪v7, v7⟫_ℝ = 2 * D.s * D.base := by + have h := self_scaled 2 7 (2 * D.s) q27 + dsimp [v7] at h ⊢ + ring_nf at h ⊢ + exact h + have i04 : ⟪v0, v4⟫_ℝ = D.s * D.base / 2 := by + have h := inner_scaled 2 0 4 1 D.s 1 (by simpa using q20) q24 (by + simpa [sqDist, dist_comm] using q04) + dsimp [v0, v4] at h ⊢ + ring_nf at h ⊢ + exact h + have i06 : ⟪v0, v6⟫_ℝ = D.base / 2 := by + have h := inner_scaled 2 0 6 1 D.s D.s (by simpa using q20) q26 (by + simpa [sqDist, dist_comm] using q06) + dsimp [v0, v6] at h ⊢ + ring_nf at h ⊢ + exact h + have i07 : ⟪v0, v7⟫_ℝ = (1 + D.s) * D.base / 2 := by + have h := inner_scaled 2 0 7 1 (2 * D.s) D.s (by simpa using q20) q27 (by + simpa [sqDist, dist_comm] using q07) + dsimp [v0, v7] at h ⊢ + ring_nf at h ⊢ + exact h + have i46 : ⟪v4, v6⟫_ℝ = 0 := by + have h := inner_scaled 2 4 6 D.s D.s (2 * D.s) q24 q26 q46 + dsimp [v4, v6] at h ⊢ + ring_nf at h ⊢ + exact h + have i47 : ⟪v4, v7⟫_ℝ = D.s * D.base := by + have h := inner_scaled 2 4 7 D.s (2 * D.s) D.s q24 q27 q47 + dsimp [v4, v7] at h ⊢ + ring_nf at h ⊢ + exact h + have i67 : ⟪v6, v7⟫_ℝ = D.s * D.base := by + have h := inner_scaled 2 6 7 D.s (2 * D.s) D.s q26 q27 q67 + dsimp [v6, v7] at h ⊢ + ring_nf at h ⊢ + exact h + have i40 : ⟪v4, v0⟫_ℝ = D.s * D.base / 2 := by rw [real_inner_comm]; exact i04 + have i60 : ⟪v6, v0⟫_ℝ = D.base / 2 := by rw [real_inner_comm]; exact i06 + have i70 : ⟪v7, v0⟫_ℝ = (1 + D.s) * D.base / 2 := by + rw [real_inner_comm] + exact i07 + have i64 : ⟪v6, v4⟫_ℝ = 0 := by rw [real_inner_comm]; exact i46 + have i74 : ⟪v7, v4⟫_ℝ = D.s * D.base := by rw [real_inner_comm]; exact i47 + have i76 : ⟪v7, v6⟫_ℝ = D.s * D.base := by rw [real_inner_comm]; exact i67 + let z := v0 - (beta • v6 + beta • v7 + alpha • v4) + have hzinner : ⟪z, z⟫_ℝ = 0 := by + dsimp [z] + simp only [inner_sub_left, inner_sub_right, inner_add_left, inner_add_right, + real_inner_smul_left, real_inner_smul_right] + rw [i00, i44, i66, i77, i04, i06, i07, i46, i47, i67, + i40, i60, i70, i64, i74, i76] + dsimp [alpha, beta] + linear_combination (norm := ring) (D.base * (D.s - 4) / 4) * D.eS + have hz : z = 0 := inner_self_eq_zero.mp hzinner + have hu : v0 = beta • v6 + beta • v7 + alpha • v4 := sub_eq_zero.mp hz + have affine : p 0 = + alpha • p 2 + beta • p 6 + beta • p 7 + alpha • p 4 := by + dsimp [v0, v4, v6, v7] at hu + linear_combination (norm := module) hu - hab • p 2 + have hmem : p 0 ∈ convexHull ℝ (p '' ({2, 4, 6, 7} : Set Vertex)) := by + refine mem_convexHull_of_exists_fintype + ![alpha, beta, beta, alpha] ![p 2, p 6, p 7, p 4] ?_ ?_ ?_ ?_ + · intro i + fin_cases i <;> assumption + · simp only [Fin.sum_univ_four, Matrix.cons_val_zero, Matrix.cons_val_one, + Matrix.cons_val_two, Matrix.cons_val_three, Matrix.tail_cons, Matrix.head_cons] + nlinarith only [hab] + · intro i + fin_cases i <;> simp + · simp [Fin.sum_univ_four, affine, add_assoc] + have hzero := hC ({2, 4, 6, 7} : Set Vertex) 0 hmem + simp at hzero + +/-- The unique realizable residual class cannot occur in convex position. -/ +theorem residualRepresentative11_not_convex_realises + {p : Vertex → Plane} (hC : ConvexIndependent ℝ p) : + ¬ Realises p residualRepresentative11 := by + intro hRealises + let D := (residual11_distances hC hRealises).normalize + rcases lt_or_gt_of_ne D.hs_ne_two with hslt | hsgt + · exact residual11_lt_contradiction hC D hslt + · exact residual11_gt_contradiction hC D hsgt + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra12.lean b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra12.lean new file mode 100644 index 00000000..7bc31896 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/ResidualAlgebra12.lean @@ -0,0 +1,141 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CayleyMenger +import LeanPool.Erdos97ConvexOctagon.ResidualRepresentatives + +/-! # Erdős 97 convex-octagon formalization: Residual Algebra12 -/ + +namespace Erdos97Octagon + +/-- Residual class 12 has no injective planar realisation. -/ +theorem residualRepresentative12_not_realises + {p : Vertex → Plane} (hp : Function.Injective p) : + ¬ Realises p residualRepresentative12 := by + intro hRealises + obtain ⟨radius, hpos, hdist⟩ := + exists_positive_radii hp residualRepresentative12 hRealises + have r01 : radius 0 = radius 1 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative12]) + have r25 : radius 2 = radius 5 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative12]) + have r37 : radius 3 = radius 7 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative12]) + have r46 : radius 4 = radius 6 := + radius_eq_of_mutual hdist (by + simp [OctagonIncidence.Mutual, residualRepresentative12]) + have radius0 : radius 0 = radius 0 := rfl + have radius1 : radius 1 = radius 0 := (r01).symm + have radius2 : radius 2 = radius 2 := rfl + have radius5 : radius 5 = radius 2 := (r25).symm + have radius3 : radius 3 = radius 3 := rfl + have radius7 : radius 7 = radius 3 := (r37).symm + have radius4 : radius 4 = radius 4 := rfl + have radius6 : radius 6 = radius 4 := (r46).symm + let base : ℝ := radius 0 ^ 2 + have hbase : base ≠ 0 := by + dsimp [base] + exact pow_ne_zero 2 (ne_of_gt (hpos 0)) + let s1 : ℝ := radius 2 ^ 2 / base + let s2 : ℝ := radius 3 ^ 2 / base + let s3 : ℝ := radius 4 ^ 2 / base + have d01 : sqDist (p 0) (p 1) / base = 1 := by + rw [sqDist, hdist 0 1 (by decide), radius0] + exact div_self hbase + have d02 : sqDist (p 0) (p 2) / base = 1 := by + rw [sqDist, hdist 0 2 (by decide), radius0] + exact div_self hbase + have d03 : sqDist (p 0) (p 3) / base = 1 := by + rw [sqDist, hdist 0 3 (by decide), radius0] + exact div_self hbase + have d04 : sqDist (p 0) (p 4) / base = 1 := by + rw [sqDist, hdist 0 4 (by decide), radius0] + exact div_self hbase + have d06 : sqDist (p 0) (p 6) / base = s3 := by + rw [sqDist, dist_comm, hdist 6 0 (by decide), radius6] + have d07 : sqDist (p 0) (p 7) / base = s2 := by + rw [sqDist, dist_comm, hdist 7 0 (by decide), radius7] + have d13 : sqDist (p 1) (p 3) / base = s2 := by + rw [sqDist, dist_comm, hdist 3 1 (by decide), radius3] + have d14 : sqDist (p 1) (p 4) / base = s3 := by + rw [sqDist, dist_comm, hdist 4 1 (by decide), radius4] + have d16 : sqDist (p 1) (p 6) / base = 1 := by + rw [sqDist, hdist 1 6 (by decide), radius1] + exact div_self hbase + have d24 : sqDist (p 2) (p 4) / base = s3 := by + rw [sqDist, dist_comm, hdist 4 2 (by decide), radius4] + have d27 : sqDist (p 2) (p 7) / base = s2 := by + rw [sqDist, dist_comm, hdist 7 2 (by decide), radius7] + have d34 : sqDist (p 3) (p 4) / base = s2 := by + rw [sqDist, hdist 3 4 (by decide), radius3] + have d36 : sqDist (p 3) (p 6) / base = s3 := by + rw [sqDist, dist_comm, hdist 6 3 (by decide), radius6] + have d37 : sqDist (p 3) (p 7) / base = s2 := by + rw [sqDist, hdist 3 7 (by decide), radius3] + have d46 : sqDist (p 4) (p 6) / base = s3 := by + rw [sqDist, hdist 4 6 (by decide), radius4] + have d47 : sqDist (p 4) (p 7) / base = s3 := by + rw [sqDist, hdist 4 7 (by decide), radius4] + have d67 : sqDist (p 6) (p 7) / base = s2 := by + rw [sqDist, dist_comm, hdist 7 6 (by decide), radius7] + have hcm0 := cm4_normalized_eq_zero + (p 0) (p 2) (p 4) (p 7) hbase + rw [d02, d04, d07, d24, d27, d47] at hcm0 + have e0 : -2*s2 ^ 2 - 2*s2*s3 ^ 2 + 10*s2*s3 - 2*s3 = 0 := by + dsimp [cm4] at hcm0 + nlinarith only [hcm0] + have hcm1 := cm4_normalized_eq_zero + (p 0) (p 4) (p 6) (p 7) hbase + rw [d04, d06, d07, d46, d47, d67] at hcm1 + have e1 : -2*s2 ^ 2*s3 + 4*s2*s3 ^ 2 + 6*s2*s3 - 2*s2 - 2*s3 ^ 3 = 0 := by + dsimp [cm4] at hcm1 + nlinarith only [hcm1] + have hcm2 := cm4_normalized_eq_zero + (p 0) (p 1) (p 3) (p 6) hbase + rw [d01, d03, d06, d13, d16, d36] at hcm2 + have e2 : -2*s2 ^ 2*s3 + 6*s2*s3 - 2*s3 ^ 2 + 4*s3 - 2 = 0 := by + dsimp [cm4] at hcm2 + nlinarith only [hcm2] + have hcm3 := cm4_normalized_eq_zero + (p 0) (p 3) (p 4) (p 6) hbase + rw [d03, d04, d06, d34, d36, d46] at hcm3 + have e3 : -2*s2 ^ 2*s3 + 8*s2*s3 - 2*s2 = 0 := by + dsimp [cm4] at hcm3 + nlinarith only [hcm3] + have hcm4 := cm4_normalized_eq_zero + (p 0) (p 1) (p 3) (p 4) hbase + rw [d01, d03, d04, d13, d14, d34] at hcm4 + have e4 : -2*s2 ^ 2*s3 + 8*s2*s3 - 2*s3 ^ 2 = 0 := by + dsimp [cm4] at hcm4 + nlinarith only [hcm4] + have hcm5 := cm4_normalized_eq_zero + (p 0) (p 1) (p 4) (p 6) hbase + rw [d01, d04, d06, d14, d16, d46] at hcm5 + have e5 : -2*s3 ^ 3 + 4*s3 ^ 2 + 4*s3 - 2 = 0 := by + dsimp [cm4] at hcm5 + nlinarith only [hcm5] + have hcm6 := cm4_normalized_eq_zero + (p 0) (p 3) (p 6) (p 7) hbase + rw [d03, d06, d07, d36, d37, d67] at hcm6 + have e6 : 8*s2*s3 - 2*s2 - 2*s3 ^ 2 = 0 := by + dsimp [cm4] at hcm6 + nlinarith only [hcm6] + have certificate : + (-1 : ℝ) * (-2*s2 ^ 2 - 2*s2*s3 ^ 2 + 10*s2*s3 - 2*s3) + + (7/6 : ℝ) * (-2*s2 ^ 2*s3 + 4*s2*s3 ^ 2 + 6*s2*s3 - 2*s2 - 2*s3 ^ 3) + + (1/12 : ℝ) * (-2*s2 ^ 2*s3 + 6*s2*s3 - 2*s3 ^ 2 + 4*s3 - 2) + + (17/12 : ℝ) * (-2*s2 ^ 2*s3 + 8*s2*s3 - 2*s2) + + (4/3 : ℝ) * (-2*s2 ^ 2*s3 + 8*s2*s3 - 2*s3 ^ 2) + + (-7/12 : ℝ) * (-2*s3 ^ 3 + 4*s3 ^ 2 + 4*s3 - 2) + + (s2-7/12*s3-31/12 : ℝ) * (8*s2*s3 - 2*s2 - 2*s3 ^ 2) = 1 := by + ring + rw [e0, e1, e2, e3, e4, e5, e6] at certificate + norm_num at certificate + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/ResidualObstructions.lean b/LeanPool/Erdos97ConvexOctagon/ResidualObstructions.lean new file mode 100644 index 00000000..8f2ec5df --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/ResidualObstructions.lean @@ -0,0 +1,46 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra00 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra01 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra02 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra03 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra04 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra05 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra06 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra07 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra08 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra09 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra10 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra11 +import LeanPool.Erdos97ConvexOctagon.ResidualAlgebra12 + +/-! # Erdős 97 convex-octagon formalization: Residual Obstructions -/ + +namespace Erdos97Octagon + +/-- None of the thirteen explicit candidate systems has a convex-independent +realisation. This statement does not assert that the family is exhaustive. -/ +theorem residualRepresentative_not_convex_realises + (classIndex : Fin 13) {p : Vertex → Plane} + (hC : ConvexIndependent ℝ p) : + ¬ Realises p (residualRepresentative classIndex) := by + fin_cases classIndex + · exact residualRepresentative00_not_realises hC.injective + · exact residualRepresentative01_not_realises hC.injective + · exact residualRepresentative02_not_realises hC.injective + · exact residualRepresentative03_not_realises hC.injective + · exact residualRepresentative04_not_realises hC.injective + · exact residualRepresentative05_not_realises hC.injective + · exact residualRepresentative06_not_realises hC.injective + · exact residualRepresentative07_not_realises hC.injective + · exact residualRepresentative08_not_realises hC.injective + · exact residualRepresentative09_not_realises hC.injective + · exact residualRepresentative10_not_realises hC.injective + · exact residualRepresentative11_not_convex_realises hC + · exact residualRepresentative12_not_realises hC.injective + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/ResidualRepresentatives.lean b/LeanPool/Erdos97ConvexOctagon/ResidualRepresentatives.lean new file mode 100644 index 00000000..39f9a367 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/ResidualRepresentatives.lean @@ -0,0 +1,144 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.Radius + +/-! # Thirteen explicit candidate incidence representatives + +The word “residual” is a historical label from exploratory computation. This +module defines the systems exactly but makes no claim that they exhaust all +normalized, balanced, pair-sparse incidence systems. +-/ + +namespace Erdos97Octagon + +/-- The exact residual incidence representative of class 0. -/ +def residualRepresentative00 : OctagonIncidence where + targets := ![ + {1, 2, 3, 4}, {0, 2, 3, 5}, {0, 4, 5, 6}, {2, 4, 5, 7}, + {3, 5, 6, 7}, {1, 2, 6, 7}, {0, 1, 4, 7}, {0, 1, 3, 6} + ] + card_targets v := by fin_cases v <;> decide + centre_not_mem v := by fin_cases v <;> decide + +/-- The exact residual incidence representative of class 1. -/ +def residualRepresentative01 : OctagonIncidence where + targets := ![ + {1, 2, 3, 4}, {0, 2, 3, 5}, {0, 4, 5, 6}, {2, 4, 6, 7}, + {1, 3, 5, 7}, {0, 3, 6, 7}, {0, 1, 4, 7}, {1, 2, 5, 6} + ] + card_targets v := by fin_cases v <;> decide + centre_not_mem v := by fin_cases v <;> decide + +/-- The exact residual incidence representative of class 2. -/ +def residualRepresentative02 : OctagonIncidence where + targets := ![ + {1, 2, 3, 4}, {0, 2, 3, 5}, {0, 5, 6, 7}, {2, 4, 6, 7}, + {1, 2, 5, 6}, {0, 3, 4, 7}, {1, 3, 5, 7}, {0, 1, 4, 6} + ] + card_targets v := by fin_cases v <;> decide + centre_not_mem v := by fin_cases v <;> decide + +/-- The exact residual incidence representative of class 3. -/ +def residualRepresentative03 : OctagonIncidence where + targets := ![ + {1, 2, 3, 4}, {0, 2, 3, 5}, {0, 1, 4, 6}, {0, 4, 5, 7}, + {0, 3, 6, 7}, {2, 4, 6, 7}, {1, 3, 5, 7}, {1, 2, 5, 6} + ] + card_targets v := by fin_cases v <;> decide + centre_not_mem v := by fin_cases v <;> decide + +/-- The exact residual incidence representative of class 4. -/ +def residualRepresentative04 : OctagonIncidence where + targets := ![ + {1, 2, 3, 4}, {0, 2, 3, 5}, {0, 1, 4, 6}, {2, 4, 6, 7}, + {1, 3, 5, 7}, {0, 3, 6, 7}, {0, 4, 5, 7}, {1, 2, 5, 6} + ] + card_targets v := by fin_cases v <;> decide + centre_not_mem v := by fin_cases v <;> decide + +/-- The exact residual incidence representative of class 5. -/ +def residualRepresentative05 : OctagonIncidence where + targets := ![ + {1, 2, 3, 4}, {0, 2, 5, 6}, {3, 4, 5, 7}, {1, 2, 6, 7}, + {1, 3, 5, 6}, {0, 3, 6, 7}, {0, 2, 4, 7}, {0, 1, 4, 5} + ] + card_targets v := by fin_cases v <;> decide + centre_not_mem v := by fin_cases v <;> decide + +/-- The exact residual incidence representative of class 6. -/ +def residualRepresentative06 : OctagonIncidence where + targets := ![ + {1, 2, 3, 4}, {0, 2, 3, 5}, {0, 1, 4, 6}, {0, 1, 5, 7}, + {1, 3, 6, 7}, {0, 2, 6, 7}, {3, 4, 5, 7}, {2, 4, 5, 6} + ] + card_targets v := by fin_cases v <;> decide + centre_not_mem v := by fin_cases v <;> decide + +/-- The exact residual incidence representative of class 7. -/ +def residualRepresentative07 : OctagonIncidence where + targets := ![ + {1, 2, 3, 4}, {0, 2, 3, 5}, {3, 4, 6, 7}, {2, 5, 6, 7}, + {1, 3, 5, 6}, {0, 2, 4, 7}, {0, 1, 5, 7}, {0, 1, 4, 6} + ] + card_targets v := by fin_cases v <;> decide + centre_not_mem v := by fin_cases v <;> decide + +/-- The exact residual incidence representative of class 8. -/ +def residualRepresentative08 : OctagonIncidence where + targets := ![ + {1, 2, 3, 4}, {0, 2, 3, 5}, {3, 4, 5, 6}, {2, 4, 5, 7}, + {0, 5, 6, 7}, {1, 4, 6, 7}, {0, 1, 3, 7}, {0, 1, 2, 6} + ] + card_targets v := by fin_cases v <;> decide + centre_not_mem v := by fin_cases v <;> decide + +/-- The exact residual incidence representative of class 9. -/ +def residualRepresentative09 : OctagonIncidence where + targets := ![ + {1, 2, 3, 4}, {0, 2, 3, 5}, {3, 4, 5, 6}, {2, 4, 5, 7}, + {0, 5, 6, 7}, {1, 4, 6, 7}, {0, 1, 2, 7}, {0, 1, 3, 6} + ] + card_targets v := by fin_cases v <;> decide + centre_not_mem v := by fin_cases v <;> decide + +/-- The exact residual incidence representative of class 10. -/ +def residualRepresentative10 : OctagonIncidence where + targets := ![ + {1, 2, 3, 4}, {0, 2, 3, 5}, {3, 4, 5, 6}, {2, 4, 5, 7}, + {1, 5, 6, 7}, {0, 4, 6, 7}, {0, 1, 3, 7}, {0, 1, 2, 6} + ] + card_targets v := by fin_cases v <;> decide + centre_not_mem v := by fin_cases v <;> decide + +/-- The exact residual incidence representative of class 11. -/ +def residualRepresentative11 : OctagonIncidence where + targets := ![ + {1, 2, 3, 4}, {0, 2, 5, 6}, {3, 4, 5, 6}, {0, 4, 5, 7}, + {1, 2, 5, 7}, {1, 3, 6, 7}, {0, 2, 3, 7}, {0, 1, 4, 6} + ] + card_targets v := by fin_cases v <;> decide + centre_not_mem v := by fin_cases v <;> decide + +/-- The exact residual incidence representative of class 12. -/ +def residualRepresentative12 : OctagonIncidence where + targets := ![ + {1, 2, 3, 4}, {0, 5, 6, 7}, {1, 3, 5, 6}, {1, 4, 5, 7}, + {1, 2, 6, 7}, {0, 2, 4, 7}, {0, 3, 4, 5}, {0, 2, 3, 6} + ] + card_targets v := by fin_cases v <;> decide + centre_not_mem v := by fin_cases v <;> decide + +/-- The thirteen residual representatives as one finite family. -/ +def residualRepresentative : Fin 13 → OctagonIncidence := ![ + residualRepresentative00, residualRepresentative01, residualRepresentative02, + residualRepresentative03, residualRepresentative04, residualRepresentative05, + residualRepresentative06, residualRepresentative07, residualRepresentative08, + residualRepresentative09, residualRepresentative10, residualRepresentative11, + residualRepresentative12 +] + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/RhombusFan.lean b/LeanPool/Erdos97ConvexOctagon/RhombusFan.lean new file mode 100644 index 00000000..b6b8de5a --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/RhombusFan.lean @@ -0,0 +1,120 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.Gram + +/-! # Erdős 97 convex-octagon formalization: Rhombus Fan -/ + +namespace Erdos97Octagon + +open scoped InnerProductSpace + +/-- A same-length rhombus fan cannot have a common point on the two listed bisectors. -/ +theorem no_rhombus_fan + {a b c d x : Plane} {R : ℝ} (hR : 0 < R) (hcd : c ≠ d) + (hab : dist a b = R) (hac : dist a c = R) (had : dist a d = R) + (hbc : dist b c = R) (hbd : dist b d = R) + (hx_ac : dist x a = dist x c) (hx_db : dist x d = dist x b) : + False := by + set u : Plane := b - a with hu + set v : Plane := c - a with hv + set w : Plane := d - a with hw + set y : Plane := x - a with hy + set s : ℝ := R ^ 2 with hs + have hs0 : 0 < s := by positivity + have norm_sq : ∀ {z : Plane}, dist a z = R → ⟪z - a, z - a⟫_ℝ = s := by + intro z hz + rw [real_inner_self_eq_norm_sq, ← dist_eq_norm, dist_comm, hz, hs] + have nu : ⟪u, u⟫_ℝ = s := by simpa [u] using norm_sq hab + have nv : ⟪v, v⟫_ℝ = s := by simpa [v] using norm_sq hac + have nw : ⟪w, w⟫_ℝ = s := by simpa [w] using norm_sq had + have inner_half : ∀ {z t : Plane}, dist a z = R → dist a t = R → + dist z t = R → ⟪z - a, t - a⟫_ℝ = s / 2 := by + intro z t haz hat hzt + have hsub : (z - a) - (t - a) = z - t := by abel + have hzt_norm : ‖(z - a) - (t - a)‖ = R := by + rw [hsub, ← dist_eq_norm, hzt] + have hpolar := norm_sub_sq_real (z - a) (t - a) + have hnz : ‖z - a‖ ^ 2 = s := by + rw [← real_inner_self_eq_norm_sq] + exact norm_sq haz + have hnt : ‖t - a‖ ^ 2 = s := by + rw [← real_inner_self_eq_norm_sq] + exact norm_sq hat + rw [hzt_norm, hnz, hnt] at hpolar + have hR2 : R ^ 2 = s := hs.symm + nlinarith only [hpolar, hR2] + have iuv : ⟪u, v⟫_ℝ = s / 2 := by simpa [u, v] using inner_half hab hac hbc + have iuw : ⟪u, w⟫_ℝ = s / 2 := by simpa [u, w] using inner_half hab had hbd + have ivu : ⟪v, u⟫_ℝ = s / 2 := by rw [real_inner_comm]; exact iuv + have iwu : ⟪w, u⟫_ℝ = s / 2 := by rw [real_inner_comm]; exact iuw + set t : ℝ := ⟪v, w⟫_ℝ with ht + have iwv : ⟪w, v⟫_ℝ = t := by rw [ht, real_inner_comm] + have hG := gram_det_eq_zero ![u, v, w] + rw [gram3_expand] at hG + simp only [nu, nv, nw, iuv, ivu, iuw, iwu, ← ht, iwv] at hG + have hfactor_mul : s * ((t - s) * (2 * t + s)) = 0 := by + nlinarith only [hG] + have hfactor : (t - s) * (2 * t + s) = 0 := + (mul_eq_zero.mp hfactor_mul).resolve_left (ne_of_gt hs0) + have ht_ne_s : t ≠ s := by + intro hts + have hvn : ‖v‖ ^ 2 = s := by simpa only [real_inner_self_eq_norm_sq] using nv + have hwn : ‖w‖ ^ 2 = s := by simpa only [real_inner_self_eq_norm_sq] using nw + have hpolar := norm_sub_sq_real v w + have hvw_norm : ‖v - w‖ = dist c d := by + rw [hv, hw] + convert (dist_eq_norm c d).symm using 1 + abel_nf + rw [hvw_norm, hvn, hwn, ← ht, hts] at hpolar + have hdist_pos : 0 < dist c d := dist_pos.mpr hcd + have hdist_sq_pos : 0 < (dist c d) ^ 2 := by positivity + nlinarith only [hpolar, hdist_sq_pos] + have ht_opp : t = -(s / 2) := by + have hsecond := + (mul_eq_zero.mp hfactor).resolve_left (sub_ne_zero.mpr ht_ne_s) + linarith only [hsecond] + have hz_inner : ⟪w - u + v, w - u + v⟫_ℝ = 0 := by + simp only [inner_add_left, inner_add_right, inner_sub_left, inner_sub_right] + rw [nu, nv, nw, iuv, ivu, iuw, iwu, ← ht, iwv, ht_opp] + ring + have hz : w - u + v = 0 := inner_self_eq_zero.mp hz_inner + have hx_ac_norm : ‖y‖ = ‖y - v‖ := by + rw [hy, hv] + rw [dist_eq_norm, dist_eq_norm] at hx_ac + convert hx_ac using 1 + abel_nf + have hfan_ac := norm_sub_sq_real y v + have hynv : ‖v‖ ^ 2 = s := by simpa only [real_inner_self_eq_norm_sq] using nv + rw [← hx_ac_norm, hynv] at hfan_ac + have iyv : ⟪y, v⟫_ℝ = s / 2 := by nlinarith only [hfan_ac] + have hx_db_norm : ‖y - w‖ = ‖y - u‖ := by + rw [hy, hw, hu] + rw [dist_eq_norm, dist_eq_norm] at hx_db + convert hx_db using 1 <;> abel_nf + have hfan_d := norm_sub_sq_real y w + have hfan_b := norm_sub_sq_real y u + have hwn : ‖w‖ ^ 2 = s := by simpa only [real_inner_self_eq_norm_sq] using nw + have hun : ‖u‖ ^ 2 = s := by simpa only [real_inner_self_eq_norm_sq] using nu + rw [hx_db_norm, hwn] at hfan_d + rw [hun] at hfan_b + have iywu : ⟪y, w⟫_ℝ = ⟪y, u⟫_ℝ := by + nlinarith only [hfan_d, hfan_b] + have hinner_zero : ⟪y, w - u + v⟫_ℝ = 0 := by rw [hz, inner_zero_right] + simp only [inner_add_right, inner_sub_right] at hinner_zero + nlinarith only [hinner_zero, iywu, iyv, hs0] + +/-- The endpoint-swapped form of `no_rhombus_fan`. -/ +theorem no_rhombus_fan_swapped + {a b c d x : Plane} {R : ℝ} (hR : 0 < R) (hcd : c ≠ d) + (hab : dist a b = R) (hac : dist a c = R) (had : dist a d = R) + (hbc : dist b c = R) (hbd : dist b d = R) + (hx_bc : dist x b = dist x c) (hx_da : dist x d = dist x a) : + False := by + exact no_rhombus_fan hR hcd (by simpa [dist_comm] using hab) + hbc hbd hac had hx_bc hx_da + +end Erdos97Octagon diff --git a/LeanPool/Erdos97ConvexOctagon/RowSymmetry.lean b/LeanPool/Erdos97ConvexOctagon/RowSymmetry.lean new file mode 100644 index 00000000..3ccb1064 --- /dev/null +++ b/LeanPool/Erdos97ConvexOctagon/RowSymmetry.lean @@ -0,0 +1,208 @@ +/- +Copyright (c) 2026 Egor Lyfar. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Egor Lyfar +-/ + +import LeanPool.Erdos97ConvexOctagon.CoverageFormula + +/-! +# First-row symmetry reduction + +The normalized zeroth row splits the remaining labels into `{2,3,4}` and +`{5,6,7}`. Permuting within those blocks reduces the 35 possible first rows +to seven canonical orbits. The small table below records an explicit forward +and inverse permutation for every row. +-/ + +namespace Erdos97Octagon.RawIncidence + +/-- The seven canonical first-row masks, in certificate order. -/ +def canonicalRowMask : Fin 7 → UInt64 := + ![29, 45, 101, 225, 60, 108, 228] + +/-- All first-row masks in the lexicographic search order. -/ +def rowOneMask : Fin 35 → UInt64 := ![ + 29, 45, 77, 141, 53, 85, 149, 101, 165, 197, 57, 89, 153, 105, 169, 201, + 113, 177, 209, 225, 60, 92, 156, 108, 172, 204, 116, 180, 212, 228, 120, + 184, 216, 232, 240 +] + +/-- All second-row masks in the lexicographic search order. -/ +def rowTwoMask : Fin 35 → UInt64 := ![ + 27, 43, 75, 139, 51, 83, 147, 99, 163, 195, 57, 89, 153, 105, 169, 201, + 113, 177, 209, 225, 58, 90, 154, 106, 170, 202, 114, 178, 210, 226, 120, + 184, 216, 232, 240 +] + +private theorem rowOneOptions_eq : + (rowOptions 1).reverse = List.ofFn (fun index => packedRow (rowOneMask index)) := by + decide + +private theorem rowTwoOptions_eq : + (rowOptions 2).reverse = List.ofFn (fun index => packedRow (rowTwoMask index)) := by + decide + +/-- Every legal first row has one of the 35 explicit masks. -/ +theorem exists_rowOneIndex (Q : OctagonIncidence) : + ∃ index : Fin 35, Q.targets 1 = packedRow (rowOneMask index) := by + have hmem : Q.targets 1 ∈ (rowOptions 1).reverse := by + simpa using target_row_mem_rowOptions Q 1 + rw [rowOneOptions_eq, List.mem_ofFn] at hmem + obtain ⟨index, hindex⟩ := hmem + exact ⟨index, hindex.symm⟩ + +/-- Every legal second row has one of the 35 explicit masks. -/ +theorem exists_rowTwoIndex (Q : OctagonIncidence) : + ∃ index : Fin 35, Q.targets 2 = packedRow (rowTwoMask index) := by + have hmem : Q.targets 2 ∈ (rowOptions 2).reverse := by + simpa using target_row_mem_rowOptions Q 2 + rw [rowTwoOptions_eq, List.mem_ofFn] at hmem + obtain ⟨index, hindex⟩ := hmem + exact ⟨index, hindex.symm⟩ + +/-- One explicit permutation taking a first row to a canonical orbit. -/ +structure RowSymmetryCertificate where + /-- Index of the canonical first-row orbit. -/ + orbit : Fin 7 + /-- Packed code for the forward vertex permutation. -/ + forwardCode : UInt64 + /-- Packed code for the inverse vertex permutation. -/ + inverseCode : UInt64 + +/-- Mathematical validity of a row-symmetry certificate. -/ +def RowSymmetryCertificate.Valid + (certificate : RowSymmetryCertificate) (sourceMask : UInt64) : Prop := + let forward := decodeMap certificate.forwardCode + let inverse := decodeMap certificate.inverseCode + (∀ vertex, inverse (forward vertex) = vertex) ∧ + (∀ vertex, forward (inverse vertex) = vertex) ∧ + forward 0 = 0 ∧ forward 1 = 1 ∧ + (∀ vertex, vertex ∈ standardTargets ↔ forward vertex ∈ standardTargets) ∧ + ∀ vertex, vertex ∈ packedRow sourceMask ↔ + forward vertex ∈ packedRow (canonicalRowMask certificate.orbit) + +instance instDecidableRowSymmetryCertificateValid + (certificate : RowSymmetryCertificate) (sourceMask : UInt64) : + Decidable (certificate.Valid sourceMask) := by + unfold RowSymmetryCertificate.Valid + infer_instance + +/-- The 35 explicit orbit certificates, aligned with `rowOneMask`. -/ +def rowSymmetryCertificate : Fin 35 → RowSymmetryCertificate := ![ + { orbit := 0, forwardCode := 16434824, inverseCode := 16434824 }, + { orbit := 1, forwardCode := 16434824, inverseCode := 16434824 }, + { orbit := 1, forwardCode := 16205448, inverseCode := 16205448 }, + { orbit := 1, forwardCode := 12535432, inverseCode := 14141064 }, + { orbit := 1, forwardCode := 16431240, inverseCode := 16431240 }, + { orbit := 1, forwardCode := 16201864, inverseCode := 16201864 }, + { orbit := 1, forwardCode := 12531848, inverseCode := 14137480 }, + { orbit := 2, forwardCode := 16434824, inverseCode := 16434824 }, + { orbit := 2, forwardCode := 14599816, inverseCode := 14599816 }, + { orbit := 2, forwardCode := 14141064, inverseCode := 12535432 }, + { orbit := 1, forwardCode := 16430344, inverseCode := 16427208 }, + { orbit := 1, forwardCode := 16200968, inverseCode := 16197832 }, + { orbit := 1, forwardCode := 12530952, inverseCode := 14133448 }, + { orbit := 2, forwardCode := 16434376, inverseCode := 16434376 }, + { orbit := 2, forwardCode := 14599368, inverseCode := 14599368 }, + { orbit := 2, forwardCode := 14140616, inverseCode := 12534984 }, + { orbit := 2, forwardCode := 16427208, inverseCode := 16430344 }, + { orbit := 2, forwardCode := 14592200, inverseCode := 14595336 }, + { orbit := 2, forwardCode := 14133448, inverseCode := 12530952 }, + { orbit := 3, forwardCode := 16434824, inverseCode := 16434824 }, + { orbit := 4, forwardCode := 16434824, inverseCode := 16434824 }, + { orbit := 4, forwardCode := 16205448, inverseCode := 16205448 }, + { orbit := 4, forwardCode := 12535432, inverseCode := 14141064 }, + { orbit := 5, forwardCode := 16434824, inverseCode := 16434824 }, + { orbit := 5, forwardCode := 14599816, inverseCode := 14599816 }, + { orbit := 5, forwardCode := 14141064, inverseCode := 12535432 }, + { orbit := 5, forwardCode := 16431240, inverseCode := 16431240 }, + { orbit := 5, forwardCode := 14596232, inverseCode := 14596232 }, + { orbit := 5, forwardCode := 14137480, inverseCode := 12531848 }, + { orbit := 6, forwardCode := 16434824, inverseCode := 16434824 }, + { orbit := 5, forwardCode := 16430344, inverseCode := 16427208 }, + { orbit := 5, forwardCode := 14595336, inverseCode := 14592200 }, + { orbit := 5, forwardCode := 14136584, inverseCode := 12527816 }, + { orbit := 6, forwardCode := 16434376, inverseCode := 16434376 }, + { orbit := 6, forwardCode := 16427208, inverseCode := 16430344 } +] + +/-- Kernel audit of all 35 explicit symmetry certificates. -/ +theorem rowSymmetryCertificate_valid (index : Fin 35) : + (rowSymmetryCertificate index).Valid (rowOneMask index) := by + fin_cases index <;> decide + +/-- Decode a valid row-symmetry certificate as a vertex equivalence. -/ +def RowSymmetryCertificate.toEquiv + (certificate : RowSymmetryCertificate) {sourceMask : UInt64} + (hvalid : certificate.Valid sourceMask) : Vertex ≃ Vertex where + toFun := decodeMap certificate.forwardCode + invFun := decodeMap certificate.inverseCode + left_inv := hvalid.1 + right_inv := hvalid.2.1 + +private theorem map_eq_of_membership + (equivalence : Vertex ≃ Vertex) (source target : Finset Vertex) + (hmembership : ∀ vertex, vertex ∈ source ↔ equivalence vertex ∈ target) : + source.map equivalence.toEmbedding = target := by + ext vertex + rw [Finset.mem_map] + constructor + · rintro ⟨preimage, hsource, rfl⟩ + exact (hmembership preimage).mp hsource + · intro htarget + refine ⟨equivalence.symm vertex, ?_, by simp⟩ + exact (hmembership (equivalence.symm vertex)).mpr (by simpa using htarget) + +/-- Relabel a normalized system so that row one is one of seven canonical rows. -/ +theorem canonicalize_rowOne + {p : Vertex → Plane} {Q : OctagonIncidence} + (hC : ConvexIndependent ℝ p) (hR : Realises p Q) (hN : Q.Normalized) + (index : Fin 35) (hrow : Q.targets 1 = packedRow (rowOneMask index)) : + ∃ orbit : Fin 7, ∃ p' : Vertex → Plane, ∃ Q' : OctagonIncidence, + ConvexIndependent ℝ p' ∧ Realises p' Q' ∧ Q'.Normalized ∧ + Q'.PairSparse ∧ Q'.Balanced ∧ + Q'.targets 1 = packedRow (canonicalRowMask orbit) := by + let certificate := rowSymmetryCertificate index + have hvalid : certificate.Valid (rowOneMask index) := + rowSymmetryCertificate_valid index + let equivalence := certificate.toEquiv hvalid + have hzero : equivalence 0 = 0 := by + simpa [equivalence, RowSymmetryCertificate.toEquiv] using hvalid.2.2.1 + have hone : equivalence 1 = 1 := by + simpa [equivalence, RowSymmetryCertificate.toEquiv] using hvalid.2.2.2.1 + have hzeroSymm : equivalence.symm 0 = 0 := by + apply equivalence.injective + simp [hzero] + have honeSymm : equivalence.symm 1 = 1 := by + apply equivalence.injective + simp [hone] + have hmapStandard : + standardTargets.map equivalence.toEmbedding = standardTargets := + map_eq_of_membership equivalence standardTargets standardTargets (by + intro vertex + simpa [equivalence, RowSymmetryCertificate.toEquiv] using + hvalid.2.2.2.2.1 vertex) + have hmapRow : + (packedRow (rowOneMask index)).map equivalence.toEmbedding = + packedRow (canonicalRowMask certificate.orbit) := + map_eq_of_membership equivalence (packedRow (rowOneMask index)) + (packedRow (canonicalRowMask certificate.orbit)) (by + intro vertex + simpa [equivalence, RowSymmetryCertificate.toEquiv] using + hvalid.2.2.2.2.2 vertex) + let p' := relabelPoints p equivalence + let Q' := Q.relabel equivalence + have hC' : ConvexIndependent ℝ p' := convexIndependent_relabel hC equivalence + have hR' : Realises p' Q' := realises_relabel hR equivalence + have hN' : Q'.Normalized := by + change (Q.targets (equivalence.symm 0)).map equivalence.toEmbedding = standardTargets + rw [hzeroSymm, hN, hmapStandard] + have hrow' : Q'.targets 1 = packedRow (canonicalRowMask certificate.orbit) := by + change (Q.targets (equivalence.symm 1)).map equivalence.toEmbedding = _ + rw [honeSymm, hrow, hmapRow] + have hSparse' : Q'.PairSparse := pairSparse_of_realises hC' Q' hR' + refine ⟨certificate.orbit, p', Q', hC', hR', hN', hSparse', + Q'.balanced_of_pairSparse hSparse', hrow'⟩ + +end Erdos97Octagon.RawIncidence diff --git a/LeanPool/projects.yml b/LeanPool/projects.yml index 0cfdd676..292b9f3c 100644 --- a/LeanPool/projects.yml +++ b/LeanPool/projects.yml @@ -5070,6 +5070,44 @@ projects: msc: - "11A63" - "11B65" + - slug: erdos-97-convex-octagon + title: The Convex-Octagon Case of Erdős Problem 97 + summary: >- + Proves that among eight labelled points in the Euclidean plane in convex position, at least + one point has no four other points at a common distance. The development reduces a geometric + counterexample to a finite incidence model, classifies normalized row patterns up to symmetry, + proves geometric and algebraic obstructions, and excludes seven canonical first-row masks with + one regenerable LRAT certificate checked by a project-owned kernel-safe checker. This is the + convex-octagon case only; the general Erdős Problem 97 remains open. + branch: discrete geometry + entry_module: LeanPool.Erdos97ConvexOctagon + authors: + - Egor Lyfar + source: + title: On Sets of Distances of n Points + authors: + - Paul Erdős + doi: "10.1080/00029890.1946.11991674" + url: "https://www.erdosproblems.com/97" + github_repo: lyfar/erdos-97-octagon-lean + license: Apache-2.0 + status: verified + provenance: AI + main_declarations: + - Erdos97Octagon.erdos97_convex_octagon + main_results: + - declaration: Erdos97Octagon.erdos97_convex_octagon + informal: >- + Among eight labelled points in the Euclidean plane in convex position, some point has no + four other points at a common distance. + tags: + - discrete-geometry + - distance-geometry + - erdos-problems + - convexity + msc: + - "51K05" + - "52A10" - slug: erdos132-n14 title: A Conditional Fourteen-Point Case of Erdős Problem 132 summary: >-