FenchelNielsenZomorrodian/Discrete/CompactFuchsian/AbelianizationKernel/Periods.lean
1import FenchelNielsenZomorrodian.Discrete.Core.FamilySignature
3/-
4PUBLIC_PAGE_SNAPSHOT
5generated_at: 2026-05-27T09:47:29+09:00
6lean_source: lean4/FenchelNielsenZomorrodian/Discrete/CompactFuchsian/AbelianizationKernel/Periods.lean
7translation_root: data/translation
8purpose: identifies the local data snapshot used to build pages/
9placement: after imports, never before imports
10-/
11/-!
12# Abelianization-kernel conditions for compact Fuchsian groups
14Numerical and period-family criteria ensuring that abelianization kernels satisfy the conditions needed for torsion-free finite-index subgroups.
15-/
17namespace FenchelNielsen
19def abelianizationKernelPeriodFamily {ι : Type*} [Fintype ι] [DecidableEq ι]
20 (periods : ι → ℕ) (i : ι) : ℕ :=
21 periods i / Nat.gcd (periods i) (otherPeriodsLcmFamily periods i)
23def abelianizationKernelMultiplicityFamily {ι : Type*} [Fintype ι] [DecidableEq ι]
24 (periods : ι → ℕ) (i : ι) : ℕ :=
25 otherPeriodsProductFamily periods i / otherPeriodsLcmFamily periods i
27def abelianizationKernelRawPeriods {ι : Type*} [Fintype ι] [DecidableEq ι]
28 (periods : ι → ℕ)
29 (x : Sigma fun i : ι => Fin (abelianizationKernelMultiplicityFamily periods i)) : ℕ :=
30 abelianizationKernelPeriodFamily periods x.1
32def abelianizationKernelPeriods (σ : FuchsianSignature) :
33 NonOneSubfamilyIndex (abelianizationKernelRawPeriods σ.periods) → ℕ :=
34 nonOneSubfamilyPeriods (abelianizationKernelRawPeriods σ.periods)
36end FenchelNielsen