The executable-to-Mathlib correspondence: the integer row lattice as a
Submodule ℤ, its identification with Hex.Matrix.memLattice, the
EuclideanSpace embeddings with their norm transport, and the conditional
Euclidean short-vector bound for an already-reduced basis.
The Mathlib Submodule ℤ generated by the rows of an executable integer
matrix.
Equations
- HexLLLMathlib.latticeSubmodule b = Submodule.span ℤ (Set.range fun (i : Fin n) => HexMatrixMathlib.vectorEquiv (b.row i))
Instances For
The submodule generated by rows whose indices are strictly below t.
Equations
- HexLLLMathlib.prefixSubmodule b t = Submodule.span ℤ (Set.range fun (i : { i : Fin n // ↑i < t }) => HexMatrixMathlib.vectorEquiv (b.row ↑i))
Instances For
View an executable integer row as a vector in Mathlib's standard Euclidean
space on Fin m.
Equations
- HexLLLMathlib.intRowToEuclidean row = WithLp.toLp 2 fun (j : Fin m) => ↑row[j]
Instances For
View a Mathlib-side integer lattice vector in Mathlib's standard Euclidean
space on Fin m.
Equations
- HexLLLMathlib.intVectorToEuclidean x = WithLp.toLp 2 fun (j : Fin m) => ↑(x j)
Instances For
The Euclidean squared norm of a lattice vector embedded into
EuclideanSpace ℝ (Fin m) equals the real cast of the executable integer
squared norm of its Vector preimage.
Mathlib-Euclidean-norm formulation of the LLL short-vector guarantee for
an already (δ, η)-LLL-reduced executable basis.
The input vector is assumed to lie in the Mathlib latticeSubmodule. The
proof route converts that hypothesis back through mem_latticeSubmodule_iff,
applies the executable Hex.short_vector_bound_of_size_bound for the
rational squared-norm inequality, then transports both sides through the
concrete Euclidean norm coercions above.
Consumed downstream at η = 11/20 for the public Hex.lll headline
(α = 1/(δ − 121/400), precondition 121/400 < δ); also at η = 1/2 for
the native Hex.lllNative classical statement (α = 1/(δ − 1/4),
precondition 1/4 < δ).