Documentation

Mathlib.Algebra.Module.ZLattice.Basic

ℤ-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 #

theorem ZSpan.span_top {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) :
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
    theorem ZSpan.map_fundamentalDomain {E : Type u_1} {ι : Type u_2} {K : Type u_3} [NormedLinearOrderedField K] [NormedAddCommGroup E] [NormedSpace K E] (b : Basis ι K E) {F : Type u_4} [NormedAddCommGroup F] [NormedSpace K F] (f : E ≃ₗ[K] F) :
    @[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 : ι ι') :
    theorem ZSpan.fundamentalDomain_pi_basisFun {ι : Type u_2} [Fintype ι] :
    ZSpan.fundamentalDomain (Pi.basisFun ι) = Set.univ.pi fun (x : ι) => Set.Ico 0 1
    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 : E // 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 : E // 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 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 : E // x Submodule.span (Set.range b) }) (x : E) :
            theorem ZSpan.exist_unique_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] [Finite ι] (x : E) :
            ∃! v : { x : E // x Submodule.span (Set.range b) }, v +ᵥ x ZSpan.fundamentalDomain b

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

            Equations
            Instances For
              @[simp]

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

              theorem ZSpan.measure_fundamentalDomain_ne_zero {E : Type u_1} {ι : Type u_2} [NormedAddCommGroup E] [NormedSpace E] (b : Basis ι E) [Finite ι] [MeasurableSpace E] [BorelSpace E] {μ : MeasureTheory.Measure E} [μ.IsAddHaarMeasure] :
              theorem ZSpan.measure_fundamentalDomain {E : Type u_1} {ι : Type u_2} [NormedAddCommGroup E] [NormedSpace E] (b : Basis ι E) [Fintype ι] [DecidableEq ι] [MeasurableSpace E] (μ : MeasureTheory.Measure E) [BorelSpace E] [μ.IsAddHaarMeasure] (b₀ : Basis ι E) :
              @[simp]
              theorem ZSpan.volume_fundamentalDomain {ι : Type u_2} [Fintype ι] [DecidableEq ι] (b : Basis ι (ι)) :
              MeasureTheory.volume (ZSpan.fundamentalDomain b) = ENNReal.ofReal |(Matrix.of b).det|
              class IsZLattice (K : Type u_1) [NormedField K] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace K E] (L : AddSubgroup E) [DiscreteTopology { x : E // x L }] :

              An L : Addsubgroup E where E is a vector space over a normed field K is a -lattice if it is discrete and spans E over K.

              Instances
                theorem IsZLattice.span_top {K : Type u_1} [NormedField K] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace K E] {L : AddSubgroup E} [DiscreteTopology { x : E // x L }] [self : IsZLattice K L] :

                L spans the full space E over K.

                theorem ZSpan.isZLattice {E : Type u_1} {ι : Type u_2} [NormedAddCommGroup E] [NormedSpace E] [Finite ι] (b : Basis ι E) :
                IsZLattice (Submodule.span (Set.range b)).toAddSubgroup
                theorem ZLattice.FG (K : Type u_1) [NormedLinearOrderedField K] [HasSolidNorm K] [FloorRing K] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace K E] [FiniteDimensional K E] [ProperSpace E] (L : AddSubgroup E) [DiscreteTopology { x : E // x L }] [hs : IsZLattice K L] :
                L.FG
                Equations
                • =
                Equations
                • =
                def Basis.ofZLatticeBasis (K : Type u_1) [NormedLinearOrderedField K] [HasSolidNorm K] [FloorRing K] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace K E] [FiniteDimensional K E] [ProperSpace E] (L : AddSubgroup E) [DiscreteTopology { x : E // x L }] {ι : Type u_3} [hs : IsZLattice K L] (b : Basis ι { x : E // x L }) :
                Basis ι K E

                Any -basis of L is also a K-basis of E.

                Equations
                Instances For
                  @[simp]
                  theorem Basis.ofZLatticeBasis_apply (K : Type u_1) [NormedLinearOrderedField K] [HasSolidNorm K] [FloorRing K] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace K E] [FiniteDimensional K E] [ProperSpace E] (L : AddSubgroup E) [DiscreteTopology { x : E // x L }] {ι : Type u_3} [hs : IsZLattice K L] (b : Basis ι { x : E // x L }) (i : ι) :
                  (Basis.ofZLatticeBasis K L b) i = (b i)
                  @[simp]
                  theorem Basis.ofZLatticeBasis_repr_apply (K : Type u_1) [NormedLinearOrderedField K] [HasSolidNorm K] [FloorRing K] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace K E] [FiniteDimensional K E] [ProperSpace E] (L : AddSubgroup E) [DiscreteTopology { x : E // x L }] {ι : Type u_3} [hs : IsZLattice K L] (b : Basis ι { x : E // x L }) (x : { x : E // x L }) (i : ι) :
                  ((Basis.ofZLatticeBasis K L b).repr x) i = ((b.repr x) i)
                  theorem Basis.ofZLatticeBasis_span (K : Type u_1) [NormedLinearOrderedField K] [HasSolidNorm K] [FloorRing K] {E : Type u_2} [NormedAddCommGroup E] [NormedSpace K E] [FiniteDimensional K E] [ProperSpace E] (L : AddSubgroup E) [DiscreteTopology { x : E // x L }] {ι : Type u_3} [hs : IsZLattice K L] (b : Basis ι { x : E // x L }) :
                  (Submodule.span (Set.range (Basis.ofZLatticeBasis K L b))).toAddSubgroup = L
                  Equations
                  • =