Module

Lattice.lean

Nyll.GaloisCohomology.Cyclic.Herbrand.Permutation.Lattice
42 declarations indexed from sourceView source ↗

Permutation-stable sublattices

This file proves the permutation-stable sublattice lemma. The proof also handles a permutation basis with more than one orbit: approximate every large coordinate vector by a lattice point and average all these approximations equivariantly over the finite group.

Imports3
  • Mathlib.Algebra.Module.ZLattice.Basic
  • Mathlib.LinearAlgebra.FreeModule.Finite.Quotient
  • Mathlib.LinearAlgebra.Matrix.Gershgorin
Imported by2

Declarations

CyclicCohomology.coordinatePermutation

The linear coordinate permutation attached to a permutation of the indexing type.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
def coordinatePermutation (σ : Equiv.Perm ι) :
    (ι → ℝ) ≃ₗ[ℝ] (ι → ℝ) where
  toFun x i := x (σ.symm i)
  invFun x i := x (σ i)
  left_inv x := by
    funext i
    simp
  right_inv x := by
    funext i
    simp
  map_add' _ _ := rfl
  map_smul' _ _ := rfl
CyclicCohomology.coordinatePermutation_apply
Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
theorem coordinatePermutation_apply
    (σ : Equiv.Perm ι) (x : ι → ℝ) (i : ι) :
    coordinatePermutation σ x i = x (σ.symm i)
CyclicCohomology.coordinatePermutation_refl
Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
theorem coordinatePermutation_refl :
    coordinatePermutation (Equiv.refl ι) =
      LinearEquiv.refl ℝ (ι → ℝ)
CyclicCohomology.coordinatePermutation_mul
Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
theorem coordinatePermutation_mul
    (σ τ : Equiv.Perm ι) :
    coordinatePermutation (σ * τ) =
      (coordinatePermutation τ).trans
        (coordinatePermutation σ)
CyclicCohomology.coordinatePermutation_inv
Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
theorem coordinatePermutation_inv
    (σ : Equiv.Perm ι) :
    coordinatePermutation σ⁻¹ =
      (coordinatePermutation σ).symm
CyclicCohomology.coordinatePermutation_single
Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
theorem coordinatePermutation_single
    [DecidableEq ι] (σ : Equiv.Perm ι) (i : ι) :
    coordinatePermutation σ (Pi.single i (1 : ℝ)) =
      Pi.single (σ i) 1
CyclicCohomology.latticeApproximation

A canonical lattice point whose difference from x lies in the fundamental parallelepiped of a chosen lattice basis.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Approximation
variable [Fintype ι]
def latticeApproximation
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L] (x : ι → ℝ) : L
CyclicCohomology.latticeApproximationRadius

A uniform approximation radius for the canonical lattice approximation.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Approximation
variable [Fintype ι]
def latticeApproximationRadius
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L] : ℝ
CyclicCohomology.latticeApproximationRadius_nonneg
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Approximation
variable [Fintype ι]
theorem latticeApproximationRadius_nonneg
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L] :
    0 ≤ latticeApproximationRadius L
CyclicCohomology.norm_sub_latticeApproximation_le
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Approximation
variable [Fintype ι]
theorem norm_sub_latticeApproximation_le
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L] (x : ι → ℝ) :
    ‖x - (latticeApproximation L x : ι → ℝ)‖ ≤
      latticeApproximationRadius L
CyclicCohomology.abs_latticeApproximation_sub_apply_le
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Approximation
variable [Fintype ι]
theorem abs_latticeApproximation_sub_apply_le
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L] (x : ι → ℝ) (i : ι) :
    |(latticeApproximation L x : ι → ℝ) i - x i| ≤
      latticeApproximationRadius L := by
  have hcoord :
      ‖(x - (latticeApproximation L x : ι → ℝ)) i‖ ≤
        ‖x - (latticeApproximation L x : ι → ℝ)‖ :=
    norm_le_pi_norm (x - (latticeApproximation L x : ι → ℝ)) i
  rw [Pi.sub_apply, Real.norm_eq_abs, abs_sub_comm] at hcoord
  exact hcoord.trans (norm_sub_latticeApproximation_le L x)
