Documentation

TauCeti.LinearAlgebra.IntegralLattice.ConstructionA.Basic

Construction A and its dual lattice #

For an additive code C ≤ (ZMod m)^ι, ConstructionA.lattice m C is the submodule of ℚ^ι consisting of integer vectors whose reductions lie in C. The ambient form is ConstructionA.form m x y = (∑ i, x i * y i) / m. This rational model becomes the usual Construction A lattice after scaling real coordinates by 1 / √m.

When the coordinate type is finite and m ≠ 0, the carrier is a full lattice for every code. Its dual carrier is literally the carrier constructed from the dual code, so integrality is equivalent to self-orthogonality of the code, and the resulting integral lattice is unimodular exactly when the code is self-dual. Additive codes over ZMod m are canonically submodules through AddSubgroup.toZModSubmodule; their dual here is the existing Submodule.euclideanDual, transported back to an additive subgroup. The carrier and the form are defined for every modulus m : ℕ (at m = 0 the form is zero); the results that divide by the modulus assume [NeZero m], and no primality hypothesis is needed. For m ≠ 0 the normalized form is positive definite, so every Construction A lattice is definite. At m = 1, the construction is the integer coordinate lattice with the ordinary dot product, and the same results apply.

References #

def TauCeti.ConstructionA.lattice {ι : Type u_1} (m : ℕ) (C : AddSubgroup (ι → ZMod m)) :
Submodule ℤ (ι → ℚ)

The rational carrier of Construction A: the integer vectors reducing to the additive code C modulo m.

Instances For
    theorem TauCeti.ConstructionA.mem_lattice (m : ℕ) {ι : Type u_1} {C : AddSubgroup (ι → ZMod m)} {x : ι → ℚ} :
    x ∈ lattice m C ↔ ∃ (z : ι → ℤ), (fun (i : ι) => ↑(z i)) ∈ C ∧ (fun (i : ι) => ↑(z i)) = x

    Membership in the Construction A carrier is given by an integer lift of a codeword.

    @[simp]
    theorem TauCeti.ConstructionA.intCast_mem_lattice (m : ℕ) {ι : Type u_1} {C : AddSubgroup (ι → ZMod m)} (z : ι → ℤ) :
    (fun (i : ι) => ↑(z i)) ∈ lattice m C ↔ (fun (i : ι) => ↑(z i)) ∈ C

    An integer vector belongs to Construction A exactly when its reduction is a codeword.

    theorem TauCeti.ConstructionA.exists_eq_val_add_mul (m : ℕ) {ι : Type u_1} [NeZero m] {C : AddSubgroup (ι → ZMod m)} {x : ι → ℚ} (hx : x ∈ lattice m C) :
    ∃ c ∈ C, ∃ (z : ι → ℤ), x = fun (i : ι) => ↑(c i).val + ↑m * ↑(z i)

    For a nonzero modulus, every Construction A vector is c + m z, where c is the lift of a codeword with coordinates in [0, m).

    @[simp]
    theorem TauCeti.ConstructionA.lattice_le_lattice_iff (m : ℕ) {ι : Type u_1} {C D : AddSubgroup (ι → ZMod m)} :
    lattice m C ≤ lattice m D ↔ C ≤ D

    Inclusion of Construction A carriers is equivalent to inclusion of codes.

    theorem TauCeti.ConstructionA.single_mem_lattice (m : ℕ) {ι : Type u_1} [DecidableEq ι] (C : AddSubgroup (ι → ZMod m)) (i : ι) :
    Pi.single i ↑m ∈ lattice m C

    The scaled coordinate vectors m eᵢ belong to every Construction A carrier.

    instance TauCeti.ConstructionA.isLattice (m : ℕ) {ι : Type u_1} [NeZero m] [Finite ι] (C : AddSubgroup (ι → ZMod m)) :

    For a nonzero modulus and finite coordinates, every Construction A carrier is a full, finitely generated integer lattice.

    The rational bilinear form of Construction A, normalized by dividing the dot product by the modulus.

    Instances For
      @[simp]
      theorem TauCeti.ConstructionA.form_apply (m : ℕ) {ι : Type u_1} [Fintype ι] (x y : ι → ℚ) :
      ((form m) x) y = x ⬝ᵥ y / ↑m

      The form is the dot product divided by the modulus.

      theorem TauCeti.ConstructionA.form_isSymm (m : ℕ) {ι : Type u_1} [Fintype ι] :

      The Construction A form is symmetric.

      The Construction A form is nondegenerate.

      The normalized Construction A form is positive definite.

      @[simp]
      theorem TauCeti.ConstructionA.form_single_right (m : ℕ) {ι : Type u_1} [Fintype ι] [NeZero m] [DecidableEq ι] (x : ι → ℚ) (i : ι) :
      ((form m) x) (Pi.single i ↑m) = x i

      Pairing with m eᵢ reads off the ith coordinate.

      theorem TauCeti.ConstructionA.form_intCast_mem_one_iff (m : ℕ) {ι : Type u_1} [Fintype ι] [NeZero m] (x y : ι → ℤ) :
      (((form m) fun (i : ι) => ↑(x i)) fun (i : ι) => ↑(y i)) ∈ 1 ↔ ((fun (i : ι) => ↑(x i)) ⬝ᵥ fun (i : ι) => ↑(y i)) = 0

      Integrality of the Construction A pairing on integer vectors is precisely orthogonality of their reductions modulo m.

      @[simp]

      The dual of a Construction A carrier is the Construction A carrier of the Euclidean dual code, as an equality of submodules of the same rational coordinate space.

      @[simp]

      The Construction A form is integral on its carrier exactly when the additive code is self-orthogonal for the dot product modulo m.

      Construction A as an integral lattice, under the exact self-orthogonality hypothesis.

      Instances For
        @[simp]

        The underlying carrier of the bundled Construction A lattice.

        @[simp]

        The ambient form of the bundled Construction A lattice.

        @[simp]
        theorem TauCeti.ConstructionA.integralLattice_norm (m : ℕ) {ι : Type u_1} [Fintype ι] [NeZero m] (C : AddSubgroup (ι → ZMod m)) (hC : (AddSubgroup.toZModSubmodule m) C ≤ ((AddSubgroup.toZModSubmodule m) C).euclideanDual) (x : ι → ℚ) :
        (integralLattice m C hC).norm x = x ⬝ᵥ x / ↑m

        The norm of a Construction A vector is its dot product with itself, divided by the modulus.

        theorem TauCeti.ConstructionA.integralLattice_norm_intCast (m : ℕ) {ι : Type u_1} [Fintype ι] [NeZero m] (C : AddSubgroup (ι → ZMod m)) (hC : (AddSubgroup.toZModSubmodule m) C ≤ ((AddSubgroup.toZModSubmodule m) C).euclideanDual) (z : ι → ℤ) :
        ((integralLattice m C hC).norm fun (i : ι) => ↑(z i)) = ↑(∑ i : ι, z i ^ 2) / ↑m

        The norm of a rational vector with integer coordinates is the sum of the squares of those coordinates, divided by the modulus.

        @[simp]

        The dual carrier of the bundled Construction A lattice is the carrier of the dual code.

        A self-orthogonal code gives a nondegenerate integral lattice.

        Construction A always produces a positive-definite lattice.

        An integral Construction A lattice is unimodular exactly when its code is self-dual.

        Linear codes #

        For a linear code over ZMod m, the integrality hypothesis of Construction A is self-orthogonality of the code.

        The Construction A lattice of a self-orthogonal linear code over ZMod m is unimodular exactly when the code is self-dual.

        The Construction A lattice of a self-dual linear code over ZMod m is unimodular.