FenchelNielsenZomorrodian.Discrete.Core.CompactFuchsianPresentation
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
- FenchelNielsenZomorrodian.Discrete.Core.Signature
- Mathlib.Algebra.Group.Commutator
- Mathlib.Data.Fintype.Sum
- Mathlib.GroupTheory.PresentedGroup
Imported by
- FenchelNielsenZomorrodian.Discrete
- FenchelNielsenZomorrodian.Discrete.Abelianization.PeriodCoordinate
- FenchelNielsenZomorrodian.Discrete.Core
- FenchelNielsenZomorrodian.Discrete.Core.EllipticCompact
- FenchelNielsenZomorrodian.Discrete.Core.EllipticQuotientHom
- FenchelNielsenZomorrodian.Discrete.Core.FamilySignature
- FenchelNielsenZomorrodian.Profinite.CompactFuchsianSignature
structure FuchsianSignature extends FenchelSignature where
numCusps_eq_zero : numCusps = 0
numPeriods_ge_three : 3 ≤ numPeriodsSignature data for a compact Fuchsian presentation.
inductive FuchsianGenerator (σ : FuchsianSignature)
| elliptic : Fin σ.numPeriods → FuchsianGenerator σ
| surfaceA : Fin σ.orbitGenus → FuchsianGenerator σ
| surfaceB : Fin σ.orbitGenus → FuchsianGenerator σGenerator type for the compact Fuchsian presentation.
def FuchsianGenerator.equivSum (σ : FuchsianSignature) :
FuchsianGenerator σ ≃ Fin σ.numPeriods ⊕ Fin σ.orbitGenus ⊕ Fin σ.orbitGenus where
toFun
| .elliptic i => .inl i
| .surfaceA j => .inr (.inl j)
| .surfaceB j => .inr (.inr j)
invFun
| .inl i => FuchsianGenerator.elliptic i
| .inr (.inl j) => FuchsianGenerator.surfaceA j
| .inr (.inr j) => FuchsianGenerator.surfaceB j
left_inv := by
intro x
cases x <;> rfl
right_inv := by
intro x
cases x with
| inl i => rfl
| inr y =>
cases y <;> rflinstance FuchsianGenerator.instFintype (σ : FuchsianSignature) :
Fintype (FuchsianGenerator σ) :=
Fintype.ofEquiv (Fin σ.numPeriods ⊕ Fin σ.orbitGenus ⊕ Fin σ.orbitGenus)
(FuchsianGenerator.equivSum σ).symmThe compact Fuchsian generator type is finite.
def xWord (σ : FuchsianSignature) (i : Fin σ.numPeriods) :
FreeGroup (FuchsianGenerator σ) :=
FreeGroup.of <| FuchsianGenerator.elliptic iThe elliptic generator word in the compact Fuchsian presentation.
def aWord (σ : FuchsianSignature) (j : Fin σ.orbitGenus) :
FreeGroup (FuchsianGenerator σ) :=
FreeGroup.of <| FuchsianGenerator.surfaceA jThe a-generator word in the compact Fuchsian presentation.
def bWord (σ : FuchsianSignature) (j : Fin σ.orbitGenus) :
FreeGroup (FuchsianGenerator σ) :=
FreeGroup.of <| FuchsianGenerator.surfaceB jThe b-generator word in the compact Fuchsian presentation.
def totalRelation (σ : FuchsianSignature) :
FreeGroup (FuchsianGenerator σ) :=
((List.finRange σ.numPeriods).map fun i => xWord σ i).prod *
((List.finRange σ.orbitGenus).map fun j => ⁅aWord σ j, bWord σ j⁆).prodThe total relation word in the compact Fuchsian presentation.
def relators (σ : FuchsianSignature) : Set (FreeGroup (FuchsianGenerator σ)) :=
{w | (∃ i : Fin σ.numPeriods, w = (xWord σ i) ^ σ.periods i) ∨ w = totalRelation σ}The relator family of the compact Fuchsian presentation.
abbrev FuchsianPresentedGroup (σ : FuchsianSignature) : Type :=
PresentedGroup (relators σ)The group presented by the compact Fuchsian generators and relators.
instance instGroupFuchsianPresentedGroup (σ : FuchsianSignature) :
Group (FuchsianPresentedGroup σ) :=
inferInstanceThe compact Fuchsian presented group carries the quotient group structure induced by the presentation relators.