FenchelNielsenZomorrodian.Discrete.CompactFuchsian.PeriodOne.RelatorProofs

65 Theorem

This module studies relator proofs for fenchel nielsen zomorrodian. The first-power kernel relator of the original period-one reduction lies in the normal closure of the source relators. The second-power kernel relator of the original period-one reduction lies in the normal closure of the source relators.

import
Imported by

Declarations

private theorem originalFirstReductionPeriodOneFirstPowerKernel_mem_sourceRelators_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (hm₁'one : m₁' = 1) :
    letI : NeZero p

The first-power kernel relator of the original period-one reduction lies in the normal closure of the source relators.

Show proof
private theorem originalFirstReductionPeriodOneSecondPowerKernel_pow_mem_sourceRelators_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x) :
    letI : NeZero p

The second-power kernel relator of the original period-one reduction lies in the normal closure of the source relators.

Show proof
private theorem originalFirstReductionPeriodOneTailKernelElement_pow_mem_sourceRelators_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (j : Fin tailLen) (k : Fin p) :
    letI : NeZero p

The tail kernel power relator of the original period-one reduction lies in the normal closure of the source relators.

Show proof
private theorem originalFirstReductionPeriodOneSecondPowerKernel_schreierPower_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x) :
    letI : NeZero p

The Schreier power relator for the second-power kernel element lies in the corresponding normal closure.

Show proof
private theorem originalFirstReductionPeriodOneFirstPowerKernel_schreier_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (hm₁'one : m₁' = 1) :
    letI : NeZero p

The Schreier image of the first-power kernel relator lies in the corresponding normal closure.

Show proof
private theorem originalFirstReductionPeriodOneTailKernelElement_schreierPower_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (j : Fin tailLen) (k : Fin p) :
    letI : NeZero p

The Schreier power relator for each tail kernel element lies in the corresponding normal closure.

Show proof
private theorem originalFirstReductionPeriodOneCanonicalSchreier_cyclicBlockTotalProduct_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen) :
    letI : NeZero p

The cyclic-block total product relator in the original period-one canonical Schreier presentation lies in the source normal closure.

Show proof
private theorem originalFirstReductionPeriodOne_distinguished_schreierGenerator_wrap_eq
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods) :
    letI : NeZero p

The distinguished period-one Schreier generator wraps to the prescribed generator.

Show proof
private theorem originalFirstReductionPeriodOne_distinguished_schreierGenerator_eq_one_of_succ_lt
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    {k : ℕ} (hk : k + 1 < p) :
    letI : NeZero p

Before the wraparound step, the distinguished period-one Schreier generator is the identity.

Show proof
private theorem originalFirstReductionPeriodOneFirstPowerKernel_mem_schreierGeneratorSet
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods) :
    letI : NeZero p

The distinguished period-one first-power kernel element is represented by a nontrivial Schreier generator.

Show proof
private theorem originalFirstReductionPeriodOne_second_schreierGenerator_eq
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (k : Fin p) :
    letI : NeZero p

The second period-one Schreier generator has the prescribed target expression.

Show proof
private theorem originalFirstReductionPeriodOneSecondEdgeKernelElement_mem_schreierGeneratorSet
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (k : Fin p) :
    letI : NeZero p

Each second-edge period-one kernel element is represented by a nontrivial Schreier generator.

Show proof
private theorem originalFirstReductionPeriodOne_tail_schreierGenerator_eq
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (j : Fin tailLen) (k : Fin p) :
    letI : NeZero p

Each tail period-one Schreier generator has the prescribed target expression.

Show proof
private theorem originalFirstReductionPeriodOneTailKernelElement_mem_schreierGeneratorSet
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (j : Fin tailLen) (k : Fin p) :
    letI : NeZero p

Each tail period-one kernel element is represented by a nontrivial Schreier generator.

Show proof
private theorem originalFirstReductionPeriodOne_schreierGeneratorSet_cases
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods) :
    letI : NeZero p

Case split for the period-one first-reduction Schreier generator set.

Show proof
private theorem originalFirstReductionPeriodOne_tailBlock_secondEdge_schreier_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (he : e = originalFirstReductionOrderedIndexEquiv tailLen)
    (hm₁'one : m₁' = 1)
    (k : Fin p) :
    letI : NeZero p

The second-edge Schreier relator for the original period-one tail block lies in the corresponding normal closure.

Show proof
private theorem oneHeadPeriodOneTargetToSchreier_powerRelator_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (idx : OneHeadPeriodOneTargetIndex tailLen p) :
    letI : NeZero p

The target-to-Schreier image of each period-one power relator lies in the relevant normal closure.

