The CoM loop is GAS for a concrete SPD model — G1 sub-item (b)

Seal

Rung G1 · Status sealed — axiom-clean (#print axioms verbatim in The machine seal; full build 2654 jobs). Discharges the six operator hypotheses com_gas carries (hMsa/hKsa/hMinv/hDnn/hDdef/hKdef) as theorems for a concrete symmetric-positive-definite model, leaving only IsSolutionTo and hcpt (now forward-only) applier-side — see interfaces.
Links: module index · interface ledger · related com_lasalle, rayleigh_sandwich, coupled_collapse_matrix · source giordano2019coordinated · pin pin_com_matrix.py

What this seals, in one paragraph

com_gas (com_lasalle) proves the CoM-error driver globally asymptotically stable for every system with the stated structure — but it carries the inertia/damping/stiffness as abstract continuous linear operators with their defining identities (symmetry, invertibility, damping sign, stiffness injectivity) as named hypotheses. For the actual thesis model those operators are concrete symmetric positive-definite matrices (current_sota.md §4.3, ), so the six hypotheses are not assumptions but theorems. This module proves each one via Matrix.toEuclideanCLM and the sealed rayleigh_sandwich/PosDef stones, then wires them into com_gas to give com_gas_matrix. This is the concrete-model half of the G1 defense line: kernel-proved for every system with the stated structure; our model verifiably has it.

The bridge

Matrix.toEuclideanCLM sends a matrix to the continuous linear operator it induces on . The load-bearing Mathlib fact is

(inner_toEuclideanCLM): the Euclidean inner product of with is exactly . Every operator hypothesis reduces, through this, to a plain matrix fact.

Sealed theorems (the six discharges + the capstone)

  • euclideanCLM_self_adjointhMsa/hKsa: for symmetric , . Reduces to the quadratic-form symmetry (proved from , real Hermitian).
  • euclideanCLM_invhMinv: , from Matrix.mul_nonsing_inv ( when is a unit — PosDef.isUnit), through ofLp injectivity.
  • euclideanCLM_dotProduct_nonneghDnn: , the sealed Rayleigh lower bound le_dotProduct_mulVec with (eigenvalues from PosDef.eigenvalues_pos).
  • euclideanCLM_dotProduct_defhDdef: , the contrapositive of PosDef.dotProduct_mulVec_pos.
  • euclideanCLM_injectivehKdef: , from PosDef.isUnit + mulVec_injective_of_isUnit (the stiffness_residual pattern).
  • com_gas_matrix — the capstone: given concrete SPD , every forward-precompact orbit of the closed-loop CoM field converges to the origin. All six operator hypotheses discharged here; only IsSolutionTo (flow existence) and hcpt (ForwardPrecompact) remain applier-side.

SymPy pin

pin_com_matrix.py witnesses the concrete SPD model (3×3 CoM block, plus 6, 9): self-adjointness, , off the origin (), and — all six operator facts, checked through the bridge, to or better.

The machine seal

Verbatim #print axioms (full build, 2654 jobs, no sorryAx):

'Ctrllib.euclideanCLM_self_adjoint' depends on axioms: [propext, Classical.choice, Quot.sound]
'Ctrllib.euclideanCLM_inv' depends on axioms: [propext, Classical.choice, Quot.sound]
'Ctrllib.euclideanCLM_dotProduct_nonneg' depends on axioms: [propext, Classical.choice, Quot.sound]
'Ctrllib.euclideanCLM_dotProduct_def' depends on axioms: [propext, Classical.choice, Quot.sound]
'Ctrllib.euclideanCLM_injective' depends on axioms: [propext, Classical.choice, Quot.sound]
'Ctrllib.com_gas_matrix' depends on axioms: [propext, Classical.choice, Quot.sound]

The module is (/Code/vault/lean/ComLaSalleMatrix.lean), build copy ~/lean/ctrllib/Ctrllib/ComLaSalleMatrix.lean. SymPy pin (/Code/vault/lean/pin_com_matrix.py).