Gram-matrix identities by one kernel check #
The Lipschitz certificates bound ‖W‖₂ through Gram matrices G = W Wᵀ (and
H = Gᵀ G for the Schatten-8 step), and each instance has to establish
∀ a b, G a b = ∑ j, W a j * W b j for concrete rational data. Over ℝ, entry by
entry with simp/norm_num, that cost up to ~270 s per matrix. Here the data is ℚ,
the ℝ matrices are DEFINED as its cast (castM), and gram_eq_of_check turns one
kernel-evaluated gramCheck into the whole identity; abs_le_of_check does the same
for an entrywise bound |A i j| ≤ c.
H = Gᵀ G is the same statement with W := fun a c => G c a.
Every entry of G is the row inner product of W — the check decide +kernel runs.
Equations
- Proofs.gramCheck G W = (List.finRange m).all fun (a : Fin m) => (List.finRange m).all fun (b : Fin m) => decide (G a b = Proofs.rowDotQ W a b)
Instances For
Every entry of A is at most c in absolute value — the check decide +kernel runs.
Equations
- Proofs.absLeCheck A c = (List.finRange m).all fun (i : Fin m) => (List.finRange n).all fun (j : Fin n) => decide (|A i j| ≤ c)