Module

DiscreteH2CochainComparison.lean

Nyll.GaloisCohomology.ProP.DiscreteH2CochainComparison
15 declarations indexed from sourceView source ↗

Homogeneous and inhomogeneous cochains for a discrete group

For a discrete group in the base universe, continuous homogeneous cochains with lifted trivial mod-p coefficients are additively equivalent to the usual inhomogeneous function cochains. This file records the equivalences in degrees one through three.

Declarations

ClassFieldTower.Cohomology.homogeneousOneCochainLifted_leftInvariant
Source context 7 commands

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

open CategoryTheory TopRep ContRepresentation
namespace ClassFieldTower.Cohomology
noncomputable section
variable {p : ℕ}
variable {Q : Type} [Group Q] [TopologicalSpace Q] [IsTopologicalGroup Q]
variable [DiscreteTopology Q]
omit [DiscreteTopology Q] in
theorem homogeneousOneCochainLifted_leftInvariant
    (c : (trivialZModPCochainsLifted p Q).X 1)
    (a x₀ x₁ : Q) :
    c.1 (a * x₀) (a * x₁) = c.1 x₀ x₁
ClassFieldTower.Cohomology.homogeneousTwoCochainLifted_leftInvariant
Source context 7 commands

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

open CategoryTheory TopRep ContRepresentation
namespace ClassFieldTower.Cohomology
noncomputable section
variable {p : ℕ}
variable {Q : Type} [Group Q] [TopologicalSpace Q] [IsTopologicalGroup Q]
variable [DiscreteTopology Q]
omit [DiscreteTopology Q] in
theorem homogeneousTwoCochainLifted_leftInvariant
    (c : (trivialZModPCochainsLifted p Q).X 2)
    (a x₀ x₁ x₂ : Q) :
    c.1 (a * x₀) (a * x₁) (a * x₂) = c.1 x₀ x₁ x₂
ClassFieldTower.Cohomology.homogeneousThreeCochainLifted_leftInvariant
Source context 7 commands

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

open CategoryTheory TopRep ContRepresentation
namespace ClassFieldTower.Cohomology
noncomputable section
variable {p : ℕ}
variable {Q : Type} [Group Q] [TopologicalSpace Q] [IsTopologicalGroup Q]
variable [DiscreteTopology Q]
omit [DiscreteTopology Q] in
theorem homogeneousThreeCochainLifted_leftInvariant
    (c : (trivialZModPCochainsLifted p Q).X 3)
    (a x₀ x₁ x₂ x₃ : Q) :
    c.1 (a * x₀) (a * x₁) (a * x₂) (a * x₃) =
      c.1 x₀ x₁ x₂ x₃
ClassFieldTower.Cohomology.dehomogenizeOne

Dehomogenize a homogeneous degree-one cochain.

Source context 6 commands

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

open CategoryTheory TopRep ContRepresentation
namespace ClassFieldTower.Cohomology
noncomputable section
variable {p : ℕ}
variable {Q : Type} [Group Q] [TopologicalSpace Q] [IsTopologicalGroup Q]
variable [DiscreteTopology Q]
def dehomogenizeOne
    (c : (trivialZModPCochainsLifted p Q).X 1) (g : Q) : ULift (ZMod p)
ClassFieldTower.Cohomology.homogenizeOne

Homogenize an inhomogeneous degree-one cochain.

Source context 6 commands

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

open CategoryTheory TopRep ContRepresentation
namespace ClassFieldTower.Cohomology
noncomputable section
variable {p : ℕ}
variable {Q : Type} [Group Q] [TopologicalSpace Q] [IsTopologicalGroup Q]
variable [DiscreteTopology Q]
def homogenizeOne (f : Q → ULift (ZMod p)) :
    (trivialZModPCochainsLifted p Q).X 1
ClassFieldTower.Cohomology.homogenizeOne_apply
Source context 6 commands

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

open CategoryTheory TopRep ContRepresentation
namespace ClassFieldTower.Cohomology
noncomputable section
variable {p : ℕ}
variable {Q : Type} [Group Q] [TopologicalSpace Q] [IsTopologicalGroup Q]
variable [DiscreteTopology Q]
theorem homogenizeOne_apply (f : Q → ULift (ZMod p)) (g h : Q) :
    (homogenizeOne f).1 g h = f (g⁻¹ * h)
