FenchelNielsenZomorrodian.Discrete.CompactFuchsian.FirstReduction.RelatorProofs

10 Theorem | 2 Definition

This module studies relator proofs for fenchel nielsen zomorrodian. A three-factor product equal to \(1\) remains equal to \(1\) after cyclic rotation. The negative-one cycle segment product has the stated closed form.

import
Imported by

Declarations

private theorem cyclic_rotate_three_eq_one {G : Type*} [Group G] {a b c : G}
    (h : a * b * c = 1) :
    b * c * a = 1

A three-factor product equal to \(1\) remains equal to \(1\) after cyclic rotation.

Show proof
theorem 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 negative-one cycle segment product has the stated closed form.

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

The descending finite list used in the first reduction splits at the specified index.

Show proof
private theorem firstReductionCanonicalSchreierToTarget_mapsRelators_of_source_cases
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 2 ≤ m₁') (hm₂' : 2 ≤ m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen)
    (hFirst :
      letI : NeZero p := ⟨Nat.ne_of_gt (lt_of_lt_of_le (by decide : 0 < 2) hp)⟩
      let σ :=
        firstReductionCanonicalSourceSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let τ :=
        firstReductionCanonicalTargetSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let φ :=
        firstReductionCanonicalSourceFreeQuotientHom
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      letI : DecidableEq (FuchsianGenerator σ) := Classical.decEq _
      let e :=
        firstReductionCanonicalSchreierBasisEquiv
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let η :=
        firstReductionCanonicalSchreierToTargetHom
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let x : FuchsianGenerator σ :=
        firstReductionCanonicalDistinguishedGenerator
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let i₀ :=
        firstReductionCanonicalSourceZeroIndex
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ k : Fin p,
        η
            (e.symm
              (⟨(FreeGroup.of x) ^ k.val * ((xWord σ i₀) ^ σ.periods i₀) *
                  ((FreeGroup.of x) ^ k.val)⁻¹, by
                change φ
                    ((FreeGroup.of x) ^ k.val * ((xWord σ i₀) ^ σ.periods i₀) *
                      ((FreeGroup.of x) ^ k.val)⁻¹) = 1
                have hrφ :
                    φ ((xWord σ i₀) ^ σ.periods i₀) = 1 :=
                  firstReductionCanonicalSourceFreeQuotientHom_respects_relators
                    m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
                    ((xWord σ i₀) ^ σ.periods i₀) (Or.inl ⟨i₀, rfl⟩)
                simp only [Lean.Elab.WF.paramLet, map_mul, map_pow, hrφ, mul_one, map_inv, mul_inv_cancel]⟩ : φ.ker)) ∈
          Subgroup.normalClosure (relators τ))
    (hSecond :
      letI : NeZero p := ⟨Nat.ne_of_gt (lt_of_lt_of_le (by decide : 0 < 2) hp)⟩
      let σ :=
        firstReductionCanonicalSourceSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let τ :=
        firstReductionCanonicalTargetSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let φ :=
        firstReductionCanonicalSourceFreeQuotientHom
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      letI : DecidableEq (FuchsianGenerator σ) := Classical.decEq _
      let e :=
        firstReductionCanonicalSchreierBasisEquiv
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let η :=
        firstReductionCanonicalSchreierToTargetHom
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let x : FuchsianGenerator σ :=
        firstReductionCanonicalDistinguishedGenerator
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let i₁ :=
        firstReductionCanonicalSourceOneIndex
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ k : Fin p,
        η
            (e.symm
              (⟨(FreeGroup.of x) ^ k.val * ((xWord σ i₁) ^ σ.periods i₁) *
                  ((FreeGroup.of x) ^ k.val)⁻¹, by
                change φ
                    ((FreeGroup.of x) ^ k.val * ((xWord σ i₁) ^ σ.periods i₁) *
                      ((FreeGroup.of x) ^ k.val)⁻¹) = 1
                have hrφ :
                    φ ((xWord σ i₁) ^ σ.periods i₁) = 1 :=
                  firstReductionCanonicalSourceFreeQuotientHom_respects_relators
                    m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
                    ((xWord σ i₁) ^ σ.periods i₁) (Or.inl ⟨i₁, rfl⟩)
                simp only [Lean.Elab.WF.paramLet, map_mul, map_pow, hrφ, mul_one, map_inv, mul_inv_cancel]⟩ : φ.ker)) ∈
          Subgroup.normalClosure (relators τ))
    (hTail :
      letI : NeZero p := ⟨Nat.ne_of_gt (lt_of_lt_of_le (by decide : 0 < 2) hp)⟩
      let σ :=
        firstReductionCanonicalSourceSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let τ :=
        firstReductionCanonicalTargetSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let φ :=
        firstReductionCanonicalSourceFreeQuotientHom
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      letI : DecidableEq (FuchsianGenerator σ) := Classical.decEq _
      let e :=
        firstReductionCanonicalSchreierBasisEquiv
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let η :=
        firstReductionCanonicalSchreierToTargetHom
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let x : FuchsianGenerator σ :=
        firstReductionCanonicalDistinguishedGenerator
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ j : Fin tailLen, ∀ k : Fin p,
        let iTail :=
          firstReductionCanonicalSourceTailIndex
            m₁' m₂' tail hp hm₁' hm₂' htail hTailLen j
        η
            (e.symm
              (⟨(FreeGroup.of x) ^ k.val * ((xWord σ iTail) ^ σ.periods iTail) *
                  ((FreeGroup.of x) ^ k.val)⁻¹, by
                change φ
                    ((FreeGroup.of x) ^ k.val * ((xWord σ iTail) ^ σ.periods iTail) *
                      ((FreeGroup.of x) ^ k.val)⁻¹) = 1
                have hrφ :
                    φ ((xWord σ iTail) ^ σ.periods iTail) = 1 :=
                  firstReductionCanonicalSourceFreeQuotientHom_respects_relators
                    m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
                    ((xWord σ iTail) ^ σ.periods iTail) (Or.inl ⟨iTail, rfl⟩)
                simp only [Lean.Elab.WF.paramLet, map_mul, map_pow, hrφ, mul_one, map_inv, mul_inv_cancel]⟩ : φ.ker)) ∈
          Subgroup.normalClosure (relators τ))
    (hTotal :
      letI : NeZero p := ⟨Nat.ne_of_gt (lt_of_lt_of_le (by decide : 0 < 2) hp)⟩
      let σ :=
        firstReductionCanonicalSourceSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let τ :=
        firstReductionCanonicalTargetSignature m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let φ :=
        firstReductionCanonicalSourceFreeQuotientHom
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      letI : DecidableEq (FuchsianGenerator σ) := Classical.decEq _
      let e :=
        firstReductionCanonicalSchreierBasisEquiv
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let η :=
        firstReductionCanonicalSchreierToTargetHom
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      let x : FuchsianGenerator σ :=
        firstReductionCanonicalDistinguishedGenerator
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
      ∀ k : Fin p,
        η
            (e.symm
              (⟨(FreeGroup.of x) ^ k.val * totalRelation σ *
                  ((FreeGroup.of x) ^ k.val)⁻¹, by
                change φ
                    ((FreeGroup.of x) ^ k.val * totalRelation σ *
                      ((FreeGroup.of x) ^ k.val)⁻¹) = 1
                have hrφ : φ (totalRelation σ) = 1 :=
                  firstReductionCanonicalSourceFreeQuotientHom_respects_relators
                    m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
                    (totalRelation σ) (Or.inr rfl)
                simp only [Lean.Elab.WF.paramLet, map_mul, map_pow, hrφ, mul_one, map_inv, mul_inv_cancel]⟩ : φ.ker)) ∈
          Subgroup.normalClosure (relators τ)) :
    letI : NeZero p

