Documentation

Mathlib.Algebra.Module.Zlattice

ℤ-lattices #

Let E be a finite dimensional vector space over a NormedLinearOrderedField K with a solid norm that is also a FloorRing, e.g. . A (full) -lattice L of E is a discrete subgroup of E such that L spans E over K.

A -lattice L can be defined in two ways:

Results about the first point of view are in the Zspan namespace and results about the second point of view are in the Zlattice namespace.

Main results #

def Zspan.fundamentalDomain {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) :
Set E

The fundamental domain of the ℤ-lattice spanned by b. See Zspan.isAddFundamentalDomain for the proof that it is a fundamental domain.

Equations
Instances For
    @[simp]
    theorem Zspan.mem_fundamentalDomain {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) {m : E} :
    m Zspan.fundamentalDomain b ∀ (i : ι), ↑(b.repr m) i Set.Ico 0 1
    @[simp]
    theorem Zspan.fundamentalDomain_reindex {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) {ι' : Type u_4} (e : ι ι') :
    def Zspan.floor {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] (m : E) :
    { x // x Submodule.span (Set.range b) }

    The map that sends a vector of E to the element of the ℤ-lattice spanned by b obtained by rounding down its coordinates on the basis b.

    Equations
    Instances For
      def Zspan.ceil {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] (m : E) :
      { x // x Submodule.span (Set.range b) }

      The map that sends a vector of E to the element of the ℤ-lattice spanned by b obtained by rounding up its coordinates on the basis b.

      Equations
      Instances For
        @[simp]
        theorem Zspan.repr_floor_apply {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] (m : E) (i : ι) :
        ↑(b.repr ↑(Zspan.floor b m)) i = ↑(b.repr m) i
        @[simp]
        theorem Zspan.repr_ceil_apply {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] (m : E) (i : ι) :
        ↑(b.repr ↑(Zspan.ceil b m)) i = ↑(b.repr m) i
        @[simp]
        theorem Zspan.floor_eq_self_of_mem {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] (m : E) (h : m Submodule.span (Set.range b)) :
        ↑(Zspan.floor b m) = m
        @[simp]
        theorem Zspan.ceil_eq_self_of_mem {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] (m : E) (h : m Submodule.span (Set.range b)) :
        ↑(Zspan.ceil b m) = m
        def Zspan.fract {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] (m : E) :
        E

        The map that sends a vector E to the fundamentalDomain of the lattice, see Zspan.fract_mem_fundamentalDomain, and fractRestrict for the map with the codomain restricted to fundamentalDomain.

        Equations
        Instances For
          theorem Zspan.fract_apply {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] (m : E) :
          Zspan.fract b m = m - ↑(Zspan.floor b m)
          @[simp]
          theorem Zspan.repr_fract_apply {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] (m : E) (i : ι) :
          ↑(b.repr (Zspan.fract b m)) i = Int.fract (↑(b.repr m) i)
          @[simp]
          theorem Zspan.fract_fract {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] (m : E) :
          @[simp]
          theorem Zspan.fract_zspan_add {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] (m : E) {v : E} (h : v Submodule.span (Set.range b)) :
          @[simp]
          theorem Zspan.fract_add_zspan {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] (m : E) {v : E} (h : v Submodule.span (Set.range b)) :
          theorem Zspan.fract_eq_self {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] {b : Basis ι K E} [FloorRing K] [Fintype ι] {x : E} :
          def Zspan.fractRestrict {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] (x : E) :

          The map fract with codomain restricted to fundamentalDomain.

          Equations
          Instances For
            @[simp]
            theorem Zspan.fractRestrict_apply {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] (x : E) :
            theorem Zspan.fract_eq_fract {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] (m : E) (n : E) :
            theorem Zspan.norm_fract_le {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] [HasSolidNorm K] (m : E) :
            Zspan.fract b m Finset.sum Finset.univ fun i => b i
            @[simp]
            theorem Zspan.coe_floor_self {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [FloorRing K] [Fintype ι] [Unique ι] (k : K) :
            @[simp]
            theorem Zspan.coe_fract_self {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [FloorRing K] [Fintype ι] [Unique ι] (k : K) :
            theorem Zspan.vadd_mem_fundamentalDomain {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] (y : { x // x Submodule.span (Set.range b) }) (x : E) :

            The map Zspan.fractRestrict defines an equiv map between E ⧸ span ℤ (Set.range b) and Zspan.fundamentalDomain b.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              @[simp]
              theorem Zspan.quotientEquiv.symm_apply {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) [FloorRing K] [Fintype ι] (x : ↑(Zspan.fundamentalDomain b)) :

              For a ℤ-lattice Submodule.span ℤ (Set.range b), proves that the set defined by Zspan.fundamentalDomain is a fundamental domain.

              @[simp]
              theorem Zspan.volume_fundamentalDomain {ι : Type u_2} [Fintype ι] [DecidableEq ι] (b : Basis ι (ι)) :
              MeasureTheory.volume (Zspan.fundamentalDomain b) = ENNReal.ofReal |Matrix.det (Matrix.of b)|