FenchelNielsenZomorrodian.Discrete.Singerman.CyclicSchreierKernel

6 Theorem | 6 Definition

This module develops the rewriting and basis constructions behind the subgroup calculations. It tracks words and relations through the chosen transversal to obtain the required presentation or basis statements.

import
Imported by

Declarations

def CyclicSchreierRelatorData
    {X Y : Type} [DecidableEq X] {N : ℕ} [NeZero N] {rels : Set (FreeGroup X)}
    (f : X → Multiplicative (ZMod N))
    (x : X)
    (hx : FreeGroup.lift f (FreeGroup.of x) = Multiplicative.ofAdd (1 : ZMod N))
    (targetRelators : Set (FreeGroup Y)) : Type :=
  (let φ : FreeGroup X →* Multiplicative (ZMod N) := FreeGroup.lift f
    let T := Set.range (cyclicQuotientRightRep φ (FreeGroup.of x))
    let hT : IsRightSchreierTransversal φ.ker T :=
      cyclicQuotientRightRep_isRightSchreierTransversal_of_freeGroupGenerator φ x hx
    let e : FreeGroup ↥(schreierGeneratorSet hT) ≃* φ.ker :=
      freeGroupKernelSchreierBasisEquivOfCyclicQuotientGenerator φ x hx
    ReidemeisterSchreier.Discrete.Presentations.RelatorQuotientMutualMapData
      (ReidemeisterSchreier.Discrete.Presentations.freeGroupPullbackRelatorSet e
        (ReidemeisterSchreier.Discrete.Presentations.freeKernelTransversalRelatorSet (f := f) (rels := rels) T))
      targetRelators)

Relator-quotient mutual map data for the cyclic Schreier kernel presentation.

noncomputable def cyclicSchreierKernelEquivPresentedGroupOfRelatorData
    {X Y : Type} [DecidableEq X] {N : ℕ} [NeZero N] {rels : Set (FreeGroup X)}
    (f : X → Multiplicative (ZMod N))
    (hrels : ∀ r ∈ rels, FreeGroup.lift f r = 1)
    (x : X)
    (hx : FreeGroup.lift f (FreeGroup.of x) = Multiplicative.ofAdd (1 : ZMod N))
    (targetRelators : Set (FreeGroup Y))
    (hData : CyclicSchreierRelatorData (rels := rels) f x hx targetRelators) :
    (PresentedGroup.toGroup (rels := rels) (f := f) hrels).ker ≃*
      PresentedGroup targetRelators := by
  classical
  let φ : FreeGroup X →* Multiplicative (ZMod N) := FreeGroup.lift f
  let T := Set.range (cyclicQuotientRightRep φ (FreeGroup.of x))
  let hT : IsRightSchreierTransversal φ.ker T :=
    cyclicQuotientRightRep_isRightSchreierTransversal_of_freeGroupGenerator φ x hx
  let e : FreeGroup ↥(schreierGeneratorSet hT) ≃* φ.ker :=
    freeGroupKernelSchreierBasisEquivOfCyclicQuotientGenerator φ x hx
  let R : Set (FreeGroup ↥(schreierGeneratorSet hT)) :=
    ReidemeisterSchreier.Discrete.Presentations.freeGroupPullbackRelatorSet e
      (ReidemeisterSchreier.Discrete.Presentations.freeKernelTransversalRelatorSet (f := f) (rels := rels) T)
  let hTarget :
      FreeGroup ↥(schreierGeneratorSet hT) ⧸ Subgroup.normalClosure R ≃*
        PresentedGroup targetRelators :=
    ReidemeisterSchreier.Discrete.Presentations.quotientEquivOfRelatorQuotientMutualMapData R targetRelators
      (by simpa [CyclicSchreierRelatorData, φ, T, hT, e, R] using hData)
  let hKernel :
      FreeGroup ↥(schreierGeneratorSet hT) ⧸ Subgroup.normalClosure R ≃*
        (PresentedGroup.toGroup (rels := rels) (f := f) hrels).ker := by
    simpa [φ, T, hT, e, R] using
      (presentedFreeKernelCyclicSchreierRelatorQuotientEquivPresentedKernel
        (N := N) (rels := rels) (f := f) hrels x hx)
  exact hKernel.symm.trans hTarget

