FenchelNielsenZomorrodian.Discrete.CompactFuchsian.PeriodOne.LowCardDihedral

14 Theorem | 10 Definition | 1 Abbreviation

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
Imported by

Declarations

theorem firstReductionTransportPeriodsFin_tail_low_card_eq_two
    {tailLen p : ℕ} (hp : 2 ≤ p) (hTailLen : 0 < tailLen)
    (hcard : ¬ 3 ≤ p * tailLen) :
    p = 2 ∧ tailLen = 1

In the low-cardinality tail case, the transported tail-period index set has cardinality two.

Show proof
private theorem zmod_two_eq_zero_or_one_for_dihedral (z : ZMod 2) :
    z = 0 ∨ z = 1

The zmod two equality zero or one for dihedral is equal to zero after applying the defining relation or quotient formula in the Fenchel--Nielsen--Zomorrodian presentation.

Show proof
noncomputable def twoTwoTailDihedralInversion (n : ℕ) :
    MulAut (Multiplicative (ZMod n)) where
  toFun x := Multiplicative.ofAdd (-(Multiplicative.toAdd x))
  invFun x := Multiplicative.ofAdd (-(Multiplicative.toAdd x))
  left_inv := by
    intro x
    cases x
    simp only [toAdd_ofAdd, ofAdd_neg, toAdd_inv, neg_neg]
  right_inv := by
    intro x
    cases x
    simp only [toAdd_ofAdd, ofAdd_neg, toAdd_inv, neg_neg]
  map_mul' := by
    intro x y
    cases x
    cases y
    simp only [toAdd_mul, toAdd_ofAdd, neg_add_rev, ofAdd_add, ofAdd_neg, mul_comm]

The inversion relation in the (2,2)-tail dihedral model.

noncomputable def twoTwoTailDihedralAction (n : ℕ) :
    Multiplicative (ZMod 2) →* MulAut (Multiplicative (ZMod n)) where
  toFun t :=
    if Multiplicative.toAdd t = (0 : ZMod 2) then
      1
    else
      twoTwoTailDihedralInversion n
  map_one' := by rfl
  map_mul' := by
    intro a b
    have ha := zmod_two_eq_zero_or_one_for_dihedral (Multiplicative.toAdd a)
    have hb := zmod_two_eq_zero_or_one_for_dihedral (Multiplicative.toAdd b)
    rcases ha with ha | ha <;> rcases hb with hb | hb
    · ext x : 1
      cases x
      simp only [toAdd_mul, ha, hb, add_zero, ↓reduceIte, MulAut.one_apply, mul_one]
    · ext x : 1
      cases x
      simp only [toAdd_mul, ha, hb, zero_add, one_ne_zero, ↓reduceIte, twoTwoTailDihedralInversion, ofAdd_neg,
  ofAdd_toAdd, MulEquiv.coe_mk, Equiv.coe_fn_mk, one_mul]
    · ext x : 1
      cases x
      simp only [toAdd_mul, ha, hb, add_zero, one_ne_zero, ↓reduceIte, twoTwoTailDihedralInversion, ofAdd_neg,
  ofAdd_toAdd, MulEquiv.coe_mk, Equiv.coe_fn_mk, mul_one]
    · have hsum : (1 : ZMod 2) + 1 = 0 := by
        simpa using (ZMod.natCast_self 2)
      ext x : 1
      cases x
      simp only [toAdd_mul, ha, hb, hsum, ↓reduceIte, MulAut.one_apply, one_ne_zero, twoTwoTailDihedralInversion,
  ofAdd_neg, ofAdd_toAdd, MulAut.mul_apply, MulEquiv.coe_mk, Equiv.coe_fn_mk, inv_inv]

The dihedral action used for the (2,2)-tail period-one case.

abbrev TwoTwoTailDihedralQuotient (n : ℕ) :=
  Multiplicative (ZMod n) ⋊[twoTwoTailDihedralAction n] Multiplicative (ZMod 2)

The two-two-tail case admits the specified dihedral quotient.

noncomputable def twoTwoTailRotation (n : ℕ) : TwoTwoTailDihedralQuotient n :=
  SemidirectProduct.inl (Multiplicative.ofAdd (1 : ZMod n))

The rotation element in the (2,2)-tail dihedral model.

noncomputable def twoTwoTailReflectionZero (n : ℕ) : TwoTwoTailDihedralQuotient n :=
  SemidirectProduct.inr (Multiplicative.ofAdd (1 : ZMod 2))

The first reflection element in the (2,2)-tail dihedral model.

noncomputable def twoTwoTailReflectionOne (n : ℕ) : TwoTwoTailDihedralQuotient n :=
  SemidirectProduct.inl (Multiplicative.ofAdd (1 : ZMod n)) *
    SemidirectProduct.inr (Multiplicative.ofAdd (1 : ZMod 2))

In the (2,2)-tail dihedral model, the second reflection is the product of the rotation and the first reflection.

theorem twoTwoTailRotation_pow_period
    (n : ℕ) :
    twoTwoTailRotation n ^ n = 1

The rotation in the two-two-tail dihedral quotient has exponent \(n\).