Show proof
private theorem doublePeriodOneTargetToSchreier_powerRelator_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (jk : Fin p × Fin tailLen) :
    letI : NeZero p

The target-to-Schreier image of each period-one power relator lies in the relevant normal closure.

Show proof
private theorem oneHeadPeriodOneTarget_totalRelation_eq_blocks
    {tailLen p : ℕ}
    (m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j)
    (hTailLen : 0 < tailLen) :
    let target

The target total relation in the one-head period-one case splits into the displayed blocks.

Show proof
private theorem doublePeriodOneTarget_totalRelation_eq_blocks
    {tailLen p : ℕ}
    (tail : Fin tailLen → ℕ)
    (htail : ∀ j, 2 ≤ tail j) (hHigh : 3 ≤ p * tailLen) :
    let target

The target total relation in the double-period-one case splits into the displayed blocks.

Show proof
private theorem oneHeadPeriodOneTargetToSchreier_totalRelator_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (he : e = originalFirstReductionOrderedIndexEquiv tailLen)
    (hm₁'one : m₁' = 1) :
    letI : NeZero p

The target-to-Schreier image of the period-one total relator lies in the relevant normal closure.

Show proof
private theorem doublePeriodOneTargetToSchreier_totalRelator_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (he : e = originalFirstReductionOrderedIndexEquiv tailLen)
    (hm₁'one : m₁' = 1) (hm₂'one : m₂' = 1) :
    letI : NeZero p

The target-to-Schreier image of the period-one total relator lies in the relevant normal closure.

Show proof
private theorem fuchsianTarget_mapsRelators_of_power_and_total
    (τ : FuchsianSignature) {G : Type*} [Group G] {S : Set G}
    (η : FreeGroup (FuchsianGenerator τ) →* G)
    (hPower :
      ∀ i : Fin τ.numPeriods,
        η (xWord τ i ^ τ.periods i) ∈ Subgroup.normalClosure S)
    (hTotal : η (totalRelation τ) ∈ Subgroup.normalClosure S) :
    ∀ r ∈ relators τ, η r ∈ Subgroup.normalClosure S

The target map satisfies the required power relators and the total relator.

Show proof
theorem oneHeadPeriodOneTargetToSchreier_mapsTargetRelators
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (he : e = originalFirstReductionOrderedIndexEquiv tailLen)
    (hm₁'one : m₁' = 1) :
    letI : NeZero p

The target-to-Schreier map sends every target relator to the corresponding Schreier relator.

Show proof
theorem doublePeriodOneTargetToSchreier_mapsTargetRelators
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (he : e = originalFirstReductionOrderedIndexEquiv tailLen)
    (hm₁'one : m₁' = 1) (hm₂'one : m₂' = 1) :
    letI : NeZero p

The target-to-Schreier map sends every target relator to the corresponding Schreier relator.

Show proof
private theorem oneHeadPeriodOneSchreierToTargetHom_firstPowerWord
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods) :
    letI : NeZero p

The Schreier-to-target transport homomorphism sends the first-power word to the prescribed target word.

Show proof
private theorem doublePeriodOneSchreierToTargetHom_firstPowerWord
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods) :
    letI : NeZero p

The Schreier-to-target transport homomorphism sends the first-power word to the prescribed target word.

Show proof
private theorem oneHeadPeriodOneSchreierToTargetHom_tailWord
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (j : Fin tailLen) (k : Fin p) :
    letI : NeZero p

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

Show proof
private theorem doublePeriodOneSchreierToTargetHom_tailWord
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (j : Fin tailLen) (k : Fin p) :
    letI : NeZero p

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

Show proof
private theorem oneHeadPeriodOneSchreierToTargetHom_secondEdgeWord
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (k : Fin p) :
    letI : NeZero p

The Schreier-to-target transport homomorphism sends the second-edge word to the prescribed target word.

Show proof
private theorem doublePeriodOneSchreierToTargetHom_secondEdgeWord
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (k : Fin p) :
    letI : NeZero p

The Schreier-to-target transport homomorphism sends the second-edge word to the prescribed target word.

Show proof
theorem doublePeriodOneSchreierToTarget_toInv_generators_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods) :
    letI : NeZero p

The inverse-composition generator relations for the period-one comparison lie in the relevant normal closure.