CyclicCohomology.permutationRepresentation

The action of g on the coordinate space for a permutation representation ρ.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
def permutationRepresentation
    (ρ : G →* Equiv.Perm ι) (g : G) :
    (ι → ℝ) ≃ₗ[ℝ] (ι → ℝ)
CyclicCohomology.permutationRepresentation_one
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
omit [Fintype G] [Fintype ι] [DecidableEq ι] in
theorem permutationRepresentation_one
    (ρ : G →* Equiv.Perm ι) :
    permutationRepresentation ρ 1 =
      LinearEquiv.refl ℝ (ι → ℝ)
CyclicCohomology.permutationRepresentation_mul
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
omit [Fintype G] [Fintype ι] [DecidableEq ι] in
theorem permutationRepresentation_mul
    (ρ : G →* Equiv.Perm ι) (g h : G) :
    permutationRepresentation ρ (g * h) =
      (permutationRepresentation ρ h).trans
        (permutationRepresentation ρ g)
CyclicCohomology.permutationLatticeEquiv

Restrict a permutation representation to an invariant lattice.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
def permutationLatticeEquiv
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ))
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L)
    (g : G) : L ≃ₗ[ℤ] L where
  toFun x :=
    ⟨permutationRepresentation ρ g x.1, hL g x.1 x.2⟩
  invFun x :=
    ⟨permutationRepresentation ρ g⁻¹ x.1,
      hL g⁻¹ x.1 x.2⟩
  left_inv x := by
    apply Subtype.ext
    change coordinatePermutation (ρ g⁻¹)
      (coordinatePermutation (ρ g) x.1) = x.1
    rw [map_inv,
      coordinatePermutation_inv]
    exact (coordinatePermutation (ρ g)).symm_apply_apply x.1
  right_inv x := by
    apply Subtype.ext
    change coordinatePermutation (ρ g)
      (coordinatePermutation (ρ g⁻¹) x.1) = x.1
    rw [map_inv,
      coordinatePermutation_inv]
    exact (coordinatePermutation (ρ g)).apply_symm_apply x.1
  map_add' x y := by
    apply Subtype.ext
    exact map_add _ _ _
  map_smul' n x := by
    apply Subtype.ext
    exact map_zsmul _ _ _
CyclicCohomology.coe_permutationLatticeEquiv
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
omit [Fintype G] [Fintype ι] [DecidableEq ι] in
theorem coe_permutationLatticeEquiv
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ))
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L)
    (g : G) (x : L) :
    ((permutationLatticeEquiv ρ L hL g x : L) : ι → ℝ) =
      permutationRepresentation ρ g x
CyclicCohomology.averagedLatticeVector

The equivariant average of lattice approximations to the large coordinate vectors.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
def averagedLatticeVector
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L)
    (t : ℝ) (i : ι) : L
CyclicCohomology.permutationLatticeScale

A scale large enough to make the averaged lattice vectors strictly column diagonally dominant.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
def permutationLatticeScale
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L] : ℝ
CyclicCohomology.permutationLatticeScale_pos
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
omit [DecidableEq ι] in
theorem permutationLatticeScale_pos
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L] :
    0 < permutationLatticeScale L
CyclicCohomology.averagedLatticeVector_apply
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
theorem averagedLatticeVector_apply
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L)
    (t : ℝ) (i j : ι) :
    (averagedLatticeVector ρ L hL t i : ι → ℝ) j =
      ∑ g : G,
        (latticeApproximation L
          (t • Pi.single ((ρ g).symm i) (1 : ℝ)) :
            ι → ℝ) ((ρ g).symm j)
CyclicCohomology.averagingSummand_diagonal_bound
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
omit [Fintype G] in
theorem averagingSummand_diagonal_bound
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L] (t : ℝ) (g : G) (i : ι) :
    |(latticeApproximation L
          (t • Pi.single ((ρ g).symm i) (1 : ℝ)) :
        ι → ℝ) ((ρ g).symm i) - t| ≤
      latticeApproximationRadius L := by
  have h :=
    abs_latticeApproximation_sub_apply_le L
      (t • Pi.single ((ρ g).symm i) (1 : ℝ))
      ((ρ g).symm i)
  simpa using h
