FenchelNielsenZomorrodian.Discrete.CompactFuchsian.PeriodOne.TargetSignatures
noncomputable def doublePeriodOneTailReplicatedSignature
{tailLen p : ℕ} (tail : Fin tailLen → ℕ)
(htail : ∀ j, 2 ≤ tail j) (hHigh : 3 ≤ p * tailLen) :
FuchsianSignature where
orbitGenus := 0
numCusps := 0
numPeriods := p * tailLen
periods := fun i => tail ((finProdFinEquiv.symm i).2)
period_ge_two := by
intro i
exact htail ((finProdFinEquiv.symm i).2)
numCusps_eq_zero := rfl
numPeriods_ge_three := hHighThe target signature obtained by replicating the tail in the double-period-one case.
theorem doublePeriodOneTailReplicatedSignature_lcmCondition
{tailLen p : ℕ} (tail : Fin tailLen → ℕ)
(htail : ∀ j, 2 ≤ tail j) (hHigh : 3 ≤ p * tailLen) :
2 ≤ p →
LCMCondition
(doublePeriodOneTailReplicatedSignature tail htail hHigh).toFenchelSignatureThe tail-replicated double-period-one target signature satisfies the LCM condition.
Show proof
by
classical
intro hp
change LCMConditionFamily
(fun i : Fin (p * tailLen) => tail ((finProdFinEquiv.symm i).2))
apply lcmConditionFamily_of_hasEqualPartnerFamily
intro i
let kj : Fin p × Fin tailLen := finProdFinEquiv.symm i
refine ⟨finProdFinEquiv (finPartner hp kj.1, kj.2), ?_, ?_⟩
· intro h
have hi : i = finProdFinEquiv kj := by
dsimp [kj]
exact (finProdFinEquiv.apply_symm_apply i).symm
have hpair := finProdFinEquiv.injective (h.trans hi)
exact finPartner_ne hp kj.1 (congrArg Prod.fst hpair)
· simp only [finProdFinEquiv_symm_apply, Equiv.symm_apply_apply, kj]Proof. Unfold the target-signature construction. The index type, period family, and signature fields are assembled from the period-one reduction data; the LCM condition follows by evaluating the constructed period family and applying the recorded divisibility hypotheses.
□def oneHeadPeriodOneTargetOrderedIndexEquiv (tailLen p : ℕ) :
OneHeadPeriodOneTargetIndex tailLen p ≃ Fin (1 + p * tailLen) :=
(Equiv.sumCongr (Equiv.refl (Fin 1))
(finProdFinEquiv : Fin p × Fin tailLen ≃ Fin (p * tailLen))).trans
finSumFinEquivdef oneHeadPeriodOneTargetPeriods
{tailLen p : ℕ} (m₂' : ℕ) (tail : Fin tailLen → ℕ) :
OneHeadPeriodOneTargetIndex tailLen p → ℕ
| .inl _ => m₂'
| .inr kj => tail kj.2noncomputable def oneHeadPeriodOneTargetSignature
{tailLen p : ℕ} (m₂' : ℕ) (tail : Fin tailLen → ℕ)
(hp : 2 ≤ p) (hm₂' : 2 ≤ m₂') (htail : ∀ j, 2 ≤ tail j)
(hTailLen : 0 < tailLen) : FuchsianSignature where
orbitGenus := 0
numCusps := 0
numPeriods := 1 + p * tailLen
periods := fun i =>
oneHeadPeriodOneTargetPeriods (p := p) m₂' tail
((oneHeadPeriodOneTargetOrderedIndexEquiv tailLen p).symm i)
period_ge_two := by
intro i
cases h :
(oneHeadPeriodOneTargetOrderedIndexEquiv tailLen p).symm i with
| inl head =>
fin_cases head
exact hm₂'
| inr kj =>
exact htail kj.2
numCusps_eq_zero := rfl
numPeriods_ge_three := by
have htailOne : 1 ≤ tailLen := Nat.succ_le_of_lt hTailLen
have hprod : 2 ≤ p * tailLen := by
exact Nat.mul_le_mul hp htailOne
omega