Definitions/Def_ModularCurve_GenusNumerics.lean
Elliptic point counts, cusp count and genus formula for
Four arithmetic functions of a natural number N are introduced, together with one evaluation lemma.
ModularCurve.nuTwo N is the cardinality (as a Nat.card) of the subtype of \mathbb{Z}/N consisting of those x with x^2+1=0, and ModularCurve.nuThree N is the cardinality of the subtype of \mathbb{Z}/N consisting of those x with x^2+x+1=0; classically these are the numbers of elliptic points of order 2 and of order 3 on X_0(N). ModularCurve.cuspCount N is defined as the finite sum \sum_{d \mid N} \varphi\bigl(\gcd(d, N/d)\bigr) over the divisors of N, with \varphi Euler's totient; ModularCurve.cuspCount_one records that this equals 1 for N = 1.
ModularCurve.genusFormula N is the rational number
1 + \frac{\psi(N)}{12} - \frac{\nu_2(N)}{4} - \frac{\nu_3(N)}{3} - \frac{\nu_\infty(N)}{2},
where \nu_2, \nu_3, \nu_\infty are nuTwo, nuThree, cuspCount and \psi(N) is ModularCurve.dedekindPsi N, itself defined as the sum \sum_{d \mid N,\ d \text{ squarefree}} N/d, i.e. N \prod_{p \mid N}(1 + 1/p), the index of \Gamma_0(N) in \mathrm{SL}_2(\mathbb{Z}).
Thus genusFormula is a purely arithmetic expression in N, taking values in \mathbb{Q}; it is defined as the right-hand side of the classical Riemann–Hurwitz computation for the covering X_0(N) \to X(1), and no integrality assertion, nor any identification with the genus of a curve, is part of the definitions themselves.
Relation to Mathlib
Mathlib supplies the ingredients used here (ZMod, Nat.divisors, Nat.totient, Nat.card) but has no counts of elliptic points or cusps for \Gamma_0(N) and no genus formula for X_0(N); these functions, like ModularCurve.dedekindPsi, are the project's own.
Where it is used
These four functions are the numerical inputs to the genus and ramification computations for the modular curves X_0(N) used throughout the project's treatment of X_0(N), in particular for the small levels occurring after level lowering.
References
- F. Diamond and J. Shurman, A First Course in Modular Forms, Graduate Texts in Mathematics 228, Springer, 2005, §3.1
- G. Shimura, Introduction to the Arithmetic Theory of Automorphic Functions, Princeton University Press, 1971, Prop. 1.43
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 25 lines
- 5 declarations
- used in the statements of 116 theorems and imported by 148 proofs
- imports 1 definition modules
Source file: Definitions/Def_ModularCurve_GenusNumerics.lean
Imports
Imported by
Declarations
- def
ModularCurve.nuTwo - def
ModularCurve.nuThree - def
ModularCurve.cuspCount - lemma
ModularCurve.cuspCount_one - def
ModularCurve.genusFormula
Source
import Mathlib.NumberTheory.LegendreSymbol.Basic ↗ import Mathlib.FieldTheory.Finite.Basic ↗ import Mathlib.Data.Nat.Totient ↗ import Mathlib.NumberTheory.Divisors ↗ import Definitions.Def_ModularCurve_X0 namespace ModularCurve noncomputable def nuTwo (N : ℕ) : ℕ := Nat.card {x : ZMod N // x ^ 2 + 1 = 0} noncomputable def nuThree (N : ℕ) : ℕ := Nat.card {x : ZMod N // x ^ 2 + x + 1 = 0} def cuspCount (N : ℕ) : ℕ := ∑ d ∈ N.divisors, Nat.totient (Nat.gcd d (N / d)) @[simp] lemma cuspCount_one : cuspCount 1 = 1 := by simp [cuspCount] noncomputable def genusFormula (N : ℕ) : ℚ := 1 + (dedekindPsi N : ℚ) / 12 - (nuTwo N : ℚ) / 4 - (nuThree N : ℚ) / 3 - (cuspCount N : ℚ) / 2 end ModularCurve
Statements phrased using this module (116)
- The cusp count of level p equals 2
ModularCurve.cuspCount_prime0 below · depth 9 - Genus of X₀(p) for an odd prime p
ModularCurve.genus_modularFunctionFieldBar_eq_genusFormula_of_prime436 below · depth 9 - ν₃(p)=2 if p≡ 1(mod 3), else 0
ModularCurve.nuThree_prime0 below · depth 9 - Number of square roots of -1 in 𝔽ₚ
ModularCurve.nuTwo_prime0 below · depth 9 - Unramified points above j=0 on X₀(p) count ν₃(p)
ModularCurve.card_filter_ord_jBar_eq_one_eq_nuThree344 below · depth 10 - Unramified places over j=1728 at odd prime level count ν₂(p)
ModularCurve.card_filter_ord_jBar_sub_1728_eq_one_eq_nuTwo342 below · depth 10 - Degree of a canonical divisor on X₀(N) over ℚ̄ is 2g-2
ModularCurve.degree_canonicalDivisorOf_modularFunctionFieldBar171 below · depth 10 - Ramification over j=0 divides 3 for odd level
ModularCurve.ord_jBar_dvd_three_of_odd227 below · depth 10 - Ramification over j=1728 divides 2 for odd level
ModularCurve.ord_jBar_sub_1728_dvd_two_of_odd227 below · depth 10 - Unramifiedness of jmath̄ - c away from 0 and 1728, odd level
ModularCurve.ord_jBar_sub_eq_one_of_ne_zero_of_ne_of_odd225 below · depth 10 - The polar divisor of jmath̄ has degree ψ(N)
ModularCurve.sum_neg_ord_jBar_eq_dedekindPsi188 below · depth 10 - dim_ℂ S₂(Γ₀(N)) equals the genus formula
CuspForm.finrank_gamma0_weight_two_eq_genusFormula583 below · depth 11 - Places above j=j₀ count moduli points with that j-invariant
ModularCurve.card_eq_natCard_moduliPoint_j_eq_of_EMD181 below · depth 11 - Genus of the modular function field equals 1+ψ/12-ν₂/4-ν₃/3-c_∞/2
ModularCurve.genus_modularFunctionFieldBar_eq_genusFormula499 below · depth 11 - Moduli points with j = 0: 3#=ψ(N)+2ν₃(N)
ModularCurve.three_mul_natCard_moduliPoint_j_eq_zero_eq_dedekindPsi_add_two_mul_nuThree24 below · depth 11 - Moduli points with j=1728: 2 #=ψ(N)+ν₂(N)
ModularCurve.two_mul_natCard_moduliPoint_j_eq_1728_eq_dedekindPsi_add_nuTwo22 below · depth 11 - Upper bound dim S₂(Γ₀(N)) ≤ g
CuspForm.finrank_gamma0_weight_two_le_genusFormula35 below · depth 12 - Genus formula bounds dim_ℂ S₂(Γ₀(N)) from below
CuspForm.genusFormula_le_finrank_gamma0_weight_two551 below · depth 12 - Number of cusps of X₀(N) over ℚ̄
ModularCurve.card_eq_cuspCount_of_forall_mem_iff_ord_jBar_neg156 below · depth 12 - Places where jmath̄-j₀ vanishes count embedding classes
ModularCurve.card_eq_natCard_quot_samePlace_of_forall_mem_iff_pos_ord176 below · depth 12 - Class counts agree under the embedding–moduli dictionary at j₀
ModularCurve.exists_natCard_quot_samePlace_eq_natCard_quot_sameOrbit_of_EMD0 below · depth 12 - dim_K H¹ₚₐᵣ(Γ₀(N),K) ≤ 2g(N)
ModularCurve.finrank_parabolicHoms_le_two_mul_genusFormula12 below · depth 12 - Genus lower bound for X₀(N) in characteristic 2 or 3
ModularCurve.genusFormula_le_genusFF_modularFunctionFieldFullC_of_lt_five441 below · depth 12 - Simple zeros of ̄ j on level-N curve count ν₃(N)
ModularCurve.natCard_ord_jBar_eq_one_eq_nuThree239 below · depth 12 - Simple zeros of ̄ j-1728 number ν₂(N)
ModularCurve.natCard_ord_jBar_sub_1728_eq_one_eq_nuTwo239 below · depth 12 - Orbits of cyclic N-subgroups count moduli points over j(E₀)
ModularCurve.natCard_quot_sameOrbit_cycSub_eq_natCard_moduliPoint_j_eq2 below · depth 12 - Order of jmath̄ at a zero divides 3
ModularCurve.ord_jBar_dvd_three311 below · depth 12 - Ramification over j = 1728 divides 2 on X₀(N)
ModularCurve.ord_jBar_sub_1728_dvd_two234 below · depth 12 - Order one for jmath̄ - c when c ≠ 0, 1728
ModularCurve.ord_jBar_sub_eq_one_of_ne_zero_of_ne337 below · depth 12 - Cyclic N-subgroups of y²=x³+B stable under [ω]
WeierstrassCurve.natCard_isAddCyclic_addSubgroup_card_eq_fixed_vcInvFun_eq_nuThree14 below · depth 12 - Cyclic N-subgroups of y²=x³+Ax stable under [i]
WeierstrassCurve.natCard_isAddCyclic_addSubgroup_card_eq_fixed_vcInvFun_eq_nuTwo12 below · depth 12 - Counting σ-stable cyclic n-subgroups: the count is ν₃(n)
AddCommGroup.natCard_isAddCyclic_addSubgroup_map_eq_of_sq_add_self_add_id_eq_zero_eq_nuThree1 below · depth 13 - σ-stable cyclic subgroups of order n number ν₂(n)
AddCommGroup.natCard_isAddCyclic_addSubgroup_map_eq_of_sq_eq_neg_one_eq_nuTwo1 below · depth 13 - Lower bound for dim S_k(Γ₀(N)), k≥ 4 even
CuspForm.dimFormula_le_finrank_gamma0548 below · depth 13 - Upper bound for parabolic H¹ of Γ₀(N) in binary forms
HeckeEis.finrank_coeffH1par_le_two_mul_dimFormula20 below · depth 13 - Weight-two parabolic cohomology bound for Γ₀(N)
HeckeEis.finrank_coeffH1par_zero_le_two_mul_genusFormula21 below · depth 13 - Number of cusps of Γ₀(N) equals sum_{d∣ N}φ(gcd(d,N/d))
ModularCurve.CuspSpace.card_cuspSpace_eq_cuspCount4 below · depth 13 - Fibre counts for j on the modular curve of level N
ModularCurve.card_fibres_jqModC_modularFunctionFieldFullC_eq362 below · depth 13 - Poles of j count the cusps of level N
ModularCurve.card_poles_jqModC_modularFunctionFieldFullC_eq_cuspCount123 below · depth 13 - The j-line place at j=1728 has degree 1
ModularCurve.deg_jLinePlace17280 below · depth 13 - The place j=0 of the j-line has degree 1
ModularCurve.deg_jLinePlaceZero0 below · depth 13 - Ramification index equals ord_w(p(j)) away from 0,1728,∞
ModularCurve.exists_irreducible_ramificationIndex_eq_ord_aeval_of_restrict_ne_jLinePlaces8 below · depth 13 - Degree ψ(N) of the j-cover on function fields
ModularCurve.finrank_jAdjoin_modularFunctionField_eq_dedekindPsi70 below · depth 13 - Parabolic homomorphisms of Γ₀(N): bound by 2g
ModularCurve.finrank_parabolicHoms_gamma0_le_two_mul_genusFormula22 below · depth 13 - Wild different over j=0 in characteristics 2 and 3
ModularCurve.le_six_mul_sum_ordDiff_D_jqModC_of_lt_five389 below · depth 13 - Cosets of Γ₀(N) fixed by ST number ν₃(N)
ModularCurve.natCard_fixedPoints_ST_cosets_Gamma0_eq_nuThree0 below · depth 13 - Cosets of Γ₀(N) fixed by S number ν₂(N)
ModularCurve.natCard_fixedPoints_S_cosets_Gamma0_eq_nuTwo0 below · depth 13 - Ramification index over j=0 equals ord_w(j)
ModularCurve.ramificationIndex_eq_ord_of_restrict_eq_jLinePlaceZero41 below · depth 13 - Ramification index over j=1728 equals ord_w(j-1728)
ModularCurve.ramificationIndex_eq_ord_sub_of_restrict_eq_jLinePlace172841 below · depth 13 - A place of the modular function field restricts to j=1728 iff ord_w(j-1728)>0
ModularCurve.restrict_eq_jLinePlace1728_iff41 below · depth 13 - Places of F_N above j=∞ are the poles of j
ModularCurve.restrict_eq_jLinePlaceInfty_iff41 below · depth 13 - Place of X₀(N) lies over j=0 iff ord_w(j)>0
ModularCurve.restrict_eq_jLinePlaceZero_iff41 below · depth 13 - Classification of the cusps of Γ₀(N)
ModularCurve.CuspSpace.classification3 below · depth 14 - A place of the j-line is v₁₇₂₈ iff ordᵥ(j-1728)>0
ModularCurve.eq_jLinePlace1728_iff_ord_jGen_sub_pos40 below · depth 14 - A place of the j-line is v_∞ iff j has a pole
ModularCurve.eq_jLinePlaceInfty_iff_ord_jGen_neg40 below · depth 14 - A place of the j-line is v₀ iff ordᵥ(j)>0
ModularCurve.eq_jLinePlaceZero_iff_ord_jGen_pos40 below · depth 14 - A weight-2m divisor on X₀(N)_ℚ̄ with integrality
ModularCurve.exists_divisor_degree_weight_and_isIntegral_of_mem_riemannRochSpace454 below · depth 14 - Number of ⟨ T⟩-orbits on SL₂(ℤ)/Γ₀(N)
ModularCurve.natCard_orbitRelQuotient_zpowers_T_gamma0_eq_cuspCount5 below · depth 14 - ord of j-1728 at the place j=1728 is 1
ModularCurve.ord_jLinePlace1728_jGen_sub40 below · depth 14 - j is a uniformiser at the place j=0
ModularCurve.ord_jLinePlaceZero_jGen40 below · depth 14 - Ramification of j over j=0 on X₀(N) in characteristic 3
ModularCurve.ord_jqModC_census_of_char_three344 below · depth 14 - Zeros of j on X₀(N) in characteristic 2: ramification census
ModularCurve.ord_jqModC_census_of_char_two340 below · depth 14 - Order-three elliptic count for Γ₀(N): 3ε₃=ψ(N)+2ν₃(N)
ModularCurve.three_mul_card_orbitRelQuotient_zpowers_S_mul_T_gamma0_eq6 below · depth 14 - Count of moduli points with j=0: ψ(N)+2ν₃(N)
ModularCurve.three_mul_natCard_moduliPoint_j_eq_zero_eq_dedekindPsi_add_two_mul_nuThree_of_ne_zero22 below · depth 14 - Denominator-cleared form of the genus formula for X₀(N)
ModularCurve.twelve_mul_genusFormula0 below · depth 14 - Counting ⟨ S⟩-orbits on SL₂(ℤ)/Γ₀(N)
ModularCurve.two_mul_card_orbitRelQuotient_zpowers_S_gamma0_eq6 below · depth 14 - Points of X₀(N) with j-invariant 1728
ModularCurve.two_mul_natCard_moduliPoint_j_eq_1728_eq_dedekindPsi_add_nuTwo_of_ne_zero20 below · depth 14 - Counting τ-stable cyclic subgroups of order n in (ℤ/n)²
ZMod.natCard_isAddCyclic_addSubgroup_prod_map_eq_nuThree0 below · depth 14 - Counting τ-stable cyclic subgroups of order n in (ℤ/n)²
ZMod.natCard_isAddCyclic_addSubgroup_prod_map_eq_nuTwo0 below · depth 14 - Normal form for a cusp of Γ₀(N)
ModularCurve.CuspSpace.exists_normalForm0 below · depth 15 - Cusp normal form criterion for Γ₀(N)
ModularCurve.CuspSpace.normalFormCriterion1 below · depth 15 - Coprime expansion of the genus defect g(MN)-2g(N)+1
ModularCurve.genusFormula_mul_expand4 below · depth 15 - Generic j-fibres of Γ₀(N)-moduli have ψ(N) points
ModularCurve.natCard_moduliPoint_j_eq_eq_dedekindPsi_of_ne_zero13 below · depth 15 - [ω]-stable cyclic N-subgroups of y²+y=x³ in characteristic 2
WeierstrassCurve.natCard_isAddCyclic_addSubgroup_card_eq_fixed_vcInvFun_eq_nuThree_of_char_two6 below · depth 15 - Cyclic N-subgroups of y²=x³+B stable under [ω]
WeierstrassCurve.natCard_isAddCyclic_addSubgroup_card_eq_fixed_vcInvFun_eq_nuThree_of_ne_zero12 below · depth 15 - Counting [i]-stable cyclic N-subgroups of y²+y=x³ in characteristic 2
WeierstrassCurve.natCard_isAddCyclic_addSubgroup_card_eq_fixed_vcInvFun_eq_nuTwo_of_char_two6 below · depth 15 - Cyclic N-subgroups of y²=x³+Ax stable under [i]
WeierstrassCurve.natCard_isAddCyclic_addSubgroup_card_eq_fixed_vcInvFun_eq_nuTwo_of_ne_zero10 below · depth 15 - Vanishing of S₂(Γ₀(N)) when the genus formula gives 0
CuspForm.gamma0_weight_two_eq_zero_of_genusFormula_eq_zero37 below · depth 16 - Multiplicativity of the cusp count ν_∞
ModularCurve.cuspCount_mul_of_coprime0 below · depth 16 - The genus formula vanishes at level 4
ModularCurve.genusFormula_four0 below · depth 16 - The genus formula for X₀(N) vanishes at N=9
ModularCurve.genusFormula_nine0 below · depth 16 - Multiplicativity of the root count ν₃
ModularCurve.nuThree_mul_of_coprime0 below · depth 16 - Multiplicativity of ν₂ at coprime arguments
ModularCurve.nuTwo_mul_of_coprime0 below · depth 16 - Coprime integral coordinates on P¹(ℚ) are unique up to sign
ModularCurve.ratPoint_eq_ratPoint_iff_of_isCoprime0 below · depth 16 - Dimension lower bound for mod-F cusp forms of weight 2m
ModPForms.dimFormulaCusp_le_finrank_modPCusp662 below · depth 17 - Riemann–Roch bound for mod-3 cusp forms of weight 2m
ModularCurve.card_le_dimFormulaCusp_of_isModPCuspFormFn_of_linearIndependent_of_char_three742 below · depth 17 - Riemann–Roch bound for the cuspidal weight-2m floor divisor
ModularCurve.ell_le_dimFormulaCusp_of_forall_eq_weightFloor_sub733 below · depth 17 - Integral cusp forms: reduction preserves rank
ModPForms.card_le_finrank_modPCusp_of_linearIndependent10 below · depth 18 - Dimension formula bounds the rank of reduced weight-2m forms
ModPForms.dimFormula_le_finrank_modPMod805 below · depth 18 - Dimension bound for mod p weight-2m modular functions
ModularCurve.card_le_dimFormula_of_isModPFormFn_of_linearIndependent735 below · depth 18 - Canonical degree is 2 genusFormula(N)-2 in characteristic p≥ 5
ModularCurve.degree_canonicalDivisorOf_eq_two_mul_genusFormula_sub_two725 below · depth 18 - Degree of the weight-2m floor divisor on X₀(N)
ModularCurve.degree_eq_of_forall_eq_weightFloor398 below · depth 18 - Degree of the weight-2m floor divisor in characteristic 3
ModularCurve.degree_eq_of_forall_eq_weightFloor_of_char_three383 below · depth 18 - Degree of the edge weight divisor at 2m = p+1
ModularCurve.degree_weightDivisor_sub_indexPlaces_eq_of_two_mul_eq_add_one472 below · depth 18 - Genus of the modular function field in characteristic p≥ 5
ModularCurve.genusFF_modularFunctionFieldFullC_eq_genusFormula711 below · depth 18 - Dimension bound for mod-p reductions of weight-two forms
ModPForms.finrank_modPMod_two_le_genusFormula_add_cuspCount_sub_one818 below · depth 19 - Integral weight-2m forms on Γ₀(N) attaining the dimension bound
ModularForm.exists_linearIndependent_int_qCoeff_dimFormula_le_card793 below · depth 19 - Rational weight-2m forms of level N: dimension lower bound
ModularCurve.exists_linearIndependent_isModPFormFn_rat_dimFormula_le_card767 below · depth 20 - Riemann–Roch bound for mod-3 weight-2m functions on X₀(N)
ModularCurve.card_le_dimFormula_of_isModPFormFn_of_linearIndependent_of_charP_three772 below · depth 21 - Many independent weight-2m modular functions over ℚ̄
ModularCurve.exists_linearIndependent_isModPFormFn_algebraicClosure_dimFormula_le_card751 below · depth 21 - Degree of the weight-2m floor divisor in characteristic 3
ModularCurve.degree_eq_of_forall_eq_weightFloor_of_charP_three430 below · depth 22 - Riemann–Roch count for the weight-2m floor divisor
ModularCurve.ell_eq_dimFormula_of_forall_eq_weightFloor441 below · depth 22 - Genus of the level-N modular function field over ℚ̄
ModularCurve.genusFF_modularFunctionFieldFullC_eq_genusFormula_algebraicClosure730 below · depth 22 - Conjugates of T^m in Γ₀(N) and cusp width
ModularCurve.CuspSpace.conj_T_zpow_mem_Gamma0_iff0 below · depth 23 - Cusp widths of Γ₀(N) sum to ψ(N)
ModularCurve.CuspSpace.sum_cuspWidth_eq_dedekindPsi8 below · depth 23 - Genus of the level Γ_H(q²M') function field in characteristic q
ModularCurve.FullLevel.genusFF_xHFunctionFieldC_levelH_eq1,313 below · depth 23 - The genus formula for X₀(N) takes natural number values
ModularCurve.genusFormula_isNat1 below · depth 23 - Places of j-order exactly 3 and 6 in characteristic 3
ModularCurve.ncard_setOf_ord_jGeomGen_eq_three_and_eq_six_of_exists_prime_dvd_mod_three_eq_two402 below · depth 23 - Fibre over a cusp has cardinality its width
ModularCurve.CuspSpace.card_fromCoset_fiber1 below · depth 24 - Genus of the Γ_H(q²M') function field at q=3
ModularCurve.FullLevel.genusFF_xHFunctionFieldC_levelH_eq_of_eq_three_of_dvd928 below · depth 24 - Characteristic-2 genus of the Γ_H(4M') q-expansion field
ModularCurve.FullLevel.genusFF_xHFunctionFieldC_levelH_eq_of_eq_two872 below · depth 24 - Genus of the Igusa-level field at a place of ℚ̄ over q
ModularCurve.FullLevel.genusFF_xHFunctionFieldC_levelH_eq_of_liesOverPrime1,298 below · depth 24 - Cusp count for Γ_H(q²M') with H=ker to (ℤ/q)^×
ModularCurve.FullLevel.two_mul_natCard_doubleCoset_gammaH_levelH_zpowers_T_eq8 below · depth 24 - Characteristic-3 supersingular places of X₀(M'): 6|W|=ψ(M')
ModularCurve.six_mul_card_eq_dedekindPsi_of_ssPlaces_of_eq_three_of_dvd358 below · depth 24 - Characteristic 2 supersingular places: 12 |W| = ψ(M')
ModularCurve.twelve_mul_card_eq_dedekindPsi_of_ssPlaces_of_eq_two_of_dvd358 below · depth 24 - Width-two and width-three places counted by ν₂ and ν₃
ModularCurve.card_eq_nuTwo_and_card_eq_nuThree_of_forall_mem_iff_placeWidth_eq395 below · depth 25