CyclicCohomology.averagingSummand_offDiagonal_bound
Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
omit [Fintype G] in
theorem averagingSummand_offDiagonal_bound
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L] (t : ℝ) (g : G) {i j : ι}
    (hji : j ≠ i) :
    |(latticeApproximation L
          (t • Pi.single ((ρ g).symm i) (1 : ℝ)) :
        ι → ℝ) ((ρ g).symm j)| ≤
      latticeApproximationRadius L := by
  have h :=
    abs_latticeApproximation_sub_apply_le L
      (t • Pi.single ((ρ g).symm i) (1 : ℝ))
      ((ρ g).symm j)
  have hne : (ρ g).symm j ≠ (ρ g).symm i :=
    (ρ g).symm.injective.ne hji
  simpa [hne] using h
CyclicCohomology.averagedLatticeVector_diagonal_bound
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
theorem averagedLatticeVector_diagonal_bound
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L)
    (t : ℝ) (i : ι) :
    |(averagedLatticeVector ρ L hL t i : ι → ℝ) i -
        (Fintype.card G : ℝ) * t| ≤
      (Fintype.card G : ℝ) *
        latticeApproximationRadius L := by
  rw [averagedLatticeVector_apply]
  let a : G → ℝ := fun g ↦
    (latticeApproximation L
      (t • Pi.single ((ρ g).symm i) (1 : ℝ)) :
        ι → ℝ) ((ρ g).symm i)
  change |(∑ g : G, a g) -
    (Fintype.card G : ℝ) * t| ≤
      (Fintype.card G : ℝ) *
        latticeApproximationRadius L
  have ha (g : G) :
      |a g - t| ≤ latticeApproximationRadius L := by
    simpa only [a] using
      averagingSummand_diagonal_bound ρ L t g i
  have heq :
      (∑ g : G, a g) -
          (Fintype.card G : ℝ) * t =
        ∑ g : G, (a g - t) := by
    rw [Finset.sum_sub_distrib]
    simp
  rw [heq]
  calc
    |∑ g : G, (a g - t)| ≤
        ∑ g : G, |a g - t| :=
      Finset.abs_sum_le_sum_abs _ _
    _ ≤ ∑ _g : G, latticeApproximationRadius L :=
      Finset.sum_le_sum fun g _ ↦ ha g
    _ = (Fintype.card G : ℝ) *
        latticeApproximationRadius L := by simp
CyclicCohomology.averagedLatticeVector_offDiagonal_bound
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
theorem averagedLatticeVector_offDiagonal_bound
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L)
    (t : ℝ) {i j : ι} (hji : j ≠ i) :
    |(averagedLatticeVector ρ L hL t i : ι → ℝ) j| ≤
      (Fintype.card G : ℝ) *
        latticeApproximationRadius L := by
  rw [averagedLatticeVector_apply]
  let a : G → ℝ := fun g ↦
    (latticeApproximation L
      (t • Pi.single ((ρ g).symm i) (1 : ℝ)) :
        ι → ℝ) ((ρ g).symm j)
  change |∑ g : G, a g| ≤
    (Fintype.card G : ℝ) *
      latticeApproximationRadius L
  have ha (g : G) :
      |a g| ≤ latticeApproximationRadius L := by
    simpa only [a] using
      averagingSummand_offDiagonal_bound
        ρ L t g hji
  calc
    |∑ g : G, a g| ≤ ∑ g : G, |a g| :=
      Finset.abs_sum_le_sum_abs _ _
    _ ≤ ∑ _g : G, latticeApproximationRadius L :=
      Finset.sum_le_sum fun g _ ↦ ha g
    _ = (Fintype.card G : ℝ) *
        latticeApproximationRadius L := by simp
