Definitions/Def_AlgebraicCurve_CanonicalDivisor.lean
Canonical divisor, canonical class and genus of a function field
Throughout, F/K is an extension of fields and \Omega[F\!\restriction\!K] denotes Mathlib's module of Kähler differentials. Places, divisors and the Picard group are those of the project's divisor-class formalism: a place v is a proper valuation subring of F containing the image of K whose ideals are principal, a divisor is a finitely supported function \mathrm{Place}\,K\,F \to \mathbb{Z}, \mathrm{Pic}\,K\,F is the quotient of the divisor group by the subgroup of principal divisors, and \deg sends v to [\,residue field of v : K\,]. For a differential \omega, v.\mathrm{ordDifferential}\,\omega is \mathrm{ord}_v of the coefficient of \omega with respect to the differential d\pi_v of a chosen uniformiser at v (and \mathrm{ord}_v 0 = 0 by convention).
The class HasCanonicalDivisor is a Prop-valued hypothesis class carrying one field: for every \omega \neq 0 there exists a divisor D with D(v) = v.\mathrm{ordDifferential}\,\omega at every place v — that is, the family (\mathrm{ord}_v \omega)_v has finite support. Under this assumption, canonicalDivisorOf extracts such a divisor from a proof that \omega \neq 0, and canonicalDivisorOf_apply records its defining property (\omega)(v) = v.\mathrm{ordDifferential}\,\omega.
canonicalClass K F is the image in \mathrm{Pic}\,K\,F of the canonical divisor of a chosen nonzero differential, and is 0 when \Omega[F\!\restriction\!K] vanishes. genus K F is the natural number \bigl\lfloor (\deg(\omega) + 2)^{+}/2 \bigr\rfloor for that same chosen \omega (truncation of the integer to \mathbb{N} followed by natural-number division by 2), and 0 when there is no nonzero differential; it inverts the relation \deg(\omega) = 2g-2. Independence of canonicalClass and genus of the chosen \omega is not asserted here.
Relation to Mathlib
The module of Kähler differentials is Mathlib's; places, divisors, degrees and the Picard group are the project's own, and the canonical divisor, canonical class and genus of a function field have no Mathlib counterpart. The existence of the canonical divisor is taken here as a hypothesis class rather than proved.
Where it is used
These definitions supply the canonical class and the genus in the function-field language used for modular curves, where the genus and the degree of the canonical divisor enter the Riemann–Roch-type estimates of the modular-curve development.
References
- H. Stichtenoth, Algebraic Function Fields and Codes, 2nd edition, Graduate Texts in Mathematics 254, Springer, 2009
- R. Hartshorne, Algebraic Geometry, Graduate Texts in Mathematics 52, Springer, 1977, Chapter IV
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 43 lines
- 6 declarations
- used in the statements of 110 theorems and imported by 226 proofs
- imports 1 definition modules
Source file: Definitions/Def_AlgebraicCurve_CanonicalDivisor.lean
Declarations
- class
AlgebraicCurve.HasCanonicalDivisor - field
AlgebraicCurve.HasCanonicalDivisor.exists_divisor - def
AlgebraicCurve.canonicalDivisorOf - theorem
AlgebraicCurve.canonicalDivisorOf_apply - def
AlgebraicCurve.canonicalClass - def
AlgebraicCurve.genus
Source
import Mathlib import Definitions.Def_ModularCurve_CanonicalDivisor set_option autoImplicit false noncomputable section open KaehlerDifferential namespace AlgebraicCurve variable {K F : Type*} [Field K] [Field F] [Algebra K F] class HasCanonicalDivisor : Prop where exists_divisor : ∀ ω : Ω[F⁄K], ω ≠ 0 → ∃ D : Divisor K F, ∀ v : Place K F, D v = v.ordDifferential ω def canonicalDivisorOf [HasCanonicalDivisor (K := K) (F := F)] {ω : Ω[F⁄K]} (hω : ω ≠ 0) : Divisor K F := (HasCanonicalDivisor.exists_divisor ω hω).choose theorem canonicalDivisorOf_apply [HasCanonicalDivisor (K := K) (F := F)] {ω : Ω[F⁄K]} (hω : ω ≠ 0) (v : Place K F) : canonicalDivisorOf hω v = v.ordDifferential ω := (HasCanonicalDivisor.exists_divisor ω hω).choose_spec v def canonicalClass (K F : Type*) [Field K] [Field F] [Algebra K F] [HasCanonicalDivisor (K := K) (F := F)] : Pic K F := letI := Classical.propDecidable if h : ∃ ω : Ω[F⁄K], ω ≠ 0 then QuotientAddGroup.mk (canonicalDivisorOf h.choose_spec) else 0 def genus (K F : Type*) [Field K] [Field F] [Algebra K F] [HasCanonicalDivisor (K := K) (F := F)] : ℕ := letI := Classical.propDecidable if h : ∃ ω : Ω[F⁄K], ω ≠ 0 then (Divisor.degree (canonicalDivisorOf h.choose_spec) + 2).toNat / 2 else 0 end AlgebraicCurve end
Statements phrased using this module (110)
- Riemann–Roch over an algebraically closed base field
AlgebraicCurve.functionFieldRiemannRoch_of_isAlgClosed8 below · depth 9 - A principal divisor P-Q with deg Q=1 forces genus zero
AlgebraicCurve.genus_eq_zero_of_isPrincipal_single_sub_single28 below · depth 9 - Genus of X₀(p) for an odd prime p
ModularCurve.genus_modularFunctionFieldBar_eq_genusFormula_of_prime436 below · depth 9 - Canonical divisors exist for X₀(N) over ℚ̄
ModularCurve.hasCanonicalDivisor_modularFunctionFieldBar137 below · depth 9 - Degree-zero divisors are principal in genus zero
AlgebraicCurve.Divisor.isPrincipal_of_genus_eq_zero14 below · depth 10 - pⁿ-torsion of Pic⁰ has order p^{2gn}
AlgebraicCurve.Pic0.abelJacobiCard_genus297 below · depth 10 - Riemann–Roch from the residue theorem, K algebraically closed
AlgebraicCurve.functionFieldRiemannRoch_of_residueTheoremK_of_isAlgClosed0 below · depth 10 - Existence of canonical divisors on a curve over a perfect field
AlgebraicCurve.hasCanonicalDivisor_of_isCurveOver3 below · depth 10 - Residue theorem over an algebraically closed base field
AlgebraicCurve.residueTheoremK_of_isAlgClosed6 below · depth 10 - Degree of a canonical divisor on X₀(N) over ℚ̄ is 2g-2
ModularCurve.degree_canonicalDivisorOf_modularFunctionFieldBar171 below · depth 10 - The level-3 modular function field over ℚ̄ has genus 0
ModularCurve.genus_modularFunctionFieldBar_three438 below · depth 10 - Genus zero for the level-2 modular function field over ℚ̄
ModularCurve.genus_modularFunctionFieldBar_two451 below · depth 10 - p-torsion of Pic⁰ has order p^{2g}
AlgebraicCurve.Pic0.natCard_torsion_prime_eq_pow_genus242 below · depth 11 - Degree of a canonical divisor is 2g-2 over ̄ K
AlgebraicCurve.degree_canonicalDivisor_eq_of_isAlgClosed56 below · depth 11 - Existence of the constant field extension F₀K'
AlgebraicCurve.exists_constantFieldExtension43 below · depth 11 - Regular differentials form a space of dimension the genus
AlgebraicCurve.finite_and_finrank_regularDifferentials_eq_genus61 below · depth 11 - Riemann–Roch over an algebraically closed constant field
AlgebraicCurve.functionFieldRiemannRoch_of_isAlgClosed_of_isCurveOver9 below · depth 11 - Residue theorem for K(x), K algebraically closed
AlgebraicCurve.residueTheoremK_ratFunc_of_isAlgClosed0 below · depth 11 - Residue–trace commutation through the completion, F/E separable
AlgebraicCurve.residueTraceCompletionCommute4 below · depth 11 - Genus of the modular function field equals 1+ψ/12-ν₂/4-ν₃/3-c_∞/2
ModularCurve.genus_modularFunctionFieldBar_eq_genusFormula499 below · depth 11 - Order of p-torsion in Pic⁰ over ℂ
AlgebraicCurve.Pic0.natCard_torsion_prime_eq_pow_genus_complex213 below · depth 12 - Descent to a countable algebraically closed field of constants
AlgebraicCurve.exists_constantFieldDescent43 below · depth 12 - Genus invariance under algebraically closed constant field extension
AlgebraicCurve.genus_eq_of_constantFieldExtension_of_isAlgClosed9 below · depth 12 - Nonvanishing of pulled-back differentials in tame extensions
AlgebraicCurve.map_ne_zero_of_tame6 below · depth 12 - Residue theorem for curves over an algebraically closed field
AlgebraicCurve.residueTheorem_of_isAlgClosed8 below · depth 12 - Tate's residue agrees with the local residue trace
AlgebraicCurve.tateAgreement0 below · depth 12 - Chain rule for Tate's residue along F/E
AlgebraicCurve.tateChainRule0 below · depth 12 - Tate's commutator has finite K-rank at every place
AlgebraicCurve.tateCommFinite0 below · depth 12 - Trace compatibility of Tate's local residue for separable F/E
AlgebraicCurve.tateTraceCompat_of_isSeparable0 below · depth 12 - Hurwitz genus formula for tame separable extensions
AlgebraicCurve.two_mul_genus_sub_two_eq_of_degree_canonical6 below · depth 12 - Canonical-divisor genus equals adelic genus for X₀(N) over ℚ̄
ModularCurve.genus_eq_genusFF_modularFunctionFieldBar181 below · depth 12 - Abel–Jacobi: Pic⁰ of a complex function field is ℂ^g/L
AlgebraicCurve.Pic0.exists_addEquiv_quotient_submodule_complex211 below · depth 13 - Finiteness of p^k-torsion of Pic⁰ in characteristic p
AlgebraicCurve.Pic0.finite_torsion_pow_char74 below · depth 13 - Adelic Weil duality over an algebraically closed constant field
AlgebraicCurve.weilDualityAdelic_of_isAlgClosed69 below · depth 13 - Full-level modular function field is essentially of finite type
ModularCurve.essFiniteType_modularFunctionFieldFullC73 below · depth 13 - Abel's theorem: sufficiency of the period condition
AlgebraicCurve.Divisor.isPrincipal_of_abelJacobiDiv_mem_pathPeriodLattice187 below · depth 14 - Abel–Jacobi: Pic⁰ of a complex curve as ℂ^g/L
AlgebraicCurve.Pic0.exists_addEquiv_quotient_submodule_of_chartedSpace_complex200 below · depth 14 - Finiteness of p-torsion in Pic⁰ in characteristic p
AlgebraicCurve.Pic0.finite_torsion_char72 below · depth 14 - Jacobi inversion for complex algebraic function fields
AlgebraicCurve.exists_degree_eq_zero_and_abelJacobiDiv_sub_mem_pathPeriodLattice8 below · depth 14 - Existence of a differential of the third kind
AlgebraicCurve.exists_ordDifferential_eq_neg_one_of_ne0 below · depth 14 - Integral residues and periods in 2π iℤ give a principal divisor
AlgebraicCurve.Divisor.isPrincipal_of_forall_pathIntegral_eq_two_pi_I_mul76 below · depth 15 - Abel's theorem, necessity: principal divisors have lattice periods
AlgebraicCurve.abelJacobiDiv_mem_pathPeriodLattice_of_isPrincipal26 below · depth 15 - Path periods form a lattice in ℂⁿ
AlgebraicCurve.discreteTopology_pathPeriodLattice_and_span_eq_top191 below · depth 15 - Primitives of regular differentials along paths exist, unique up to constants
AlgebraicCurve.exists_isPrimitiveAlong_of_mem_regularDifferentials4 below · depth 15 - Degree-zero divisors as residue divisors of differentials
AlgebraicCurve.exists_ordDifferential_ge_neg_one_and_evalAt_eq_of_degree_eq_zero62 below · depth 15 - Period normalisation of a third-kind differential
AlgebraicCurve.exists_regular_pathIntegral_sub_eq_of_abelJacobiDiv_mem_pathPeriodLattice165 below · depth 15 - Interpolation on the full level-N modular curve with simple poles
ModularCurve.exists_mem_riemannRochSpace_ord_sub_eq_one_hasValue_modularFunctionFieldFullC164 below · depth 15 - Period group of a differential basis has ≤ 2n generators
AlgebraicCurve.exists_finset_card_le_span_eq_pathPeriodLattice190 below · depth 16 - Canonical loops and Riemann's bilinear period relations
AlgebraicCurve.exists_loops_pathIntegral_reciprocity164 below · depth 16 - Meromorphic function realising the residue divisor of θ
AlgebraicCurve.exists_meromorphicOrderAt_eq_of_forall_pathIntegral_eq_two_pi_I_mul6 below · depth 16 - Real span of the period vectors is all of ℂⁿ
AlgebraicCurve.span_real_pathPeriodLattice_eq_top5 below · depth 16 - Height of the chord vector at v equals h_D(v)+h_{D+K}(v)+O(1)
ModularCurve.JZero.exists_abs_absLogHeight_regVal_sub_pointHt_add_pointHt_le297 below · depth 16 - Sharp Riemann–Roch on the full modular function field
ModularCurve.ell_eq_degree_add_one_sub_genusFF_modularFunctionFieldFullC163 below · depth 16 - Local Jacobi inversion for the lifted Abel–Jacobi map
AlgebraicCurve.exists_abelJacobiDiv_sub_mem_pathPeriodLattice_and_image_mem_nhds5 below · depth 17 - Existence and uniqueness of primitives along a path
AlgebraicCurve.exists_isPrimitiveAlong_of_forall_ordDifferential_nonneg4 below · depth 17 - Places in general position for regular differentials
AlgebraicCurve.exists_isUnit_det_evalAt_differentialCoeff81 below · depth 17 - Raw form of Riemann's bilinear relations
AlgebraicCurve.exists_loops_pathIntegral_reciprocity_raw161 below · depth 17 - One loop realising an integer combination of periods
AlgebraicCurve.exists_path_forall_pathIntegral_eq_sum_mul5 below · depth 17 - Weil differentials bounded by W are F-proportional
AlgebraicCurve.exists_weilSmul_eq_of_riemannIndexFormula23 below · depth 17 - Existence of canonical divisors on P¹_K, K perfect
AlgebraicCurve.instHasCanonicalDivisorRatFuncPerfectField21 below · depth 17 - Chart primitives give primitives along paths inside a chart
AlgebraicCurve.isPrimitiveAlong_comp_extChartAt_of_hasDerivAt_readDifferential4 below · depth 17 - Attained Riemann genus equals the canonical genus
AlgebraicCurve.riemannGenusReached_of_stichtenothGenusExists23 below · depth 17 - Adelic index formula from an attained Riemann genus
AlgebraicCurve.riemannIndexFormula_of_genusReached23 below · depth 17 - Wronskians of a spanning family as a base-point-free subsystem of |2D+K|
ModularCurve.JZero.diffCoeff_wronskian_mem_riemannRochSpace_and_exists_ord_add_eq_zero285 below · depth 17 - Index of speciality of the off-cusp part: ℓ(K-D^∘)+deg D^∘=g
ModularCurve.JZero.finrank_riemannRochSpace_canonicalDivisorOf_sub_erase_add_offBaseMass263 below · depth 17 - Auxiliary places making K-E non-special on X₀(N)
ModularCurve.exists_injective_riemannRochSpace_canonicalDivisorOf_sub_eq_bot196 below · depth 17 - Pairwise disjoint base divisors off the cusp in L(2E-K)
ModularCurve.exists_mem_riemannRochSpace_sub_canonicalDivisorOf_forall_ne_not_and274 below · depth 17 - Dual compatibility of supersingular Hecke map with T_Ω
ModularCurve.theta_ssHeckeFun_eq_inv_smul_dualMap_of_forall_weilOfKaehler894 below · depth 17 - Elements of tame nonzero order are separating
AlgebraicCurve.Place.isSeparable_adjoin_of_ord_ne_zero_of_cast_natAbs_ne_zero2 below · depth 18 - Cell dissection of a compact complex curve with marked places
AlgebraicCurve.exists_cellDissection137 below · depth 18 - Vanishing of Ω(D) when deg D>deg(ω)
AlgebraicCurve.omegaSpace_eq_bot_of_degree_canonicalDivisorOf_lt25 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 edge weight divisor at 2m = p+1
ModularCurve.degree_weightDivisor_sub_indexPlaces_eq_of_two_mul_eq_add_one472 below · depth 18 - Riemann–Roch for the function field of X₀(N) over ℚ̄
ModularCurve.finrank_riemannRochSpace_sub_finrank_canonicalDivisorOf_sub_eq185 below · depth 18 - Simple-pole expansion of a differential in a chart at a place
AlgebraicCurve.Place.readDifferential_eventuallyEq_div_add_of_ordDifferential3 below · depth 19 - Existence of a paired cell family on a compact complex curve
AlgebraicCurve.exists_pairedCellFamily136 below · depth 19 - dim_K Ω_F(D) = ℓ((ω) - D)
AlgebraicCurve.finrank_omegaSpace_eq_ell_canonical_sub_of_genusReached23 below · depth 19 - The rational function field has genus zero over a perfect field
AlgebraicCurve.genus_ratFunc_eq_zero_of_perfectField21 below · depth 19 - Riemann–Hurwitz formula in terms of the values of x
AlgebraicCurve.Place.sum_ramification_evalAt_eq110 below · depth 20 - Scale data for dissecting a compact complex curve
AlgebraicCurve.exists_dissectionScaleData57 below · depth 20 - Existence of canonical divisors on X₁(M) over ℚ̄
ModularCurve.hasCanonicalDivisor_x1FunctionFieldBar51 below · depth 20 - Riemann–Hurwitz formula for the cover F/K(f)
AlgebraicCurve.finsum_ramificationIndexAlong_sub_one_eq109 below · depth 21 - Residue commutes with trace through the completion
AlgebraicCurve.residueTraceCompletionCommute_v24 below · depth 21 - Genus of K(X) is zero in characteristic zero
AlgebraicCurve.genus_ratFunc_eq_zero22 below · depth 22 - Tate's residue equals the trace of the local residue
AlgebraicCurve.tateAgreement_v20 below · depth 22 - Finiteness of the ramification locus of a tame separable cover
AlgebraicCurve.exists_finset_forall_not_mem_ramificationIndex_eq_one6 below · depth 24 - Chart independence of the Serre residue pairing
AlgebraicCurve.serrePairing_eq_of_cechH1ToH1_eq1 below · depth 25 - Correspondence adjunction for the Serre residue pairing
AlgebraicCurve.serrePairing_traceAlong_eq_serrePairing_traceAlong_pullbackAlong_of_cechH1ToH1_eq4 below · depth 25 - Degeneracy roof at the generic fibre: function-field Hecke correspondence
ModularCurve.exists_functionField_degeneracyRoof_kaehlerToFunctionField_eq_correspondence_of_res_eq_heckeDiffBar208 below · depth 25 - Perfectness of the Čech residue pairing on a curve
AlgebraicCurve.serrePairing_bijective_and_flip_bijective45 below · depth 26 - Serre pairing is adjoint for pull-back and trace along φ
AlgebraicCurve.serrePairing_pullbackAlong_eq_serrePairing_traceAlong0 below · depth 26 - Trace of differentials is adjoint to pull-back of Čech classes
AlgebraicCurve.serrePairing_traceAlong_eq_serrePairing_pullbackAlong0 below · depth 26 - Degeneracy roof at q over the generic fibre
ModularCurve.exists_functionField_degeneracyRoof_lift_of_ratCurveModel4 below · depth 26 - Residue package for the two legs of the T_q degeneracy roof
ModularCurve.functionField_residuePackage_degeneracyRoof_of_finiteAlong85 below · depth 26 - Generic-fibre degeneracy roof for Hecke action on differentials
ModularCurve.kaehlerToFunctionField_eq_correspondence_degeneracyRoof_of_res_eq_heckeDiffBar161 below · depth 26 - Regular differentials versus Weil differentials of divisor 0
AlgebraicCurve.exists_linearEquiv_regularDifferentials_omegaSpace_zero29 below · depth 27 - Residue theorem over a perfect constant field
AlgebraicCurve.residueTheorem_of_perfectField65 below · depth 27 - Residue of dt/t is 1 at any uniformiser
AlgebraicCurve.Place.CanonicalLocalResidueDataK.res_differentialCoeff_D_mul_inv_eq_one0 below · depth 28 - Vanishing residue of partialᵥ(dt) t⁻⁽ⁿ⁺¹⁾ at a rational place
AlgebraicCurve.Place.CanonicalLocalResidueDataK.res_differentialCoeff_D_mul_pow_inv_eq_zero_of_surjective_algebraMap0 below · depth 28 - Order of a pulled-back differential at a place (tame case)
AlgebraicCurve.ordDifferential_map_eq6 below · depth 28 - Residue theorem for F from K(x) via trace–residue commutation
AlgebraicCurve.residueTheorem_of_residueTheorem_ratFunc_of_residueTraceCompletionCommute0 below · depth 28 - Residue theorem for K(x) over a perfect field
AlgebraicCurve.residueTheorem_ratFunc_of_perfectField63 below · depth 28 - Simple-pole residue cancellation for c dX/p on P¹
AlgebraicCurve.RationalFunctionField.trace_localResidue_finitePlace_add_trace_localResidue_placeInfty_eq_zero0 below · depth 29 - Traceless residues of higher poles at finite places of K(X)
AlgebraicCurve.RationalFunctionField.trace_localResidue_finitePlace_div_pow_eq_zero60 below · depth 29 - Vanishing of the residue of Xⁿ dX at infinity
AlgebraicCurve.RationalFunctionField.trace_localResidue_placeInfty_X_pow_eq_zero1 below · depth 29 - Unique residue at a place with at most a simple pole
AlgebraicCurve.existsUnique_hasSimpleResidue_of_hasSimplePoleAt2 below · depth 30 - Realising zero-sum residue data by a differential with simple poles
AlgebraicCurve.exists_mem_polarDifferentials_forall_hasSimpleResidue_of_sum_eq_zero65 below · depth 30 - Residue theorem for differentials with at most simple poles
AlgebraicCurve.sum_eq_zero_of_forall_hasSimpleResidue_of_mem_polarDifferentials10 below · depth 30 - Residue map on differentials with simple poles along S
AlgebraicCurve.exists_linearMap_hasSimpleResidue_ker_eq_regular_range_eq_sum_zero_finrank_corner66 below · depth 31 - Dimension of differentials with simple poles on S
AlgebraicCurve.finite_and_finrank_polarDifferentials_eq61 below · depth 31