The CoM loop is GAS for a concrete SPD model — G1 sub-item (b)
Seal
Rung G1 · Status sealed — axiom-clean (
#print axiomsverbatim in The machine seal; full build 2654 jobs). Discharges the six operator hypothesescom_gascarries (hMsa/hKsa/hMinv/hDnn/hDdef/hKdef) as theorems for a concrete symmetric-positive-definite model, leaving onlyIsSolutionToandhcpt(now forward-only) applier-side — see interfaces.
Links: module index · interface ledger · related com_lasalle, rayleigh_sandwich, coupled_collapse_matrix · source giordano2019coordinated · pinpin_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_adjoint—hMsa/hKsa: for symmetric , . Reduces to the quadratic-form symmetry (proved from , real Hermitian).euclideanCLM_inv—hMinv: , fromMatrix.mul_nonsing_inv( when is a unit —PosDef.isUnit), throughofLpinjectivity.euclideanCLM_dotProduct_nonneg—hDnn: , the sealed Rayleigh lower boundle_dotProduct_mulVecwith (eigenvalues fromPosDef.eigenvalues_pos).euclideanCLM_dotProduct_def—hDdef: , the contrapositive ofPosDef.dotProduct_mulVec_pos.euclideanCLM_injective—hKdef: , fromPosDef.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; onlyIsSolutionTo(flow existence) andhcpt(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 /Code/vault/lean/pin_com_matrix.py).~/lean/ctrllib/Ctrllib/ComLaSalleMatrix.lean. SymPy pin (