CyclicCohomology.averagedLatticeMatrix

The coordinate matrix whose columns are the averaged lattice vectors.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
def averagedLatticeMatrix
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L)
    (t : ℝ) : Matrix ι ι ℝ
CyclicCohomology.averagedLatticeMatrix_sum_col_lt_diag
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
theorem averagedLatticeMatrix_sum_col_lt_diag
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L) :
    ∀ k : ι,
      ∑ j ∈ Finset.univ.erase k,
          ‖averagedLatticeMatrix ρ L hL
            (permutationLatticeScale L) j k‖ <
        ‖averagedLatticeMatrix ρ L hL
            (permutationLatticeScale L) k k‖
CyclicCohomology.averagedLatticeMatrix_det_ne_zero
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
theorem averagedLatticeMatrix_det_ne_zero
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L) :
    (averagedLatticeMatrix ρ L hL
      (permutationLatticeScale L)).det ≠ 0
CyclicCohomology.averagedLatticeVector_linearIndependent
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
theorem averagedLatticeVector_linearIndependent
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L) :
    LinearIndependent ℝ
      (fun i ↦
        (averagedLatticeVector ρ L hL
          (permutationLatticeScale L) i :
            ι → ℝ)) := by
  have hcols :=
    Matrix.linearIndependent_cols_of_det_ne_zero
      (averagedLatticeMatrix_det_ne_zero ρ L hL)
  change LinearIndependent ℝ
    (fun i j ↦
      averagedLatticeMatrix ρ L hL
        (permutationLatticeScale L) j i) at hcols
  simpa only [averagedLatticeMatrix] using hcols
CyclicCohomology.averagedLatticeVector_equivariant
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
theorem averagedLatticeVector_equivariant
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L)
    (t : ℝ) (g : G) (i : ι) :
    permutationLatticeEquiv ρ L hL g
        (averagedLatticeVector ρ L hL t i) =
      averagedLatticeVector ρ L hL t (ρ g i)
CyclicCohomology.permutationSublattice

The complete sublattice generated by the equivariantly averaged vectors.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
def permutationSublattice
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L) :
    Submodule ℤ (ι → ℝ)
CyclicCohomology.permutationSublattice_le
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
theorem permutationSublattice_le
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L) :
    permutationSublattice ρ L hL ≤ L
CyclicCohomology.permutationSublattice_discreteTopology
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
instance permutationSublattice_discreteTopology
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L) :
    DiscreteTopology (permutationSublattice ρ L hL)
CyclicCohomology.permutationSublattice_span_eq_top
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
theorem permutationSublattice_span_eq_top
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L) :
    Submodule.span ℝ
        (permutationSublattice ρ L hL :
          Set (ι → ℝ)) = ⊤
CyclicCohomology.permutationSublattice_isZLattice
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
instance permutationSublattice_isZLattice
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L) :
    IsZLattice ℝ (permutationSublattice ρ L hL) where
  span_top := permutationSublattice_span_eq_top ρ L hL
CyclicCohomology.permutationSublatticeBasis

The distinguished basis of the permutation-stable sublattice.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
def permutationSublatticeBasis
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L) :
    Basis ι ℤ (permutationSublattice ρ L hL)
CyclicCohomology.permutationSublatticeBasis_apply_coe
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
theorem permutationSublatticeBasis_apply_coe
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L)
    (i : ι) :
    ((permutationSublatticeBasis ρ L hL i :
        permutationSublattice ρ L hL) : ι → ℝ) =
      averagedLatticeVector ρ L hL
        (permutationLatticeScale L) i
CyclicCohomology.permutationSublatticeBasis_permuted
Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
theorem permutationSublatticeBasis_permuted
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L)
    (g : G) (i : ι) :
    permutationRepresentation ρ g
        (permutationSublatticeBasis ρ L hL i :
          ι → ℝ) =
      (permutationSublatticeBasis ρ L hL (ρ g i) :
        ι → ℝ)
CyclicCohomology.exists_complete_permutationSublattice

An invariant complete lattice in a real permutation representation contains a complete sublattice with a basis permuted in exactly the prescribed way.