Show proof
theorem twoTwoTailRotation_order
    (n : ℕ) :
    orderOf (twoTwoTailRotation n) = n

The rotation in the two-two-tail dihedral quotient has order \(n\).

Show proof
theorem twoTwoTailReflectionZero_sq (n : ℕ) :
    twoTwoTailReflectionZero n ^ 2 = 1

The first reflection in the two-two-tail dihedral quotient squares to one.

Show proof
theorem twoTwoTailReflectionOne_sq (n : ℕ) :
    twoTwoTailReflectionOne n ^ 2 = 1

The second reflection in the two-two-tail dihedral quotient squares to one.

Show proof
theorem twoTwoTailReflectionZero_order (n : ℕ) :
    orderOf (twoTwoTailReflectionZero n) = 2

The first reflection in the two-two-tail dihedral quotient has order two.

Show proof
theorem twoTwoTailReflectionOne_order (n : ℕ) :
    orderOf (twoTwoTailReflectionOne n) = 2

The second reflection in the two-two-tail dihedral quotient has order two.

Show proof
theorem twoTwoTail_reflection_product_rotation_eq_one (n : ℕ) :
    twoTwoTailReflectionZero n * twoTwoTailReflectionOne n * twoTwoTailRotation n = 1

The two reflections and the rotation satisfy the total-relation product.

Show proof
def twoTwoTailPeriods (n : ℕ) : Fin 3 → ℕ := fun i =>
  if i.val = 0 then 2 else if i.val = 1 then 2 else n

The two tail periods in the two-two-tail low-cardinality case.

theorem twoTwoTailPeriods_ge_two {n : ℕ} (hn : 2 ≤ n) :
    ∀ i : Fin 3, 2 ≤ twoTwoTailPeriods n i

In the two-two-tail signature, every period in the period family is at least \(2\).

Show proof
noncomputable def twoTwoTailSignature (n : ℕ) (hn : 2 ≤ n) :
    FuchsianSignature where
  orbitGenus := 0
  numCusps := 0
  numPeriods := 3
  periods := twoTwoTailPeriods n
  period_ge_two := twoTwoTailPeriods_ge_two hn
  numCusps_eq_zero := rfl
  numPeriods_ge_three := by norm_num

The compact Fuchsian signature for the (2,2)-tail dihedral case.

noncomputable def twoTwoTailDihedralGeneratorImage {n : ℕ} (hn : 2 ≤ n) :
    FuchsianGenerator (twoTwoTailSignature n hn) → TwoTwoTailDihedralQuotient n
  | .elliptic i =>
      if i.val = 0 then
        twoTwoTailReflectionZero n
      else if i.val = 1 then
        twoTwoTailReflectionOne n
      else
        twoTwoTailRotation n
  | .surfaceA _ => 1
  | .surfaceB _ => 1

The generator image used in the (2,2)-tail dihedral quotient.

private theorem twoTwoTailDihedralGeneratorImage_respects_relators
    {n : ℕ} (hn : 2 ≤ n) :
    ∀ r ∈ relators (twoTwoTailSignature n hn),
      FreeGroup.lift (twoTwoTailDihedralGeneratorImage hn) r = 1

The generator image for the (2,2)-tail dihedral case respects the compact Fuchsian relators.

Show proof
noncomputable def twoTwoTailDihedralHom
    {n : ℕ} (hn : 2 ≤ n) :
    FuchsianPresentedGroup (twoTwoTailSignature n hn) →*
      TwoTwoTailDihedralQuotient n :=
  PresentedGroup.toGroup (rels := relators (twoTwoTailSignature n hn))
    (f := twoTwoTailDihedralGeneratorImage hn)
    (twoTwoTailDihedralGeneratorImage_respects_relators hn)

The homomorphism from the two-two-tail compact Fuchsian presentation to the dihedral quotient.

theorem twoTwoTailDihedralQuotient_finite
    {n : ℕ} (hn : 2 ≤ n) :
    Finite (TwoTwoTailDihedralQuotient n)

The two-two-tail dihedral quotient is finite.

Show proof
theorem twoTwoTailDihedralQuotient_derivedSeries_two_eq_bot
    (n : ℕ) :
    derivedSeries (TwoTwoTailDihedralQuotient n) 2 = ⊥

The two-two-tail dihedral quotient has derived length at most two.

Show proof
theorem FirstReductionPeriodData.sourceSubgroup_exists_of_two_two_tail_two
    {σ : FuchsianSignature} (D : FirstReductionPeriodData σ)
    (hm₁' : D.m₁' = 1) (hm₂' : D.m₂' = 1)
    (hp_eq_two : D.p = 2) (hTailLen_eq_one : D.tailLen = 1) :
    ∃ L : Subgroup (FuchsianPresentedGroup D.sourceSignature),
      L.FiniteIndex ∧ IsTorsionFreeGroup L ∧
        SubgroupQuotientHasDerivedLengthAtMost L 2

Source-subgroup version of the low \([2,2,n]\) first-reduction branch. This avoids taking a normal core in the local period-one cleanup proof: the later mathematical endpoint can still normalize the final subgroup if it is needed.

Show proof