FenchelNielsenZomorrodian.Discrete.CompactFuchsian.ZeroGenus.Reindexing

21 Theorem | 2 Definition

This module studies reindexing for fenchel nielsen zomorrodian. If \(n = 0\), then there is no element of \(\mathrm{Fin}\, n\). This lemma decomposes a finite index into zero, one, or a successor of a successor.

import
Imported by

Declarations

private theorem fin_eq_zero_elim {n : ℕ} (h : n = 0) (i : Fin n) : False

If \(n = 0\), then there is no element of \(\mathrm{Fin}\, n\).

Show proof
private theorem fin_eq_zero_or_one_or_succ_succ_of_eq_add_two
    {m n : ℕ} (h : m = n + 2) (i : Fin m) :
    i = Fin.cast h.symm (0 : Fin (n + 2)) ∨
      i = Fin.cast h.symm (1 : Fin (n + 2)) ∨
        ∃ k : Fin n, i = Fin.cast h.symm k.succ.succ

This lemma decomposes a finite index into zero, one, or a successor of a successor.

Show proof
private theorem fin_eq_prefix_or_zero_or_one_or_tail_of_eq_add_two
    {m k n : ℕ} (h : m = k + (n + 2)) (i : Fin m) :
    (∃ j : Fin k, i = Fin.cast h.symm (Fin.castAdd (n + 2) j)) ∨
      i = Fin.cast h.symm (Fin.natAdd k (0 : Fin (n + 2))) ∨
        i = Fin.cast h.symm (Fin.natAdd k (1 : Fin (n + 2))) ∨
          ∃ t : Fin n, i = Fin.cast h.symm (Fin.natAdd k t.succ.succ)

This lemma decomposes a finite index into the prefix, the first two special indices, or the tail.

Show proof
private theorem List.map_finRange_fin_cast {α : Type*} {m n : ℕ} (h : m = n)
    (f : Fin n → α) :
    (List.finRange m).map (fun i => f (Fin.cast h i)) = (List.finRange n).map f

Mapping the finite-range list through a Fin cast gives the corresponding reindexed finite-range list.

Show proof
private noncomputable def zeroGenusOrderedGeneratorEquiv
    (σ τ : FuchsianSignature)
    (hσZero : σ.orbitGenus = 0) (hτZero : τ.orbitGenus = 0)
    (hNum : σ.numPeriods = τ.numPeriods) :
    FuchsianGenerator σ ≃ FuchsianGenerator τ where
  toFun
    | .elliptic i => .elliptic (Fin.cast hNum i)
    | .surfaceA j => False.elim (fin_eq_zero_elim hσZero j)
    | .surfaceB j => False.elim (fin_eq_zero_elim hσZero j)
  invFun
    | .elliptic i => .elliptic (Fin.cast hNum.symm i)
    | .surfaceA j => False.elim (fin_eq_zero_elim hτZero j)
    | .surfaceB j => False.elim (fin_eq_zero_elim hτZero j)
  left_inv := by
    intro x
    cases x with
    | elliptic i => simp
    | surfaceA j => exact False.elim (fin_eq_zero_elim hσZero j)
    | surfaceB j => exact False.elim (fin_eq_zero_elim hσZero j)
  right_inv := by
    intro x
    cases x with
    | elliptic i => simp
    | surfaceA j => exact False.elim (fin_eq_zero_elim hτZero j)
    | surfaceB j => exact False.elim (fin_eq_zero_elim hτZero j)

The Fenchel--Nielsen--Zomorrodian generator equivalence has the displayed inverse and component values.

private theorem zeroGenusOrderedGeneratorEquiv_totalRelation
    (σ τ : FuchsianSignature)
    (hσZero : σ.orbitGenus = 0) (hτZero : τ.orbitGenus = 0)
    (hNum : σ.numPeriods = τ.numPeriods) :
    FreeGroup.freeGroupCongr
        (zeroGenusOrderedGeneratorEquiv σ τ hσZero hτZero hNum)
        (totalRelation σ) =
      totalRelation τ

The Fenchel--Nielsen--Zomorrodian generator equivalence has the displayed inverse and component values.

