Documentation

LeanPool.FLTEichlerShimura.Definitions.Def_ModularCurve_PhiGen

Coset substitutions and the generic modular polynomial Φℓ​ #

Definition: ModularCurve_PhiGen (6c538294-6e83-5a61-acbf-af8f4937d322), by Claude, 2026-09-05.

Working with formal Laurent series (Hahn series over $\mathbb{Z}$), the module sets up the substitution calculus behind the modular equation. For a commutative ring $R$ and a unit $u \in R^\times$, qTwist u is the ring endomorphism of $R((t))$ with $(\mathrm{qTwist}\,u\,f)_k = u^k f_k$, i.e. the substitution $t \mapsto ut$; helper lemmas record its effect on monomials, that it preserves supports, is injective, that $\mathrm{qTwist}\,u \circ \mathrm{qTwist}\,v = \mathrm{qTwist}(uv)$, and that it commutes with the $N$-fold expansion qExpand at the cost of replacing $u$ by $u^N$. Over a field $K$, cosetSubst ζ a b is qTwist (ζ ^ (a * b)) followed by qExpand K (a * a), the formal substitution $q \mapsto \zeta^{ab} t^{a^2}$. With $\ell$ prime, $K$ a $\mathbb{Q}$-algebra field and $\zeta \in K^\times$, the index functions cosetA, cosetB encode the pairs $(a,b) = (\ell,0)$ at index $0$ and $(1,b)$ at index $b+1$, and conj ℓ ζ i applies cosetSubst ζ (cosetA ℓ i) (cosetB ℓ i) to the base change coeffEmb K jq of $j(q)$; its normal forms are $j$ expanded in $t^{\ell^2}$ at index $0$ and $\mathrm{qTwist}(\zeta^b)$ of $j$ at index $b+1$. phiProd ℓ conj is $\prod_{i \in \mathrm{Fin}(\ell+1)}(X - C(\mathrm{conj}\,i))$ in $K((t))[X]$, shown monic of degree $\ell+1$, nonzero, and vanishing at each $\mathrm{conj}\,i$. Several predicates pin down the expected shape of this product: PhiGenDescends c says each coefficient of phiProd ℓ (conj ℓ ζ) is the base change of the $\ell$-fold expansion of $c_k \in \mathbb{Q}((q))$; PoleOrderLE/TPoleOrderLE (vanishing of all coefficients in degrees $< -n$), JSimplePole and IntCoeffs (every coefficient lies in $\mathbb{Z}$) are the pole and integrality conditions. Further auxiliary notions: evalAtJqN N, evaluation of $\mathbb{Z}[X]$ at $j(q^N)$; EvalSymm Φ, the assertion that the bivariate $\Phi \in \mathbb{Z}[X][Y]$ takes the same value on $(x,y)$ and $(y,x)$ for all $x,y \in \mathbb{Q}((q))$; ModularPolynomialFamily, the existence, for every prime $\ell$, of a ModularPolynomialData ℓ (a monic $\Phi$ of degree $\psi(\ell)$ with $\Phi(j, j(q^\ell)) = 0$) whose $\Phi$ is EvalSymm; PhiIrreducible data, irreducibility of $\Phi$ pushed into $\mathbb{Q}(j(q))[X]$; the subalgebra $\mathbb{Q}[j(q)] \subseteq \mathbb{Q}((q))$ with its distinguished element and evaluation map; and swapBivar, the involution of $\mathbb{Z}[X][Y]$ interchanging the two variables.

Relation to Mathlib. Mathlib supplies the Laurent series ring as Hahn series over $\mathbb{Z}$ together with aeval/eval₂ evaluation; the substitutions $t \mapsto ut$ and $q \mapsto \zeta^{ab}t^{a^2}$, the family of conjugates of $j$, and modular polynomials are the project's own.

Where it is used. These definitions provide the formal $q$-expansion vocabulary in which the modular equation $\Phi_\ell(X,Y)$ is produced, with its degree, symmetry, integrality and irreducibility properties, for the theory of the modular curves $X_0(N)$ entering the modularity and level-lowering steps.

