Definitions/Def_ModularCurve_ModularUnit.lean
Modular unit as a formal Laurent series
Everything here lives in \mathbb{Q}((q)), realised as LaurentSeries ℚ, and uses the substitution q \mapsto q^N given by the ring homomorphism qExpand ℚ N. The predicate IsMonicOfOrder f m says that the Hahn-series order of f is m and its leading coefficient is 1, i.e. the lowest-order term of f is 1\cdot q^{m}. Its namespace collects the elementary calculus of this notion: such an f is nonzero, its q^{m}-coefficient is 1 and all coefficients in degrees <m vanish; HahnSeries.single m 1 is monic of order m; a power series with constant coefficient 1, viewed as a Laurent series, is monic of order 0; orders add under multiplication, and conversely if f\cdot g is monic of order k and g is monic of order n then f is monic of order k-n; applying qExpand ℚ p multiplies the order by p.
On this basis, dedekindEtaUnitQ is the integral power series dedekindEtaUnit =\prod_{n\ge 1}(1-q^{n})^{24} pushed forward to \mathbb{Q}, with constant coefficient 1; deltaSeries is q\prod_{n\ge 1}(1-q^{n})^{24}, the q-expansion of the discriminant form, monic of order 1 and hence nonzero; and for N\neq 0, deltaSeriesN N is its image under qExpand ℚ N, monic of order N. The object of interest, modularUnitSeries N, is \Delta(q)\cdot\Delta(q^{N})^{-1} computed in the field \mathbb{Q}((q)); it satisfies the defining identity modularUnitSeries N * deltaSeriesN N = deltaSeries, is monic of order 1-N (so its order is 1-N, its q^{1-N}-coefficient is 1, and lower coefficients vanish), is nonzero, equals 1 for N=1, and is multiplicative in the sense that modularUnitSeries (a*b) is modularUnitSeries a times the q\mapsto q^{a} substitution of modularUnitSeries b.
Finally eisensteinNumerator p is the natural number (p-1)/\gcd(p-1,12); it divides p-1, and its values at p=5,7,13 (namely 1) and at p=11,17,19,23 (namely 5,4,3,11) are recorded.
Relation to Mathlib
The ambient ring LaurentSeries ℚ and the order/leadingCoeff API used throughout are Mathlib's; IsMonicOfOrder, the series deltaSeries, deltaSeriesN, modularUnitSeries and the arithmetic function eisensteinNumerator are the project's own, built on the project's qExpand and dedekindEtaUnit.
Where it is used
The series \Delta(q)/\Delta(q^{N}) is the standard modular unit on X_0(N), whose divisor is supported on the cusps; the order 1-N and the normalisation of its leading coefficient recorded here are what is needed for cuspidal divisor computations, and (p-1)/\gcd(p-1,12) is the invariant attached to the cuspidal divisor class on X_0(p).
References
- J.-P. Serre, A Course in Arithmetic, Graduate Texts in Mathematics 7, Springer, 1973, Ch. VII
- F. Diamond and J. Shurman, A First Course in Modular Forms, Graduate Texts in Mathematics 228, Springer, 2005
- A. Ogg, Rational points on certain elliptic modular curves, in: Analytic Number Theory, Proc. Sympos. Pure Math. 24, American Mathematical Society, 1973, 221–231
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 186 lines
- 37 declarations
- used in the statements of 203 theorems and imported by 254 proofs
- imports 1 definition modules
Source file: Definitions/Def_ModularCurve_ModularUnit.lean
Imports
Declarations
- def
ModularCurve.IsMonicOfOrder - theorem
ModularCurve.IsMonicOfOrder.ne_zero - theorem
ModularCurve.IsMonicOfOrder.coeff_self - theorem
ModularCurve.IsMonicOfOrder.coeff_of_lt - theorem
ModularCurve.IsMonicOfOrder.single - theorem
ModularCurve.IsMonicOfOrder.ofPowerSeries - theorem
ModularCurve.IsMonicOfOrder.mul - theorem
ModularCurve.IsMonicOfOrder.of_mul_right - theorem
ModularCurve.IsMonicOfOrder.qExpand - def
ModularCurve.dedekindEtaUnitQ - theorem
ModularCurve.constantCoeff_dedekindEtaUnitQ - def
ModularCurve.deltaSeries - theorem
ModularCurve.isMonicOfOrder_deltaSeries - theorem
ModularCurve.deltaSeries_ne_zero - def
ModularCurve.deltaSeriesN - theorem
ModularCurve.isMonicOfOrder_deltaSeriesN - theorem
ModularCurve.deltaSeriesN_ne_zero - def
ModularCurve.modularUnitSeries - theorem
ModularCurve.modularUnitSeries_mul_deltaSeriesN - theorem
ModularCurve.isMonicOfOrder_modularUnitSeries - theorem
ModularCurve.modularUnitSeries_ne_zero - theorem
ModularCurve.order_modularUnitSeries - theorem
ModularCurve.coeff_modularUnitSeries_self - theorem
ModularCurve.coeff_modularUnitSeries_of_lt - theorem
ModularCurve.deltaSeriesN_one - theorem
ModularCurve.modularUnitSeries_one - theorem
ModularCurve.deltaSeriesN_mul - theorem
ModularCurve.modularUnitSeries_mul - def
ModularCurve.eisensteinNumerator - theorem
ModularCurve.eisensteinNumerator_dvd - theorem
ModularCurve.eisensteinNumerator_five - theorem
ModularCurve.eisensteinNumerator_seven - theorem
ModularCurve.eisensteinNumerator_thirteen - theorem
ModularCurve.eisensteinNumerator_eleven - theorem
ModularCurve.eisensteinNumerator_seventeen - theorem
ModularCurve.eisensteinNumerator_nineteen - theorem
ModularCurve.eisensteinNumerator_twentythree
Source
import Definitions.Def_ModularCurve_X0 set_option autoImplicit false noncomputable section open HahnSeries namespace ModularCurve def IsMonicOfOrder (f : LaurentSeries ℚ) (m : ℤ) : Prop := f.order = m ∧ f.leadingCoeff = 1 namespace IsMonicOfOrder theorem ne_zero {f : LaurentSeries ℚ} {m : ℤ} (h : IsMonicOfOrder f m) : f ≠ 0 := HahnSeries.leadingCoeff_ne_zero.mp (by rw [h.2]; exact one_ne_zero) theorem coeff_self {f : LaurentSeries ℚ} {m : ℤ} (h : IsMonicOfOrder f m) : f.coeff m = 1 := by have h2 := h.2 rwa [HahnSeries.leadingCoeff_eq, h.1] at h2 theorem coeff_of_lt {f : LaurentSeries ℚ} {m k : ℤ} (h : IsMonicOfOrder f m) (hk : k < m) : f.coeff k = 0 := HahnSeries.coeff_eq_zero_of_lt_order (h.1 ▸ hk) theorem single (m : ℤ) : IsMonicOfOrder (HahnSeries.single m (1 : ℚ)) m := by refine ⟨HahnSeries.order_single one_ne_zero, ?_⟩ rw [HahnSeries.leadingCoeff_eq, HahnSeries.order_single one_ne_zero, HahnSeries.coeff_single_same] theorem ofPowerSeries {U : PowerSeries ℚ} (hU : PowerSeries.constantCoeff U = 1) : IsMonicOfOrder (HahnSeries.ofPowerSeries ℤ ℚ U) 0 := by have hcoeff0 : (HahnSeries.ofPowerSeries ℤ ℚ U).coeff (0 : ℤ) = 1 := by rw [show (0 : ℤ) = ((0 : ℕ) : ℤ) from rfl, HahnSeries.ofPowerSeries_apply_coeff, PowerSeries.coeff_zero_eq_constantCoeff, hU] have hne0 : (HahnSeries.ofPowerSeries ℤ ℚ U).coeff (0 : ℤ) ≠ 0 := by rw [hcoeff0]; exact one_ne_zero have hne : HahnSeries.ofPowerSeries ℤ ℚ U ≠ 0 := HahnSeries.ne_zero_of_coeff_ne_zero hne0 have horder : (HahnSeries.ofPowerSeries ℤ ℚ U).order = 0 := by refine le_antisymm (HahnSeries.order_le_of_coeff_ne_zero hne0) ?_ by_contra hlt rw [not_le] at hlt exact hne (HahnSeries.coeff_order_eq_zero.mp (ModularCurve.ofPowerSeries_coeff_of_neg U hlt)) exact ⟨horder, by rw [HahnSeries.leadingCoeff_eq, horder, hcoeff0]⟩ theorem mul {f g : LaurentSeries ℚ} {m n : ℤ} (hf : IsMonicOfOrder f m) (hg : IsMonicOfOrder g n) : IsMonicOfOrder (f * g) (m + n) := by have h1 : f.leadingCoeff * g.leadingCoeff ≠ 0 := by rw [hf.2, hg.2, one_mul]; exact one_ne_zero refine ⟨?_, ?_⟩ · rw [HahnSeries.order_mul_of_ne_zero h1, hf.1, hg.1] · rw [HahnSeries.leadingCoeff_mul_of_ne_zero h1, hf.2, hg.2, one_mul] theorem of_mul_right {f g : LaurentSeries ℚ} {k n : ℤ} (hfg : IsMonicOfOrder (f * g) k) (hg : IsMonicOfOrder g n) : IsMonicOfOrder f (k - n) := by have hlc : f.leadingCoeff = 1 := by have h := HahnSeries.leadingCoeff_mul f g rw [hfg.2, hg.2, mul_one] at h exact h.symm have h1 : f.leadingCoeff * g.leadingCoeff ≠ 0 := by rw [hlc, hg.2, one_mul]; exact one_ne_zero refine ⟨?_, hlc⟩ have h := HahnSeries.order_mul_of_ne_zero h1 rw [hfg.1, hg.1] at h omega theorem qExpand {f : LaurentSeries ℚ} {m : ℤ} (p : ℕ) [NeZero p] (hf : IsMonicOfOrder f m) : IsMonicOfOrder (ModularCurve.qExpand ℚ p f) ((p : ℤ) * m) := by have hcoeff : (ModularCurve.qExpand ℚ p f).coeff ((p : ℤ) * m) = 1 := by rw [qExpand_coeff_mul]; exact hf.coeff_self have hcoeff' : (ModularCurve.qExpand ℚ p f).coeff ((p : ℤ) * m) ≠ 0 := by rw [hcoeff]; exact one_ne_zero have hne : ModularCurve.qExpand ℚ p f ≠ 0 := HahnSeries.ne_zero_of_coeff_ne_zero hcoeff' have hbelow : ∀ k : ℤ, k < (p : ℤ) * m → (ModularCurve.qExpand ℚ p f).coeff k = 0 := by intro k hk by_cases hdvd : (p : ℤ) ∣ k · obtain ⟨j, rfl⟩ := hdvd rw [qExpand_coeff_mul] refine hf.coeff_of_lt ?_ have hp : (0 : ℤ) < (p : ℤ) := by exact_mod_cast Nat.pos_of_ne_zero (NeZero.ne p) exact lt_of_mul_lt_mul_left hk hp.le · exact qExpand_coeff_of_not_dvd p f hdvd have horder : (ModularCurve.qExpand ℚ p f).order = (p : ℤ) * m := by refine le_antisymm (HahnSeries.order_le_of_coeff_ne_zero hcoeff') ?_ by_contra hlt rw [not_le] at hlt exact hne (HahnSeries.coeff_order_eq_zero.mp (hbelow _ hlt)) exact ⟨horder, by rw [HahnSeries.leadingCoeff_eq, horder, hcoeff]⟩ end IsMonicOfOrder section ModularUnit def dedekindEtaUnitQ : PowerSeries ℚ := dedekindEtaUnit.map (Int.castRingHom ℚ) @[simp] theorem constantCoeff_dedekindEtaUnitQ : PowerSeries.constantCoeff dedekindEtaUnitQ = 1 := by rw [← PowerSeries.coeff_zero_eq_constantCoeff, dedekindEtaUnitQ, PowerSeries.coeff_map, PowerSeries.coeff_zero_eq_constantCoeff, constantCoeff_dedekindEtaUnit] simp def deltaSeries : LaurentSeries ℚ := HahnSeries.single (1 : ℤ) 1 * HahnSeries.ofPowerSeries ℤ ℚ dedekindEtaUnitQ theorem isMonicOfOrder_deltaSeries : IsMonicOfOrder deltaSeries 1 := by have h := (IsMonicOfOrder.single (1 : ℤ)).mul (IsMonicOfOrder.ofPowerSeries constantCoeff_dedekindEtaUnitQ) rwa [add_zero] at h theorem deltaSeries_ne_zero : deltaSeries ≠ 0 := isMonicOfOrder_deltaSeries.ne_zero variable (p : ℕ) [NeZero p] def deltaSeriesN : LaurentSeries ℚ := qExpand ℚ p deltaSeries theorem isMonicOfOrder_deltaSeriesN : IsMonicOfOrder (deltaSeriesN p) (p : ℤ) := by have h := isMonicOfOrder_deltaSeries.qExpand p rwa [mul_one] at h theorem deltaSeriesN_ne_zero : deltaSeriesN p ≠ 0 := (isMonicOfOrder_deltaSeriesN p).ne_zero def modularUnitSeries : LaurentSeries ℚ := deltaSeries * (deltaSeriesN p)⁻¹ theorem modularUnitSeries_mul_deltaSeriesN : modularUnitSeries p * deltaSeriesN p = deltaSeries := by rw [modularUnitSeries, mul_assoc, inv_mul_cancel₀ (deltaSeriesN_ne_zero p), mul_one] theorem isMonicOfOrder_modularUnitSeries : IsMonicOfOrder (modularUnitSeries p) (1 - p) := by refine IsMonicOfOrder.of_mul_right ?_ (isMonicOfOrder_deltaSeriesN p) rw [modularUnitSeries_mul_deltaSeriesN] exact isMonicOfOrder_deltaSeries theorem modularUnitSeries_ne_zero : modularUnitSeries p ≠ 0 := (isMonicOfOrder_modularUnitSeries p).ne_zero theorem order_modularUnitSeries : (modularUnitSeries p).order = 1 - (p : ℤ) := (isMonicOfOrder_modularUnitSeries p).1 theorem coeff_modularUnitSeries_self : (modularUnitSeries p).coeff (1 - (p : ℤ)) = 1 := (isMonicOfOrder_modularUnitSeries p).coeff_self theorem coeff_modularUnitSeries_of_lt {k : ℤ} (hk : k < 1 - (p : ℤ)) : (modularUnitSeries p).coeff k = 0 := (isMonicOfOrder_modularUnitSeries p).coeff_of_lt hk theorem deltaSeriesN_one : deltaSeriesN 1 = deltaSeries := qExpand_one_apply deltaSeries theorem modularUnitSeries_one : modularUnitSeries 1 = 1 := by rw [modularUnitSeries, deltaSeriesN_one, mul_inv_cancel₀ deltaSeries_ne_zero] theorem deltaSeriesN_mul (a b : ℕ) [NeZero a] [NeZero b] [NeZero (a * b)] : deltaSeriesN (a * b) = qExpand ℚ a (deltaSeriesN b) := by rw [deltaSeriesN, deltaSeriesN, qExpand_qExpand] theorem modularUnitSeries_mul (a b : ℕ) [NeZero a] [NeZero b] [NeZero (a * b)] : modularUnitSeries (a * b) = modularUnitSeries a * qExpand ℚ a (modularUnitSeries b) := by rw [modularUnitSeries, modularUnitSeries, modularUnitSeries, map_mul, map_inv₀, ← deltaSeriesN_mul, ← deltaSeriesN, mul_assoc, ← mul_assoc (deltaSeriesN a)⁻¹, inv_mul_cancel₀ (deltaSeriesN_ne_zero a), one_mul] end ModularUnit def eisensteinNumerator (p : ℕ) : ℕ := (p - 1) / Nat.gcd (p - 1) 12 theorem eisensteinNumerator_dvd (p : ℕ) : eisensteinNumerator p ∣ p - 1 := Nat.div_dvd_of_dvd (Nat.gcd_dvd_left _ _) @[simp] theorem eisensteinNumerator_five : eisensteinNumerator 5 = 1 := by decide @[simp] theorem eisensteinNumerator_seven : eisensteinNumerator 7 = 1 := by decide @[simp] theorem eisensteinNumerator_thirteen : eisensteinNumerator 13 = 1 := by decide @[simp] theorem eisensteinNumerator_eleven : eisensteinNumerator 11 = 5 := by decide @[simp] theorem eisensteinNumerator_seventeen : eisensteinNumerator 17 = 4 := by decide @[simp] theorem eisensteinNumerator_nineteen : eisensteinNumerator 19 = 3 := by decide @[simp] theorem eisensteinNumerator_twentythree : eisensteinNumerator 23 = 11 := by decide end ModularCurve end
Statements phrased using this module (203)
- Fricke involution sends Ogg's unit to ℓ¹²u_ℓ⁻¹
ModularCurve.coe_frickeInvolutionFull_modularUnitSeries62 below · depth 10 - Eisenstein ideal element acting as n(p) on J₀(p)
ModularCurve.exists_mem_eisensteinIdeal_smul_eq_eisensteinNumerator_zsmul1,071 below · depth 10 - Integrality of Δ(q)/Δ(q^ℓ) over ℚ[j]
ModularCurve.isIntegral_adjoin_jq_modularUnitSeries30 below · depth 10 - Inverse of Ogg's modular unit is integral over ℚ[j]
ModularCurve.isIntegral_adjoin_jq_modularUnitSeries_inv30 below · depth 10 - Ogg's modular unit lies in the full level-N function field
ModularCurve.modularUnitSeries_mem_modularFunctionFieldFull31 below · depth 10 - Order of the cuspidal class divides ℓ-1
ModularCurve.addOrderOf_cuspidalClass_dvd109 below · depth 11 - Upper bound for the Eisenstein ideal index at level p
ModularCurve.exists_mem_eisensteinIdeal_heckeProj_eq_eisensteinNumerator593 below · depth 11 - q-expansion of Δ(Nτ)/Δ(τ) realised at period one
ModularCurve.hasSum_modularUnitSeries_inv_qParam6 below · depth 11 - q-expansion of Δ(τ)/Δ(Nτ) at the cusp ∞
ModularCurve.hasSum_modularUnitSeries_qParam6 below · depth 11 - q-expansion of Ogg's unit at the cusp 0
ModularCurve.hasSum_smul_modularUnitSeries_inv_qParam6 below · depth 11 - q_N-expansion of Ogg's unit at the cusp 0
ModularCurve.hasSum_smul_modularUnitSeries_qParam6 below · depth 11 - Vanishing of mathfrak P_q^M-torsion in J₀(p) when q ∤ n(p)
ModularCurve.heckeTorsion_eisensteinMaximalIdeal_pow_eq_bot_of_not_dvd_eisensteinNumerator1,237 below · depth 11 - Pinned α bounded by trivial steps of an admissible chain
ModularCurve.jZeroNeronTorsionSheaf_alpha_le_filtAlpha_v51,990 below · depth 11 - Linear growth of δ_m and α_m for the J₀(p) torsion sheaf
ModularCurve.jZeroNeronTorsionSheaf_inv_linearGrowth_v53,057 below · depth 11 - Ogg's unit Δ(q)/Δ(q^ℓ) lies in ℚ(j,j_ℓ)
ModularCurve.modularUnitSeries_mem_modularFunctionField30 below · depth 11 - Eisenstein congruence mod m forces m ∣ n(p)
CuspForm.dvd_eisensteinNumerator_of_qCoeff_congr_sigmaPrimeTo572 below · depth 12 - T/I ≅ ℤ/n at prime level (Mazur II.9.7)
ModularCurve.natCard_heckeLatticeAlgebra_quotient_eisensteinIdeal_eq_eisensteinNumerator1,158 below · depth 12 - Toric and mod-2 reduction bound for I^m-torsion of J₀(p)
ModularCurve.natCard_torsionBySet_pow_two_le_natCard_jZeroToricTorsion_inf_mul_natCard_map_reductionModL_mul_pow3,208 below · depth 12 - Eisenstein congruences on Γ₀(p) force m ∣ (p-1)/2
CuspForm.dvd_half_sub_one_of_qCoeff_congr_sigmaPrimeTo565 below · depth 13 - Eisenstein congruence forces m ∣ (p²-1)/24
CuspForm.dvd_sq_sub_one_div_of_qCoeff_congr_sigmaPrimeTo22 below · depth 13 - Eisenstein congruence modulo n(p) for weight-two cusp forms
CuspForm.exists_qIntegral_qCoeff_congr_sigmaPrimeTo_eisensteinNumerator882 below · depth 13 - Eisenstein numerator as a gcd, for odd primes
ModularCurve.eisensteinNumerator_eq_gcd0 below · depth 13 - Eisenstein congruence produces a weight-two form divisible by 24m
CuspForm.exists_modularForm_qCoeff_eq_of_qCoeff_congr_sigmaPrimeTo4 below · depth 14 - Smoothness and ε_∞-component for points off the second component
ModularCurve.DRModelPackageLevel.mem_smoothLocus_and_mem_connectedComponentIn_of_mem_range_comp_zero878 below · depth 14 - Ogg's unit and q¹²u⁻¹ in the finite-j chart algebra
ModularCurve.DRModelPackageLevel.modularUnitSeries_mem_chartAlgFin_mul101 below · depth 14 - Supersingular points of Y₀(N)_κ lie on the second copy
ModularCurve.IgusaScheme.ker_comp_atkinLehner_le_comap_retraction_of_mem_ssJSet_of_not_dvd940 below · depth 14 - Ogg's unit on the two components of X₀(Np) mod p
ModularCurve.IgusaScheme.retraction_one_tmul_modularUnit_eq_prod_ssJSet_of_not_dvd936 below · depth 14 - One-sided divisor laws for the modular unit Δ/Δ_q
ModularCurve.PlaceSpecialization.ProlongationTuple.exists_divisor_oneSidedFst_laws_modularUnit659 below · depth 14 - Modular unit Δ/Δ_q: R₁-integral, residue of order 1-q
ModularCurve.PlaceSpecialization.ProlongationTuple.exists_mem_integersFst_residue_ne_zero_of_coe_eq_modularUnitSeries_level32 below · depth 14 - Reduced modular unit has order zero at ordinary affine places
ModularCurve.PlaceSpecialization.ProlongationTuple.ord_residueFst_eq_zero_of_coe_eq_modularUnitSeries_of_notMem_ssPlaces239 below · depth 14 - Second residue of the level-q modular unit vanishes
ModularCurve.PlaceSpecialization.ProlongationTuple.residue_eq_zero_of_mem_integersSnd_of_coe_eq_modularUnitSeries100 below · depth 14 - Ogg's unit pair Δ(q)/Δ(qᵖ) in the j-finite chart ring
ModularCurve.XHDRLevel.exists_ogg_unit_pair_chartAlgFin_gammaH338 below · depth 14 - Ogg's unit and the components of the fibre at p
ModularCurve.XHDRModelAtP.exists_chartAlgFin_forall_mem_range_comp_zero_and_not_mem_range_comp_one1,029 below · depth 14 - Pools of level polynomials on the j-finite chart ring
ModularCurve.XHDRModelAtP.exists_levelPolynomials_of_chartAlgFin572 below · depth 14 - Partial Atkin–Lehner involution takes u_Q to Q¹²u_Q⁻¹
ModularCurve.coe_atkinLehnerInvolutionFull_modularUnitSeries105 below · depth 14 - Partial Atkin–Lehner involution inverts Ogg's unit
ModularCurve.coe_atkinLehnerInvolutionFull_modularUnitSeries_of_not_dvd100 below · depth 14 - Fricke involution on Ogg's modular unit over ℚ̄
ModularCurve.frickeInvolutionBar_coeffEmb_modularUnitSeries109 below · depth 14 - Order zero of the units Δ(q)/Δ(q^δ) outside the cusps
ModularCurve.ord_coeffEmb_modularUnitSeries_eq_zero_of_not_isCusp63 below · depth 14 - An Ogg unit separating the two components of the q-fibre
ModularCurve.DRModelPackageLevel.exists_chartAlgFin_forall_mem_range_comp_zero_and_not_mem_range_comp_one236 below · depth 15 - Level polynomials for Ogg's unit on the Igusa chart
ModularCurve.DRModelPackageLevel.exists_levelPolynomials_of_chartAlgFin320 below · depth 15 - Two minimal primes of (q) in the finite-j chart ring
ModularCurve.DRModelPackageLevel.exists_minimalPrimes_chartAlgFin_span_eq_pair_of_valuationSubring_pair173 below · depth 15 - One-sided pool over R[1/f] from level polynomials
ModularCurve.DRModelPackageLevel.exists_oneSidedPool_baseChange_of_levelPolynomials892 below · depth 15 - Sheet-one divisor law with regularity at supersingular places
ModularCurve.PlaceSpecialization.ProlongationTuple.mapDomain_reduceFst_filter_sheetOne_eq_ord_residueFst_of_regularityLaw1,120 below · depth 15 - Second-sheet divisor law on X₀(Nq), ordinary fixed places
ModularCurve.PlaceSpecialization.ProlongationTuple.mapDomain_reduceSnd_filter_sheetTwo_eq_ord_residueSnd_of_regularityLaw1,122 below · depth 15 - Push-forward of the ∞-side divisor of the modular unit
ModularCurve.PlaceSpecialization.ProlongationTuple.mapDomain_restrictAlong_filter_isInftySide_divisor_modularUnit246 below · depth 15 - Specialization pushes the polar divisor of j to ordᵥ(jmath̄)
ModularCurve.PlaceSpecialization.ProlongationTuple.mapDomain_sp_filter_neg_divisor_j_eq_ord_jqModC_of_isModel245 below · depth 15 - Order of the reduced modular unit at non-affine places
ModularCurve.PlaceSpecialization.ProlongationTuple.ord_residueFst_modularUnit_eq_mul_ord_jqModC_of_not_isAffineGeomPlace82 below · depth 15 - Rigidity over the level-M/p q-expansion field
ModularCurve.XHDRLevel.algEquiv_eq_refl_of_forall_coe_eq_gammaH_infSubgroup228 below · depth 15 - Étale level sets of the modular unit on the j-finite chart
ModularCurve.XHDRModelAtP.exists_finite_etale_quotient_span_aeval_chartAlgFin569 below · depth 15 - Fricke involution sends Δ(q)/Δ(q^N) to N¹² times its inverse
ModularCurve.coe_frickeInvolutionFull_modularUnitSeries_of_neZero82 below · depth 15 - Ogg's modular unit mod p for p<5
ModularCurve.exists_laurentSeries_int_modularUnitSeries_coeffMap_eq_jqModC_pow_of_lt_five1 below · depth 15 - Reduction mod p of Δ(q)/Δ(qᵖ) as a supersingular product
ModularCurve.exists_laurentSeries_int_modularUnitSeries_coeffMap_eq_prod_ssJSet259 below · depth 15 - Integrality of Ogg's unit and p¹²u⁻¹ over ℤ[j]
ModularCurve.modularUnitSeries_mem_chartAlgFin_int94 below · depth 15 - Ogg's unit on the ∞-component is the supersingular polynomial
ModularCurve.DRModel.map_ringEquiv_quotient_chartAlgFin_modularUnit_eq_prod_ssJSet260 below · depth 16 - Trivial component classes extend to A-points of Pic⁰
ModularCurve.DRModelPackage.exists_schemeHomOver_of_comp_eq_zero_of_abelJacobiPin_of_surjective2,060 below · depth 16 - Étale level sets of the modular unit Δ(τ)/Δ(qτ)
ModularCurve.DRModelPackageLevel.exists_finite_etale_quotient_span_aeval317 below · depth 16 - Minimal primes over q in the Igusa chart select one component
ModularCurve.DRModelPackageLevel.exists_index_forall_mem_range_comp_zero_of_not_le19 below · depth 16 - Atkin–Lehner image and cusp 0 off the ∞-component
ModularCurve.DRModelPackageLevel.fibreMap_w_mem_diff_connectedComponentIn_and_sectionFibre_cuspZero_mem878 below · depth 16 - Chart points off v lie in the cusp component of geometric fibres
ModularCurve.DRModelPackageLevel.mem_connectedComponentIn_baseChange_of_fst_eq_iotaFin880 below · depth 16 - Cusp sections miss the finite-j chart
ModularCurve.DRModelPackageLevel.range_cuspInf_inter_range_iotaFin_eq_empty_and_range_cuspZero_inter_range_iotaFin_eq_empty1 below · depth 16 - Level transport along 1· p=p for places and J₀
ModularCurve.JZero.exists_addEquiv_placeEquiv_oneMul0 below · depth 16 - Surjective depth–component homomorphism on inertia invariants, level one
ModularCurve.PlaceSpecialization.ProlongationTuple.exists_comp_depthCompLaw_and_surjective_levelOne1,340 below · depth 16 - Unit first residue at ordinary affine φ²-fixed places
ModularCurve.PlaceSpecialization.ProlongationTuple.ord_residueFst_eq_zero_of_forall_reduceFst_eq_ord_eq_zero270 below · depth 16 - First residue regular at an ordinary fixed place, Atkin–Lehner case
ModularCurve.PlaceSpecialization.ProlongationTuple.ord_residueFst_nonneg_of_not_hasValue_modularUnit597 below · depth 16 - Regularity of the second residue at φ v via a modular unit
ModularCurve.PlaceSpecialization.ProlongationTuple.ord_residueSnd_nonneg_of_hasValue_modularUnit124 below · depth 16 - Level-one prolongation tuple with node coordinates and depth
ModularCurve.PlaceSpecialization.exists_prolongationTuple_nodeCoordinates_depthValueLaw_levelOne1,069 below · depth 16 - Chart automorphism agrees with the field automorphism σ
ModularCurve.XHDRLevel.coe_theta_eq_of_forall_coe_iota0_of_qExpand430 below · depth 16 - Any mod-p retraction of ι₀ reads q-expansions
ModularCurve.XHDRLevel.exists_ringHom_laurentSeries_and_embedding_comp_retraction_gammaH443 below · depth 16 - Supersingular points of the first copy lie on the second
ModularCurve.XHDRLevel.retraction_map_theta_eq_zero_mem_of_mem_ssJSet_gammaH630 below · depth 16 - Formally unramified level sets of Ogg's unit on the Γ_H chart
ModularCurve.XHDRModelAtP.exists_avoid_forall_formallyUnramified_quotient_quotient_span_aeval_chartAlgFin489 below · depth 16 - Finiteness of chart ring modulo a monic polynomial in the modular unit
ModularCurve.XHDRModelAtP.exists_forall_finite_quotient_span_aeval_and_finrank_le_chartAlgFin290 below · depth 16 - Generic unramifiedness of the Γ_H chart ring over Rₚ[X]
ModularCurve.XHDRModelAtP.exists_forall_isUnramifiedAt_polynomial_of_aeval_notMem_chartAlgFin127 below · depth 16 - Ogg's unit distinguishes the two branches above the Gauss point
ModularCurve.XHDRModelAtP.exists_modularUnit_mem_and_inv_mem_and_div_mem_of_valuationSubring_pair_chartAlgFin444 below · depth 16 - The Eisenstein numerator is coprime to p
ModularCurve.eisensteinNumerator_coprime0 below · depth 16 - Valuation ring of the inertia field inside A
ModularCurve.inertiaField_comap_incl_and_surjective_and_isAlgClosed_residueField10 below · depth 16 - Ogg's unit Δ(q)/Δ(qᵖ) at the two components
ModularCurve.modularUnitSeries_mem_valuationSubring_pair_of_not_dvd100 below · depth 16 - Component group at p has order num((p-1)/12)
ModularCurve.natCard_componentGroup_widthOfPlaces_eq_eisensteinNumerator422 below · depth 16 - Order of Δ/Δ_δ at poles of j
ModularCurve.ord_coeffEmb_modularUnitSeries_eq_sub_of_ord_jqModC_neg148 below · depth 16 - Ogg's unit reduces to the supersingular polynomial
ModularCurve.residue_coeffEmb_modularUnitSeries_eq_prod_ssJSet_of_regularProlongation102 below · depth 16 - Divisor of Ogg's modular unit at prime level
ModularCurve.smul_cuspidalDivisor_apply_eq_ord109 below · depth 16 - Ogg's unit detects the ∞-component mod p
ModularCurve.DRModelPackage.exists_coordinate_forall_mem_range_compInf_and_not_mem_range_compZero280 below · depth 17 - Residue-field point above a crossing point of the mod-p fibre
ModularCurve.DRModelPackage.exists_residueField_point_baseChangeMap_eq_of_isAlgClosed_residueField270 below · depth 17 - Geometric-fibre transport of the Poincaré bundle with section twists
ModularCurve.DRModelPackage.nonempty_poincare_pullbackAlong_comp_iso_of_pullback_toDR_iso_of_sectionTwist17 below · depth 17 - Recognising pts of a divisor class from its Poincaré fibre
ModularCurve.DRModelPackage.pts_pic0Mk_eq_comp_of_poincare_pullbackAlong_iso21 below · depth 17 - Transporting a degree-zero divisor along a level equivalence
ModularCurve.DRModelPackage.sum_coef_eq_zero_and_exists_degZero_mapDomain_of_equiv_support145 below · depth 17 - Unramified nonempty level sets of the modular unit mod q
ModularCurve.DRModelPackageLevel.exists_avoid_forall_formallyUnramified_quotient_quotient_span_aeval226 below · depth 17 - Finite level sets of Ogg's unit with linear rank bound
ModularCurve.DRModelPackageLevel.exists_forall_finite_quotient_span_aeval_and_finrank_le276 below · depth 17 - Generic unramifiedness of the j-chart over the modular unit line
ModularCurve.DRModelPackageLevel.exists_forall_isUnramifiedAt_polynomial_of_aeval_notMem126 below · depth 17 - Minimal primes over q in the pole chart are the centres of W₀,W₁
ModularCurve.DRModelPackageLevel.exists_minimalPrimes_chartAlgInf_span_eq_pair_of_valuationSubring_pair186 below · depth 17 - Reducedness mod q of the finite-j chart ring
ModularCurve.DRModelPackageLevel.isReduced_chartAlgFin_quotient_span_natCast3 below · depth 17 - Base change along τ of a section and its geometric generic point
ModularCurve.DRResolvedModelPackage.eEta_comp_pullbackMap_eq_comp_toDR_of_comp_fst_eq0 below · depth 17 - Node bijection and orientation bit for the component dictionary
ModularCurve.DRResolvedModelPackage.exists_nodeEquiv_swap_forall_comp_eq_dict_of_sections_of_charts1,640 below · depth 17 - An O-point of D whose Poincaré class is M
ModularCurve.DRResolvedModelPackage.exists_schemeHomOver_poincare_pullbackAlong_iso_of_generic_sectionTwist_of_forall_isAlgEquivZero36 below · depth 17 - Inertia-fixed places give sections of the resolved model
ModularCurve.DRResolvedModelPackage.exists_section_toDR_generic_eq_pointEquivPlace_symm_of_forall_inertia_smul_eq0 below · depth 17 - Vertical twist to multidegree zero fixing the generic fibre
ModularCurve.DRResolvedModelPackage.exists_verticalTwist_multidegree_eq_zero_and_generic_iso_sectionTwist46 below · depth 17 - Multidegree zero forces algebraic equivalence to zero on fibres
ModularCurve.DRResolvedModelPackage.isAlgEquivZero_fibre_of_pullback_toDR_iso_divisorial_of_multidegree_eq_zero1,241 below · depth 17 - Vanishing component class puts the multidegree in α's image
ModularCurve.DRResolvedModelPackage.multidegree_mem_range_intersectionAlpha_of_comp_eq_zero482 below · depth 17 - Sections of the resolved model avoid the edge points
ModularCurve.DRResolvedModelPackage.ne_edgePt_and_mem_smoothOffEdges_and_existsUnique_mem_comp_support_of_section1 below · depth 17 - Generic fibre of a bundle descended through the resolution
ModularCurve.DRResolvedModelPackage.nonempty_pullback_comp_toDR_iso_sectionTwist_of_iso_divisorial0 below · depth 17 - Finite étale level rings of the modular unit on X₀(p)
ModularCurve.HpoolLevelRing.exists_finite_etale_levelRing_self444 below · depth 17 - First-sheet divisor law at ordinary affine φ²-fixed places
ModularCurve.PlaceSpecialization.ProlongationTuple.mapDomain_reduceFst_filter_sheetOne_eq_ord_residueFst_residueField1,889 below · depth 17 - Second-sheet divisor law at ordinary affine φ²-fixed places
ModularCurve.PlaceSpecialization.ProlongationTuple.mapDomain_reduceSnd_filter_sheetTwo_eq_ord_residueSnd_residueField1,890 below · depth 17 - Regularity of the first residue at affine φ²-fixed places
ModularCurve.PlaceSpecialization.ProlongationTuple.ord_residueFst_nonneg_of_forall_reduceFst_eq_ord_nonneg_of_hasValue_atkinLehnerBar_modularUnit125 below · depth 17 - Regularity of both residues at a φ²-fixed affine place
ModularCurve.PlaceSpecialization.ProlongationTuple.ord_residues_nonneg_of_forall_reduceFst_eq_ord_nonneg0 below · depth 17 - Sheet dichotomy for the modular unit at ordinary places
ModularCurve.PlaceSpecialization.hasValue_modularUnit_or_atkinLehnerBar_of_reduceFst_fixed_ordinary589 below · depth 17 - Integral norm relation for g of Ogg's modular unit
ModularCurve.exists_int_poly_natDegree_aeval_jFull_eq_mul_aeval_modularUnitSeries270 below · depth 17 - Monic relation over ℚ[j] for the modular unit Δ(q)/Δ(qᵖ)
ModularCurve.exists_monic_rat_relation_int_coeff_modularUnit25 below · depth 17 - Order of the width-weighted component group at supersingular nodes
ModularCurve.natCard_componentGroup_placeWidth_nodePairsOfPlaces_eq_eisensteinNumerator421 below · depth 17 - Order of Ogg's unit Δ(q)/Δ(q^ℓ) at ∞̄
ModularCurve.ord_cuspInftyBar_coeffEmb_modularUnitSeries109 below · depth 17 - Order of the modular unit at the cusp ̄ 0
ModularCurve.ord_cuspZeroBar_coeffEmb_modularUnitSeries109 below · depth 17 - Node coordinates at a supersingular crossing from a chart presentation
ModularCurve.DRModelPackage.exists_nodeCoordinates_and_forall_mem_support_iff_chainPos_of_chartPresentation_of_branch_of_jPin1,158 below · depth 18 - Supersingular places enumerate the crossings, with width and j-pin
ModularCurve.DRModelPackage.exists_nodeEquiv_width_eq_and_jPin414 below · depth 18 - An orientation bit matching strict places to branch components
ModularCurve.DRModelPackage.exists_swap_forall_isStrict_section_mem_range_comp_of_reading445 below · depth 18 - Supersingular O-lift of j at each crossing
ModularCurve.DRModelPackage.forall_exists_lift_jFun_sub_mem_maximalIdeal_and_mem_ssJSet404 below · depth 18 - Sections through non-strict inertia-fixed places meet the matched crossing
ModularCurve.DRModelPackage.section_base_closedPoint_eq_crossing_of_reduceFst_mem337 below · depth 18 - Local chart presentation at a node of the resolved model
ModularCurve.DRResolvedModelPackage.DRResolvedModelCharts.exists_chartPresentation_stalk255 below · depth 18 - Strict transforms detected on the Deligne–Rapoport closed fibre
ModularCurve.DRResolvedModelPackage.eq_inl_iff_toDR_base_mem_range_compInf_of_mem_comp_support56 below · depth 18 - Multidegree zero gives χ=χ(𝒪) on a strict transform
ModularCurve.DRResolvedModelPackage.eulerChar_sectionsOf_pullback_strictTransform_eq_of_multidegree_eq_zero_of_surjective237 below · depth 18 - Node width equals the j-width of the reduced j-value
ModularCurve.DRResolvedModelPackage.width_eq_jWidth_of_exists_jFun_sub_mem_maximalIdeal_of_prolongationTuple1,630 below · depth 18 - Unramifiedness of Ogg's unit off a polynomial divisor
ModularCurve.HpoolLevelRing.exists_forall_isUnramifiedAt_polynomial_of_aeval_notMem123 below · depth 18 - Ogg's unit and the two minimal primes over p
ModularCurve.HpoolLevelRing.exists_minimalPrimes_pair_modularUnitSeries222 below · depth 18 - Characteristic-p fibre dictionary for the modular unit
ModularCurve.HpoolLevelRing.exists_pFibre_dictionary353 below · depth 18 - Finiteness of level rings of the modular unit Δ(q)/Δ(qᵖ)
ModularCurve.HpoolLevelRing.finite_levelRing273 below · depth 18 - Constant stalk rank (p-1)deg g of the level ring
ModularCurve.HpoolLevelRing.rankAtStalk_levelRing_eq248 below · depth 18 - Descended symmetric functions of the conjugates lie in ℚ[j]
ModularCurve.PhiGen.mem_adjoin_jq_of_qExpand_descent_phiProd_modularUnit20 below · depth 18 - First-sheet divisor law at ordinary φ²-fixed places
ModularCurve.PlaceSpecialization.ProlongationTuple.mapDomain_reduceFst_filter_sheetOne_eq_ord_residueFst_levelOne_univ1,009 below · depth 18 - Second-sheet divisor law at ordinary φ²-fixed places, level one
ModularCurve.PlaceSpecialization.ProlongationTuple.mapDomain_reduceSnd_filter_sheetTwo_eq_ord_residueSnd_levelOne1,012 below · depth 18 - Sheet separation at ordinary places: u or w_q u has unit value
ModularCurve.PlaceSpecialization.hasValue_modularUnit_or_frickeInvolutionBar_of_reduceFst_fixed_ordinary563 below · depth 18 - Leading coefficient of the norm of g at Ogg's unit
ModularCurve.exists_leadingCoeff_eq_mul_pow_of_aeval_jFull_eq_norm_aeval_modularUnitSeries269 below · depth 18 - Supersingular width component group: order num((q-1)/12) and cyclicity
ModularCurve.natCard_componentGroup_eq_and_isAddCyclic_of_width_eq_jWidth43 below · depth 18 - Degree of the ℚ(j)-norm of g at Ogg's unit
ModularCurve.natDegree_eq_mul_of_aeval_jFull_eq_norm_aeval_modularUnitSeries222 below · depth 18 - Ramanujan's formula θ j·Δ=-E₄²E₆
ModularCurve.thetaL_jq_mul_deltaSeries80 below · depth 18 - The identity (θ j)⁶ = j⁴(j-1728)³Δ
ModularCurve.thetaL_jq_pow_six83 below · depth 18 - Germ reading j(qᵖ)-j(q)ᵖ at a supersingular crossing
ModularCurve.DRModelPackage.exists_germ_jq_sub_pow_and_stalkSpecializes_mem_maximalIdeal_of_swap568 below · depth 19 - Degree of a level quotient for Ogg's unit on X₀(p)
ModularCurve.HpoolLevelRing.finrank_rat_tensorProduct_quotient_span_aeval246 below · depth 19 - R₁-integrality of the modular unit with coefficientwise residue
ModularCurve.PlaceSpecialization.LevelOneProlongationPair.coeffEmb_modularUnitSeries_mem_integersFst32 below · depth 19 - Vanishing of the modular unit's second residue at level one
ModularCurve.PlaceSpecialization.LevelOneProlongationPair.coeffEmb_modularUnitSeries_mem_integersSnd_residue_eq_zero110 below · depth 19 - Nonvanishing residue of the modular unit at the first prolongation
ModularCurve.PlaceSpecialization.LevelOneProlongationPair.residue_coeffEmb_modularUnitSeries_ne_zero33 below · depth 19 - Regularity of the first residue at a second-sheet place
ModularCurve.PlaceSpecialization.ProlongationTuple.ord_residueFst_nonneg_of_forall_reduceFst_eq_ord_nonneg_of_hasValue_frickeInvolutionBar_modularUnit_levelOne663 below · depth 19 - Regularity of the second residue at φ v
ModularCurve.PlaceSpecialization.ProlongationTuple.ord_residueSnd_nonneg_of_forall_reduceFst_eq_ord_nonneg_of_hasValue_modularUnit_levelOne662 below · depth 19 - Sheet separation at ordinary places via the modular unit
ModularCurve.PlaceSpecialization.hasValue_modularUnit_or_frickeInvolutionBar_of_reduceFst_fixed_ordinary_univ563 below · depth 19 - Order of the component group is the Eisenstein numerator
ModularCurve.natCard_componentGroup_eq_eisensteinNumerator6 below · depth 19 - Inertia-fixed strict place with an 𝒪-section of the resolved model
ModularCurve.DRResolvedModelPackage.exists_isStrictFst_forall_inertia_smul_eq_and_section_toDR_generic_eq444 below · depth 20 - Lifting residues integral over the ̄ u⁻¹-chart
ModularCurve.PlaceSpecialization.LevelOneProlongationPair.exists_isIntegral_and_residue_eq_of_isIntegral_adjoin_residue_modularUnitSeries_inv353 below · depth 20 - Unit values of the modular unit at strict-type-one places
ModularCurve.PlaceSpecialization.LevelOneProlongationPair.exists_red_ne_zero_and_coeffEmb_modularUnitSeries_inv_sub_algebraMap_mem_nonunits_of_isStrictTypeOne458 below · depth 20 - Residue of the modular unit has inverse of degree q-1
ModularCurve.PlaceSpecialization.LevelOneProlongationPair.finrank_adjoin_residue_coeffEmb_modularUnitSeries_inv223 below · depth 20 - At cuspidal places, finite A-values of u⁻¹ reduce to zero
ModularCurve.PlaceSpecialization.red_eq_zero_of_isCuspidal_of_coeffEmb_modularUnitSeries_inv_sub_algebraMap_mem_nonunits458 below · depth 20 - Degree q-1 over the subfield generated by the modular unit
ModularCurve.finrank_adjoin_coeffEmb_modularUnitSeries_inv216 below · depth 20 - Kirchhoff count equals the Eisenstein numerator
ModularCurve.kirchhoffCount_eq_eisensteinNumerator_of_massFormula0 below · depth 20 - Ogg's modular unit is a unit away from the cusps
ModularCurve.ord_coeffEmb_modularUnitSeries_of_not_isCusp109 below · depth 20
… and 53 more statements (search for the module name to find them).