The transport map sends every source relator case to the corresponding target relator.

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

The specified first-reduction relator belongs to the normal closure generated by the source presentation relators.

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

The first-reduction second shifted cycle equals the conjugate second-power expression.

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

The specified first-reduction relator belongs to the normal closure generated by the source presentation relators.

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

The specified first-reduction relator belongs to the normal closure generated by the source presentation relators.

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

The specified first-reduction relator belongs to the normal closure generated by the source presentation relators.

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

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

Show proof
noncomputable def firstReductionCanonicalForwardMapData
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 2 ≤ m₁') (hm₂' : 2 ≤ m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen) :
    FirstReductionCanonicalForwardMapData
      m₁' m₂' tail hp hm₁' hm₂' htail hTailLen :=
  firstReductionCanonicalForwardMapData_of_mapsRelators
    m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
    (by
      simpa [firstReductionCanonicalDistinguishedGenerator] using
        firstReductionCanonicalSchreierToTarget_mapsRelators
          m₁' m₂' tail hp hm₁' hm₂' htail hTailLen)

Forward map data for the first-reduction canonical Schreier-to-target map.

noncomputable def firstReductionCanonicalKernelEquiv
    {tailLen p : ℕ}
    (m₁' m₂' : ℕ) (tail : Fin tailLen → ℕ)
    (hp : 2 ≤ p) (hm₁' : 2 ≤ m₁') (hm₂' : 2 ≤ m₂')
    (htail : ∀ j, 2 ≤ tail j) (hTailLen : 0 < tailLen) :=
  firstReductionCanonicalKernelEquivOfForwardMapData
    m₁' m₂' tail hp hm₁' hm₂' htail hTailLen
    (firstReductionCanonicalForwardMapData
      m₁' m₂' tail hp hm₁' hm₂' htail hTailLen)

The first-reduction canonical Schreier kernel equivalence follows from the verified relator data.