FenchelNielsenZomorrodian.Profinite.PositiveGenusQuotient

14 Theorem | 10 Definition | 2 Abbreviation | 3 Instance

This module develops Fenchel--Nielsen--Zomorrodian presentation reductions, period relations, reindexings, and quotient maps.

import
Imported by

Declarations

abbrev PositiveGenusSmoothBase (σ : FenchelSignature) :=
  Multiplicative (FenchelPeriodCoordinate σ × FenchelPeriodCoordinate σ)

The positive-genus smooth base packages the quotient data used for the smooth action construction.

noncomputable def positiveGenusSmoothSwap
    (σ : FenchelSignature) :
    MulAut (PositiveGenusSmoothBase σ) where
  toFun x :=
    Multiplicative.ofAdd
      ((Multiplicative.toAdd x).2, (Multiplicative.toAdd x).1)
  invFun x :=
    Multiplicative.ofAdd
      ((Multiplicative.toAdd x).2, (Multiplicative.toAdd x).1)
  left_inv := by
    intro x
    cases x
    rfl
  right_inv := by
    intro x
    cases x
    rfl
  map_mul' := by
    intro x y
    cases x
    cases y
    rfl

The positive-genus smooth swap satisfies the defining generator relations.

theorem zmod_two_eq_zero_or_one (z : ZMod 2) :
    z = 0 ∨ z = 1

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

Show proof
noncomputable def positiveGenusSmoothAction
    (σ : FenchelSignature) :
    Multiplicative (ZMod 2) →* MulAut (PositiveGenusSmoothBase σ) where
  toFun t :=
    if Multiplicative.toAdd t = (0 : ZMod 2) then
      1
    else
      positiveGenusSmoothSwap σ
  map_one' := by simp only [toAdd_one, ↓reduceIte]
  map_mul' := by
    intro a b
    have ha := zmod_two_eq_zero_or_one (Multiplicative.toAdd a)
    have hb := zmod_two_eq_zero_or_one (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, positiveGenusSmoothSwap, 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, positiveGenusSmoothSwap, 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, positiveGenusSmoothSwap,
  MulAut.mul_apply, MulEquiv.coe_mk, Equiv.coe_fn_mk, toAdd_ofAdd, Prod.mk.eta, ofAdd_toAdd]

The positive-genus smooth action satisfies the defining generator and relator relations.

abbrev PositiveGenusSmoothQuotient (σ : FenchelSignature) :=
  PositiveGenusSmoothBase σ ⋊[positiveGenusSmoothAction σ]
    Multiplicative (ZMod 2)

The positive-genus construction produces a smooth quotient for the profinite F-group.

instance instTopologicalSpacePositiveGenusSmoothQuotient (σ : FenchelSignature) :
    TopologicalSpace (PositiveGenusSmoothQuotient σ) :=
  ⊥

The positive-genus smooth quotient carries the topology induced by its finite quotient construction.

instance instDiscreteTopologyPositiveGenusSmoothQuotient (σ : FenchelSignature) :
    DiscreteTopology (PositiveGenusSmoothQuotient σ) :=
  ⟨rfl

The positive-genus smooth quotient carries the discrete topology at the finite quotient stage.

def positiveGenusSmoothEllipticBase
    (σ : FenchelSignature) (i : Fin σ.numPeriods) :
    PositiveGenusSmoothBase σ :=
  Multiplicative.ofAdd
    (fenchelPeriodBasisVector σ i, -fenchelPeriodBasisVector σ i)

The base-coordinate value assigned to a positive-genus inertia generator.

def positiveGenusSmoothSumBasis
    (σ : FenchelSignature) :
    FenchelPeriodCoordinate σ :=
  ∑ i : Fin σ.numPeriods, fenchelPeriodBasisVector σ i

The sum of the period-coordinate basis vectors.

def positiveGenusSmoothEllipticProductBase
    (σ : FenchelSignature) :
    PositiveGenusSmoothBase σ :=
  Multiplicative.ofAdd
    (positiveGenusSmoothSumBasis σ,
      -positiveGenusSmoothSumBasis σ)

The product of the base-coordinate values assigned to all inertia generators.

def positiveGenusSmoothSurfaceBase
    (σ : FenchelSignature) :
    PositiveGenusSmoothBase σ :=
  Multiplicative.ofAdd (0, positiveGenusSmoothSumBasis σ)