ClassFieldTower.Cohomology.homogeneousOneCochainAddEquiv

Additive equivalence between homogeneous and inhomogeneous degree-one cochains.

Source context 6 commands

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

open CategoryTheory TopRep ContRepresentation
namespace ClassFieldTower.Cohomology
noncomputable section
variable {p : ℕ}
variable {Q : Type} [Group Q] [TopologicalSpace Q] [IsTopologicalGroup Q]
variable [DiscreteTopology Q]
def homogeneousOneCochainAddEquiv :
    (trivialZModPCochainsLifted p Q).X 1 ≃+ (Q → ULift (ZMod p)) where
  toFun := dehomogenizeOne
  invFun := homogenizeOne
  left_inv := by
    intro c
    apply Subtype.ext
    ext g h
    change c.1 1 (g⁻¹ * h) = c.1 g h
    have hinv := homogeneousOneCochainLifted_leftInvariant c g⁻¹ g h
    simp only [inv_mul_cancel] at hinv
    change c.1 1 (g⁻¹ * h) = c.1 g h at hinv
    exact hinv
  right_inv := by
    intro f
    funext g
    change f (1⁻¹ * g) = f g
    simp
  map_add' := by
    intro c d
    funext g
    rfl
ClassFieldTower.Cohomology.dehomogenizeTwo

Dehomogenize a homogeneous degree-two cochain.

Source context 6 commands

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

open CategoryTheory TopRep ContRepresentation
namespace ClassFieldTower.Cohomology
noncomputable section
variable {p : ℕ}
variable {Q : Type} [Group Q] [TopologicalSpace Q] [IsTopologicalGroup Q]
variable [DiscreteTopology Q]
def dehomogenizeTwo
    (c : (trivialZModPCochainsLifted p Q).X 2)
    (gh : Q × Q) : ULift (ZMod p)
ClassFieldTower.Cohomology.homogenizeTwo

Homogenize an inhomogeneous degree-two cochain.

Source context 6 commands

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

open CategoryTheory TopRep ContRepresentation
namespace ClassFieldTower.Cohomology
noncomputable section
variable {p : ℕ}
variable {Q : Type} [Group Q] [TopologicalSpace Q] [IsTopologicalGroup Q]
variable [DiscreteTopology Q]
def homogenizeTwo (f : Q × Q → ULift (ZMod p)) :
    (trivialZModPCochainsLifted p Q).X 2
ClassFieldTower.Cohomology.homogenizeTwo_apply
Source context 6 commands

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

open CategoryTheory TopRep ContRepresentation
namespace ClassFieldTower.Cohomology
noncomputable section
variable {p : ℕ}
variable {Q : Type} [Group Q] [TopologicalSpace Q] [IsTopologicalGroup Q]
variable [DiscreteTopology Q]
theorem homogenizeTwo_apply
    (f : Q × Q → ULift (ZMod p)) (g h k : Q) :
    (homogenizeTwo f).1 g h k = f (g⁻¹ * h, h⁻¹ * k)
ClassFieldTower.Cohomology.homogeneousTwoCochainAddEquiv

Additive equivalence between homogeneous and inhomogeneous degree-two cochains.

Source context 6 commands

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

open CategoryTheory TopRep ContRepresentation
namespace ClassFieldTower.Cohomology
noncomputable section
variable {p : ℕ}
variable {Q : Type} [Group Q] [TopologicalSpace Q] [IsTopologicalGroup Q]
variable [DiscreteTopology Q]
def homogeneousTwoCochainAddEquiv :
    (trivialZModPCochainsLifted p Q).X 2 ≃+ (Q × Q → ULift (ZMod p)) where
  toFun := dehomogenizeTwo
  invFun := homogenizeTwo
  left_inv := by
    intro c
    apply Subtype.ext
    ext g h k
    change
      c.1 1 (g⁻¹ * h)
            ((g⁻¹ * h) * (h⁻¹ * k)) =
        c.1 g h k
    rw [show (g⁻¹ * h) * (h⁻¹ * k) = g⁻¹ * k by group]
    have hinv := homogeneousTwoCochainLifted_leftInvariant c g⁻¹ g h k
    simp only [inv_mul_cancel] at hinv
    change c.1 1 (g⁻¹ * h) (g⁻¹ * k) = c.1 g h k at hinv
    exact hinv
  right_inv := by
    intro f
    funext gh
    change
      f (1⁻¹ * gh.1, gh.1⁻¹ * (gh.1 * gh.2)) = f gh
    simp
  map_add' := by
    intro c d
    funext gh
    rfl