Show proof
theorem doublePeriodOneSchreierToTarget_toInv_mem_normalClosure_of_generators
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hgen :
      letI : NeZero p := ⟨Nat.ne_of_gt (lt_of_lt_of_le (by decide : 0 < 2) hp)⟩
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let target := doublePeriodOneTailReplicatedSignature tail htail hHigh
      letI : DecidableEq (FuchsianGenerator source) := Classical.decEq _
      let θ :=
        doublePeriodOneTargetToSchreierHom
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen hHigh e
      let η :=
        doublePeriodOneSchreierToTargetHom
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen hHigh e
      ∀ y : FuchsianGenerator target,
        η (θ (FreeGroup.of y)) * (FreeGroup.of y)⁻¹ ∈
          Subgroup.normalClosure (relators target)) :
    letI : NeZero p

In the double period-one case, generator-level inverse-composition relations give the required normal-closure containment.

Show proof
private theorem oneHeadPeriodOneTargetToSchreierHom_tailBlock
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (k : Fin p) :
    letI : NeZero p

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

Show proof
private theorem oneHeadPeriodOneSecondEdgeForward_invComp_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (he : e = originalFirstReductionOrderedIndexEquiv tailLen)
    (hm₁'one : m₁' = 1)
    (k : Fin p) :
    letI : NeZero p

The inverse-composition word for the one-head period-one second edge lies in the relevant normal closure.

Show proof
private theorem oneHeadPeriodOneSchreierToTarget_invComp_generator_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (he : e = originalFirstReductionOrderedIndexEquiv tailLen)
    (hm₁'one : m₁' = 1)
    (z :
      letI : NeZero p := ⟨Nat.ne_of_gt (lt_of_lt_of_le (by decide : 0 < 2) hp)⟩
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      letI : DecidableEq (FuchsianGenerator source) := Classical.decEq _
      let hT :=
        originalFirstReductionPeriodOneSchreierTransversal_isRightSchreierTransversal
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen e
      ↥(schreierGeneratorSet hT)) :
    letI : NeZero p

For each generator in the one-head period-one case, the inverse-composition discrepancy lies in the relevant normal closure.

Show proof
theorem oneHeadPeriodOneSchreierToTarget_invComp_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (he : e = originalFirstReductionOrderedIndexEquiv tailLen)
    (hm₁'one : m₁' = 1) :
    letI : NeZero p

In the one-head period-one case, the Schreier-to-target inverse-composition discrepancy lies in the relevant normal closure.

Show proof
private theorem doublePeriodOneTargetToSchreierHom_tailBlock
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (k : Fin p) :
    letI : NeZero p

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

Show proof
private theorem doublePeriodOneSecondEdgeForward_invComp_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (he : e = originalFirstReductionOrderedIndexEquiv tailLen)
    (hm₁'one : m₁' = 1)
    (k : Fin p) :
    letI : NeZero p

The inverse-composition word for the double-period-one second edge lies in the relevant normal closure.

Show proof
private theorem doublePeriodOneSchreierToTarget_invComp_generator_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (he : e = originalFirstReductionOrderedIndexEquiv tailLen)
    (hm₁'one : m₁' = 1)
    (z :
      letI : NeZero p := ⟨Nat.ne_of_gt (lt_of_lt_of_le (by decide : 0 < 2) hp)⟩
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      letI : DecidableEq (FuchsianGenerator source) := Classical.decEq _
      let hT :=
        originalFirstReductionPeriodOneSchreierTransversal_isRightSchreierTransversal
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen e
      ↥(schreierGeneratorSet hT)) :
    letI : NeZero p

For each generator in the double period-one case, the inverse-composition discrepancy lies in the relevant normal closure.

Show proof
theorem doublePeriodOneSchreierToTarget_invComp_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (he : e = originalFirstReductionOrderedIndexEquiv tailLen)
    (hm₁'one : m₁' = 1) :
    letI : NeZero p

In the double period-one case, the Schreier-to-target inverse-composition discrepancy lies in the relevant normal closure.

Show proof
private theorem periodOne_negOneCycleSegmentProduct_eq {G : Type*} [Group G]
    (x y : G) : ∀ (n l : ℕ), l ≤ n →
    (List.ofFn (fun i : Fin l =>
      x ^ (n - i.val) * y * (x ^ (n - 1 - i.val))⁻¹)).prod =
        x ^ n * y ^ l * (x ^ (n - l))⁻¹
  | n, 0, _ => by
      simp only [List.ofFn_zero, List.prod_nil, pow_zero, mul_one, tsub_zero, mul_inv_cancel]
  | n, l + 1, h => by
      have hl : l ≤ n - 1

The period-one \(-1\)-cycle segment product identity supplies the finite period, product, and lcm data used in the Fenchel--Nielsen--Zomorrodian period reduction.