The base-coordinate value used for the first positive-genus surface generator.

def positiveGenusSmoothTopGenerator :
    Multiplicative (ZMod 2) :=
  Multiplicative.ofAdd (1 : ZMod 2)

The nontrivial top-coordinate generator of the positive-genus quotient.

theorem positiveGenusSmoothEllipticBase_pow_period
    (σ : FenchelSignature) (i : Fin σ.numPeriods) :
    positiveGenusSmoothEllipticBase σ i ^ σ.periods i = 1

Each positive-genus inertia base value has exponent dividing its period.

Show proof
theorem positiveGenusSmoothEllipticProductBase_eq_prod
    (σ : FenchelSignature) :
    (∏ i : Fin σ.numPeriods, positiveGenusSmoothEllipticBase σ i) =
      positiveGenusSmoothEllipticProductBase σ

The named elliptic product base is the product of the individual inertia base values.

Show proof
private theorem list_finRange_prod_eq_single_zeroVal
    {G : Type*} [Monoid G] {n : ℕ} (h : 1 ≤ n) (c : G) :
    ((List.finRange n).map
      (fun j : Fin n => if j.val = 0 then c else 1)).prod = c

The product over the finite range collapses to the value at the distinguished zero index.

Show proof
theorem positiveGenusSmoothEllipticProduct_mul_surfaceCommutator
    (σ : FenchelSignature) :
    (SemidirectProduct.inl (positiveGenusSmoothEllipticProductBase σ) :
        PositiveGenusSmoothQuotient σ) *
      ⁅(SemidirectProduct.inl (positiveGenusSmoothSurfaceBase σ) :
          PositiveGenusSmoothQuotient σ),
        SemidirectProduct.inr positiveGenusSmoothTopGenerator⁆ =
      1

The elliptic product cancels the chosen surface commutator in the positive-genus quotient.

Show proof
noncomputable def positiveGenusGeneratorImageCore
    (Δ : ProfiniteFGroup.{u}) :
    ProfiniteFenchelGeneratorIndex.{u} Δ.signature →
      PositiveGenusSmoothQuotient Δ.signature
  | ULift.up (.inertia i) =>
      SemidirectProduct.inl
        (positiveGenusSmoothEllipticBase Δ.signature i)
  | ULift.up (.surfaceA j) =>
      if j.val = 0 then
        SemidirectProduct.inl
          (positiveGenusSmoothSurfaceBase Δ.signature)
      else
        1
  | ULift.up (.surfaceB j) =>
      if j.val = 0 then
        SemidirectProduct.inr positiveGenusSmoothTopGenerator
      else
        1
  | ULift.up (.cusp _) => 1

The core positive-genus generator image satisfies the required generator relation.

noncomputable def positiveGenusGeneratorImage
    (Δ : ProfiniteFGroup.{u}) :
    ProfiniteFenchelGeneratorIndex.{u} Δ.signature →
      ULift.{u, 0} (PositiveGenusSmoothQuotient Δ.signature) :=
  fun x => ULift.up (positiveGenusGeneratorImageCore Δ x)

The positive-genus generator image satisfies the required generator relation.

private theorem positiveGenus_inertia_list_product
    (σ : FenchelSignature) :
    ((List.finRange σ.numPeriods).map fun i =>
        (SemidirectProduct.inl (positiveGenusSmoothEllipticBase σ i) :
          PositiveGenusSmoothQuotient σ)).prod =
      (SemidirectProduct.inl
        (positiveGenusSmoothEllipticProductBase σ) :
          PositiveGenusSmoothQuotient σ)

The product of the positive-genus inertia images is the required inertia-list product.

Show proof
private theorem positiveGenusGeneratorImage_total_relation
    (Δ : ProfiniteFGroup.{u}) (hGenus : 1 ≤ Δ.signature.orbitGenus) :
    profiniteFenchelTotalRelation
        (fun i => positiveGenusGeneratorImageCore Δ
          (ULift.up (ProfiniteFenchelGenerator.surfaceA i)))
        (fun i => positiveGenusGeneratorImageCore Δ
          (ULift.up (ProfiniteFenchelGenerator.surfaceB i)))
        (fun j => positiveGenusGeneratorImageCore Δ
          (ULift.up (ProfiniteFenchelGenerator.cusp j)))
        (fun k => positiveGenusGeneratorImageCore Δ
          (ULift.up (ProfiniteFenchelGenerator.inertia k))) = 1

