Module

Basic.lean

Nyll.ProCGroups.FoxDifferential.Discrete.KernelBoundary.Basic
29 declarations indexed from sourceView source ↗

Fox differential: discrete — kernel boundary — basic

The principal declarations in this module are:

  • KernelAbelianizationAdd

Additive form of the kernel abelianization map.

  • kernelBoundary

The kernel of \(\psi\) maps multiplicatively into the additive differential module via d.

  • augmentation_toGroupRing_eq_zero

The Crowell boundary map lands in the kernel of the augmentation map.

  • augmentation_surjective

The augmentation map \(\mathbb{Z}[H] \to \mathbb{Z}\) is surjective.

Declarations

FoxDifferential.KernelAbelianizationAdd

Additive form of the kernel abelianization map.

Source context 3 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
abbrev KernelAbelianizationAdd (ψ : G →* H) : Type _
FoxDifferential.augmentation_toGroupRing_eq_zero

The Crowell boundary map lands in the kernel of the augmentation map.

Source context 4 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
omit [DecidableEq H] [DecidableEq G] in
theorem augmentation_toGroupRing_eq_zero (ψ : G →* H) (x : DifferentialModule ψ) :
    augmentation H (toGroupRing ψ x) = 0
FoxDifferential.augmentation_surjective

The augmentation map \(\mathbb{Z}[H] \to \mathbb{Z}\) is surjective.

Source context 4 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
omit [DecidableEq H] in
theorem augmentation_surjective : Function.Surjective (augmentation H)
FoxDifferential.exact_toGroupRing_augmentation

Tail exactness of the discrete Crowell sequence: \(A_{\psi}\) \(\to\) \(\mathbb{Z}[H]\) \(\to\) \(\mathbb{Z}\) is used when \(\psi\) is surjective.

Source context 4 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
omit [DecidableEq H] [DecidableEq G] in
theorem exact_toGroupRing_augmentation (ψ : G →* H) (hψ : Function.Surjective ψ) :
    Function.Exact (fun x => toGroupRing ψ x) (augmentation H) := by
  intro y
  constructor
  · intro hy
    have hy_mem : y ∈ augmentationIdeal H := (mem_augmentationIdeal_iff (H := H) (x := y)).2 hy
    let y' : augmentationIdeal H := ⟨y, hy_mem⟩
    rcases toAugmentationIdeal_surjective (H := H) ψ hψ y' with ⟨x, hx⟩
    refine ⟨x, ?_⟩
    exact congrArg Subtype.val hx
  · rintro ⟨x, rfl⟩
    exact augmentation_toGroupRing_eq_zero (H := H) ψ x
FoxDifferential.kernelBoundary

The kernel of \(\psi\) maps multiplicatively into the additive differential module via d.

Source context 3 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
def kernelBoundary (ψ : G →* H) : ψ.ker →* Multiplicative (DifferentialModule ψ) where
  toFun g := Multiplicative.ofAdd (universalDifferential ψ g.1)
  map_one' := by
    apply congrArg Multiplicative.ofAdd
    simp only [OneMemClass.coe_one, universalDifferential_one]
  map_mul' g₁ g₂ := by
    apply congrArg Multiplicative.ofAdd
    have h := universalDifferential_mul ψ g₁.1 g₂.1
    have hψ : (MonoidAlgebra.of ℤ H (ψ g₁.1) : GroupRing H) = 1 := by
      rw [g₁.2, groupRing_of_one (H := H)]
    rw [hψ, one_smul] at h
    simpa using h
FoxDifferential.kernelAbelianizationBoundary

The kernel boundary factors through the abelianization of \(\ker \psi\).

Source context 3 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
def kernelAbelianizationBoundary (ψ : G →* H) :
    Abelianization ψ.ker →* Multiplicative (DifferentialModule ψ)
FoxDifferential.kernelAbelianizationBoundaryAdd

The additive kernel-boundary map sends a kernel element to its abelianization boundary class.

Source context 3 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
def kernelAbelianizationBoundaryAdd (ψ : G →* H) :
    Additive (Abelianization ψ.ker) →+ DifferentialModule ψ where
  toFun x := Multiplicative.toAdd (kernelAbelianizationBoundary ψ (Additive.toMul x))
  map_zero' := by
    simp only [toMul_zero, map_one, toAdd_one]
  map_add' x y := by
    simp only [toMul_add, map_mul, toAdd_mul]
FoxDifferential.kernelAbelianizationBoundaryAdd_of

The additive kernel-boundary map has the stated value on a kernel element.

Source context 4 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
omit [DecidableEq H] [DecidableEq G] in
theorem kernelAbelianizationBoundaryAdd_of (ψ : G →* H) (g : ψ.ker) :
    kernelAbelianizationBoundaryAdd ψ (Additive.ofMul (Abelianization.of g)) =
        universalDifferential ψ g.1