Source context 9 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section Averaging
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
omit [Fintype G] [DecidableEq ι] in
theorem exists_complete_permutationSublattice
    [Finite G]
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L) :
    ∃ L' : Submodule ℤ (ι → ℝ),
      L' ≤ L ∧
      DiscreteTopology L' ∧
      Submodule.span ℝ (L' : Set (ι → ℝ)) = ⊤ ∧
      ∃ b : Basis ι ℤ L',
        ∀ (g : G) (i : ι),
          permutationRepresentation ρ g
              (b i : ι → ℝ) =
            (b (ρ g i) : ι → ℝ)
CyclicCohomology.basisEquivFunL_symm_coordinatePermutation
Source context 10 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section GeneralPermutationBasis
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
variable {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E]
omit [Fintype G] [Fintype ι] [DecidableEq ι] in
theorem basisEquivFunL_symm_coordinatePermutation
    [Finite ι]
    (b : Basis ι ℝ E)
    (ρ : G →* Equiv.Perm ι)
    (α : G →* (E ≃ₗ[ℝ] E))
    (hb : ∀ (g : G) (i : ι),
      α g (b i) = b (ρ g i))
    (g : G) (x : ι → ℝ) :
    b.equivFunL.symm
        (coordinatePermutation (ρ g) x) =
      α g (b.equivFunL.symm x)
CyclicCohomology.exists_complete_permutationSublattice_of_basis

Invariant formulation: if a finite group acts on a finite-dimensional real vector space by permuting a specified basis, every invariant complete lattice contains a complete sublattice with a basis permuted in the same way.

Source context 10 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section GeneralPermutationBasis
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
variable {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E]
omit [Fintype G] [Fintype ι] [DecidableEq ι] in
theorem exists_complete_permutationSublattice_of_basis
    [Finite G] [Finite ι]
    (b : Basis ι ℝ E)
    (ρ : G →* Equiv.Perm ι)
    (α : G →* (E ≃ₗ[ℝ] E))
    (hb : ∀ (g : G) (i : ι),
      α g (b i) = b (ρ g i))
    (L : Submodule ℤ E) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : E), x ∈ L →
      α g x ∈ L) :
    ∃ L' : Submodule ℤ E,
      L' ≤ L ∧
      DiscreteTopology L' ∧
      Submodule.span ℝ (L' : Set E) = ⊤ ∧
      ∃ b' : Basis ι ℤ L',
        ∀ (g : G) (i : ι),
          α g (b' i : E) =
            (b' (ρ g i) : E)
CyclicCohomology.finite_quotient_of_complete_sublattice

Two complete integral lattices in the same real vector space are commensurable: if one is contained in the other, its quotient in the larger lattice is finite.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section FiniteIndex
variable {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E]
    [FiniteDimensional ℝ E]
theorem finite_quotient_of_complete_sublattice
    (L L' : Submodule ℤ E)
    [DiscreteTopology L] [IsZLattice ℝ L]
    [DiscreteTopology L'] [IsZLattice ℝ L']
    (hL' : L' ≤ L) :
    Finite (L ⧸ L'.comap L.subtype)
CyclicCohomology.permutationSublattice_finite_quotient

The canonical permutation sublattice has finite index in the original complete invariant lattice.

Source context 8 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace CyclicCohomology
open Module Submodule
open scoped BigOperators
universe uG uι
variable {G : Type uG} {ι : Type uι}
section PermutationFiniteIndex
variable [Fintype G] [Group G] [Fintype ι] [DecidableEq ι]
theorem permutationSublattice_finite_quotient
    (ρ : G →* Equiv.Perm ι)
    (L : Submodule ℤ (ι → ℝ)) [DiscreteTopology L]
    [IsZLattice ℝ L]
    (hL : ∀ (g : G) (x : ι → ℝ), x ∈ L →
      permutationRepresentation ρ g x ∈ L) :
    Finite
      (L ⧸
        (permutationSublattice ρ L hL).comap
          L.subtype)