Definitions/Def_ModularCurve_CanonicalDivisor.lean
Order of a Kähler differential at a place of a function field
Throughout, K \subseteq F are fields with F a K-algebra and v is a place of F over K in the sense of AlgebraicCurve.Place: a valuation subring of F containing the image of K, different from \top, whose ideals are principal, so that it is a discrete valuation ring and v carries the normalised order function v.ord on F with v.ord of a uniformizer equal to 1 and v.ord\,0 = 0. A uniformizer of v is fixed (by a choice of an irreducible element of the valuation ring) and used only internally; from it AlgebraicCurve.Place.dCoord is the Kähler differential d\pi_v \in \Omega[F\!\restriction\!K], the image of the chosen uniformizer under Mathlib's universal derivation. The class AlgebraicCurve.Place.DCoordGenerates is the single-field hypothesis that the F-submodule of \Omega[F\!\restriction\!K] spanned by \{d\pi_v\} is everything; it is thus a hypothesis on the chosen uniformizer, asserting that d\pi_v is a generator of the module of differentials, not a theorem proved here. Under it every \omega is of the form f\cdot d\pi_v, and differentialCoeff returns such an f (and 0 when no such f exists); when \Omega[F\!\restriction\!K] is nontrivial, d\pi_v \neq 0 and the coefficient is unique, so differentialCoeff is F-homogeneous, sends d\pi_v to 1 and 0 to 0.
Finally AlgebraicCurve.Place.ordDifferential is defined by \operatorname{ord}_v(\omega) := v.ord(\,\mathrm{differentialCoeff}\ \omega\,), an integer; since v.ord vanishes at 0, this convention assigns the value 0 rather than +\infty to the zero differential. Two basic properties are recorded: the order of d\pi_v itself is 0, and for c \neq 0 with \omega of nonzero coefficient, \operatorname{ord}_v(c\,\omega) = v.ord(c) + \operatorname{ord}_v(\omega).
Relation to Mathlib
The module of differentials is Mathlib's KaehlerDifferential \Omega[F\!\restriction\!K]; Mathlib has no notion of the order of a differential at a place of a function field, and DCoordGenerates and the coefficient and order functions are the project's own.
Where it is used
These notions supply the local order of a differential, hence the data needed to form canonical divisors and to study the Cartier operator and Hasse–Witt matrix of a modular curve in the project's treatment of divisors on curves.
References
- H. Stichtenoth, Algebraic Function Fields and Codes, Springer, 2nd edition, 2009, Chapter IV
- H. Darmon, F. Diamond and R. Taylor, Fermat's Last Theorem, in: Current Developments in Mathematics 1995, International Press, 1995, 1–154
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 98 lines
- 17 declarations
- used in the statements of 56 theorems and imported by 110 proofs
- imports 1 definition modules
Source file: Definitions/Def_ModularCurve_CanonicalDivisor.lean
Declarations
- def
AlgebraicCurve.Place.uniformizer - theorem
AlgebraicCurve.Place.ord_uniformizer - theorem
AlgebraicCurve.Place.uniformizer_ne_zero - def
AlgebraicCurve.Place.dCoord - class
AlgebraicCurve.Place.DCoordGenerates - field
AlgebraicCurve.Place.DCoordGenerates.span_eq_top - theorem
AlgebraicCurve.Place.dCoord_ne_zero - def
AlgebraicCurve.Place.differentialCoeff - theorem
AlgebraicCurve.Place.exists_eq_smul_dCoord - theorem
AlgebraicCurve.Place.differentialCoeff_smul_dCoord - theorem
AlgebraicCurve.Place.differentialCoeff_unique - theorem
AlgebraicCurve.Place.differentialCoeff_dCoord - theorem
AlgebraicCurve.Place.differentialCoeff_zero - theorem
AlgebraicCurve.Place.differentialCoeff_smul - def
AlgebraicCurve.Place.ordDifferential - theorem
AlgebraicCurve.Place.gate_ordDifferential_dCoord - theorem
AlgebraicCurve.Place.ordDifferential_smul
Source
import Mathlib import Definitions.Def_AlgebraicCurve_DivisorClassGroup set_option autoImplicit false open KaehlerDifferential noncomputable section namespace AlgebraicCurve variable (K F : Type*) [Field K] [Field F] [Algebra K F] namespace Place variable {K F} variable (v : Place K F) private def uniformizer : F := ((IsDiscreteValuationRing.exists_irreducible v.toValuationSubring).choose : F) private theorem ord_uniformizer : v.ord v.uniformizer = 1 := by have hirr := (IsDiscreteValuationRing.exists_irreducible v.toValuationSubring).choose_spec simpa [uniformizer] using v.ord_coe_irreducible hirr private theorem uniformizer_ne_zero : v.uniformizer ≠ 0 := by intro h simpa [h, v.ord_zero] using v.ord_uniformizer def dCoord : Ω[F⁄K] := KaehlerDifferential.D K F v.uniformizer class DCoordGenerates : Prop where span_eq_top : Submodule.span F {v.dCoord} = ⊤ theorem dCoord_ne_zero [v.DCoordGenerates] [Nontrivial Ω[F⁄K]] : v.dCoord ≠ 0 := by intro h0 have htop := DCoordGenerates.span_eq_top (v := v) obtain ⟨x, hx⟩ := exists_ne (0 : Ω[F⁄K]) have hx_mem : x ∈ Submodule.span F {v.dCoord} := htop ▸ Submodule.mem_top rw [h0, Submodule.span_zero_singleton] at hx_mem exact hx hx_mem def differentialCoeff (ω : Ω[F⁄K]) : F := letI := Classical.propDecidable if h : ∃ f : F, ω = f • v.dCoord then h.choose else 0 theorem exists_eq_smul_dCoord [v.DCoordGenerates] (ω : Ω[F⁄K]) : ∃ f : F, ω = f • v.dCoord := by have hω : ω ∈ (⊤ : Submodule F Ω[F⁄K]) := Submodule.mem_top rw [← DCoordGenerates.span_eq_top (v := v), Submodule.mem_span_singleton] at hω exact hω.imp fun _ hf => hf.symm theorem differentialCoeff_smul_dCoord [v.DCoordGenerates] (ω : Ω[F⁄K]) : v.differentialCoeff ω • v.dCoord = ω := by rw [differentialCoeff, dif_pos (v.exists_eq_smul_dCoord ω)] exact (v.exists_eq_smul_dCoord ω).choose_spec.symm theorem differentialCoeff_unique [v.DCoordGenerates] [Nontrivial Ω[F⁄K]] {ω : Ω[F⁄K]} {f : F} (hf : ω = f • v.dCoord) : v.differentialCoeff ω = f := by have key : (v.differentialCoeff ω - f) • v.dCoord = 0 := by rw [sub_smul, v.differentialCoeff_smul_dCoord ω, hf, sub_self] rcases smul_eq_zero.mp key with h | h · exact sub_eq_zero.mp h · exact absurd h v.dCoord_ne_zero @[simp] theorem differentialCoeff_dCoord [v.DCoordGenerates] [Nontrivial Ω[F⁄K]] : v.differentialCoeff v.dCoord = 1 := v.differentialCoeff_unique (one_smul F v.dCoord).symm @[simp] theorem differentialCoeff_zero [v.DCoordGenerates] [Nontrivial Ω[F⁄K]] : v.differentialCoeff (0 : Ω[F⁄K]) = 0 := v.differentialCoeff_unique (zero_smul F v.dCoord).symm theorem differentialCoeff_smul [v.DCoordGenerates] [Nontrivial Ω[F⁄K]] (c : F) (ω : Ω[F⁄K]) : v.differentialCoeff (c • ω) = c * v.differentialCoeff ω := v.differentialCoeff_unique (by rw [mul_smul, v.differentialCoeff_smul_dCoord]) def ordDifferential (ω : Ω[F⁄K]) : ℤ := v.ord (v.differentialCoeff ω) theorem gate_ordDifferential_dCoord [v.DCoordGenerates] [Nontrivial Ω[F⁄K]] : v.ordDifferential v.dCoord = 0 := by rw [ordDifferential, v.differentialCoeff_dCoord, v.ord_one] theorem ordDifferential_smul [v.DCoordGenerates] [Nontrivial Ω[F⁄K]] {c : F} (hc : c ≠ 0) {ω : Ω[F⁄K]} (hω : v.differentialCoeff ω ≠ 0) : v.ordDifferential (c • ω) = v.ord c + v.ordDifferential ω := by rw [ordDifferential, ordDifferential, v.differentialCoeff_smul, v.ord_mul hc hω] end Place end AlgebraicCurve end
Statements phrased using this module (56)
- Differential of a uniformiser generates Ω_{F/K}
AlgebraicCurve.dCoordGenerates_of_isCurveOver1 below · depth 9 - 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 - Existence of a separating transcendental element on a curve
AlgebraicCurve.IsCurveOver.exists_separating_transcendental0 below · depth 10 - The two orders of a differential at a place agree
AlgebraicCurve.Place.ordDiff_eq_ordDifferential55 below · depth 10 - Riemann–Roch from the residue theorem, K algebraically closed
AlgebraicCurve.functionFieldRiemannRoch_of_residueTheoremK_of_isAlgClosed0 below · depth 10 - Residue theorem over an algebraically closed base field
AlgebraicCurve.residueTheoremK_of_isAlgClosed6 below · depth 10 - Degree of a canonical divisor is 2g-2 over ̄ K
AlgebraicCurve.degree_canonicalDivisor_eq_of_isAlgClosed56 below · depth 11 - Riemann–Roch over an algebraically closed constant field
AlgebraicCurve.functionFieldRiemannRoch_of_isAlgClosed_of_isCurveOver9 below · depth 11 - Curves over a perfect field: separating transcendence element
AlgebraicCurve.isCurveOver_iff_exists_transcendental_finiteDimensional39 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 - Unit derivatives are regular: du/dπ_w∈mathcal O_w
AlgebraicCurve.localUnitDerivativeRegular_of_isCurveOver2 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 - At new places of a constant field extension, dx has order 0
AlgebraicCurve.Place.ordDifferential_D_eq_zero_of_constantFieldExtension_of_forall_mem5 below · depth 13 - Adelic Weil duality over an algebraically closed constant field
AlgebraicCurve.weilDualityAdelic_of_isAlgClosed69 below · depth 13 - Residue of a dx pulled back to the upper half-plane
ModularCurve.ComplexPlaceDictionary.exists_realize_mul_deriv_realize_eq_div_add16 below · depth 14 - Exponential decay of cusp-regular differentials pulled back to H
ModularCurve.exists_isBigO_slash_realize_mul_deriv_realize_of_forall_ordDifferential_nonneg17 below · depth 14 - Over a perfect base field, ordDiffᵥ=ordDifferentialᵥ
AlgebraicCurve.Place.ordDiff_eq_ordDifferential_of_perfectField16 below · depth 17 - Weil differentials bounded by W are F-proportional
AlgebraicCurve.exists_weilSmul_eq_of_riemannIndexFormula23 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 - Order of d̄ j at affine places and tame cusps
ModularCurve.ordDifferential_D_jGeomGen_eq_of_not_dvd_of_cast_natAbs_ne_zero381 below · depth 17 - Order of the Hecke multiplier at a pole of α^*j
ModularCurve.ord_heckeMultiplier_eq_of_ord_neg_of_eq_smul_map451 below · depth 17 - Placewise identity for ord_w(d̄ j) and weight floors
ModularCurve.ordDifferential_D_jGeomGen_sub_weightFloor_eq503 below · depth 18 - dim_K Ω_F(D) = ℓ((ω) - D)
AlgebraicCurve.finrank_omegaSpace_eq_ell_canonical_sub_of_genusReached23 below · depth 19 - Residue commutes with trace through the completion
AlgebraicCurve.residueTraceCompletionCommute_v24 below · depth 21 - 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 - Polar part at τ of a realised differential a dx
ModularCurve.ComplexPlaceDictionaryOf.exists_realizeOf_mul_deriv_realizeOf_eq_div_add_gammaH3 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 - Exponential decay at cusps of cusp-regular differentials
ModularCurve.exists_isBigO_slash_realizeOf_mul_deriv_realizeOf_of_forall_ordDifferential_nonneg15 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