Cyclic Schreier relator data identifies the presented kernel of a cyclic quotient with the target presented group.

def FuchsianEllipticCyclicRelatorData
    {p : ℕ} [NeZero p] {Y : Type} (σ : FuchsianSignature)
    (ξ : Fin σ.numPeriods → Multiplicative (ZMod p))
    (i₀ : Fin σ.numPeriods)
    (hi₀ : ξ i₀ = Multiplicative.ofAdd (1 : ZMod p))
    (targetRelators : Set (FreeGroup Y)) : Type :=
  (letI := Classical.decEq (FuchsianGenerator σ)
   let f := ellipticQuotientGeneratorImage σ ξ
   let x := FuchsianGenerator.elliptic i₀
   let hx :
      FreeGroup.lift f (FreeGroup.of x) = Multiplicative.ofAdd (1 : ZMod p) := by
    simp only [FreeGroup.lift_apply_of, ellipticQuotientGeneratorImage, hi₀, f, x]
   CyclicSchreierRelatorData (N := p) (rels := relators σ) f x hx targetRelators)

Cyclic Schreier relator data for an elliptic quotient of a Fuchsian presentation and the chosen target relators.

def FuchsianEllipticCyclicSchreierRelatorData
    {p : ℕ} [NeZero p] (σ τ : FuchsianSignature)
    (ξ : Fin σ.numPeriods → Multiplicative (ZMod p))
    (i₀ : Fin σ.numPeriods)
    (hi₀ : ξ i₀ = Multiplicative.ofAdd (1 : ZMod p)) : Type :=
  FuchsianEllipticCyclicRelatorData σ ξ i₀ hi₀ (relators τ)

Cyclic Schreier relator data for an elliptic quotient of one Fuchsian presentation with target relators from another Fuchsian signature.

noncomputable def fuchsianEllipticCyclicKernelEquivPresentedGroupOfRelatorData
    {p : ℕ} [NeZero p] {Y : Type} (σ : FuchsianSignature)
    (ξ : Fin σ.numPeriods → Multiplicative (ZMod p))
    (hpow : ∀ i, ξ i ^ σ.periods i = 1)
    (hprod : ∏ i : Fin σ.numPeriods, ξ i = 1)
    (i₀ : Fin σ.numPeriods)
    (hi₀ : ξ i₀ = Multiplicative.ofAdd (1 : ZMod p))
    (targetRelators : Set (FreeGroup Y))
    (D : FuchsianEllipticCyclicRelatorData σ ξ i₀ hi₀ targetRelators) :
    (ellipticQuotientHom σ ξ hpow hprod).ker ≃*
      PresentedGroup targetRelators := by
  classical
  letI := Classical.decEq (FuchsianGenerator σ)
  let f := ellipticQuotientGeneratorImage σ ξ
  let x := FuchsianGenerator.elliptic i₀
  let hx :
      FreeGroup.lift f (FreeGroup.of x) = Multiplicative.ofAdd (1 : ZMod p) := by
    simp only [FreeGroup.lift_apply_of, ellipticQuotientGeneratorImage, hi₀, f, x]
  let hrels : ∀ r ∈ relators σ, FreeGroup.lift f r = 1 :=
    ellipticQuotientGeneratorImage_respects_relators σ ξ hpow hprod
  have hD :
      CyclicSchreierRelatorData (N := p) (rels := relators σ) f x hx targetRelators := by
    simpa [FuchsianEllipticCyclicRelatorData, f, x, hx] using D
  simpa [ellipticQuotientHom, f, x, hx, hrels] using
    cyclicSchreierKernelEquivPresentedGroupOfRelatorData
      (N := p) (rels := relators σ) f hrels x hx targetRelators hD

Fuchsian elliptic cyclic relator data identifies the elliptic-quotient kernel with the target presented group.