Show proof
private theorem zeroGenusFuchsianPresentedGroupEquivOfOrderedPeriods
    (σ τ : FuchsianSignature)
    (hσZero : σ.orbitGenus = 0) (hτZero : τ.orbitGenus = 0)
    (hNum : σ.numPeriods = τ.numPeriods)
    (hPeriods : ∀ i, σ.periods i = τ.periods (Fin.cast hNum i)) :
    Nonempty (FuchsianPresentedGroup σ ≃* FuchsianPresentedGroup τ)

Ordered zero-genus period data induce an equivalence of the corresponding Fuchsian presented groups.

Show proof
theorem conjugate_mem_normalClosure_of_mem
    {G : Type*} [Group G] {R : Set G} {r g : G}
    (h : r ∈ R) :
    g * r * g⁻¹ ∈ Subgroup.normalClosure R

A conjugate of a relator lies in the normal closure of the relator set.

Show proof
theorem conjugate_pow_mem_normalClosure_of_pow_mem
    {G : Type*} [Group G] {R : Set G} {x g : G} {n : ℕ}
    (h : x ^ n ∈ R) :
    (g * x * g⁻¹) ^ n ∈ Subgroup.normalClosure R

If a power of \(x\) is a relator, then the corresponding power of any conjugate of \(x\) lies in the normal closure.

Show proof
private theorem image_powerRelator_mem_normalClosure_of_conjugate_xWord
    (σ τ : FuchsianSignature)
    (η : FreeGroup (FuchsianGenerator σ) →* FreeGroup (FuchsianGenerator τ))
    (i : Fin σ.numPeriods) (j : Fin τ.numPeriods)
    (g : FreeGroup (FuchsianGenerator τ))
    (hImage : η (xWord σ i) = g * xWord τ j * g⁻¹)
    (hPeriod : σ.periods i = τ.periods j) :
    η ((xWord σ i) ^ σ.periods i) ∈ Subgroup.normalClosure (relators τ)

The image of a power relator lies in the target normal closure when the generator image is conjugate to a target elliptic generator with the same period.

Show proof
private theorem image_totalRelation_mem_normalClosure_of_eq
    (σ τ : FuchsianSignature)
    (η : FreeGroup (FuchsianGenerator σ) →* FreeGroup (FuchsianGenerator τ))
    (hImage : η (totalRelation σ) = totalRelation τ) :
    η (totalRelation σ) ∈ Subgroup.normalClosure (relators τ)

The image of the total relation lies in the generated normal closure when the displayed equality holds.

Show proof
private theorem freeGroup_hom_mul_inv_mem_of_generator_mul_inv
    {X G : Type*} [Group G] {N : Subgroup G} [N.Normal]
    (f g : FreeGroup X →* G)
    (hgen : ∀ x : X, f (FreeGroup.of x) * (g (FreeGroup.of x))⁻¹ ∈ N) :
    ∀ x : FreeGroup X, f x * (g x)⁻¹ ∈ N

If two free-group homomorphisms agree modulo a normal subgroup on every generator, then they agree modulo that subgroup on every word.

Show proof
private theorem freeGroup_hom_mul_inv_mem_normalClosure_of_generator_mul_inv
    {X G : Type*} [Group G] {R : Set G}
    (f g : FreeGroup X →* G)
    (hgen :
      ∀ x : X, f (FreeGroup.of x) * (g (FreeGroup.of x))⁻¹ ∈
        Subgroup.normalClosure R) :
    ∀ x : FreeGroup X, f x * (g x)⁻¹ ∈ Subgroup.normalClosure R

If two free-group homomorphisms agree modulo the normal closure of \(R\) on every generator, then they agree modulo that normal closure on every word.

