Documentation

HexLLLMathlib.IntegerLattice

The Mathlib Submodule generated by the rows of an executable integer matrix.

Equations
Instances For

    Executable row-lattice membership agrees with membership in the generated submodule.

    Membership in the row lattice can be read through its Mathlib submodule.

    Every matrix row belongs to the submodule generated by all rows.

    def HexLLLMathlib.prefixSubmodule {n m : } (b : Hex.Matrix n m) (t : ) :

    The submodule generated by rows whose indices are strictly below t.

    Equations
    Instances For
      theorem HexLLLMathlib.row_mem_prefixSubmodule {n m : } (b : Hex.Matrix n m) (t : ) (i : Fin n) (hi : i < t) :

      Every row before t belongs to the submodule generated by that row prefix.

      The submodule generated by a row prefix lies in the full row lattice.

      theorem HexLLLMathlib.vecMul_mem_prefixSubmodule_of_vector {n m : } (b : Hex.Matrix n m) (c : Vector n) (t : ) (hc : ∀ (i : Fin n), t ic[i] = 0) :

      A row combination supported before t belongs to the corresponding prefix submodule.

      View an executable integer row as a vector in Mathlib's standard Euclidean space on Fin m.

      Equations
      Instances For

        View a Mathlib-side integer lattice vector in Mathlib's standard Euclidean space on Fin m.

        Equations
        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.

          theorem HexLLLMathlib.reduced_first_row_norm_sq_le {n m : } (b : Hex.Matrix n m) (δ η : ) ( : 1 / 2 η) (hδη : η * η < δ) (hδ' : δ 1) (hn : 1 n) (hli : b.independent) (hred : Hex.isLLLReduced b δ η) (x : Fin m) (hx : x latticeSubmodule b) (hx0 : x 0) :
          intRowToEuclidean (b.row 0, ) ^ 2 ↑((1 / (δ - η * η)) ^ (n - 1)) * intVectorToEuclidean x ^ 2

          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 method 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 < δ).