Show proof
private theorem periodOne_list_ofFn_desc_inv_prod_eq
    {G : Type*} [Group G] {n : ℕ} (B : Fin n → G) :
    (List.ofFn (fun i : Fin n => (B ⟨n - 1 - i.val, by omega⟩)⁻¹)).prod =
      (List.ofFn B).prod⁻¹

The descending inverse product over the period-one list has the stated value.

Show proof
private theorem periodOne_list_ofFn_split_at
    {α : Type*} {p k : ℕ} (hk : k ≤ p) (f : Fin p → α) :
    List.ofFn f =
      List.ofFn (fun i : Fin k => f ⟨i.val, by omega⟩) ++
        List.ofFn (fun i : Fin (p - k) => f ⟨k + i.val, by omega⟩)

The period-one finite list splits at the specified index.

Show proof
private theorem periodOne_cyclic_rotated_inv_mem_normalClosure_of_list_prod
    {G : Type*} [Group G] {R : Set G} {p : ℕ}
    (block : Fin p → G) (k : Fin p)
    (hTotal : (List.ofFn block).prod ∈ Subgroup.normalClosure R) :
    ((List.ofFn (fun i : Fin (p - k.val) => block ⟨k.val + i.val, by omega⟩)).prod *
        (List.ofFn (fun i : Fin k.val => block ⟨i.val, by omega⟩)).prod)⁻¹ ∈
      Subgroup.normalClosure R

The cyclically rotated inverse word lies in the normal closure generated by the period-one product relation.

Show proof
private theorem periodOne_cyclic_rotated_inv_pow_mem_normalClosure_of_head_mul_list_prod
    {G : Type*} [Group G] {R : Set G} {p : ℕ}
    (head : G) (block : Fin p → G) (k : Fin p) (m : ℕ)
    (hTotal : head * (List.ofFn block).prod ∈ Subgroup.normalClosure R)
    (hHeadPow : head ^ m ∈ Subgroup.normalClosure R) :
    (((List.ofFn (fun i : Fin (p - k.val) =>
          block ⟨k.val + i.val, by omega⟩)).prod *
        (List.ofFn (fun i : Fin k.val =>
          block ⟨i.val, by omega⟩)).prod)⁻¹) ^ m ∈
      Subgroup.normalClosure R

The powered cyclic rotation lies in the normal closure generated by the head-times-product period-one relation.

Show proof
private theorem periodOne_cyclic_desc_prevBlock_inv_product_eq_rotated_inv
    {G : Type*} [Group G] {p : ℕ} (hp : 2 ≤ p) (block : Fin p → G) (k : Fin p) :
    (List.ofFn (fun i : Fin k.val =>
          (block ⟨k.val - 1 - i.val, by omega⟩)⁻¹)).prod *
        (block ⟨p - 1, by omega⟩)⁻¹ *
        (List.ofFn (fun i : Fin (p - 1 - k.val) =>
          (block ⟨p - 2 - i.val, by omega⟩)⁻¹)).prod =
      ((List.ofFn (fun i : Fin (p - k.val) =>
          block ⟨k.val + i.val, by omega⟩)).prod *
        (List.ofFn (fun i : Fin k.val => block ⟨i.val, by omega⟩)).prod)⁻¹

The rotated inverse product identity for the descending period-one cyclic block supplies the finite period, product, and lcm data used in the Fenchel--Nielsen--Zomorrodian period reduction.

Show proof
private theorem originalFirstReductionPeriodOneSecondShiftedCycle_eq_conjugate_secondPower
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (k : Fin p) :
    letI : NeZero p

The original period-one second shifted cycle equals the conjugate second-power word.

Show proof
private theorem oneHeadPeriodOneSchreierToTargetHom_secondPowerWord
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods) :
    letI : NeZero p

The Schreier-to-target transport homomorphism sends the second-power word to the prescribed target word.

Show proof
theorem oneHeadPeriodOneSchreierToTarget_toInv_generators_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods) :
    letI : NeZero p

The inverse-composition generator relations for the period-one comparison lie in the relevant normal closure.

Show proof
theorem oneHeadPeriodOneSchreierToTarget_toInv_mem_normalClosure_of_generators
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hgen :
      letI : NeZero p := ⟨Nat.ne_of_gt (lt_of_lt_of_le (by decide : 0 < 2) hp)⟩
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let target := oneHeadPeriodOneTargetSignature m₂' tail hp hm₂'ge htail hTailLen
      letI : DecidableEq (FuchsianGenerator source) := Classical.decEq _
      let θ :=
        oneHeadPeriodOneTargetToSchreierHom
          m₁' m₂' tail hp hm₁' hm₂' hm₂'ge htail hTailLen e
      let η :=
        oneHeadPeriodOneSchreierToTargetHom
          m₁' m₂' tail hp hm₁' hm₂' hm₂'ge htail hTailLen e
      ∀ y : FuchsianGenerator target,
        η (θ (FreeGroup.of y)) * (FreeGroup.of y)⁻¹ ∈
          Subgroup.normalClosure (relators target)) :
    letI : NeZero p