FoxDifferential.kernelAbelianizationConj

Conjugation by G on \(\ker \psi\), transported to the abelianization of \(\ker \psi\).

Source context 3 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
def kernelAbelianizationConj (ψ : G →* H) :
    G →* MulAut (Abelianization ψ.ker) where
  toFun g := (MulAut.conjNormal (H := ψ.ker) g).abelianizationCongr
  map_one' := by
    ext x
    refine QuotientGroup.induction_on x ?_
    intro n
    have hconj : MulAut.conjNormal (H := ψ.ker) (1 : G) = 1 := by
      ext m
      simp only [map_one, MulAut.one_apply]
    rw [hconj]
    rfl
  map_mul' g₁ g₂ := by
    ext x
    refine QuotientGroup.induction_on x ?_
    intro n
    let e₁ : MulAut ψ.ker := MulAut.conjNormal (H := ψ.ker) g₁
    let e₂ : MulAut ψ.ker := MulAut.conjNormal (H := ψ.ker) g₂
    have hconj : MulAut.conjNormal (H := ψ.ker) (g₁ * g₂) = e₁ * e₂ := by
      ext m
      simp only [map_mul, MulAut.mul_apply, MulAut.conjNormal_apply, mul_assoc, e₁, e₂]
    rw [hconj]
    calc
      (e₁ * e₂).abelianizationCongr (Abelianization.of n)
          = Abelianization.of ((e₁ * e₂) n) := by
              exact abelianizationCongr_of (e := e₁ * e₂) n
      _ = e₁.abelianizationCongr (Abelianization.of (e₂ n)) := by
            exact (abelianizationCongr_of (e := e₁) (e₂ n)).symm
      _ = e₁.abelianizationCongr (e₂.abelianizationCongr (Abelianization.of n)) := by
            rw [abelianizationCongr_of (e := e₂) n]
      _ = (e₁.abelianizationCongr * e₂.abelianizationCongr) (Abelianization.of n) := by
            rfl
FoxDifferential.kernelAbelianizationConj_of

The conjugation action on kernel abelianization is computed by the displayed representative formula.

Source context 4 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
omit [DecidableEq H] [DecidableEq G] in
theorem kernelAbelianizationConj_of (ψ : G →* H) (g : G) (n : ψ.ker) :
    kernelAbelianizationConj ψ g (Abelianization.of n) =
      Abelianization.of (MulAut.conjNormal (H := ψ.ker) g n)
FoxDifferential.kernelAbelianizationConj_eq_one_of_mem_ker

Conjugation by a kernel element becomes trivial in the kernel abelianization.

Source context 4 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
omit [DecidableEq H] [DecidableEq G] in
theorem kernelAbelianizationConj_eq_one_of_mem_ker (ψ : G →* H) (n : ψ.ker) :
    kernelAbelianizationConj ψ n = 1
FoxDifferential.ker_le_kernelAbelianizationConj_ker

Elements in the kernel of \(\psi\) act trivially after passing to the kernel abelianization action.

Source context 4 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
omit [DecidableEq H] [DecidableEq G] in
theorem ker_le_kernelAbelianizationConj_ker (ψ : G →* H) :
    ψ.ker ≤ (kernelAbelianizationConj ψ).ker
FoxDifferential.quotientKernelAbelianizationConj

The conjugation action on the abelianization of \(\ker \psi\) factors through \(G/\ker \psi\).

Source context 3 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
def quotientKernelAbelianizationConj (ψ : G →* H) :
    G ⧸ ψ.ker →* MulAut (Abelianization ψ.ker)
FoxDifferential.kernelAbelianizationConjOfSurjective

If \(\psi\) is surjective, the conjugation action on the abelianization of \(\ker \psi\) is expressed directly as an action of H.

Source context 4 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
omit [DecidableEq H] [DecidableEq G] in
def kernelAbelianizationConjOfSurjective
    (ψ : G →* H) (hψ : Function.Surjective ψ) :
    H →* MulAut (Abelianization ψ.ker)
FoxDifferential.kernelAbelianizationConjOfSurjective_eq_surjInv

For a surjective \(\psi\), the induced action on the kernel abelianization agrees with conjugation by a chosen preimage.

Source context 4 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
omit [DecidableEq H] [DecidableEq G] in
theorem kernelAbelianizationConjOfSurjective_eq_surjInv
    (ψ : G →* H) (hψ : Function.Surjective ψ) (h : H) :
    kernelAbelianizationConjOfSurjective ψ hψ h =
      kernelAbelianizationConj ψ (Function.surjInv hψ h)
FoxDifferential.kernelAbelianizationAddAutOfSurjective

For a surjective homomorphism, the conjugation action on the kernel abelianization is rewritten as an additive automorphism action.