Show proof
private theorem zeroGenusFuchsianPresentedGroupEquivOfConjugateEllipticMutualMaps_memTotal
    (σ τ : FuchsianSignature)
    (hσZero : σ.orbitGenus = 0) (hτZero : τ.orbitGenus = 0)
    (η : FreeGroup (FuchsianGenerator σ) →* FreeGroup (FuchsianGenerator τ))
    (θ : FreeGroup (FuchsianGenerator τ) →* FreeGroup (FuchsianGenerator σ))
    (ηIndex : Fin σ.numPeriods → Fin τ.numPeriods)
    (ηConj : Fin σ.numPeriods → FreeGroup (FuchsianGenerator τ))
    (hηX :
      ∀ i, η (xWord σ i) = ηConj i * xWord τ (ηIndex i) * (ηConj i)⁻¹)
    (hηPeriod : ∀ i, σ.periods i = τ.periods (ηIndex i))
    (hηTotal : η (totalRelation σ) ∈ Subgroup.normalClosure (relators τ))
    (θIndex : Fin τ.numPeriods → Fin σ.numPeriods)
    (θConj : Fin τ.numPeriods → FreeGroup (FuchsianGenerator σ))
    (hθX :
      ∀ i, θ (xWord τ i) = θConj i * xWord σ (θIndex i) * (θConj i)⁻¹)
    (hθPeriod : ∀ i, τ.periods i = σ.periods (θIndex i))
    (hθTotal : θ (totalRelation τ) ∈ Subgroup.normalClosure (relators σ))
    (hθηEll :
      ∀ i : Fin σ.numPeriods,
        θ (η (xWord σ i)) * (xWord σ i)⁻¹ ∈ Subgroup.normalClosure (relators σ))
    (hηθEll :
      ∀ i : Fin τ.numPeriods,
        η (θ (xWord τ i)) * (xWord τ i)⁻¹ ∈ Subgroup.normalClosure (relators τ)) :
    Nonempty (FuchsianPresentedGroup σ ≃* FuchsianPresentedGroup τ)

The mutual maps used for conjugating elliptic generators respect the total zero-genus relator.

Show proof
private theorem zeroGenusAdjacentSwapFuchsianPresentedGroupEquiv
    {k n : ℕ} (σ τ : FuchsianSignature)
    (hσZero : σ.orbitGenus = 0) (hτZero : τ.orbitGenus = 0)
    (hσNum : σ.numPeriods = k + (n + 2)) (hτNum : τ.numPeriods = k + (n + 2))
    (hPeriodPrefix :
      ∀ j : Fin k,
        σ.periods (Fin.cast hσNum.symm (Fin.castAdd (n + 2) j)) =
          τ.periods (Fin.cast hτNum.symm (Fin.castAdd (n + 2) j)))
    (hPeriod0 :
      σ.periods (Fin.cast hσNum.symm (Fin.natAdd k (0 : Fin (n + 2)))) =
        τ.periods (Fin.cast hτNum.symm (Fin.natAdd k (1 : Fin (n + 2)))))
    (hPeriod1 :
      σ.periods (Fin.cast hσNum.symm (Fin.natAdd k (1 : Fin (n + 2)))) =
        τ.periods (Fin.cast hτNum.symm (Fin.natAdd k (0 : Fin (n + 2)))))
    (hPeriodTail :
      ∀ t : Fin n,
        σ.periods (Fin.cast hσNum.symm (Fin.natAdd k t.succ.succ)) =
          τ.periods (Fin.cast hτNum.symm (Fin.natAdd k t.succ.succ))) :
    Nonempty (FuchsianPresentedGroup σ ≃* FuchsianPresentedGroup τ)

An adjacent swap of zero-genus periods induces an equivalence of the corresponding Fuchsian presented groups.

Show proof
private theorem zeroGenusFuchsianPresentedGroupEquivOfIndexedPeriods_of_adjacentSwap
    (σ τ : FuchsianSignature)
    (hσZero : σ.orbitGenus = 0) (hτZero : τ.orbitGenus = 0)
    {ι : Type*}
    (eσ : ι ≃ Fin σ.numPeriods) (eτ : ι ≃ Fin τ.numPeriods)
    {k n : ℕ}
    (hσNum : σ.numPeriods = k + (n + 2)) (hτNum : τ.numPeriods = k + (n + 2))
    (hAdjacent :
      let σ0 : Fin σ.numPeriods := Fin.cast hσNum.symm (Fin.natAdd k (0 : Fin (n + 2)))
      let σ1 : Fin σ.numPeriods := Fin.cast hσNum.symm (Fin.natAdd k (1 : Fin (n + 2)))
      let τ0 : Fin τ.numPeriods := Fin.cast hτNum.symm (Fin.natAdd k (0 : Fin (n + 2)))
      let τ1 : Fin τ.numPeriods := Fin.cast hτNum.symm (Fin.natAdd k (1 : Fin (n + 2)))
      let sameτ : Fin σ.numPeriods → Fin τ.numPeriods := fun i =>
        Fin.cast hτNum.symm (Fin.cast hσNum i)
      ∀ x, eτ x = if eσ x = σ0 then τ1 else if eσ x = σ1 then τ0 else sameτ (eσ x))
    (hPeriods : ∀ x, σ.periods (eσ x) = τ.periods (eτ x)) :
    Nonempty (FuchsianPresentedGroup σ ≃* FuchsianPresentedGroup τ)