The positive-genus generator images satisfy the total presentation relation.

Show proof
private theorem positiveGenusGeneratorImage_lifted_total_relation
    (Δ : ProfiniteFGroup.{u}) (hGenus : 1 ≤ Δ.signature.orbitGenus) :
    profiniteFenchelTotalRelation
        (fun i => positiveGenusGeneratorImage Δ
          (ULift.up (ProfiniteFenchelGenerator.surfaceA i)))
        (fun i => positiveGenusGeneratorImage Δ
          (ULift.up (ProfiniteFenchelGenerator.surfaceB i)))
        (fun j => positiveGenusGeneratorImage Δ
          (ULift.up (ProfiniteFenchelGenerator.cusp j)))
        (fun k => positiveGenusGeneratorImage Δ
          (ULift.up (ProfiniteFenchelGenerator.inertia k))) = 1

The lifted positive-genus generator images satisfy the total presentation relation.

Show proof
private theorem positiveGenusGeneratorImage_period_relation
    (Δ : ProfiniteFGroup.{u}) (k : Fin Δ.signature.numPeriods) :
    positiveGenusGeneratorImageCore Δ
        (ULift.up (ProfiniteFenchelGenerator.inertia k)) ^
      Δ.signature.periods k = 1

The positive-genus generator image satisfies each prescribed period relation.

Show proof
private theorem positiveGenusGeneratorImage_lifted_period_relation
    (Δ : ProfiniteFGroup.{u}) (k : Fin Δ.signature.numPeriods) :
    positiveGenusGeneratorImage Δ
        (ULift.up (ProfiniteFenchelGenerator.inertia k)) ^
      Δ.signature.periods k = 1

The lifted positive-genus generator image satisfies each prescribed period relation.

Show proof
private theorem positiveGenusGeneratorImage_inertia_order
    (Δ : ProfiniteFGroup.{u}) (k : Fin Δ.signature.numPeriods) :
    orderOf
        (positiveGenusGeneratorImageCore Δ
          (ULift.up (ProfiniteFenchelGenerator.inertia k))) =
      Δ.signature.periods k

The image of a positive-genus inertia generator has the prescribed order.

Show proof
private theorem positiveGenusGeneratorImage_lifted_inertia_order
    (Δ : ProfiniteFGroup.{u}) (k : Fin Δ.signature.numPeriods) :
    orderOf
        (positiveGenusGeneratorImage Δ
          (ULift.up (ProfiniteFenchelGenerator.inertia k))) =
      Δ.signature.periods k

The lifted image of a positive-genus inertia generator has the prescribed order.

Show proof
theorem positiveGenusSmoothQuotient_finite
    (σ : FenchelSignature) :
    Finite (PositiveGenusSmoothQuotient σ)

The positive-genus smooth quotient is finite.

Show proof
theorem positiveGenusSmoothQuotient_derivedSeries_two_eq_bot
    (σ : FenchelSignature) :
    derivedSeries (PositiveGenusSmoothQuotient σ) 2 = ⊥

The positive-genus smooth quotient has derived length at most two.

Show proof
noncomputable instance instFiniteULiftPositiveGenusSmoothQuotient (σ : FenchelSignature) :
    Finite (ULift.{u, 0} (PositiveGenusSmoothQuotient σ)) := by
  letI : Finite (PositiveGenusSmoothQuotient σ) :=
    positiveGenusSmoothQuotient_finite σ
  infer_instance

The lifted positive-genus smooth quotient type is finite.

noncomputable def positiveGenusSmoothQuotientData
    (Δ : ProfiniteFGroup.{u}) (hGenus : 1 ≤ Δ.signature.orbitGenus) :
    ProfiniteSmoothQuotientData Δ 2 :=
  ProfiniteSmoothQuotientData.ofPresentationLiftToFiniteOfRelationsOfDerivedSeries
    Δ (positiveGenusGeneratorImage Δ)
    (positiveGenusGeneratorImage_lifted_total_relation Δ hGenus)
    (positiveGenusGeneratorImage_lifted_period_relation Δ)
    (derivedSeries_ulift_eq_bot_of
      (positiveGenusSmoothQuotient_derivedSeries_two_eq_bot
        Δ.signature))
    (positiveGenusGeneratorImage_lifted_inertia_order Δ)

The smooth quotient data for the positive-genus profinite F-group quotient.