Documentation

LeanPool.Chudnovsky.SingularModuli.CosetOrbit

The m-isogeny coset orbit of j (Phase C, chunk B2) #

Second file of Track 1 of Phase C (see Playground/Pi/PhaseC-PLAN.md, §3.1 sub-lemma (B2) and §6.5 decision point 2). For a prime m (kept generic; the project instantiates m ∈ {41, 43, 61, 163} later) this file builds the degree-m isogeny orbit of the j-invariant: the m + 1 functions

indexed by Option (ZMod m) (none ↦ f_∞, some b ↦ f_b). The point maps are realized through Mathlib's GL (Fin 2) ℝ-action on (UpperHalfPlane.MoebiusAction), the choice recommended by the plan's trap list ("pick one action early and stick to it").

The (B2) deliverables:

q-expansions in the base variable w = exp(2πiτ/m) (decision point 2) #

Rather than Puiseux series in q^{1/m}, we follow the clean formulation flagged in the plan brief: introduce the honest holomorphic function w = wParam m τ = exp(2πiτ/m) (a genuine power series variable, no root-taking) and the constant ζ = zetaM m = exp(2πi/m). The nome factorizes on each coset point:

so composing JFunction's integer expansion hasSum_j_mul_q gives, for every τ,

with c n = jqInt.coeff n ∈ ℤ the integer j-coefficients. The b-dependence is exactly ζ^{bn}, which is what powers the root-of-unity averaging of ModularPolynomialQ.lean's (B3).

The coset matrices and their action on #

noncomputable def Chudnovsky.AInf (m : ) [NeZero m] :
GL (Fin 2)

The Hermite-normal-form matrix [[m,0],[0,1]] of determinant m, as an element of GL (Fin 2) ℝ; its Möbius action is τ ↦ m·τ.