Source context 3 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
def kernelAbelianizationAddAutOfSurjective
    (ψ : G →* H) (hψ : Function.Surjective ψ) :
    H →* Multiplicative (AddAut (KernelAbelianizationAdd ψ))
FoxDifferential.kernelAbelianizationAddAutToModuleEnd

An additive automorphism of the kernel abelianization determines its underlying \(\mathbb{Z}\)-linear endomorphism.

Source context 4 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
omit [DecidableEq H] [DecidableEq G] in
def kernelAbelianizationAddAutToModuleEnd (ψ : G →* H) :
    Multiplicative (AddAut (KernelAbelianizationAdd ψ)) →*
      Module.End ℤ (KernelAbelianizationAdd ψ) where
  toFun e := e.toAdd.toIntLinearEquiv.toLinearMap
  map_one' := by
    ext x
    change (0 : AddAut (KernelAbelianizationAdd ψ)) x = x
    rfl
  map_mul' e₁ e₂ := by
    ext x
    change (e₁.toAdd + e₂.toAdd) x = e₁.toAdd (e₂.toAdd x)
    rfl
FoxDifferential.kernelAbelianizationModuleEndOfSurjective

The surjective-case action as a hom into \(\mathbb{Z}\)-linear endomorphisms.

Source context 3 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
def kernelAbelianizationModuleEndOfSurjective
    (ψ : G →* H) (hψ : Function.Surjective ψ) :
    H →* Module.End ℤ (KernelAbelianizationAdd ψ) where
  toFun h := kernelAbelianizationAddAutToModuleEnd (ψ := ψ)
    (kernelAbelianizationAddAutOfSurjective ψ hψ h)
  map_one' := by
    rw [(kernelAbelianizationAddAutOfSurjective ψ hψ).map_one]
    ext x
    rfl
  map_mul' h₁ h₂ := by
    rw [(kernelAbelianizationAddAutOfSurjective ψ hψ).map_mul]
    ext x
    rfl
FoxDifferential.kernelAbelianizationModuleEndOfSurjective_apply

The module endomorphism associated to h acts by the conjugation automorphism obtained from a chosen lift of h.

Source context 4 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
omit [DecidableEq H] [DecidableEq G] in
theorem kernelAbelianizationModuleEndOfSurjective_apply
    (ψ : G →* H) (hψ : Function.Surjective ψ) (h : H) (x : KernelAbelianizationAdd ψ) :
    kernelAbelianizationModuleEndOfSurjective ψ hψ h x =
      Additive.ofMul (kernelAbelianizationConjOfSurjective ψ hψ h (Additive.toMul x))
FoxDifferential.kernelAbelianizationActionRingHomOfSurjective

The induced \(\mathbb{Z}[H]\)-action on \((\ker \psi)^{\mathrm{ab}}\), written in additive form.

Source context 3 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
def kernelAbelianizationActionRingHomOfSurjective
    (ψ : G →* H) (hψ : Function.Surjective ψ) :
    GroupRing H →+* Module.End ℤ (KernelAbelianizationAdd ψ)
FoxDifferential.kernelAbelianizationActionRingHomOfSurjective_of

The surjective-case group-ring action on kernel abelianization has the displayed value on representatives.

Source context 4 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
omit [DecidableEq H] [DecidableEq G] in
theorem kernelAbelianizationActionRingHomOfSurjective_of
    (ψ : G →* H) (hψ : Function.Surjective ψ) (h : H) :
    kernelAbelianizationActionRingHomOfSurjective ψ hψ (MonoidAlgebra.of ℤ H h) =
      kernelAbelianizationModuleEndOfSurjective ψ hψ h
FoxDifferential.kernelAbelianizationModuleOfSurjective

The \(\mathbb{Z}[H]\)-module structure on \(\ker(\psi)^{\mathrm{ab}}\) induced by surjective conjugation.

Source context 3 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
def kernelAbelianizationModuleOfSurjective
    (ψ : G →* H) (hψ : Function.Surjective ψ) :
    Module (GroupRing H) (KernelAbelianizationAdd ψ)
FoxDifferential.kernelAbelianizationBoundaryAdd_conjOfSurjective

For a surjective \(\psi\), the additive kernel-boundary map intertwines the induced conjugation action with scalar multiplication by the corresponding group-ring basis element.

Source context 4 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
omit [DecidableEq H] [DecidableEq G] in
theorem kernelAbelianizationBoundaryAdd_conjOfSurjective
    (ψ : G →* H) (hψ : Function.Surjective ψ) (h : H) (x : Abelianization ψ.ker) :
    kernelAbelianizationBoundaryAdd ψ
        (Additive.ofMul (kernelAbelianizationConjOfSurjective ψ hψ h x)) =
      (MonoidAlgebra.of ℤ H h : GroupRing H) •
        kernelAbelianizationBoundaryAdd ψ (Additive.ofMul x)