An adjacent swap in indexed zero-genus period data induces the corresponding presented-group equivalence.

Show proof
noncomputable def zeroGenusPermutedSignature
    (σ : FuchsianSignature) {m : ℕ} (hNum : σ.numPeriods = m)
    (p : Equiv.Perm (Fin m)) : FuchsianSignature where
  orbitGenus := 0
  numCusps := 0
  numPeriods := m
  periods := fun i => σ.periods (Fin.cast hNum.symm (p i))
  period_ge_two := by
    intro i
    exact σ.period_ge_two _
  numCusps_eq_zero := rfl
  numPeriods_ge_three := by
    have hge := σ.numPeriods_ge_three
    omega
@[local simp]

The zero-genus permuted signature is obtained by permuting the period indices.

theorem zeroGenusPermutedSignature_orbitGenus
    (σ : FuchsianSignature) {m : ℕ} (hNum : σ.numPeriods = m)
    (p : Equiv.Perm (Fin m)) :
    (zeroGenusPermutedSignature σ hNum p).orbitGenus = 0

Permuting the periods of a zero-genus signature preserves the orbit genus.

Show proof
theorem zeroGenusPermutedSignature_numPeriods
    (σ : FuchsianSignature) {m : ℕ} (hNum : σ.numPeriods = m)
    (p : Equiv.Perm (Fin m)) :
    (zeroGenusPermutedSignature σ hNum p).numPeriods = m

The zero-genus permuted signature has the stated number of periods.

Show proof
theorem zeroGenusPermutedSignature_periods
    (σ : FuchsianSignature) {m : ℕ} (hNum : σ.numPeriods = m)
    (p : Equiv.Perm (Fin m)) (i : Fin m) :
    (zeroGenusPermutedSignature σ hNum p).periods i =
      σ.periods (Fin.cast hNum.symm (p i))

The period function of the zero-genus permuted signature.

Show proof
private theorem zeroGenusFuchsianPresentedGroupEquivOfPermutedSignature
    (σ : FuchsianSignature) (hσZero : σ.orbitGenus = 0)
    {r : ℕ} (hNum : σ.numPeriods = r + 1)
    (p : Equiv.Perm (Fin (r + 1))) :
    Nonempty
      (FuchsianPresentedGroup σ ≃*
        FuchsianPresentedGroup (zeroGenusPermutedSignature σ hNum p))

Permuting the zero-genus signature periods induces an equivalence of the corresponding Fuchsian presented groups.

Show proof
theorem zeroGenusFuchsianPresentedGroupEquivOfIndexedPeriods
    (σ τ : FuchsianSignature)
    (hσZero : σ.orbitGenus = 0) (hτZero : τ.orbitGenus = 0)
    {ι : Type*}
    (eσ : ι ≃ Fin σ.numPeriods) (eτ : ι ≃ Fin τ.numPeriods)
    (hPeriods : ∀ x, σ.periods (eσ x) = τ.periods (eτ x)) :
    Nonempty (FuchsianPresentedGroup σ ≃* FuchsianPresentedGroup τ)

Indexed zero-genus period data induce an equivalence of the corresponding Fuchsian presented groups.

Show proof
theorem firstReductionSourceMulEquiv_exists
    {σ : FuchsianSignature} (D : FirstReductionPeriodData σ)
    (hZero : σ.orbitGenus = 0) :
    Nonempty (FuchsianPresentedGroup σ ≃* FuchsianPresentedGroup D.sourceSignature)

There is a multiplicative equivalence from the first-reduction source presentation to its reindexed form.

Show proof