ClassFieldTower.Cohomology.dehomogenizeThree

Dehomogenize a homogeneous degree-three cochain.

Source context 6 commands

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

open CategoryTheory TopRep ContRepresentation
namespace ClassFieldTower.Cohomology
noncomputable section
variable {p : ℕ}
variable {Q : Type} [Group Q] [TopologicalSpace Q] [IsTopologicalGroup Q]
variable [DiscreteTopology Q]
def dehomogenizeThree
    (c : (trivialZModPCochainsLifted p Q).X 3)
    (ghk : Q × Q × Q) : ULift (ZMod p)
ClassFieldTower.Cohomology.homogenizeThree

Homogenize an inhomogeneous degree-three cochain.

Source context 6 commands

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

open CategoryTheory TopRep ContRepresentation
namespace ClassFieldTower.Cohomology
noncomputable section
variable {p : ℕ}
variable {Q : Type} [Group Q] [TopologicalSpace Q] [IsTopologicalGroup Q]
variable [DiscreteTopology Q]
def homogenizeThree (f : Q × Q × Q → ULift (ZMod p)) :
    (trivialZModPCochainsLifted p Q).X 3
ClassFieldTower.Cohomology.homogenizeThree_apply
Source context 6 commands

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

open CategoryTheory TopRep ContRepresentation
namespace ClassFieldTower.Cohomology
noncomputable section
variable {p : ℕ}
variable {Q : Type} [Group Q] [TopologicalSpace Q] [IsTopologicalGroup Q]
variable [DiscreteTopology Q]
theorem homogenizeThree_apply
    (f : Q × Q × Q → ULift (ZMod p)) (g h k l : Q) :
    (homogenizeThree f).1 g h k l =
      f (g⁻¹ * h, h⁻¹ * k, k⁻¹ * l)
ClassFieldTower.Cohomology.homogeneousThreeCochainAddEquiv

Additive equivalence between homogeneous and inhomogeneous degree-three cochains.

Source context 6 commands

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

open CategoryTheory TopRep ContRepresentation
namespace ClassFieldTower.Cohomology
noncomputable section
variable {p : ℕ}
variable {Q : Type} [Group Q] [TopologicalSpace Q] [IsTopologicalGroup Q]
variable [DiscreteTopology Q]
def homogeneousThreeCochainAddEquiv :
    (trivialZModPCochainsLifted p Q).X 3 ≃+
      (Q × Q × Q → ULift (ZMod p)) where
  toFun := dehomogenizeThree
  invFun := homogenizeThree
  left_inv := by
    intro c
    apply Subtype.ext
    ext g h k l
    change
      c.1 1 (g⁻¹ * h)
            ((g⁻¹ * h) * (h⁻¹ * k))
            ((g⁻¹ * h) * (h⁻¹ * k) * (k⁻¹ * l)) =
        c.1 g h k l
    rw [show (g⁻¹ * h) * (h⁻¹ * k) = g⁻¹ * k by group]
    rw [show g⁻¹ * k * (k⁻¹ * l) = g⁻¹ * l by group]
    have hinv := homogeneousThreeCochainLifted_leftInvariant c g⁻¹ g h k l
    simp only [inv_mul_cancel] at hinv
    change
      c.1 1 (g⁻¹ * h) (g⁻¹ * k) (g⁻¹ * l) =
        c.1 g h k l at hinv
    exact hinv
  right_inv := by
    intro f
    funext ghk
    change
      f (1⁻¹ * ghk.1,
          ghk.1⁻¹ * (ghk.1 * ghk.2.1),
          (ghk.1 * ghk.2.1)⁻¹ *
            (ghk.1 * ghk.2.1 * ghk.2.2)) = f ghk
    apply congrArg f
    apply Prod.ext
    · simp
    · apply Prod.ext
      · simp
      · group
  map_add' := by
    intro c d
    funext ghk
    rfl