Definitions/Def_ModularCurve_FibrePoly.lean
Fibre polynomials of a bivariate modular polynomial
Throughout, k is a field, \ell a prime and k has characteristic \ell; bivariate polynomials are taken in the iterated form \mathbb{Z}[X][Y], with X the inner and Y the outer variable.
For \Phi \in \mathbb{Z}[X][Y] and a \in k, fibrePoly \Phi\,a is the univariate polynomial \Phi(a, Y) \in k[Y] obtained by applying to each coefficient of \Phi the ring homomorphism \mathbb{Z}[X] \to k that casts integer coefficients into k and sends X \mapsto a. Thus the inner variable is specialised at a and the outer variable is kept; the roots of fibrePoly \Phi\,a, with multiplicity, are the fibre over a of the correspondence cut out by \Phi.
Two identities record that this specialisation factors through reduction modulo \ell. First, eval₂RingHom_intCast_eq_comp states that the homomorphism \mathbb{Z}[X] \to k just described equals coefficientwise reduction \mathbb{Z}[X] \to \mathbb{F}_\ell[X] followed by evaluation at a along the canonical map \mathbb{F}_\ell \to k (ZMod.castHom). Consequently, fibrePoly_eq_map_reduceModBivar gives \Phi(a,Y) = \bar{\Phi}(a,Y), where \bar{\Phi} = reduceModBivar \ell\,\Phi is the coefficientwise reduction of \Phi to \mathbb{F}_\ell[X][Y]: the fibre polynomial only depends on \Phi \bmod \ell. This is what allows a congruence for \Phi modulo \ell, such as the Kronecker congruence \bar{\Phi} = (X^\ell - Y)(X - Y^\ell) encoded by KroneckerCongruence, to be used fibre by fibre.
Finally, C_sub_X_pow_eq_neg_pow assumes in addition that k is perfect of characteristic \ell and asserts, for a \in k, the identity a - Y^{\ell} = -\bigl(Y - a^{1/\ell}\bigr)^{\ell} in k[Y], where a^{1/\ell} is the image of a under the inverse of the Frobenius bijection. It exhibits the second Kronecker factor, specialised at a, as \ell times the point a^{1/\ell} up to sign.
Relation to Mathlib
Mathlib supplies the ingredients (Polynomial.map, Polynomial.eval₂RingHom, ZMod.castHom, the freshman's dream sub_pow_expChar, and frobeniusEquiv for perfect rings); the specialisation operator fibrePoly on bivariate integral polynomials is the project's own packaging.
Where it is used
These are the bridge between a congruence modulo \ell for a modular polynomial, in the shape of the Kronecker congruence \Phi \equiv (X^{\ell} - Y)(X - Y^{\ell}), and the geometry of the fibres of the associated correspondence over a field of characteristic \ell. They are used in the analysis of the special fibre at \ell, where the two Kronecker factors give the Frobenius and Verschiebung parts of the Hecke correspondence, towards the Eichler–Shimura congruence relation that governs the Galois representations attached to modular forms.
References
- G. Shimura, Introduction to the Arithmetic Theory of Automorphic Functions, Publications of the Mathematical Society of Japan 11, Princeton University Press, 1971, Chapter 5
- S. Lang, Elliptic Functions, 2nd edition, Graduate Texts in Mathematics 112, Springer, 1987, Chapter 5
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 54 lines
- 4 declarations
- used in the statements of 19 theorems and imported by 45 proofs
- imports 1 definition modules
Source file: Definitions/Def_ModularCurve_FibrePoly.lean
Imported by
Declarations
- def
ModularCurve.fibrePoly - theorem
ModularCurve.eval₂RingHom_intCast_eq_comp - theorem
ModularCurve.fibrePoly_eq_map_reduceModBivar - theorem
ModularCurve.C_sub_X_pow_eq_neg_pow
Source
import Mathlib import Definitions.Def_ModularCurve_KroneckerTransport noncomputable section open Polynomial namespace ModularCurve section FibrePoly variable {k : Type*} [Field k] def fibrePoly (Φ : Polynomial (Polynomial ℤ)) (a : k) : Polynomial k := Φ.map (Polynomial.eval₂RingHom (Int.castRingHom k) a) variable {ℓ : ℕ} [Fact ℓ.Prime] [CharP k ℓ] theorem eval₂RingHom_intCast_eq_comp (a : k) : Polynomial.eval₂RingHom (Int.castRingHom k) a = (Polynomial.eval₂RingHom (ZMod.castHom (dvd_refl ℓ) k) a).comp (Polynomial.mapRingHom (Int.castRingHom (ZMod ℓ))) := by refine Polynomial.ringHom_ext' (Subsingleton.elim _ _) ?_ rw [Polynomial.coe_eval₂RingHom, Polynomial.eval₂_X, RingHom.comp_apply, Polynomial.coe_mapRingHom, Polynomial.map_X, Polynomial.coe_eval₂RingHom, Polynomial.eval₂_X] theorem fibrePoly_eq_map_reduceModBivar (Φ : Polynomial (Polynomial ℤ)) (a : k) : fibrePoly Φ a = (reduceModBivar ℓ Φ).map (Polynomial.eval₂RingHom (ZMod.castHom (dvd_refl ℓ) k) a) := by rw [fibrePoly, eval₂RingHom_intCast_eq_comp (ℓ := ℓ), show reduceModBivar ℓ Φ = Φ.map (Polynomial.mapRingHom (Int.castRingHom (ZMod ℓ))) from rfl, Polynomial.map_map] end FibrePoly section Factorization variable {k : Type*} [Field k] {ℓ : ℕ} [Fact ℓ.Prime] [CharP k ℓ] [PerfectRing k ℓ] theorem C_sub_X_pow_eq_neg_pow (a : k) : Polynomial.C a - Polynomial.X ^ ℓ = -((Polynomial.X - Polynomial.C ((frobeniusEquiv k ℓ).symm a)) ^ ℓ) := by have hpoly : (Polynomial.X - Polynomial.C ((frobeniusEquiv k ℓ).symm a)) ^ ℓ = Polynomial.X ^ ℓ - Polynomial.C ((frobeniusEquiv k ℓ).symm a) ^ ℓ := sub_pow_expChar _ _ rw [hpoly, ← Polynomial.C_pow, frobeniusEquiv_symm_pow_p, neg_sub] end Factorization end ModularCurve
Statements phrased using this module (19)
- Level-2 modular equation via Vélu quotients
ModularCurve.ModularPolynomialData.fibrePoly_j_eq_prod_veluQuotient2_j65 below · depth 12 - Weighted support bounds for the level-p modular polynomial
ModularCurve.ModularPolynomialData.weighted_support_le74 below · depth 12 - Monic fibres have exactly degΦ roots over ̄ K
ModularCurve.card_roots_fibrePoly_of_monic0 below · depth 13 - Fibre of Φ₂ over j(E) splits over the Vélu 2-quotients
ModularCurve.fibrePoly_phiTwo_j_eq_prod_veluQuotient2_j8 below · depth 13 - Fibre polynomial factors as Frobenius times Verschiebung
ModularCurve.fibrePoly_eq_of_kroneckerCongruence0 below · depth 14 - Transfer of the modular-fibre factorisation to arbitrary algebraically closed fields
ModularCurve.ModularPolynomialData.fibrePoly_j_eq_prod_fullKernelQuotient_j_of_transcendental10 below · depth 15 - Modular polynomial at a transcendental j splits over Vélu quotients
ModularCurve.ModularPolynomialData.fibrePoly_j_eq_prod_fullKernelQuotient_j_of_transcendental_of_charZero222 below · depth 15 - Degeneracy pair at level Ms: degree s+1 and place transport
ModularCurve.degeneracyPair_finrankAlong_and_place_transports257 below · depth 15 - Roots of the level-ℓ modular equation preserve supersingularity
ModularCurve.mem_ssJSet_of_mem_roots_fibrePoly254 below · depth 15 - Degree of the fibre polynomial of a monic Φ
ModularCurve.natDegree_fibrePoly0 below · depth 15 - Roots of the fibre polynomial: {a^ℓ}+ℓ·{a^{1/ℓ}}
ModularCurve.roots_fibrePoly0 below · depth 15 - Roots of the level-2 fibre polynomial are Vélu quotient j-invariants
ModularCurve.ModularPolynomialData.exists_veluQuotient2_j_eq_of_mem_roots_fibrePoly66 below · depth 16 - Every root of Φ_ℓ(j(W),Y) is a Vélu quotient j-invariant
ModularCurve.ModularPolynomialData.exists_veluQuotient_j_eq_of_mem_roots_fibrePoly208 below · depth 16 - Modular equation of odd prime level via Vélu quotients
ModularCurve.ModularPolynomialData.fibrePoly_j_eq_prod_veluQuotient_j204 below · depth 16 - Modular equation as Vélu product at transcendental j
ModularCurve.ModularPolynomialData.fibrePoly_j_eq_prod_veluQuotient_j_of_transcendental_of_isAlgClosed196 below · depth 17 - Fibre polynomials of monic bivariate integral polynomials are monic
ModularCurve.monic_fibrePoly0 below · depth 17 - Modular equation at transcendental j as product over Vélu quotients
ModularCurve.ModularPolynomialData.fibrePoly_j_eq_prod_veluQuotient_j_of_transcendental195 below · depth 18 - Ascending a 2-isogeny: halving an endomorphism γ
WeierstrassCurve.exists_mem_rationalHomSet_two_smul_comp_eq_comp_of_comp_self_add_smul_eq_smul88 below · depth 21 - Modular equation between the two Hecke legs on j
ModularCurve.XOneP.eval_fibrePoly_apply_heckePin_jChartFin_eq_zero_of_modularPolynomialData_twoChartModel_x1_mul0 below · depth 25