FoxDifferential.kernelAbelianizationBoundaryAdd_commOfSurjective

The kernel-boundary additive map is compatible with the surjective-case group-ring action.

Source context 4 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
omit [DecidableEq H] [DecidableEq G] in
theorem kernelAbelianizationBoundaryAdd_commOfSurjective
    (ψ : G →* H) (hψ : Function.Surjective ψ) (h : H) (x : KernelAbelianizationAdd ψ) :
    letI := kernelAbelianizationModuleOfSurjective ψ hψ
    kernelAbelianizationBoundaryAdd ψ ((MonoidAlgebra.of ℤ H h : GroupRing H) • x) =
      (MonoidAlgebra.of ℤ H h : GroupRing H) • kernelAbelianizationBoundaryAdd ψ x := by
  let := kernelAbelianizationModuleOfSurjective ψ hψ
  change kernelAbelianizationBoundaryAdd ψ
      ((kernelAbelianizationActionRingHomOfSurjective ψ hψ (MonoidAlgebra.of ℤ H h)) x) =
    (MonoidAlgebra.of ℤ H h : GroupRing H) • kernelAbelianizationBoundaryAdd ψ x
  rw [kernelAbelianizationActionRingHomOfSurjective_of,
    kernelAbelianizationModuleEndOfSurjective_apply]
  simpa using
    kernelAbelianizationBoundaryAdd_conjOfSurjective ψ hψ h (Additive.toMul x)
FoxDifferential.kernelAbelianizationBoundaryLinearOfSurjective

The head map of the discrete Crowell sequence, in \(\mathbb{Z}[H]\)-linear form when \(\psi\) is surjective.

Source context 3 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
def kernelAbelianizationBoundaryLinearOfSurjective
    (ψ : G →* H) (hψ : Function.Surjective ψ) :
    letI := kernelAbelianizationModuleOfSurjective ψ hψ
    KernelAbelianizationAdd ψ →ₗ[GroupRing H] DifferentialModule ψ := by
  letI := kernelAbelianizationModuleOfSurjective ψ hψ
  let f : KernelAbelianizationAdd ψ →ₗ[ℤ] DifferentialModule ψ :=
    (kernelAbelianizationBoundaryAdd ψ).toIntLinearMap
  exact MonoidAlgebra.equivariantOfLinearOfComm f
    (fun h x => by
      exact kernelAbelianizationBoundaryAdd_commOfSurjective (ψ := ψ) hψ h x)
FoxDifferential.kernelAbelianizationBoundaryLinearOfSurjective_of

The linear kernel-boundary map in the surjective case has the stated value on a kernel element.

Source context 4 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
omit [DecidableEq H] [DecidableEq G] in
theorem kernelAbelianizationBoundaryLinearOfSurjective_of
    (ψ : G →* H) (hψ : Function.Surjective ψ) (n : ψ.ker) :
    kernelAbelianizationBoundaryLinearOfSurjective ψ hψ
        (Additive.ofMul (Abelianization.of n)) = universalDifferential ψ n.1
FoxDifferential.kernelAbelianizationBoundaryLinearOfSurjective_apply

The kernel-abelianization boundary map is evaluated on canonical generators and then extended linearly.

Source context 4 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
omit [DecidableEq H] [DecidableEq G] in
theorem kernelAbelianizationBoundaryLinearOfSurjective_apply
    (ψ : G →* H) (hψ : Function.Surjective ψ) (x : KernelAbelianizationAdd ψ) :
    kernelAbelianizationBoundaryLinearOfSurjective ψ hψ x =
      kernelAbelianizationBoundaryAdd ψ x
FoxDifferential.toGroupRing_kernelAbelianizationBoundaryLinearOfSurjective

Composing the surjective-case kernel-boundary map with the group-ring map gives the expected group-ring boundary.

Source context 4 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
omit [DecidableEq H] [DecidableEq G] in
theorem toGroupRing_kernelAbelianizationBoundaryLinearOfSurjective
    (ψ : G →* H) (hψ : Function.Surjective ψ) (x : KernelAbelianizationAdd ψ) :
    toGroupRing ψ (kernelAbelianizationBoundaryLinearOfSurjective ψ hψ x) = 0
FoxDifferential.kernelAbelianizationBoundaryRangeOfSurjective

The \(A_{\psi}\)-submodule generated by the head map in the surjective case.

Source context 3 commands

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

namespace FoxDifferential
noncomputable section
variable {H G : Type*} [Group H] [DecidableEq H] [Group G] [DecidableEq G]
abbrev kernelAbelianizationBoundaryRangeOfSurjective
    (ψ : G →* H) (hψ : Function.Surjective ψ) :
    Submodule (GroupRing H) (DifferentialModule ψ)