Valence theory of the j-function (Phase C, Track 2, §4.3) #
This file develops the valence theory of the modular j-invariant that the Rationality
track (Rationality.lean, statement 2 of SingularModuli.lean) consumes: injectivity
mod Γ and surjectivity. See Playground/Pi/PhaseC-PLAN.md, §4.2 (the three-prime
argument, input (C3)) and §4.3 (this sub-plan). The Isabelle/AFP "Complex Lattices,
Elliptic Functions, and the Modular Group" development is the design blueprint (§1).
What is proved here (sorry-free) #
- Fundamental-domain reduction
exists_smul_mem_fd_j: everyτisSL(2,ℤ)-equivalent to a point of the closed fundamental domain𝒟, with equalj-value (a thin wrapper of Mathlib'sModularGroup.exists_smul_mem_fdandj_smul). - Lattice reformulation
j_eq_iff_J,j_eq_iff_periodPair_J:j τ₁ = j τ₂iff Klein's invariants of the latticesL_{τ₁},L_{τ₂}agree (viaFourier.J_eq_J_Lτ). - The weighted-projective identity
E₄E₆_proj_eq_of_j_eq/g₂g₃_proj_eq_of_j_eq:j τ₁ = j τ₂ ⇒ E₄(τ₁)³·E₆(τ₂)² = E₄(τ₂)³·E₆(τ₁)², equivalentlyg₂(L₁)³·g₃(L₂)² = g₂(L₂)³·g₃(L₁)²— the(g₂³ : g₃²)proportionality of §4.3. - Lattice-rigidity step 1
exists_units_smul_g₂_g₃: for two lattices withL₁.J = L₂.J(and nonzero discriminants) there is a homothetya : ℂˣwithg₂(a·L₂) = g₂(L₁)andg₃(a·L₂) = g₃(L₁). This is the "there isλ ∈ ℂˣwithg₂(λ L_{τ′}) = g₂(L_τ),g₃(λ L_{τ′}) = g₃(L_τ)" of §4.3, done in full (the 4th/6th-root bookkeeping). It reduces injectivity to the lattice-recovery core (see TODO below). - Gated injectivity
j_injective_mod_Γ_of_lattice_core: injectivity modΓfollows from the isolated lattice-recovery core (equal(g₂,g₃)of homothetic lattices ⇒ the base points areΓ-equivalent). - The lattice-recovery core, discharged in full (see the section "The lattice-recovery
core, discharged"):
PeriodPair.weierstrassP_eventuallyEq_of_g₂_g₃(equal(g₂,g₃)⇒ equal℘near0, via the Eisenstein-coefficient recursion extracted from the ODE℘'' = 6℘² − g₂/2ofDivisionValues.lean),PeriodPair.lattice_eq_of_weierstrassP_eventuallyEq(identity theorem + pole-set comparison ⇒ equal lattices),exists_sl2_of_lattice_eq(equal lattices ⇒Γ-related base points), combined inlattice_recovery_core. - Injectivity mod
Γ, unconditionalj_injective_mod_Γ:j τ₁ = j τ₂ → ∃ γ : SL(2,ℤ), τ₂ = γ • τ₁. - Surjectivity, unconditional
j_surjective:Function.Surjective (j : ℍ → ℂ). Proved by the open-and-closed argument of §4.3 (isOpen_range_jvia the open mapping theorem for the nonconstant holomorphicj,isClosed_range_jvia the cusp estimate + compactness of a truncation of the fundamental domain, assembled withIsClopen.eq_univon the preconnectedℂ). See the "Surjectivity" section.
Both halves of the §4.3 valence theory (j_injective_mod_Γ and j_surjective) are now
sorry-free.
Fundamental-domain reduction #
Every τ : ℍ is SL(2,ℤ)-equivalent to a point of the closed fundamental domain 𝒟,
and j is constant along this move. Wrapper of ModularGroup.exists_smul_mem_fd and
j_smul; used by the surjectivity argument (move a would-be limit point into 𝒟).
Lattice reformulation of j-equality #
The weighted-projective (g₂³ : g₃²) identity #
j τ₁ = j τ₂ ⇒ E₄(τ₁)³·E₆(τ₂)² = E₄(τ₂)³·E₆(τ₁)². Cross-multiplying J τ₁ = J τ₂
kills the E₄³·E₄³ terms and leaves the weighted-projective equality of §4.3.
Lattice rigidity, step 1: matching g₂ and g₃ by a homothety #
§4.3: from J(L₁) = J(L₂) there is a scaling a ∈ ℂˣ with g₂(a·L₂) = g₂(L₁) and
g₃(a·L₂) = g₃(L₁). Proof: J-equality gives the projective relation
g₂(L₁)³ g₃(L₂)² = g₂(L₂)³ g₃(L₁)²; then a case split on which of g₂, g₃ vanish, with the
4th/6th-root of unity juggling handled by a square/6th/4th root in ℂ (ℂ algebraically
closed).
Lattice-rigidity step 1 (§4.3). If two lattices have the same Klein invariant (with
nonzero discriminants) then there is a homothety a : ℂˣ scaling L₂ so that its g₂ and
g₃ match those of L₁.
Injectivity mod Γ #
(Lτ τ).discr ≠ 0 (the discriminant of the lattice ℤ + ℤτ is nonzero).
Injectivity mod Γ, gated on the lattice-recovery core. Once the core (equal (g₂,g₃)
of homothetic lattices ⇒ base points Γ-equivalent — see the TODO above for its route) is
available, j τ₁ = j τ₂ forces τ₂ = γ • τ₁ for some γ ∈ SL(2,ℤ). The scaling a is
produced here in full by exists_units_smul_g₂_g₃.
The lattice-recovery core, discharged #
The TODO route above is now carried out in full:
- Equal
(g₂, g₃)⇒ equal℘near0(PeriodPair.weierstrassP_eventuallyEq_of_g₂_g₃): the analytic parth := ℘ − z⁻²of℘at0satisfies (from the project's second-order ODE℘'' = 6℘² − g₂/2,PeriodPair.lemwp2str) the classical Eisenstein-coefficient recursion; by strong induction all Taylor coefficients ofhat0are universal polynomials in(g₂, g₃), so the two℘'s agree on a punctured neighbourhood of0. - Equal near
0⇒ equal lattices (PeriodPair.lattice_eq_of_weierstrassP_eventuallyEq): by the identity theorem on the connected setℂ ∖ (L₁ ∪ L₂)(complement of a countable set),℘₁ = ℘₂wherever both are defined; a lattice point ofL₁not inL₂would be a double pole of℘₁(PeriodPair.order_weierstrassP) at which℘₂is analytic (meromorphic order≥ 0) — contradiction, since meromorphic order only depends on the germ on the punctured neighbourhood. - Equal lattices ⇒
Γ-related base points (exists_sl2_of_lattice_eq): the two bases(1, τ₁)and(a, a·τ₂)of the common lattice are related by an integer matrix in each direction; the imaginary-part identitydet·Im τ₁ = |a|²·Im τ₂(and its inverse-homothety mirror) forces both determinants positive with product1, hencedet = 1, and the Möbius formula givesτ₂ = γ • τ₁withγ ∈ SL(2, ℤ).
Combining the three yields lattice_recovery_core, and with
j_injective_mod_Γ_of_lattice_core the unconditional injectivity j_injective_mod_Γ.
The lattice of a PeriodPair is countable (it is an image of ℤ × ℤ).
iteratedDeriv of z ↦ z² · f z at 0: only the i = 2 Leibniz term survives.
iteratedDeriv (m+2) f = iteratedDeriv m (iteratedDeriv 2 f).
Step 1 of the lattice-recovery core: two period pairs with equal g₂ and g₃ have
equal ℘ on a punctured neighbourhood of 0.
Proof: let w := ℘₁Except − ℘₂Except be the difference of the analytic parts at 0. The
second-order ODE ℘'' = 6℘² − g₂/2 (PeriodPair.lemwp2str, from DivisionValues.lean)
turns — after the shared g₂-terms cancel — into the linear relation
z²·w'' = z²·6·w·(h₁+h₂) + 12·w near 0. Taking m-th Taylor coefficients at 0 yields
the classical Eisenstein recursion with coefficient m(m−1) − 12 = (m−4)(m+3); strong
induction (with the resonances m = 0, 1, 4 handled by g₂ = g₂, G₃ = G₅ = 0, and
g₃ = g₃) kills every Taylor coefficient of w, so w ≡ 0 near 0.
If ℘₁ = ℘₂ off the union of the two lattices, then L₁ ⊆ L₂: a point of L₁ ∖ L₂
would be a double pole of ℘₁ at which ℘₂ is analytic, contradicting equality of the
meromorphic orders (which only depend on punctured-neighbourhood germs).
Steps 2–3 of the lattice-recovery core: if ℘₁ = ℘₂ on a punctured neighbourhood of
0, then L₁ = L₂. Identity theorem on the connected complement of the two (countable)
lattices, then pole-set comparison.
Orientation / imaginary-part identity: if b = m₁ + n₁·s and b·t = m₂ + n₂·s, then
(m₁n₂ − n₁m₂)·Im s = |b|²·Im t. Applied twice (to a homothety and its inverse) it forces
the two change-of-basis determinants to be positive with product 1.
Step 4 of the lattice-recovery core: if the lattice of L_{σ₁} equals the lattice of
the homothety a • L_{σ₂}, then σ₂ = γ • σ₁ for some γ ∈ SL(2, ℤ). The two bases
(1, σ₁) and (a, a·σ₂) of the common lattice are related by integer matrices in both
directions; orient_eq forces both determinants to be 1, and the Möbius formula finishes.
The lattice-recovery core (the hypothesis of j_injective_mod_Γ_of_lattice_core,
now a theorem): a homothety matching g₂ and g₃ forces the base points to be
Γ-equivalent. Chains steps 1–4 above.
Injectivity of j mod Γ (§4.3, unconditional): j τ₁ = j τ₂ forces
τ₂ = γ • τ₁ for some γ ∈ SL(2, ℤ).
Surjectivity (§4.3, unconditional) #
j : ℍ → ℂ is surjective, proved by the open-and-closed argument of §4.3: the image
j(ℍ) = Set.range j is nonempty, open and closed in the (pre)connected space ℂ, hence all
of ℂ.
- Open image (
isOpen_range_j):jis holomorphic (mdifferentiable_j) and nonconstant (j_two_values), so by Mathlib's open mapping theoremAnalyticOnNhd.is_constant_or_isOpenon the connected open set{z : ℂ | 0 < z.im}(transferringMDifferentiabletoDifferentiableOn (j ∘ ofComplex)viaUpperHalfPlane.mdifferentiable_iff),j(ℍ)is open. - Closed image (
isClosed_range_j): ifj τ_n → w, move eachτ_ninto the closed fundamental domain𝒟(exists_smul_mem_fd_j). The cusp estimatetheonaeherJ_lower(0.737/‖q‖ < ‖1728·J‖onIm τ > 5/4) boundsIm τ_nabove (else‖j τ_n‖ → ∞) while𝒟bounds it below (three_le_four_mul_im_sq_of_mem_fd), so theτ_nlie in a compact truncation of𝒟; a convergent subsequence (Heine–Borel +IsCompact.tendsto_subseq) has limit inℍ, and continuity ofjgivesw = j(limit) ∈ j(ℍ). - Clopen ⇒
ℂ(j_surjective):IsClopen.eq_univon the preconnected spaceℂ.
Two explicit points of ℍ at which j takes different values (the nonconstancy witness
for the open mapping theorem). Uses the cusp bracketing theonaeherJ_lower/theonaeherJ_upper:
at im = 3 the lower bound 0.737·e^{6π} exceeds the upper bound 1.321·e^{4π} at im = 2.
Set.range j = (j ∘ ofComplex) '' {z : ℂ | 0 < z.im}, the ℂ-picture of the image.
The image of j is open (open mapping theorem for the nonconstant holomorphic j).
The image of j is closed: a limit w of j-values is a j-value. Move the
approximating points into 𝒟, bound their imaginary parts (above by the cusp estimate, below
by 𝒟), extract a convergent subsequence in a compact truncation of 𝒟, and use continuity.
Surjectivity of the modular j-function (§4.3, unconditional): every complex number is
a j-value. The image Set.range j is nonempty, open (isOpen_range_j) and closed
(isClosed_range_j) in the preconnected space ℂ, hence all of ℂ.