Equations
Instances For
    noncomputable def Chudnovsky.Acol (m : ) [NeZero m] (b : ) :
    GL (Fin 2)

    The Hermite-normal-form matrix [[1,b],[0,m]] of determinant m, as an element of GL (Fin 2) ℝ; its Möbius action is τ ↦ (τ + b)/m.

    Equations
    Instances For
      @[simp]
      theorem Chudnovsky.val_AInf {m : } [NeZero m] :
      (AInf m) = !![m, 0; 0, 1]
      @[simp]
      theorem Chudnovsky.val_Acol {m : } [NeZero m] (b : ) :
      (Acol m b) = !![1, b; 0, m]
      theorem Chudnovsky.coe_AInf_smul {m : } [NeZero m] (τ : UpperHalfPlane) :
      ↑(AInf m τ) = m * τ

      The -coset point: AInf m • τ = m·τ.

      theorem Chudnovsky.coe_Acol_smul {m : } [NeZero m] (b : ) (τ : UpperHalfPlane) :
      ↑(Acol m b τ) = (τ + b) / m

      The b-coset point: Acol m b • τ = (τ + b)/m.

      The orbit functions and holomorphy #

      noncomputable def Chudnovsky.f (m : ) [NeZero m] :

      The m + 1 coset-orbit functions: f none τ = j (m·τ) and f (some b) τ = j ((τ+b)/m). Indexed by Option (ZMod m).

      Equations
      Instances For
        @[simp]
        theorem Chudnovsky.f_none {m : } [NeZero m] (τ : UpperHalfPlane) :
        f m none τ = j (AInf m τ)
        @[simp]
        theorem Chudnovsky.f_some {m : } [NeZero m] (b : ZMod m) (τ : UpperHalfPlane) :
        f m (some b) τ = j (Acol m b.val τ)
        theorem Chudnovsky.mdifferentiable_f {m : } [NeZero m] (i : Option (ZMod m)) :
        MDiff (f m i)

        Each orbit function is holomorphic on .

        j under integer translation and well-definedness of the b-cosets mod m #

        theorem Chudnovsky.j_vadd_int (n : ) (τ : UpperHalfPlane) :
        j (n +ᵥ τ) = j τ

        j is invariant under translation by any integer: j (n +ᵥ τ) = j τ.

        theorem Chudnovsky.j_Acol_smul_congr {m : } [NeZero m] {a a' : } (h : m a' - a) (τ : UpperHalfPlane) :
        j (Acol m a' τ) = j (Acol m a τ)

        The b-coset function depends only on b mod m: if m ∣ a' - a then j ((τ+a')/m) = j ((τ+a)/m) (adding m to the offset shifts the point by an integer, which j absorbs).

        The T-permutation #

        T • τ = τ + 1 cyclically permutes the b-cosets (b ↦ b + 1) and fixes f_∞.

        The permutation of the orbit induced by T: rotation some b ↦ some (b+1), none fixed.

        Equations
        Instances For
          @[simp]
          theorem Chudnovsky.σT_none {m : } :
          @[simp]
          theorem Chudnovsky.σT_some {m : } (b : ZMod m) :
          (σT m) (some b) = some (b + 1)
          theorem Chudnovsky.f_T_smul {m : } [NeZero m] (i : Option (ZMod m)) (τ : UpperHalfPlane) :
          f m i (1 +ᵥ τ) = f m ((σT m) i) τ

          T-permutation: f i (T • τ) = f (σT i) τ, i.e. f i (τ + 1) = f (σT i) τ.

          The S-permutation #

          S • τ = -1/τ. The key transfer lemma: if the GL-matrix A factors as ↑γ * B with γ ∈ SL(2,ℤ), then j (A • τ) = j (B • τ) (the SL(2,ℤ)-factor is absorbed by j_smul). All S-orbit identities are instances of a single matrix identity coset i · S = γ' · coset (σS i).

          Absorb an SL(2,ℤ) left factor of a GL-matrix into j-invariance.

          def Chudnovsky.sSfun (m : ) [Fact (Nat.Prime m)] :
          Option (ZMod m)Option (ZMod m)

          The permutation of the orbit induced by S: the involution swapping none ↔ some 0 and sending some b ↦ some (-b⁻¹) for b ≠ 0 (needs m prime for the field inverse).

          Equations
          Instances For

            The S-permutation as an Equiv.Perm.

            Equations
            Instances For
              @[simp]
              theorem Chudnovsky.σS_apply {m : } [Fact (Nat.Prime m)] (i : Option (ZMod m)) :
              (σS m) i = sSfun m i
              theorem Chudnovsky.f_S_smul {m : } [Fact (Nat.Prime m)] (i : Option (ZMod m)) (τ : UpperHalfPlane) :
              f m i (ModularGroup.S τ) = f m ((σS m) i) τ

              S-permutation: f i (S • τ) = f (σS i) τ, i.e. f i (-1/τ) = f (σS i) τ. This is what makes the elementary symmetric functions of the orbit SL(2,ℤ)-invariant.

              q-expansions in the base variable w = exp(2πiτ/m) #

              The clean formulation of decision point 2: everything is a genuine power series in the honest holomorphic function w = wParam m τ = exp(2πiτ/m) (no root-taking), with the m-th root of unity ζ = zetaM m = exp(2πi/m). The nome factorizes on each coset point, and composing JFunction's integer expansion hasSum_j_mul_q yields the coefficientwise HasSum statements consumed by ModularPolynomialQ.lean's (B3).

              noncomputable def Chudnovsky.wParam (m : ) (τ : UpperHalfPlane) :

              The base variable w = exp(2πiτ/m): an honest holomorphic function of τ (no q^{1/m}), with w^m = q τ.

              Equations
              Instances For
                noncomputable def Chudnovsky.zetaM (m : ) :

                The m-th root of unity ζ = exp(2πi/m).

                Equations
                Instances For
                  theorem Chudnovsky.wParam_pow_m {m : } [NeZero m] (τ : UpperHalfPlane) :
                  wParam m τ ^ m = q τ

                  w^m = q τ: raising the base variable to the m-th power recovers the ordinary nome.

                  theorem Chudnovsky.zetaM_pow_m {m : } [NeZero m] :
                  zetaM m ^ m = 1

                  ζ^m = 1.

                  theorem Chudnovsky.q_Acol_smul {m : } [NeZero m] (b : ) (τ : UpperHalfPlane) :
                  q (Acol m b τ) = zetaM m ^ b * wParam m τ

                  The nome on the b-coset point factorizes as ζ^b · w: q ((τ+b)/m) = ζ^b · w.

                  theorem Chudnovsky.q_AInf_smul {m : } [NeZero m] (τ : UpperHalfPlane) :
                  q (AInf m τ) = wParam m τ ^ m ^ 2

                  The nome on the -coset point is w^{m²}: q (m·τ) = w^{m²}.

                  theorem Chudnovsky.hasSum_f_some {m : } [NeZero m] (b : ZMod m) (τ : UpperHalfPlane) :
                  HasSum (fun (n : ) => ((PowerSeries.coeff n) jqInt) * (zetaM m ^ b.val * wParam m τ) ^ n) (f m (some b) τ * (zetaM m ^ b.val * wParam m τ))

                  q-expansion of the b-coset function in (ζ^b·w): the HasSum obtained from JFunction's integer j-expansion. The b-dependence is exactly ζ^{b·n} inside (ζ^b w)^n, which powers the root-of-unity averaging of (B3).

                  theorem Chudnovsky.hasSum_f_none {m : } [NeZero m] (τ : UpperHalfPlane) :
                  HasSum (fun (n : ) => ((PowerSeries.coeff n) jqInt) * (wParam m τ ^ m ^ 2) ^ n) (f m none τ * wParam m τ ^ m ^ 2)

                  q-expansion of the -coset function in w^{m²}.

                  Master statement: SL(2,ℤ)-invariance of the orbit's symmetric functions #

                  Since S and T generate SL(2,ℤ), the fact that both permute the multiset {f i τ} (the S/T-permutation lemmas above) makes every symmetric function of the orbit SL(2,ℤ)-invariant. We record the two consequences ModularPolynomialQ.lean's (B3)/(B4) consume directly: any product (e.g. ∏ (X - f i), the elementary symmetric generating polynomial) and any sum (e.g. ∑ (f i)^k, the power sums) of the orbit values is unchanged by each generator.

                  theorem Chudnovsky.prod_orbit_T_smul {m : } [NeZero m] {M : Type u_1} [CommMonoid M] (g : M) (τ : UpperHalfPlane) :
                  i : Option (ZMod m), g (f m i (1 +ᵥ τ)) = i : Option (ZMod m), g (f m i τ)

                  Any product over the orbit is T-invariant.

                  theorem Chudnovsky.sum_orbit_T_smul {m : } [NeZero m] {M : Type u_1} [AddCommMonoid M] (g : M) (τ : UpperHalfPlane) :
                  i : Option (ZMod m), g (f m i (1 +ᵥ τ)) = i : Option (ZMod m), g (f m i τ)

                  Any sum over the orbit is T-invariant (e.g. the power sums ∑ (f i)^k).

                  theorem Chudnovsky.prod_orbit_S_smul {m : } [Fact (Nat.Prime m)] {M : Type u_1} [CommMonoid M] (g : M) (τ : UpperHalfPlane) :
                  i : Option (ZMod m), g (f m i (ModularGroup.S τ)) = i : Option (ZMod m), g (f m i τ)

                  Any product over the orbit is S-invariant.

                  theorem Chudnovsky.sum_orbit_S_smul {m : } [Fact (Nat.Prime m)] {M : Type u_1} [AddCommMonoid M] (g : M) (τ : UpperHalfPlane) :
                  i : Option (ZMod m), g (f m i (ModularGroup.S τ)) = i : Option (ZMod m), g (f m i τ)

                  Any sum over the orbit is S-invariant (e.g. the power sums ∑ (f i)^k).