<!-- Generated by add_prove2me_provenance.py -->

The Laurent series obtained by multiplying the coefficient of q ^ k by u ^ k.

Equations
Instances For
    @[simp]
    theorem ModularCurve.qTwistFun_coeff {R : Type u_1} [CommRing R] (u : Rˣ) (f : LaurentSeries R) (k : ℤ) :
    (qTwistFun u f).coeff k = ↑(u ^ k) * f.coeff k

    The coefficient-twisting ring homomorphism corresponding to the substitution q ↦ u * q.

    Equations
    Instances For
      @[simp]
      theorem ModularCurve.qTwist_coeff {R : Type u_1} [CommRing R] (u : Rˣ) (f : LaurentSeries R) (k : ℤ) :
      ((qTwist u) f).coeff k = ↑(u ^ k) * f.coeff k
      @[simp]
      theorem ModularCurve.qTwist_single {R : Type u_1} [CommRing R] (u : Rˣ) (k : ℤ) (r : R) :
      (qTwist u) ((HahnSeries.single k) r) = (HahnSeries.single k) (↑(u ^ k) * r)
      theorem ModularCurve.qTwist_qTwist {R : Type u_1} [CommRing R] (u v : Rˣ) (f : LaurentSeries R) :
      (qTwist u) ((qTwist v) f) = (qTwist (u * v)) f
      theorem ModularCurve.qTwist_qExpand {R : Type u_1} [CommRing R] (v : Rˣ) (N : ℕ) [NeZero N] (f : LaurentSeries R) :
      (qTwist v) ((qExpand R N) f) = (qExpand R N) ((qTwist (v ^ ↑N)) f)
      noncomputable def ModularCurve.cosetSubst {K : Type u_1} [Field K] (ζ : Kˣ) (a b : ℕ) [NeZero a] :

      The Laurent-series substitution q ↦ ζ ^ (a * b) * q ^ (a * a).

      Equations
      Instances For

        Evaluation of integer polynomials at the rational Laurent series j(q ^ N).

        Equations
        Instances For

          Evaluation of the bivariate polynomial on rational Laurent series is unchanged by swapping its arguments.

          Equations
          Instances For

            The Laurent series has no terms of exponent less than -n.

            Equations
            Instances For

              Every prime level admits monic modular polynomial data symmetric under evaluation.

              Equations
              Instances For

                The modular polynomial becomes irreducible over ℚ(j) after evaluation of its coefficient variable at j.

                Equations
                Instances For
                  @[reducible, inline]

                  The rational subalgebra generated by the Laurent-series j-invariant.

                  Equations
                  Instances For
                    noncomputable def ModularCurve.jAdj :

                    The j-invariant regarded as an element of the rational subalgebra it generates.

                    Equations
                    Instances For

                      Evaluation of integer polynomials at j in the rational subalgebra generated by j.

                      Equations
                      Instances For

                        The coefficient-variable substitution into the outer variable of the bivariate polynomial ring.

                        Equations
                        Instances For

                          The ring homomorphism interchanging the two variables of an integer bivariate polynomial.

                          Equations
                          Instances For
                            def ModularCurve.PhiGen.cosetA (ℓ : ℕ) (i : Fin (ℓ + 1)) :

                            The first substitution parameter: ℓ at index zero and one at every other index.

                            Equations
                            Instances For
                              def ModularCurve.PhiGen.cosetB (ℓ : ℕ) (i : Fin (ℓ + 1)) :

                              The second substitution parameter: zero at index zero and i - 1 at every other index.

                              Equations
                              Instances For
                                @[simp]
                                theorem ModularCurve.PhiGen.cosetA_zero (ℓ : ℕ) :
                                cosetA ℓ 0 = ℓ
                                @[simp]
                                theorem ModularCurve.PhiGen.cosetB_zero (ℓ : ℕ) :
                                cosetB ℓ 0 = 0
                                @[simp]
                                theorem ModularCurve.PhiGen.cosetA_succ (ℓ : ℕ) (b : Fin ℓ) :
                                cosetA ℓ b.succ = 1
                                @[simp]
                                theorem ModularCurve.PhiGen.cosetB_succ (ℓ : ℕ) (b : Fin ℓ) :
                                cosetB ℓ b.succ = ↑b
                                instance ModularCurve.PhiGen.instNeZeroPhiGenCosetA (ℓ : ℕ) [hℓ : Fact (Nat.Prime ℓ)] (i : Fin (ℓ + 1)) :
                                NeZero (cosetA ℓ i)
                                theorem ModularCurve.PhiGen.cosetSubst_congr {K : Type u_1} [Field K] (ζ : Kˣ) {a a' b b' : ℕ} [NeZero a] [NeZero a'] (ha : a = a') (hb : b = b') (f : LaurentSeries K) :
                                (cosetSubst ζ a b) f = (cosetSubst ζ a' b') f
                                noncomputable def ModularCurve.PhiGen.conj {K : Type u_1} [Field K] [Algebra ℚ K] (ℓ : ℕ) [hℓ : Fact (Nat.Prime ℓ)] (ζ : Kˣ) (i : Fin (ℓ + 1)) :

                                The conjugate j-series obtained by the indexed coset substitution.

                                Equations
                                Instances For
                                  theorem ModularCurve.PhiGen.conj_zero {K : Type u_1} [Field K] [Algebra ℚ K] (ℓ : ℕ) [hℓ : Fact (Nat.Prime ℓ)] (ζ : Kˣ) :
                                  conj ℓ ζ 0 = (qExpand K (ℓ * ℓ)) ((coeffEmb K) jq)
                                  theorem ModularCurve.PhiGen.conj_succ {K : Type u_1} [Field K] [Algebra ℚ K] (ℓ : ℕ) [hℓ : Fact (Nat.Prime ℓ)] (ζ : Kˣ) (b : Fin ℓ) :
                                  conj ℓ ζ b.succ = (qTwist (ζ ^ ↑b)) ((coeffEmb K) jq)
                                  noncomputable def ModularCurve.PhiGen.phiProd {K : Type u_1} [Field K] (ℓ : ℕ) (conj : Fin (ℓ + 1) → LaurentSeries K) :

                                  The monic product ∏ i, (X - conj i) over the ℓ + 1 conjugate series.

                                  Equations
                                  Instances For
                                    theorem ModularCurve.PhiGen.phiProd_monic {K : Type u_1} [Field K] (ℓ : ℕ) (conj : Fin (ℓ + 1) → LaurentSeries K) :
                                    (phiProd ℓ conj).Monic
                                    theorem ModularCurve.PhiGen.phiProd_natDegree {K : Type u_1} [Field K] (ℓ : ℕ) (conj : Fin (ℓ + 1) → LaurentSeries K) :
                                    (phiProd ℓ conj).natDegree = ℓ + 1
                                    theorem ModularCurve.PhiGen.phiProd_ne_zero {K : Type u_1} [Field K] (ℓ : ℕ) (conj : Fin (ℓ + 1) → LaurentSeries K) :
                                    phiProd ℓ conj ≠ 0
                                    theorem ModularCurve.PhiGen.phiProd_eval_conj {K : Type u_1} [Field K] (ℓ : ℕ) (conj : Fin (ℓ + 1) → LaurentSeries K) (i : Fin (ℓ + 1)) :
                                    Polynomial.eval (conj i) (phiProd ℓ conj) = 0

                                    The Laurent series over K has no terms of exponent less than -n.

                                    Equations
                                    Instances For

                                      The series has no terms below exponent -1; no nonvanishing leading term is required.

                                      Equations
                                      Instances For

                                        Every coefficient of the rational Laurent series is an integer.

                                        Equations
                                        Instances For
                                          def ModularCurve.PhiGen.PhiGenDescends {K : Type u_1} [Field K] [Algebra ℚ K] (ℓ : ℕ) [hℓ : Fact (Nat.Prime ℓ)] (ζ : Kˣ) (c : ℕ → LaurentSeries ℚ) :

                                          The product polynomial's coefficients are coefficient embeddings of the series c k after q ↦ q ^ ℓ.

                                          Equations
                                          Instances For