Documentation

TauCeti.Algebra.Module.ZLattice.OrthSum

The orthogonal direct sum of two lattices #

For ℤ-submodules L of a real inner product space E and M of a real inner product space F, the orthogonal direct sum L ⊕ M is the submodule L × M of the L² product WithLp 2 (E × F), whose inner product is ⟪(x, y), (x', y')⟫ = ⟪x, x'⟫ + ⟪y, y'⟫ (ZLattice.orthSum).

The dual of an orthogonal direct sum is the orthogonal direct sum of the duals (ZLattice.dual_orthSum). Consequently L ⊕ M is integral, even or unimodular exactly when both L and M are; in particular each of the three predicates is preserved by orthogonal direct sums.

When L and M are full lattices in finite-dimensional spaces, so is L ⊕ M: the sum of the ℤ-spans of two ℝ-bases is the ℤ-span of the product basis (ZLattice.orthSum_span_basis). The Gram matrix of the product basis is block diagonal, so covolumes and determinants multiply: covolume (L ⊕ M) = covolume L * covolume M and det (L ⊕ M) = det L * det M.

Since ‖(x, y)‖² = ‖x‖² + ‖y‖², a vector of L ⊕ M of squared norm t is a pair of vectors of L and M of squared norms s and t - s, where s ≤ t runs over the finitely many squared norms represented by L. The representation numbers of L ⊕ M are therefore the convolution r_{L ⊕ M}(t) = ∑_s r_L(s) * r_M(t - s) of those of the summands; for even L this is the finite sum r_{L ⊕ M}(2m) = ∑_{i ≤ m} r_L(2i) * r_M(2(m - i)), and for integral L the sum r_{L ⊕ M}(n) = ∑_{i ≤ n} r_L(i) * r_M(n - i).

Orthogonal direct sums build integral, even or unimodular lattices of large rank from small ones, for instance the even unimodular lattice E₈ ⊕ E₈ of rank 16.

Main definitions #

Main statements #

References #

def ZLattice.orthSum {E : Type u_1} {F : Type u_2} [AddCommGroup E] [AddCommGroup F] (L : Submodule ℤ E) (M : Submodule ℤ F) :

The orthogonal direct sum of lattices L ⊆ E and M ⊆ F: the vectors of the L² product WithLp 2 (E × F) whose components lie in L and in M (mem_orthSum).