In the one-head period-one case, generator-level inverse-composition relations give the required normal-closure containment.

Show proof
private theorem originalFirstReductionPeriodOneSecondEdgeKernelElement_zero_coe
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods) :
    letI : NeZero p

The zero second-edge kernel element has the displayed representative in the original period-one first reduction.

Show proof
private theorem originalFirstReductionPeriodOneSecondEdgeKernelElement_succ_coe
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (i : Fin (p - 1)) :
    letI : NeZero p

The successor second-edge kernel element has the displayed representative in the original period-one first reduction.

Show proof
private theorem oneHeadPeriodOneSchreierToTargetHom_tailBlockWord
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (k : Fin p) :
    letI : NeZero p

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

Show proof
private theorem oneHeadPeriodOneSchreierToTarget_firstPower_sourceCase_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (hm₁'one : m₁' = 1)
    (k : Fin p) :
    letI : NeZero p

The first-power source-case relator for the period-one comparison lies in the relevant normal closure.

Show proof
private theorem oneHeadPeriodOneSchreierToTarget_tailPower_sourceCase_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (j : Fin tailLen) (k : Fin p) :
    letI : NeZero p

The tail-power source-case relator for the period-one comparison lies in the relevant normal closure.

Show proof
private theorem oneHeadPeriodOneSchreierToTarget_secondPower_sourceCase_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (k : Fin p) :
    letI : NeZero p

The second-power source-case relator for the period-one comparison lies in the relevant normal closure.

Show proof
private theorem oneHeadPeriodOneSchreierToTarget_total_sourceCase_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (he : e = originalFirstReductionOrderedIndexEquiv tailLen)
    (k : Fin p) :
    letI : NeZero p

The total source-case relator for the period-one comparison lies in the relevant normal closure.

Show proof
theorem oneHeadPeriodOneSchreierToTarget_mapsRelators
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (hm₂'ge : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (he : e = originalFirstReductionOrderedIndexEquiv tailLen)
    (hm₁'one : m₁' = 1) :
    letI : NeZero p

The Schreier-to-target map sends each defining relator to the corresponding target relator.

Show proof
private theorem doublePeriodOneSchreierToTarget_firstPower_sourceCase_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (hm₁'one : m₁' = 1)
    (k : Fin p) :
    letI : NeZero p

The first-power source-case relator for the period-one comparison lies in the relevant normal closure.

Show proof
private theorem doublePeriodOneSchreierToTarget_secondPower_sourceCase_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (hm₂'one : m₂' = 1)
    (k : Fin p) :
    letI : NeZero p

The second-power source-case relator for the period-one comparison lies in the relevant normal closure.

Show proof
private theorem doublePeriodOneSchreierToTarget_tailPower_sourceCase_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (j : Fin tailLen) (k : Fin p) :
    letI : NeZero p

The tail-power source-case relator for the period-one comparison lies in the relevant normal closure.

Show proof
private theorem doublePeriodOneSchreierToTargetHom_tailBlockWord
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (k : Fin p) :
    letI : NeZero p

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

Show proof
private theorem doublePeriodOneSchreierToTarget_total_sourceCase_mem_normalClosure
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (he : e = originalFirstReductionOrderedIndexEquiv tailLen)
    (k : Fin p) :
    letI : NeZero p

The total source-case relator for the period-one comparison lies in the relevant normal closure.

Show proof
theorem doublePeriodOneSchreierToTarget_mapsRelators
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 0 < m₁') (hm₂' : 0 < m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hHigh : 3 ≤ p * tailLen)
    (e :
      OriginalFirstReductionIndex tailLen ≃
        Fin (originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail
          hTailLen).numPeriods)
    (hperiods :
      let source :=
        originalFirstReductionSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ x : OriginalFirstReductionIndex tailLen,
        source.periods (e x) =
          originalFirstReductionPeriods (p := p) m₁' m₂' tail x)
    (he : e = originalFirstReductionOrderedIndexEquiv tailLen)
    (hm₁'one : m₁' = 1) (hm₂'one : m₂' = 1) :
    letI : NeZero p

The Schreier-to-target map sends each defining relator to the corresponding target relator.

Show proof