noncomputable def fuchsianEllipticCyclicKernelEquivOfRelatorData
    {p : ℕ} [NeZero p] (σ τ : FuchsianSignature)
    (ξ : Fin σ.numPeriods → Multiplicative (ZMod p))
    (hpow : ∀ i, ξ i ^ σ.periods i = 1)
    (hprod : ∏ i : Fin σ.numPeriods, ξ i = 1)
    (i₀ : Fin σ.numPeriods)
    (hi₀ : ξ i₀ = Multiplicative.ofAdd (1 : ZMod p))
    (D : FuchsianEllipticCyclicSchreierRelatorData σ τ ξ i₀ hi₀) :
    (ellipticQuotientHom σ ξ hpow hprod).ker ≃*
      FuchsianPresentedGroup τ :=
  fuchsianEllipticCyclicKernelEquivPresentedGroupOfRelatorData
    σ ξ hpow hprod i₀ hi₀ (relators τ) D

Fuchsian elliptic cyclic Schreier relator data identifies the elliptic-quotient kernel with the target Fuchsian presented group.

theorem freeGroupGeneratorPower_mem_range_cyclicQuotientRightRep
    {X : Type*} {N : ℕ}
    (φ : FreeGroup X →* Multiplicative (ZMod N)) (x : X)
    (hx : φ (FreeGroup.of x) = Multiplicative.ofAdd (1 : ZMod N))
    {m : ℕ} (hm : m < N) :
    (FreeGroup.of x) ^ m ∈ Set.range (cyclicQuotientRightRep φ (FreeGroup.of x))

Each power of the distinguished free generator below the modulus lies in the range of the cyclic quotient right representative.

Show proof
private theorem freeGroupGeneratorPower_mul_generator_mem_range_cyclicQuotientRightRep
    {X : Type*} {N : ℕ}
    (φ : FreeGroup X →* Multiplicative (ZMod N)) (x : X)
    (hx : φ (FreeGroup.of x) = Multiplicative.ofAdd (1 : ZMod N))
    {k : ℕ} (hk : k + 1 < N) :
    (FreeGroup.of x) ^ k * FreeGroup.of x ∈
      Set.range (cyclicQuotientRightRep φ (FreeGroup.of x))

A distinguished-generator power followed by the generator lies in the range of the cyclic quotient right representative before wraparound.

Show proof
theorem cyclicQuotient_distinguished_schreierGenerator_eq_one_of_succ_lt
    {X : Type*} [DecidableEq X] {N : ℕ} [NeZero N]
    (φ : FreeGroup X →* Multiplicative (ZMod N)) (x : X)
    (hx : φ (FreeGroup.of x) = Multiplicative.ofAdd (1 : ZMod N))
    {k : ℕ} (hk : k + 1 < N) :
    let T

In a cyclic quotient, the distinguished Schreier generator is the identity before the wraparound step.

Show proof
theorem cyclicQuotient_distinguished_schreierGenerator_wrap_eq
    {X : Type*} [DecidableEq X] {N : ℕ} [NeZero N]
    (φ : FreeGroup X →* Multiplicative (ZMod N)) (x : X)
    (hx : φ (FreeGroup.of x) = Multiplicative.ofAdd (1 : ZMod N)) :
    let T

The distinguished cyclic-quotient Schreier generator wraps to the prescribed generator.

Show proof
theorem cyclicQuotient_trivialImage_schreierGenerator_eq_conj
    {X : Type*} [DecidableEq X] {N : ℕ} [NeZero N]
    (φ : FreeGroup X →* Multiplicative (ZMod N)) (x y : X)
    (hx : φ (FreeGroup.of x) = Multiplicative.ofAdd (1 : ZMod N))
    (hy : φ (FreeGroup.of y) = 1) (k : Fin N) :
    let T

If a generator has trivial cyclic-quotient image, its Schreier generator is the corresponding conjugate by the quotient representative.

Show proof
theorem cyclicQuotient_negOneImage_schreierGenerator_eq
    {X : Type*} [DecidableEq X] {N : ℕ} [NeZero N]
    (φ : FreeGroup X →* Multiplicative (ZMod N)) (x y : X)
    (hx : φ (FreeGroup.of x) = Multiplicative.ofAdd (1 : ZMod N))
    (hy : φ (FreeGroup.of y) = Multiplicative.ofAdd (-1 : ZMod N)) (k : Fin N) :
    let T

The negative-one image in the cyclic quotient gives the corresponding Schreier generator.

Show proof