/- Quadratic Ledger Geometry (QLG) – Core Proof Framework No mathlib imports. Pure Lean 4 core. The routing algebra: balance equation, invariant preservation, proof gates. -/ -- Vec3 for agent state vectors abbrev Vec3 = Fin 3 → Int -- Matrix3 for routing tensors and transformations abbrev Matrix3 = Fin 3 → Fin 3 → Int -- Dot product of two vectors def dot (v w : Vec3) : Int := (v 0 * w 0 + v 1 * w 1 + v 2 * w 2) -- Matrix-vector multiplication def matVec (A : Matrix3) (x : Vec3) : Vec3 := fun i => (A i 0 * x 0 + A i 1 * x 1 + A i 2 * x 2) -- Matrix transpose def transpose (M : Matrix3) : Matrix3 := fun i j => M j i -- Matrix addition def matAdd (A B : Matrix3) : Matrix3 := fun i j => A i j + B i j -- Scalar-matrix multiplication def smul (c : Int) (M : Matrix3) : Matrix3 := fun i j => c * M i j -- Quadratic form: x^T Q x def quadForm (Q : Matrix3) (x : Vec3) : Int := dot x (matVec Q x) -- Positive-semidefinite (for Q+) def psd (M : Matrix3) : Prop := ∀ v : Vec3, 0 ≤ dot v (matVec M v) -- Negative-semidefinite (for Q-) def nsd (M : Matrix3) : Prop := ∀ v : Vec3, 0 ≤ dot v (matVec M v) -- QLG specification structure QLG where Q : Matrix3 -- symmetric routing tensor b : Vec3 -- linear term c : Int -- constant term K : Int -- balance invariant Qplus Qminus : Matrix3 -- factorization Q = Q+ - Q- h_psd : psd Qplus -- Q+ is PSD h_nsd : nsd Qminus -- Q- is NSD -- Balance predicate: isBalanced def isBalanced (L : QLG) (x : Vec3) : Prop := (quadForm L.Q x + dot L.b x + L.c = 0) ∧ -- surface equation (quadForm L.Qplus x = quadForm L.Qminus x) ∧ -- invariant equation (quadForm L.Qplus x = L.K) -- invariant equals K -- Concrete QLG instance: the unit sphere over integers def unitSphereQLG : QLG := { Q := fun i j => if i = j then 1 else 0 -- Q = I₃ b := fun _ => 0 -- b = 0 c := -1 -- constant = -1 K := 1 -- invariant K = 1 Qplus := fun i j => if i = j then 1 else 0 -- Q+ = I₃ Qminus := fun i j => 0 -- Q- = 0 h_psd := by intro v simp only [dot, matVec] nlinarith [sq_nonneg (v 0), sq_nonneg (v 1), sq_nonneg (v 2)] h_nsd := by intro v simp only [dot, matVec] ring_nf } -- The concrete witness: x = ![1, 0, 0] def unitWitness : Vec3 := ![1, 0, 0] -- Theorem: the witness satisfies the QLG theorem unitSphere_has_solution : isBalanced unitSphereQLG unitWitness := by constructor · -- Surface equation: 1 + 0 - 1 = 0 simp [isBalanced, unitSphereQLG, unitWitness, quadForm, dot, matVec] norm_num constructor · -- Invariant equation: quadForm Q+ x = quadForm Q- x simp [unitSphereQLG, unitWitness, quadForm, dot, matVec] norm_num · -- Invariant equals K: quadForm Q+ x = 1 simp [unitSphereQLG, unitWitness, quadForm, dot, matVec] norm_num