Instances For
    @[simp]
    theorem ZLattice.mem_orthSum {E : Type u_1} {F : Type u_2} [AddCommGroup E] [AddCommGroup F] {L : Submodule ℤ E} {M : Submodule ℤ F} {x : WithLp 2 (E × F)} :
    x ∈ orthSum L M ↔ x.fst ∈ L ∧ x.snd ∈ M

    A vector lies in the orthogonal direct sum exactly when its two components lie in the summands.

    @[simp]
    theorem ZLattice.orthSum_le_orthSum_iff {E : Type u_1} {F : Type u_2} [AddCommGroup E] [AddCommGroup F] {L L' : Submodule ℤ E} {M M' : Submodule ℤ F} :
    orthSum L M ≤ orthSum L' M' ↔ L ≤ L' ∧ M ≤ M'

    The orthogonal direct sum is monotone in each summand, and reflects inclusions.

    theorem ZLattice.orthSum_mono {E : Type u_1} {F : Type u_2} [AddCommGroup E] [AddCommGroup F] {L L' : Submodule ℤ E} {M M' : Submodule ℤ F} (hL : L ≤ L') (hM : M ≤ M') :
    orthSum L M ≤ orthSum L' M'
    @[simp]
    theorem ZLattice.orthSum_inj {E : Type u_1} {F : Type u_2} [AddCommGroup E] [AddCommGroup F] {L L' : Submodule ℤ E} {M M' : Submodule ℤ F} :
    orthSum L M = orthSum L' M' ↔ L = L' ∧ M = M'
    def ZLattice.orthSumEquivProd {E : Type u_1} {F : Type u_2} [AddCommGroup E] [AddCommGroup F] (L : Submodule ℤ E) (M : Submodule ℤ F) :
    ↥(orthSum L M) ≃ₗ[ℤ] ↥L × ↥M

    As a ℤ-module, the orthogonal direct sum L ⊕ M is the product L × M: a vector of L ⊕ M corresponds to the pair of its components.

    Instances For
      @[simp]
      theorem ZLattice.coe_orthSumEquivProd_apply_fst {E : Type u_1} {F : Type u_2} [AddCommGroup E] [AddCommGroup F] {L : Submodule ℤ E} {M : Submodule ℤ F} (x : ↥(orthSum L M)) :
      ↑((orthSumEquivProd L M) x).1 = (↑x).fst
      @[simp]
      theorem ZLattice.coe_orthSumEquivProd_apply_snd {E : Type u_1} {F : Type u_2} [AddCommGroup E] [AddCommGroup F] {L : Submodule ℤ E} {M : Submodule ℤ F} (x : ↥(orthSum L M)) :
      ↑((orthSumEquivProd L M) x).2 = (↑x).snd
      @[simp]
      theorem ZLattice.coe_orthSumEquivProd_symm_apply {E : Type u_1} {F : Type u_2} [AddCommGroup E] [AddCommGroup F] {L : Submodule ℤ E} {M : Submodule ℤ F} (p : ↥L × ↥M) :
      ↑((orthSumEquivProd L M).symm p) = WithLp.toLp 2 (↑p.1, ↑p.2)

      The quotient (L ⊕ M) / c (L ⊕ M) #

      noncomputable def ZLattice.quotientSmulOrthSumEquiv {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedSpace ℝ E] [NormedAddCommGroup F] [NormedSpace ℝ F] (L : Submodule ℤ E) (M : Submodule ℤ F) (c : ℕ) :
      (↥(orthSum L M) ⧸ (↑c • orthSum L M).submoduleOf (orthSum L M)) ≃ₗ[ℤ] (↥L ⧸ (↑c • L).submoduleOf L) × ↥M ⧸ (↑c • M).submoduleOf M

      The quotient (L ⊕ M) / c (L ⊕ M) is (L / cL) × (M / cM): the class of a vector of L ⊕ M corresponds to the pair of classes of its components.

      Instances For
        @[simp]

        The class of x ∈ L ⊕ M corresponds to the pair of classes of the components of x.

        @[simp]

        The dual of an orthogonal direct sum is the orthogonal direct sum of the duals.

        noncomputable def ZLattice.dualOrthSumEquiv {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [InnerProductSpace ℝ E] [NormedAddCommGroup F] [InnerProductSpace ℝ F] (L : Submodule ℤ E) (M : Submodule ℤ F) :
        ↥(dual (orthSum L M)) ≃ₗ[ℤ] ↥(dual L) × ↥(dual M)

        As a ℤ-module, the dual of an orthogonal direct sum L ⊕ M is L^∨ × M^∨.

        Instances For
          @[simp]

          The first component of dualOrthSumEquiv L M x is the first component of x.

          @[simp]

          The second component of dualOrthSumEquiv L M x is the second component of x.

          @[simp]
          theorem ZLattice.coe_dualOrthSumEquiv_symm_apply {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [InnerProductSpace ℝ E] [NormedAddCommGroup F] [InnerProductSpace ℝ F] (L : Submodule ℤ E) (M : Submodule ℤ F) (p : ↥(dual L) × ↥(dual M)) :
          ↑((dualOrthSumEquiv L M).symm p) = WithLp.toLp 2 (↑p.1, ↑p.2)

          (dualOrthSumEquiv L M).symm embeds (p.1, p.2) into WithLp 2 (E × F).

          The discriminant group of an orthogonal direct sum L ⊕ M is the product of the discriminant groups of L and M.

          Instances For
            @[simp]

            The class of x ∈ (L ⊕ M)^∨ corresponds to the pair of classes of its components.

            @[simp]

            The order of the discriminant group of L ⊕ M is the product of the orders of the discriminant groups of L and M.

            Integral, even and unimodular orthogonal direct sums #

            @[simp]

            An orthogonal direct sum is integral if and only if both summands are.

            @[simp]

            An orthogonal direct sum is even if and only if both summands are.

            @[simp]

            An orthogonal direct sum is unimodular if and only if both summands are.

            Representation numbers of an orthogonal direct sum #

            theorem ZLattice.shell_orthSum_eq_biUnion {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedAddCommGroup F] {L : Submodule ℤ E} {M : Submodule ℤ F} {t : ℝ} {S : Set ℝ} (hS : representedNormsLE L t ⊆ S) :
            shell (orthSum L M) t = ⋃ s ∈ S, WithLp.ofLp ⁻¹' shell L s ×ˢ shell M (t - s)

            The shell of squared norm t of L ⊕ M is the union, over the squared norms s ≤ t represented by L, of the pairs of a vector of L of squared norm s and a vector of M of squared norm t - s. Any set S containing those squared norms may index the union.

            The representation numbers of an orthogonal direct sum are the convolution of those of the summands: r_{L ⊕ M}(t) = ∑_{s ∈ S} r_L(s) * r_M(t - s) for any finite set S of real numbers containing the squared norms s ≤ t represented by L.

            The representation numbers of an orthogonal direct sum are the convolution of those of the summands, summed over the finite set of squared norms s ≤ t represented by L: r_{L ⊕ M}(t) = ∑_{s ≤ t represented by L} r_L(s) * r_M(t - s).

            theorem ZLattice.IsEven.representationNumber_orthSum {E : Type u_1} {F : Type u_2} [NormedAddCommGroup E] [NormedAddCommGroup F] {L : Submodule ℤ E} {M : Submodule ℤ F} [ProperSpace E] [ProperSpace F] [DiscreteTopology ↥L] [DiscreteTopology ↥M] (hL : IsEven L) (m : ℕ) :
            representationNumber (orthSum L M) (2 * ↑m) = ∑ i ∈ Finset.range (m + 1), representationNumber L (2 * ↑i) * representationNumber M (2 * ↑(m - i))

            For an even lattice L, the representation numbers of L ⊕ M at even integers are the convolution r_{L ⊕ M}(2m) = ∑_{i ≤ m} r_L(2i) * r_M(2(m - i)).

            For an integral lattice L, the representation numbers of L ⊕ M at natural numbers are the convolution r_{L ⊕ M}(n) = ∑_{i ≤ n} r_L(i) * r_M(n - i).

            Full lattices #

            The orthogonal direct sum of the ℤ-spans of two bases is the ℤ-span of their product basis of WithLp 2 (E × F).

            @[simp]

            The determinant of an orthogonal direct sum of full lattices is the product of the determinants.