FenchelNielsenZomorrodian.Discrete.CompactFuchsian.SecondReduction.Relators.Target

9 Theorem | 4 Definition

This module develops the maps induced by continuous homomorphisms. It organizes the relevant quotient pullbacks and finite-stage maps, then proves the compatibility statements needed for the completed construction.

import
Imported by

Declarations

theorem secondReductionCanonicalTransportToSchreierHom_positiveDistinguished
    {tailLen p q : ℕ}
    (m₁' m₂' m₃' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hq : 2 ≤ q)
    (hm₁' : 2 ≤ m₁') (hm₂' : 2 ≤ m₂') (hm₃' : 2 ≤ m₃')
    (htail : ∀ j, 2 ≤ tail j) :
    letI : NeZero q

The target-to-Schreier transport homomorphism sends the positive distinguished generator to its prescribed Schreier word.

Show proof
theorem secondReductionCanonicalTransportToSchreierHom_negativeDistinguished
    {tailLen p q : ℕ}
    (m₁' m₂' m₃' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hq : 2 ≤ q)
    (hm₁' : 2 ≤ m₁') (hm₂' : 2 ≤ m₂') (hm₃' : 2 ≤ m₃')
    (htail : ∀ j, 2 ≤ tail j) :
    letI : NeZero q

The target-to-Schreier transport homomorphism sends the negative distinguished generator to its prescribed Schreier word.

Show proof
theorem secondReductionCanonicalTransportToSchreierHom_headZero
    {tailLen p q : ℕ}
    (m₁' m₂' m₃' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hq : 2 ≤ q)
    (hm₁' : 2 ≤ m₁') (hm₂' : 2 ≤ m₂') (hm₃' : 2 ≤ m₃')
    (htail : ∀ j, 2 ≤ tail j)
    (k : Fin q) :
    letI : NeZero q

The target-to-Schreier transport homomorphism sends the head-zero generator to its prescribed Schreier word.

Show proof
theorem secondReductionCanonicalTransportToSchreierHom_headOne
    {tailLen p q : ℕ}
    (m₁' m₂' m₃' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hq : 2 ≤ q)
    (hm₁' : 2 ≤ m₁') (hm₂' : 2 ≤ m₂') (hm₃' : 2 ≤ m₃')
    (htail : ∀ j, 2 ≤ tail j)
    (k : Fin q) :
    letI : NeZero q

The target-to-Schreier transport homomorphism sends the head-one generator to its prescribed Schreier word.

Show proof
theorem secondReductionCanonicalTransportToSchreierHom_middleRest
    {tailLen p q : ℕ}
    (m₁' m₂' m₃' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hq : 2 ≤ q)
    (hm₁' : 2 ≤ m₁') (hm₂' : 2 ≤ m₂') (hm₃' : 2 ≤ m₃')
    (htail : ∀ j, 2 ≤ tail j)
    (r : Fin (p - 2)) (k : Fin q) :
    letI : NeZero q

The target-to-Schreier transport homomorphism sends the middle-rest generator to its prescribed Schreier word.

Show proof
theorem secondReductionCanonicalTransportToSchreierHom_tail
    {tailLen p q : ℕ}
    (m₁' m₂' m₃' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hq : 2 ≤ q)
    (hm₁' : 2 ≤ m₁') (hm₂' : 2 ≤ m₂') (hm₃' : 2 ≤ m₃')
    (htail : ∀ j, 2 ≤ tail j)
    (b : Fin p) (j : Fin tailLen) (k : Fin q) :
    letI : NeZero q

The target-to-Schreier transport homomorphism sends the tail generator to its prescribed Schreier word.

Show proof
noncomputable def secondReductionCanonicalTransportZeroBlockWord
    {tailLen p q : ℕ}
    (m₁' m₂' m₃' : ℕ) (tail : Fin tailLen → ℕ)
    (hq : 2 ≤ q)
    (hm₁' : 2 ≤ m₁') (hm₂' : 2 ≤ m₂') (hm₃' : 2 ≤ m₃')
    (htail : ∀ j, 2 ≤ tail j) :
    let τ :=
      secondReductionTransportSignature (p := p) hq
        m₁' m₂' m₃' tail hm₁' hm₂' hm₃' htail
    Fin q → FreeGroup (FuchsianGenerator τ) := by
  classical
  dsimp
  let τ :=
    secondReductionTransportSignature (p := p) hq
      m₁' m₂' m₃' tail hm₁' hm₂' hm₃' htail
  let targetWord :=
    secondReductionCanonicalTransportTargetWord (p := p) (q := q)
      m₁' m₂' m₃' tail hq hm₁' hm₂' hm₃' htail
  intro k
  exact
    (List.ofFn (fun r : Fin (p - 2) =>
      targetWord (secondReductionCanonicalTransportMiddleRestIndex tailLen p q r k))).prod *
      (List.ofFn (fun b : Fin p =>
        (List.ofFn (fun j : Fin tailLen =>
          targetWord (secondReductionCanonicalTransportTailIndex tailLen p q b j k))).prod)).prod *
        targetWord (secondReductionCanonicalTransportHeadIndex tailLen p q ⟨0, by decide⟩ k) *
        targetWord (secondReductionCanonicalTransportHeadIndex tailLen p q ⟨1, by decide⟩ k)

The transported zero-block word in the second-reduction canonical target.

noncomputable def secondReductionCanonicalTransportBlockTotalWord
    {tailLen p q : ℕ}
    (m₁' m₂' m₃' : ℕ) (tail : Fin tailLen → ℕ)
    (hq : 2 ≤ q)
    (hm₁' : 2 ≤ m₁') (hm₂' : 2 ≤ m₂') (hm₃' : 2 ≤ m₃')
    (htail : ∀ j, 2 ≤ tail j) :
    let τ :=
      secondReductionTransportSignature (p := p) hq
        m₁' m₂' m₃' tail hm₁' hm₂' hm₃' htail
    FreeGroup (FuchsianGenerator τ) := by
  classical
  dsimp
  let τ :=
    secondReductionTransportSignature (p := p) hq
      m₁' m₂' m₃' tail hm₁' hm₂' hm₃' htail
  let A :=
    xWord τ
      ((Fintype.equivFin (SecondReductionTransportIndex tailLen p q))
        (secondReductionCanonicalTransportDistinguishedIndex tailLen p q ⟨0, by decide⟩))
  let B :=
    xWord τ
      ((Fintype.equivFin (SecondReductionTransportIndex tailLen p q))
        (secondReductionCanonicalTransportDistinguishedIndex tailLen p q ⟨1, by decide⟩))
  let C :=
    (List.ofFn (fun k : Fin q =>
      secondReductionCanonicalTransportZeroBlockWord (p := p) (q := q)
        m₁' m₂' m₃' tail hq hm₁' hm₂' hm₃' htail k)).prod
  exact A * B * C

The transported total block word in the second-reduction canonical target.

noncomputable def secondReductionCanonicalTransportBlockRelators
    {tailLen p q : ℕ}
    (m₁' m₂' m₃' : ℕ) (tail : Fin tailLen → ℕ)
    (hq : 2 ≤ q)
    (hm₁' : 2 ≤ m₁') (hm₂' : 2 ≤ m₂') (hm₃' : 2 ≤ m₃')
    (htail : ∀ j, 2 ≤ tail j) :
    let τ :=
      secondReductionTransportSignature (p := p) hq
        m₁' m₂' m₃' tail hm₁' hm₂' hm₃' htail
    Set (FreeGroup (FuchsianGenerator τ)) := by
  classical
  dsimp
  let τ :=
    secondReductionTransportSignature (p := p) hq
      m₁' m₂' m₃' tail hm₁' hm₂' hm₃' htail
  exact
    {r | (∃ i : Fin τ.numPeriods, r = (xWord τ i) ^ τ.periods i) ∨
      r =
        secondReductionCanonicalTransportBlockTotalWord (p := p) (q := q)
          m₁' m₂' m₃' tail hq hm₁' hm₂' hm₃' htail}

The transported block relator family in the second-reduction canonical target.

theorem secondReductionCanonicalTransport_powerRelator_mem_blockRelators
    {tailLen p q : ℕ}
    (m₁' m₂' m₃' : ℕ) (tail : Fin tailLen → ℕ)
    (hq : 2 ≤ q)
    (hm₁' : 2 ≤ m₁') (hm₂' : 2 ≤ m₂') (hm₃' : 2 ≤ m₃')
    (htail : ∀ j, 2 ≤ tail j)
    (i : Fin
      (secondReductionTransportSignature (p := p) hq
        m₁' m₂' m₃' tail hm₁' hm₂' hm₃' htail).numPeriods) :
    (xWord
        (secondReductionTransportSignature (p := p) hq
          m₁' m₂' m₃' tail hm₁' hm₂' hm₃' htail) i) ^
      (secondReductionTransportSignature (p := p) hq
        m₁' m₂' m₃' tail hm₁' hm₂' hm₃' htail).periods i ∈
      secondReductionCanonicalTransportBlockRelators (p := p) (q := q)
        m₁' m₂' m₃' tail hq hm₁' hm₂' hm₃' htail

Each power relator for a second-reduction transport generator belongs to the block relator set.

Show proof
theorem secondReductionCanonicalTransport_blockTotalWord_mem_blockRelators
    {tailLen p q : ℕ}
    (m₁' m₂' m₃' : ℕ) (tail : Fin tailLen → ℕ)
    (hq : 2 ≤ q)
    (hm₁' : 2 ≤ m₁') (hm₂' : 2 ≤ m₂') (hm₃' : 2 ≤ m₃')
    (htail : ∀ j, 2 ≤ tail j) :
    secondReductionCanonicalTransportBlockTotalWord (p := p) (q := q)
        m₁' m₂' m₃' tail hq hm₁' hm₂' hm₃' htail ∈
      secondReductionCanonicalTransportBlockRelators (p := p) (q := q)
        m₁' m₂' m₃' tail hq hm₁' hm₂' hm₃' htail

The total block word for the second-reduction transport presentation is one of the block relators.

Show proof
private theorem secondReductionCanonicalTransportBlockTotalWord_map_orderedTarget
    {tailLen p q : ℕ}
    (m₁' m₂' m₃' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hq : 2 ≤ q)
    (hm₁' : 2 ≤ m₁') (hm₂' : 2 ≤ m₂') (hm₃' : 2 ≤ m₃')
    (htail : ∀ j, 2 ≤ tail j) :
    let υ

The second-reduction transport block total word maps to the ordered-target total word.

Show proof
noncomputable def secondReductionCanonicalTransportBlockRelatorsEquivOrderedTarget
    {tailLen p q : ℕ}
    (m₁' m₂' m₃' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hq : 2 ≤ q)
    (hm₁' : 2 ≤ m₁') (hm₂' : 2 ≤ m₂') (hm₃' : 2 ≤ m₃')
    (htail : ∀ j, 2 ≤ tail j) :
    PresentedGroup
        (secondReductionCanonicalTransportBlockRelators (p := p) (q := q)
          m₁' m₂' m₃' tail hq hm₁' hm₂' hm₃' htail) ≃*
      FuchsianPresentedGroup
        (secondReductionCanonicalOrderedTargetSignature
          m₁' m₂' m₃' tail hp hq hm₁' hm₂' hm₃' htail) := by
  classical
  let τ :=
    secondReductionTransportSignature (p := p) hq
      m₁' m₂' m₃' tail hm₁' hm₂' hm₃' htail
  let υ :=
    secondReductionCanonicalOrderedTargetSignature
      m₁' m₂' m₃' tail hp hq hm₁' hm₂' hm₃' htail
  let eFin :=
    secondReductionCanonicalTransportFinEquivOrderedTargetFin
      m₁' m₂' m₃' tail hp hq hm₁' hm₂' hm₃' htail
  let eGen :=
    secondReductionCanonicalTransportGeneratorEquivOrderedTarget
      m₁' m₂' m₃' tail hp hq hm₁' hm₂' hm₃' htail
  let eFG : FreeGroup (FuchsianGenerator τ) ≃*
      FreeGroup (FuchsianGenerator υ) :=
    FreeGroup.freeGroupCongr eGen
  let R : Set (FreeGroup (FuchsianGenerator τ)) :=
    secondReductionCanonicalTransportBlockRelators (p := p) (q := q)
      m₁' m₂' m₃' tail hq hm₁' hm₂' hm₃' htail
  let S : Set (FreeGroup (FuchsianGenerator υ)) := relators υ
  refine
    ReidemeisterSchreier.Discrete.Presentations.quotientEquivOfRelatorQuotientMutualMapData R S
      (ReidemeisterSchreier.Discrete.Presentations.relatorQuotientMutualMapDataOfRelatorImagesMemNormalClosure eFG R S ?_ ?_)
  · intro r hr
    change
        ((∃ i : Fin τ.numPeriods, r = (xWord τ i) ^ τ.periods i) ∨
          r =
            secondReductionCanonicalTransportBlockTotalWord (p := p) (q := q)
              m₁' m₂' m₃' tail hq hm₁' hm₂' hm₃' htail) at hr
    rcases hr with ⟨i, rfl⟩ | htotal
    · have hperiod :
          τ.periods i = υ.periods (eFin i) := by
        simpa [τ, υ, eFin] using
          secondReductionCanonicalTransportOrdered_period
            m₁' m₂' m₃' tail hp hq hm₁' hm₂' hm₃' htail i
      have hx :
          eFG (xWord τ i) = xWord υ (eFin i) := by
        simpa [τ, υ, eFin, eGen, eFG] using
          secondReductionCanonicalTransportOrdered_xWord
            m₁' m₂' m₃' tail hp hq hm₁' hm₂' hm₃' htail i
      have hrel :
          eFG ((xWord τ i) ^ τ.periods i) =
            (xWord υ (eFin i)) ^ υ.periods (eFin i) := by
        rw [map_pow, hx, hperiod]
      rw [hrel]
      exact Subgroup.subset_normalClosure (Or.inl ⟨eFin i, rfl⟩)
    · rw [htotal]
      have htotalMap :
          eFG
              (secondReductionCanonicalTransportBlockTotalWord (p := p) (q := q)
                m₁' m₂' m₃' tail hq hm₁' hm₂' hm₃' htail) =
            totalRelation υ := by
        simpa [τ, υ, eGen, eFG] using
          secondReductionCanonicalTransportBlockTotalWord_map_orderedTarget
            m₁' m₂' m₃' tail hp hq hm₁' hm₂' hm₃' htail
      rw [htotalMap]
      exact Subgroup.subset_normalClosure (Or.inr rfl)
  · intro s hs
    rcases hs with ⟨i, rfl⟩ | htotal
    · let j := eFin.symm i
      have hji : eFin j = i := by
        simp only [Equiv.apply_symm_apply, j]
      have hperiod : υ.periods i = τ.periods j := by
        rw [← hji]
        simpa [τ, υ, eFin, j] using
          (secondReductionCanonicalTransportOrdered_period
            m₁' m₂' m₃' tail hp hq hm₁' hm₂' hm₃' htail j).symm
      have hx :
          eFG.symm (xWord υ i) = xWord τ j := by
        simpa [τ, υ, eFin, eGen, eFG, j] using
          secondReductionCanonicalTransportOrdered_xWord_symm
            m₁' m₂' m₃' tail hp hq hm₁' hm₂' hm₃' htail i
      have hrel :
          eFG.symm ((xWord υ i) ^ υ.periods i) =
            (xWord τ j) ^ τ.periods j := by
        rw [map_pow, hx, hperiod]
      rw [hrel]
      exact Subgroup.subset_normalClosure (Or.inl ⟨j, rfl⟩)
    · rw [htotal]
      have htotalMap :
          eFG
              (secondReductionCanonicalTransportBlockTotalWord (p := p) (q := q)
                m₁' m₂' m₃' tail hq hm₁' hm₂' hm₃' htail) =
            totalRelation υ := by
        simpa [τ, υ, eGen, eFG] using
          secondReductionCanonicalTransportBlockTotalWord_map_orderedTarget
            m₁' m₂' m₃' tail hp hq hm₁' hm₂' hm₃' htail
      have hsymm :
          eFG.symm (totalRelation υ) =
            secondReductionCanonicalTransportBlockTotalWord (p := p) (q := q)
              m₁' m₂' m₃' tail hq hm₁' hm₂' hm₃' htail := by
        rw [← htotalMap]
        exact eFG.left_inv
          (secondReductionCanonicalTransportBlockTotalWord (p := p) (q := q)
            m₁' m₂' m₃' tail hq hm₁' hm₂' hm₃' htail)
      rw [hsymm]
      exact Subgroup.subset_normalClosure (Or.inr rfl)

The indicated relator data identify the corresponding Schreier relator presentations.