Definitions/Def_AlgebraicCurve_DivisorClassGroup.lean
Places, divisors and the divisor class group of
Fix fields K\subseteq F (an arbitrary algebra of fields, with no function-field hypothesis imposed). A Place K F is a structure with four fields: a valuation subring \mathcal{O}\subseteq F; the requirement that \mathcal{O} contain the image of K; the requirement \mathcal{O}\neq\top, i.e. \mathcal{O}\neq F; and the requirement that \mathcal{O} be a principal ideal ring. Since a proper valuation subring is not a field (ValuationSubring.not_isField_of_ne_top, proved here in Mathlib's root namespace), these data yield instances making \mathcal{O} a discrete valuation ring, a K-algebra, and part of a tower K\subseteq\mathcal{O}\subseteq F. Attached to v are its residue field \kappa(v), the degree deg v =\operatorname{finrank}_K\kappa(v) (a natural number, hence 0 when \kappa(v)/K is infinite), the class FiniteResidue asserting \kappa(v)/K finite, the \mathfrak{m}_v-adic valuation adicValuation with values in \mathbb{Z}^{m0}, and ord v f := -\log of that valuation, normalised so that a uniformiser has order 1 and, by convention, \operatorname{ord}_v 0=0; the accompanying lemmas give additivity on nonzero elements, behaviour under inverses and integer powers, vanishing on units, and the factorisation f=u\pi^{\operatorname{ord}_v f}.
Divisor K F is the abbreviation for finitely supported functions \mathrm{Place}\,K\,F\to\mathbb{Z}; degree is the additive map D\mapsto\sum_v D(v)\deg v, degZero its kernel, IsPrincipal D says that some f\neq 0 has D(v)=\operatorname{ord}_v f for all v, and principal is the resulting subgroup. The class HasPrincipalDivisors carries, as a hypothesis rather than a theorem, the assertion that each f\neq 0 has such a finitely supported divisor of degree 0. Pic and Pic0 are the quotients of all divisors, resp. of degree-zero divisors, by principal divisors, with Pic0.torsion K F n the n-torsion \{x : n\cdot x=0\}. AbelJacobiCard K F p g is the predicate (not proved here) that \#\mathrm{Pic}^0[p^n]=p^{2gn} for all n. Finally, F\simeq_K F acts on places by pointwise transport of the valuation subring, preserving ord and deg, hence acts on divisors by pushforward of support, preserving degree, degZero and principal, and so acts on Pic0. Place.ofHeightOneSpectrum produces a place from a height-one prime of a Dedekind domain R with K\subseteq R and fraction field F.
Relation to Mathlib
Mathlib supplies valuation subrings, height-one spectra of Dedekind domains and their adic valuations, but no notion of place, divisor or divisor class group of a field extension; those are the project's own, built on Mathlib's ValuationSubring, Finsupp and QuotientAddGroup. Two auxiliary lemmas, ValuationSubring.not_isField_of_ne_top and ValuationSubring.pointwise_smul_top, are declared in Mathlib's root namespace.
Where it is used
This is the generic divisor-theoretic layer for an algebraic treatment of modular curves: places, divisors and \mathrm{Pic}^0 of the function field of X_0(N), together with the automorphism action used to carry Hecke and Galois actions on the Jacobian and its p-power torsion. By itself it proves nothing about any particular curve.
References
- H. Stichtenoth, Algebraic Function Fields and Codes, Graduate Texts in Mathematics 254, Springer, 2009
- M. Rosen, Number Theory in Function Fields, Graduate Texts in Mathematics 210, Springer, 2002
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 485 lines
- 78 declarations
- used in the statements of 660 theorems and imported by 837 proofs
- imports 0 definition modules
Source file: Definitions/Def_AlgebraicCurve_DivisorClassGroup.lean
Imports
- only Mathlib
Imported by
Def_AlgebraicCurve_BaseChangeGaloisDef_AlgebraicCurve_ConstantReductionDef_AlgebraicCurve_CurveModelDef_AlgebraicCurve_DifferentialsDef_AlgebraicCurve_DivisorPushPullDef_AlgebraicCurve_GluedPic0Def_AlgebraicCurve_IsCurveOverDef_AlgebraicCurve_JacobianH1AutodualityDef_AlgebraicCurve_PlaceCompletionDef_AlgebraicCurve_PlaceEvaluationDef_AlgebraicCurve_PlacesOfDef_AlgebraicCurve_RatFuncPlaceInftyDef_AlgebraicCurve_RatFuncPlacesDef_AlgebraicCurve_RepartitionsDef_AlgebraicCurve_TateResidueCurrencyDef_DrinfeldCurve_TateRepDef_JacJ1_ChartAlgebraDef_ModularCurve_CanonicalDivisorDef_ModularCurve_ComplexPlaceDictionaryDef_ModularCurve_ComplexPlaceDictionaryOfDef_ModularCurve_FibreModelDef_ModularCurve_FibreModelCuspChartDef_ModularCurve_QAdicPlaceDef_ModularCurve_SpecializationMapDef_ModularCurve_WeightDivisorDef_ModularCurve_X0ModLDef_WeierstrassCurve_GenusOnePic0
Declarations
- structure
AlgebraicCurve.Place - field
AlgebraicCurve.Place.toValuationSubring - field
AlgebraicCurve.Place.algebraMap_mem' - field
AlgebraicCurve.Place.ne_top' - field
AlgebraicCurve.Place.isPrincipalIdealRing' - theorem
ValuationSubring.not_isField_of_ne_top - theorem
AlgebraicCurve.Place.toValuationSubring_injective - theorem
AlgebraicCurve.Place.ext - theorem
AlgebraicCurve.Place.coe_algebraMap - abbrev
AlgebraicCurve.Place.ResidueField - def
AlgebraicCurve.Place.deg - class
AlgebraicCurve.Place.FiniteResidue - field
AlgebraicCurve.Place.FiniteResidue.finite - def
AlgebraicCurve.Place.heightOneSpectrum - theorem
AlgebraicCurve.Place.heightOneSpectrum_asIdeal - def
AlgebraicCurve.Place.adicValuation - theorem
AlgebraicCurve.Place.adicValuation_ne_zero - theorem
AlgebraicCurve.Place.adicValuation_coe - theorem
AlgebraicCurve.Place.adicValuation_coe_eq_one_iff - theorem
AlgebraicCurve.Place.adicValuation_coe_irreducible - def
AlgebraicCurve.Place.ord - theorem
AlgebraicCurve.Place.ord_zero - theorem
AlgebraicCurve.Place.ord_one - theorem
AlgebraicCurve.Place.ord_mul - theorem
AlgebraicCurve.Place.ord_inv - theorem
AlgebraicCurve.Place.ord_coe_unit - theorem
AlgebraicCurve.Place.ord_coe_irreducible - theorem
AlgebraicCurve.Place.ord_zpow - theorem
AlgebraicCurve.Place.ord_unit_smul_zpow - theorem
AlgebraicCurve.Place.exists_unit_mul_zpow - abbrev
AlgebraicCurve.Divisor - def
AlgebraicCurve.Divisor.degree - theorem
AlgebraicCurve.Divisor.degree_single - def
AlgebraicCurve.Divisor.degZero - theorem
AlgebraicCurve.Divisor.mem_degZero - def
AlgebraicCurve.Divisor.IsPrincipal - def
AlgebraicCurve.Divisor.principal - theorem
AlgebraicCurve.Divisor.mem_principal - class
AlgebraicCurve.HasPrincipalDivisors - field
AlgebraicCurve.HasPrincipalDivisors.exists_divisor - abbrev
AlgebraicCurve.Pic - abbrev
AlgebraicCurve.Pic0 - def
AlgebraicCurve.Pic0.mk - theorem
AlgebraicCurve.Pic0.mk_surjective - theorem
AlgebraicCurve.Pic0.mk_add - theorem
AlgebraicCurve.Pic0.mk_zero - def
AlgebraicCurve.Pic0.torsion - theorem
AlgebraicCurve.Pic0.mem_torsion - def
AlgebraicCurve.AbelJacobiCard - def
AlgebraicCurve.Place.smulRingEquiv - theorem
AlgebraicCurve.Place.coe_smulRingEquiv_apply - theorem
ValuationSubring.pointwise_smul_top - theorem
AlgebraicCurve.Place.smul_toValuationSubring - theorem
AlgebraicCurve.Place.ord_smul - def
AlgebraicCurve.Place.smulResidueAlgEquiv - theorem
AlgebraicCurve.Place.deg_smul - theorem
AlgebraicCurve.Divisor.smul_def - theorem
AlgebraicCurve.Divisor.smul_single - theorem
AlgebraicCurve.Divisor.smul_apply_smul - theorem
AlgebraicCurve.Divisor.smul_apply - theorem
AlgebraicCurve.Divisor.degree_smul - theorem
AlgebraicCurve.Divisor.smul_mem_degZero - theorem
AlgebraicCurve.Divisor.smul_mem_principal - def
AlgebraicCurve.Pic0.degZeroSMulHom - theorem
AlgebraicCurve.Pic0.coe_degZeroSMulHom - theorem
AlgebraicCurve.Pic0.smul_mk - theorem
AlgebraicCurve.Place.isPrincipalIdealRing_valuationSubring - def
AlgebraicCurve.Place.ofHeightOneSpectrum - theorem
AlgebraicCurve.Place.ofHeightOneSpectrum_toValuationSubring
Source
import Mathlib.RingTheory.DedekindDomain.AdicValuation ↗ import Mathlib.RingTheory.Valuation.Discrete.Basic ↗ import Mathlib.RingTheory.Valuation.Discrete.IsDiscreteValuationRing ↗ import Mathlib.RingTheory.LocalRing.ResidueField.Basic ↗ import Mathlib.Data.Finsupp.SMul ↗ import Mathlib.Algebra.BigOperators.Finsupp.Basic ↗ import Mathlib.Algebra.Module.Torsion.Basic ↗ import Mathlib.Algebra.Ring.Subring.Pointwise ↗ import Mathlib.LinearAlgebra.FiniteDimensional.Defs ↗ import Mathlib.RingTheory.Bezout ↗ set_option autoImplicit false noncomputable section open IsDedekindDomain WithZero IsLocalRing namespace AlgebraicCurve variable (K F : Type*) [Field K] [Field F] [Algebra K F] structure Place where toValuationSubring : ValuationSubring F algebraMap_mem' : ∀ a : K, algebraMap K F a ∈ toValuationSubring ne_top' : toValuationSubring ≠ ⊤ isPrincipalIdealRing' : IsPrincipalIdealRing toValuationSubring theorem _root_.ValuationSubring.not_isField_of_ne_top {A : ValuationSubring F} (hA : A ≠ ⊤) : ¬IsField A := by intro hf apply hA refine SetLike.ext fun x => ⟨fun _ => ValuationSubring.mem_top x, fun _ => ?_⟩ by_cases hx : x ∈ A · exact hx · exfalso have hx0 : x ≠ 0 := fun h => hx (h ▸ A.zero_mem) have hxi : x⁻¹ ∈ A := (A.mem_or_inv_mem x).resolve_left hx have hxi0 : (⟨x⁻¹, hxi⟩ : A) ≠ 0 := by simp only [ne_eq, Subtype.ext_iff] exact inv_ne_zero hx0 obtain ⟨b, hb⟩ := hf.mul_inv_cancel hxi0 have hb' : x⁻¹ * (b : F) = 1 := by have h := congrArg (Subtype.val) hb simpa using h have hbx : (b : F) = x := by field_simp at hb' exact hb' exact hx (hbx ▸ b.2) namespace Place variable {K F} theorem toValuationSubring_injective : Function.Injective (toValuationSubring (K := K) (F := F)) := by rintro ⟨a, _, _, _⟩ ⟨b, _, _, _⟩ (rfl : a = b) rfl @[ext] theorem ext {v w : Place K F} (h : v.toValuationSubring = w.toValuationSubring) : v = w := toValuationSubring_injective h variable (v : Place K F) instance : IsPrincipalIdealRing v.toValuationSubring := v.isPrincipalIdealRing' instance : IsDiscreteValuationRing v.toValuationSubring where not_a_field' := by rw [ne_eq, ← IsLocalRing.isField_iff_maximalIdeal_eq] exact ValuationSubring.not_isField_of_ne_top F v.ne_top' instance : Algebra K v.toValuationSubring := ((algebraMap K F).codRestrict v.toValuationSubring.toSubring v.algebraMap_mem').toAlgebra @[simp] theorem coe_algebraMap (a : K) : (algebraMap K v.toValuationSubring a : F) = algebraMap K F a := rfl instance : IsScalarTower K v.toValuationSubring F := IsScalarTower.of_algebraMap_eq fun a => (v.coe_algebraMap a).symm abbrev ResidueField : Type _ := IsLocalRing.ResidueField v.toValuationSubring def deg : ℕ := Module.finrank K v.ResidueField class FiniteResidue : Prop where finite : Module.Finite K v.ResidueField def heightOneSpectrum : HeightOneSpectrum v.toValuationSubring := IsDiscreteValuationRing.maximalIdeal _ @[simp] theorem heightOneSpectrum_asIdeal : v.heightOneSpectrum.asIdeal = IsLocalRing.maximalIdeal v.toValuationSubring := rfl def adicValuation : Valuation F ℤᵐ⁰ := v.heightOneSpectrum.valuation F theorem adicValuation_ne_zero {f : F} (hf : f ≠ 0) : v.adicValuation f ≠ 0 := (Valuation.ne_zero_iff _).mpr hf theorem adicValuation_coe (a : v.toValuationSubring) : v.adicValuation (a : F) = v.heightOneSpectrum.intValuation a := by simpa [adicValuation] using v.heightOneSpectrum.valuation_of_algebraMap (K := F) a theorem adicValuation_coe_eq_one_iff (a : v.toValuationSubring) : v.adicValuation (a : F) = 1 ↔ IsUnit a := by rw [v.adicValuation_coe, HeightOneSpectrum.intValuation_eq_one_iff, heightOneSpectrum_asIdeal, IsLocalRing.mem_maximalIdeal, mem_nonunits_iff, not_not] theorem adicValuation_coe_irreducible {π : v.toValuationSubring} (hπ : Irreducible π) : v.adicValuation (π : F) = exp (-1 : ℤ) := by rw [v.adicValuation_coe] exact HeightOneSpectrum.intValuation_singleton _ hπ.ne_zero (by rw [heightOneSpectrum_asIdeal, hπ.maximalIdeal_eq]) def ord (f : F) : ℤ := -(WithZero.log (v.adicValuation f)) @[simp] theorem ord_zero : v.ord (0 : F) = 0 := by simp [ord] @[simp] theorem ord_one : v.ord (1 : F) = 0 := by simp [ord] theorem ord_mul {f g : F} (hf : f ≠ 0) (hg : g ≠ 0) : v.ord (f * g) = v.ord f + v.ord g := by simp only [ord, map_mul] rw [WithZero.log_mul (v.adicValuation_ne_zero hf) (v.adicValuation_ne_zero hg)] ring theorem ord_inv (f : F) : v.ord f⁻¹ = -v.ord f := by rcases eq_or_ne f 0 with rfl | hf · simp · simp only [ord, map_inv₀, WithZero.log_inv, neg_neg] theorem ord_coe_unit (u : v.toValuationSubringˣ) : v.ord ((u : v.toValuationSubring) : F) = 0 := by simp [ord, (v.adicValuation_coe_eq_one_iff _).mpr u.isUnit] theorem ord_coe_irreducible {π : v.toValuationSubring} (hπ : Irreducible π) : v.ord (π : F) = 1 := by simp [ord, v.adicValuation_coe_irreducible hπ] theorem ord_zpow (f : F) (n : ℤ) : v.ord (f ^ n) = n * v.ord f := by simp only [ord, map_zpow₀, WithZero.log_zpow, smul_eq_mul] ring theorem ord_unit_smul_zpow (u : v.toValuationSubringˣ) {π : v.toValuationSubring} (hπ : Irreducible π) (n : ℤ) : v.ord (((u : v.toValuationSubring) : F) * ((π : F) ^ n)) = n := by have hπF : (π : F) ≠ 0 := by simpa [ne_eq, ZeroMemClass.coe_eq_zero] using hπ.ne_zero have hu : ((u : v.toValuationSubring) : F) ≠ 0 := by simp [ne_eq, ZeroMemClass.coe_eq_zero] rw [v.ord_mul hu (zpow_ne_zero n hπF), v.ord_coe_unit u, zero_add, v.ord_zpow _ _, v.ord_coe_irreducible hπ, mul_one] theorem exists_unit_mul_zpow {f : F} (hf : f ≠ 0) {π : v.toValuationSubring} (hπ : Irreducible π) : ∃ u : v.toValuationSubringˣ, f = ((u : v.toValuationSubring) : F) * ((π : F) ^ (v.ord f)) := by obtain ⟨n, u, hu⟩ := IsDiscreteValuationRing.exists_units_eq_smul_zpow_of_irreducible (K := F) hπ hf rw [Units.smul_def, Algebra.smul_def] at hu have hcoe : algebraMap v.toValuationSubring F (u : v.toValuationSubring) = ((u : v.toValuationSubring) : F) := rfl have hcoe' : algebraMap v.toValuationSubring F π = (π : F) := rfl rw [hcoe, hcoe'] at hu have hn : v.ord f = n := by rw [hu]; exact v.ord_unit_smul_zpow u hπ n exact ⟨u, by rw [hn, hu]⟩ end Place abbrev Divisor : Type _ := Place K F →₀ ℤ namespace Divisor variable {K F} def degree : Divisor K F →+ ℤ := Finsupp.liftAddHom fun v => AddMonoidHom.mulRight (v.deg : ℤ) @[simp] theorem degree_single (v : Place K F) (n : ℤ) : degree (Finsupp.single v n) = n * v.deg := by simp [degree] def degZero : AddSubgroup (Divisor K F) := degree.ker theorem mem_degZero {D : Divisor K F} : D ∈ degZero (K := K) (F := F) ↔ degree D = 0 := Iff.rfl def IsPrincipal (D : Divisor K F) : Prop := ∃ f : F, f ≠ 0 ∧ ∀ v : Place K F, D v = v.ord f def principal : AddSubgroup (Divisor K F) where carrier := {D | IsPrincipal D} zero_mem' := ⟨1, one_ne_zero, fun v => by simp⟩ add_mem' := by rintro D E ⟨f, hf, hD⟩ ⟨g, hg, hE⟩ exact ⟨f * g, mul_ne_zero hf hg, fun v => by rw [Finsupp.add_apply, hD v, hE v, v.ord_mul hf hg]⟩ neg_mem' := by rintro D ⟨f, hf, hD⟩ exact ⟨f⁻¹, inv_ne_zero hf, fun v => by rw [Finsupp.neg_apply, hD v, v.ord_inv]⟩ theorem mem_principal {D : Divisor K F} : D ∈ principal (K := K) (F := F) ↔ IsPrincipal D := Iff.rfl end Divisor class HasPrincipalDivisors : Prop where exists_divisor : ∀ f : F, f ≠ 0 → ∃ D : Divisor K F, (∀ v : Place K F, D v = v.ord f) ∧ Divisor.degree D = 0 abbrev Pic : Type _ := Divisor K F ⧸ Divisor.principal (K := K) (F := F) abbrev Pic0 : Type _ := Divisor.degZero (K := K) (F := F) ⧸ (Divisor.principal (K := K) (F := F)).addSubgroupOf (Divisor.degZero (K := K) (F := F)) namespace Pic0 variable {K F} def mk (D : Divisor.degZero (K := K) (F := F)) : Pic0 K F := QuotientAddGroup.mk D theorem mk_surjective : Function.Surjective (mk (K := K) (F := F)) := QuotientAddGroup.mk_surjective @[simp] theorem mk_add (D E : Divisor.degZero (K := K) (F := F)) : mk (D + E) = mk D + mk E := rfl @[simp] theorem mk_zero : mk (0 : Divisor.degZero (K := K) (F := F)) = 0 := rfl variable (K F) in def torsion (n : ℕ) : AddSubgroup (Pic0 K F) := (Submodule.torsionBy ℤ (Pic0 K F) (n : ℤ)).toAddSubgroup theorem mem_torsion {n : ℕ} {x : Pic0 K F} : x ∈ torsion K F n ↔ (n : ℤ) • x = 0 := Submodule.mem_torsionBy_iff _ _ end Pic0 def AbelJacobiCard (p : ℕ) (g : ℕ) : Prop := ∀ n : ℕ, Nat.card (Pic0.torsion K F (p ^ n)) = p ^ (2 * g * n) namespace Place open scoped Pointwise variable {K F} variable (σ : F ≃ₐ[K] F) def smulRingEquiv (A : ValuationSubring F) : A ≃+* (σ • A : ValuationSubring F) where toFun x := ⟨σ x, by simpa [AlgEquiv.smul_def] using ValuationSubring.smul_mem_pointwise_smul σ (x : F) A x.2⟩ invFun y := ⟨σ.symm y, by have := (ValuationSubring.mem_pointwise_smul_iff_inv_smul_mem (g := σ) (S := A) (x := (y : F))).mp y.2 simpa [AlgEquiv.smul_def, AlgEquiv.aut_inv] using this⟩ left_inv x := by ext; simp right_inv y := by ext; simp map_mul' x y := by ext; simp map_add' x y := by ext; simp @[simp] theorem coe_smulRingEquiv_apply (A : ValuationSubring F) (x : A) : ((smulRingEquiv σ A x : (σ • A : ValuationSubring F)) : F) = σ x := rfl theorem _root_.ValuationSubring.pointwise_smul_top : σ • (⊤ : ValuationSubring F) = ⊤ := by ext x simp only [ValuationSubring.mem_pointwise_smul_iff_inv_smul_mem] exact ⟨fun _ => ValuationSubring.mem_top x, fun _ => ValuationSubring.mem_top _⟩ instance : SMul (F ≃ₐ[K] F) (Place K F) where smul σ v := { toValuationSubring := σ • v.toValuationSubring algebraMap_mem' := fun a => by have h := ValuationSubring.smul_mem_pointwise_smul σ (algebraMap K F a) v.toValuationSubring (v.algebraMap_mem' a) rwa [AlgEquiv.smul_def, σ.commutes] at h ne_top' := fun h => v.ne_top' <| by have := congrArg (σ⁻¹ • ·) h simpa [ValuationSubring.pointwise_smul_top] using this isPrincipalIdealRing' := IsPrincipalIdealRing.of_surjective (smulRingEquiv σ v.toValuationSubring : _ ≃+* _) (smulRingEquiv σ v.toValuationSubring).surjective } variable (v : Place K F) @[simp] theorem smul_toValuationSubring : (σ • v).toValuationSubring = σ • v.toValuationSubring := rfl instance : MulAction (F ≃ₐ[K] F) (Place K F) where one_smul v := by ext1 rw [smul_toValuationSubring, one_smul] mul_smul σ τ v := by ext1 simp only [smul_toValuationSubring] rw [mul_smul] theorem ord_smul (f : F) : (σ • v).ord (σ f) = v.ord f := by rcases eq_or_ne f 0 with rfl | hf · simp obtain ⟨π, hπ⟩ := IsDiscreteValuationRing.exists_irreducible v.toValuationSubring obtain ⟨u, hu⟩ := v.exists_unit_mul_zpow hf hπ set n := v.ord f with hn set e := smulRingEquiv σ v.toValuationSubring with he have hπ' : Irreducible (e π) := (MulEquiv.irreducible_iff e).mpr hπ have hu' : IsUnit (e (u : v.toValuationSubring)) := u.isUnit.map e have hcoeu : ((hu'.unit : (σ • v).toValuationSubring) : F) = σ ((u : v.toValuationSubring) : F) := by rw [IsUnit.unit_spec] rfl have hcoeπ : ((e π : (σ • v).toValuationSubring) : F) = σ (π : F) := rfl have key : σ f = ((hu'.unit : (σ • v).toValuationSubring) : F) * (((e π : (σ • v).toValuationSubring) : F) ^ n) := by rw [hcoeu, hcoeπ, hu, map_mul, map_zpow₀] rw [key, (σ • v).ord_unit_smul_zpow hu'.unit hπ' n] def smulResidueAlgEquiv : v.ResidueField ≃ₐ[K] (σ • v).ResidueField := AlgEquiv.ofRingEquiv (f := IsLocalRing.ResidueField.mapEquiv (smulRingEquiv σ v.toValuationSubring)) <| fun a => by have h3 : (smulRingEquiv σ v.toValuationSubring) (algebraMap K v.toValuationSubring a) = algebraMap K (σ • v).toValuationSubring a := by ext rw [coe_smulRingEquiv_apply, coe_algebraMap, σ.commutes] rfl show IsLocalRing.ResidueField.mapEquiv _ (IsLocalRing.residue _ _) = IsLocalRing.residue _ _ rw [IsLocalRing.ResidueField.mapEquiv_apply, IsLocalRing.ResidueField.map_residue] exact congrArg _ h3 @[simp] theorem deg_smul : (σ • v).deg = v.deg := ((smulResidueAlgEquiv σ v).toLinearEquiv.finrank_eq).symm end Place namespace Divisor open scoped Pointwise variable {K F} instance : DistribMulAction (F ≃ₐ[K] F) (Divisor K F) := Finsupp.comapDistribMulAction theorem smul_def (σ : F ≃ₐ[K] F) (D : Divisor K F) : σ • D = Finsupp.mapDomain (σ • ·) D := rfl @[simp] theorem smul_single (σ : F ≃ₐ[K] F) (v : Place K F) (n : ℤ) : σ • Finsupp.single v n = Finsupp.single (σ • v) n := by rw [smul_def, Finsupp.mapDomain_single] theorem smul_apply_smul (σ : F ≃ₐ[K] F) (D : Divisor K F) (v : Place K F) : (σ • D) (σ • v) = D v := by rw [smul_def] exact Finsupp.mapDomain_apply (MulAction.injective σ) D v theorem smul_apply (σ : F ≃ₐ[K] F) (D : Divisor K F) (w : Place K F) : (σ • D) w = D (σ⁻¹ • w) := by have : (σ • D) (σ • (σ⁻¹ • w)) = D (σ⁻¹ • w) := smul_apply_smul σ D (σ⁻¹ • w) rwa [smul_inv_smul] at this @[simp] theorem degree_smul (σ : F ≃ₐ[K] F) (D : Divisor K F) : degree (σ • D) = degree D := by induction D using Finsupp.induction with | zero => simp | single_add v n D _ _ ih => rw [smul_add, map_add, map_add, ih, smul_single, degree_single, degree_single, Place.deg_smul] theorem smul_mem_degZero (σ : F ≃ₐ[K] F) {D : Divisor K F} (hD : D ∈ degZero (K := K) (F := F)) : σ • D ∈ degZero (K := K) (F := F) := by rwa [mem_degZero, degree_smul] theorem smul_mem_principal (σ : F ≃ₐ[K] F) {D : Divisor K F} (hD : D ∈ principal (K := K) (F := F)) : σ • D ∈ principal (K := K) (F := F) := by obtain ⟨f, hf, hD⟩ := hD refine ⟨σ f, by simpa using hf, fun w => ?_⟩ rw [smul_apply, hD (σ⁻¹ • w)] have h := Place.ord_smul σ (σ⁻¹ • w) f rw [smul_inv_smul] at h exact h.symm end Divisor namespace Pic0 open scoped Pointwise variable {K F} def degZeroSMulHom (σ : F ≃ₐ[K] F) : Divisor.degZero (K := K) (F := F) →+ Divisor.degZero (K := K) (F := F) := ((DistribSMul.toAddMonoidHom (Divisor K F) σ).domRestrict (Divisor.degZero (K := K) (F := F))).codRestrict _ (fun D => Divisor.smul_mem_degZero σ D.2) @[simp] theorem coe_degZeroSMulHom (σ : F ≃ₐ[K] F) (D : Divisor.degZero (K := K) (F := F)) : (degZeroSMulHom σ D : Divisor K F) = σ • (D : Divisor K F) := rfl instance : SMul (F ≃ₐ[K] F) (Pic0 K F) where smul σ := QuotientAddGroup.map _ _ (degZeroSMulHom σ) (by rintro ⟨D, hD0⟩ hD simp only [AddSubgroup.mem_addSubgroupOf] at hD ⊢ exact Divisor.smul_mem_principal σ hD) theorem smul_mk (σ : F ≃ₐ[K] F) (D : Divisor.degZero (K := K) (F := F)) : σ • (mk D) = mk (degZeroSMulHom σ D) := rfl instance : DistribMulAction (F ≃ₐ[K] F) (Pic0 K F) where one_smul x := by obtain ⟨D, rfl⟩ := mk_surjective x rw [smul_mk] exact congrArg mk (Subtype.ext (by rw [coe_degZeroSMulHom, one_smul])) mul_smul σ τ x := by obtain ⟨D, rfl⟩ := mk_surjective x rw [smul_mk, smul_mk, smul_mk] exact congrArg mk (Subtype.ext (by simp only [coe_degZeroSMulHom]; rw [mul_smul])) smul_zero σ := by show σ • mk 0 = mk 0 rw [smul_mk] exact congrArg mk (map_zero _) smul_add σ x y := by obtain ⟨D, rfl⟩ := mk_surjective x obtain ⟨E, rfl⟩ := mk_surjective y show σ • mk (D + E) = mk (degZeroSMulHom σ D) + mk (degZeroSMulHom σ E) rw [smul_mk] exact congrArg mk (map_add _ _ _) end Pic0 namespace Place variable {K F} variable {R : Type*} [CommRing R] [IsDedekindDomain R] [Algebra R F] [IsFractionRing R F] open IsDedekindDomain.HeightOneSpectrum in theorem isPrincipalIdealRing_valuationSubring (w : HeightOneSpectrum R) : IsPrincipalIdealRing ((w.valuation F).valuationSubring) := by rw [show (w.valuation F).valuationSubring = valuationSubringAtPrime F w from (valuationSubringAtPrime_eq_valuationSubring (K := F) w).symm] infer_instance open IsDedekindDomain.HeightOneSpectrum in def ofHeightOneSpectrum [Algebra K R] [IsScalarTower K R F] (w : HeightOneSpectrum R) : Place K F where toValuationSubring := (w.valuation F).valuationSubring algebraMap_mem' := fun a => by rw [Valuation.mem_valuationSubring_iff, IsScalarTower.algebraMap_apply K R F] exact w.valuation_le_one (algebraMap K R a) ne_top' := by simp only [ne_eq, Valuation.valuationSubring_eq_top_iff, not_not] infer_instance isPrincipalIdealRing' := isPrincipalIdealRing_valuationSubring w @[simp] theorem ofHeightOneSpectrum_toValuationSubring [Algebra K R] [IsScalarTower K R F] (w : HeightOneSpectrum R) : (ofHeightOneSpectrum (K := K) w).toValuationSubring = (w.valuation F).valuationSubring := rfl end Place end AlgebraicCurve
Statements phrased using this module (660)
- Principal divisors on a Weierstrass curve have degree zero
WeierstrassCurve.Affine.hasPrincipalDivisors_functionField25 below · depth 8 - Descent of n-divisibility of divisor classes along constant-field extension
AlgebraicCurve.Divisor.exists_natCast_dvd_ord_sub_of_constantFieldExtension123 below · depth 9 - Places over an algebraically closed field have degree one
AlgebraicCurve.Place.deg_eq_one_of_isAlgClosed0 below · depth 9 - Unique unramified place above P in a constant-field extension
AlgebraicCurve.Place.exists_comap_algebraMap_eq_of_constantFieldExtension2 below · depth 9 - Valuation ring membership iff non-negative order
AlgebraicCurve.Place.mem_iff_ord_nonneg0 below · depth 9 - Order at a place computed by any valuation with the same ring
AlgebraicCurve.Place.ord_eq_neg_log_of_valuationSubring_eq1 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 - Places of K(j,j_N) have nonzero degree
ModularCurve.deg_ne_zero_modularFunctionFieldC86 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 - Order of a divisor class divides m when mD is principal
AlgebraicCurve.Pic0.addOrderOf_mk_dvd_of_isPrincipal4 below · depth 10 - Torsion of Pic⁰ over a locally finite constant field
AlgebraicCurve.Pic0.exists_nsmul_eq_zero_of_charP_of_forall_pow_eq_self57 below · depth 10 - Principality of degree-zero divisors transports along base-compatible isomorphisms
AlgebraicCurve.Pic0.forall_isPrincipal_of_ringEquiv0 below · depth 10 - A class in Pic⁰ vanishes iff the divisor is principal
AlgebraicCurve.Pic0.mk_eq_zero_iff0 below · depth 10 - Principality of all degree-zero divisors makes Pic⁰ trivial
AlgebraicCurve.Pic0.subsingleton_of_forall_isPrincipal0 below · depth 10 - Torsion criterion in Pic⁰: mD principal kills m[D]
AlgebraicCurve.Pic0.zsmul_mk_eq_zero_of_isPrincipal2 below · depth 10 - Degree one places: residue field generated by constants
AlgebraicCurve.Place.deg_eq_one_iff_surjective_algebraMap_residueField0 below · depth 10 - A place centred at an affine point is the point's place
AlgebraicCurve.Place.eq_ofHeightOneSpectrum_of_XClass_mem_nonunits_of_YClass_mem_nonunits1 below · depth 10 - Prescribed orders at finitely many places
AlgebraicCurve.Place.exists_forall_ord_eq0 below · depth 10 - Every place admits an element of positive order
AlgebraicCurve.Place.exists_ord_pos0 below · depth 10 - Pullback of a valuation subring along φ gives a place
AlgebraicCurve.Place.exists_toValuationSubring_eq_comap_ringHom0 below · depth 10 - Equivalence with v's adic valuation from equal valuation rings
AlgebraicCurve.Place.isEquiv_adicValuation_of_valuationSubring_eq0 below · depth 10 - Nonnegative order implies membership in the valuation ring
AlgebraicCurve.Place.mem_of_ord_nonneg0 below · depth 10 - Functions with order zero at every place are constant
AlgebraicCurve.Place.mem_range_algebraMap_of_forall_ord_eq_zero_of_isAlgClosed11 below · depth 10 - Valuation subrings containing j are integrally closed over K[j]
AlgebraicCurve.Place.mem_toValuationSubring_of_isIntegral_adjoin0 below · depth 10 - Order zero at a place iff adic valuation one
AlgebraicCurve.Place.ord_eq_zero_iff_adicValuation_eq_one0 below · depth 10 - Integral with integral inverse over K[j] implies order zero
AlgebraicCurve.Place.ord_eq_zero_of_isIntegral_adjoin1 below · depth 10 - Elements of a place's valuation ring have nonnegative order
AlgebraicCurve.Place.ord_nonneg_of_mem0 below · depth 10 - Order at a place is invariant under nonzero constants
AlgebraicCurve.Place.ord_smul_of_ne_zero0 below · depth 10 - Places of K(t) have nonzero degree
AlgebraicCurve.RationalFunctionField.deg_ne_zero10 below · depth 10 - Divisors of rational functions on P¹ have degree zero
AlgebraicCurve.RationalFunctionField.degree_eq_zero_of_forall_eq_ord20 below · depth 10 - Finite-dimensionality of L(0) when the constants are K
AlgebraicCurve.RationalFunctionField.finiteDimensional_lSpace_zero_of_constantsAreBase23 below · depth 10 - A nonzero rational function has finitely many zeros and poles
AlgebraicCurve.RationalFunctionField.finite_setOf_ord_ne_zero0 below · depth 10 - Principal divisors on the rational function field
AlgebraicCurve.RationalFunctionField.hasPrincipalDivisors21 below · depth 10 - At most one place of K(t)/K is not finite
AlgebraicCurve.RationalFunctionField.subsingleton_setOf_forall_ne_ofHeightOneSpectrum0 below · depth 10 - Vanishing of ℓ(D) when deg D<0
AlgebraicCurve.ell_eq_zero_of_degree_neg0 below · depth 10 - Riemann's index theorem for curves over a perfect field
AlgebraicCurve.exists_genus_riemannIndex_of_isCurveOver26 below · depth 10 - Finite-dimensionality of all L(D) from that of L(0)
AlgebraicCurve.finiteDimensional_lSpace0 below · depth 10 - Riemann–Roch from the residue theorem, K algebraically closed
AlgebraicCurve.functionFieldRiemannRoch_of_residueTheoremK_of_isAlgClosed0 below · depth 10 - Powers of a transcendental element are linearly independent
AlgebraicCurve.linearIndependent_pow_of_transcendental23 below · depth 10 - Residue theorem over an algebraically closed base field
AlgebraicCurve.residueTheoremK_of_isAlgClosed6 below · depth 10 - All places of ℚ̄· F_M have degree one
ModularCurve.deg_eq_one_modularFunctionFieldBar143 below · depth 10 - Principal divisors on the level-N modular function field
ModularCurve.hasPrincipalDivisors_modularFunctionFieldC_of_perfectField112 below · depth 10 - Zeros of jmath̄-j₀ on X₀(N) total ψ(N)
ModularCurve.sum_ord_jBar_sub_eq_dedekindPsi144 below · depth 10 - Galois action on pⁿ-torsion of J₀(M) factors through a finite level
W54.jZeroPPowTorsion_factorsThroughFiniteLevel463 below · depth 10 - Degree of a divisor as a sum over its support
AlgebraicCurve.Divisor.degree_eq_sum_support0 below · depth 11 - Every divisor descends to a finite constant field
AlgebraicCurve.Divisor.exists_finite_constantField_form_pullbackConstants_eq50 below · depth 11 - Divisibility of Pic⁰ of a curve over an algebraically closed field
AlgebraicCurve.Pic0.exists_nsmul_eq260 below · depth 11 - Finiteness of Pic⁰ over a finite constant field
AlgebraicCurve.Pic0.finite_of_finite27 below · depth 11 - p-torsion of Pic⁰ has order p^{2g}
AlgebraicCurve.Pic0.natCard_torsion_prime_eq_pow_genus242 below · depth 11 - Natural-number form: mD principal implies m[D]=0
AlgebraicCurve.Pic0.nsmul_mk_eq_zero_of_isPrincipal3 below · depth 11 - Integer multiples commute with passage to divisor classes
AlgebraicCurve.Pic0.zsmul_mk0 below · depth 11 - Places extend along finite separable extensions
AlgebraicCurve.Place.exists_comap_eq_toValuationSubring0 below · depth 11 - Discrete order functions trivial on K come from places
AlgebraicCurve.Place.exists_of_orderMap0 below · depth 11 - Ramification index: ord_w = ecdotordᵥ on F
AlgebraicCurve.Place.exists_ord_algebraMap_eq_mul_ord0 below · depth 11 - Existence of a uniformiser at a place
AlgebraicCurve.Place.exists_ord_eq_one0 below · depth 11 - Hahn-series embedding with bounded ramification yields a place
AlgebraicCurve.Place.exists_ord_mul_eq_order_of_hasRamBound0 below · depth 11 - Restriction of a place along an integral extension
AlgebraicCurve.Place.exists_toValuationSubring_eq_comap0 below · depth 11 - Maximal ideal of a place in terms of ordᵥ
AlgebraicCurve.Place.mk_mem_maximalIdeal_iff0 below · depth 11 - Strict ultrametric equality: ord(f+g)=ord f
AlgebraicCurve.Place.ord_add_eq_of_lt0 below · depth 11 - Constants have order of vanishing zero at every place
AlgebraicCurve.Place.ord_algebraMap0 below · depth 11 - Bounded Puiseux denominators bound ramification over a closed point
AlgebraicCurve.Place.ord_dvd_of_forall_hahnSeries_embedding_hasRamBound25 below · depth 11 - Unramifiedness from integral Puiseux exponents at a simple root
AlgebraicCurve.Place.ord_eq_one_of_forall_hahnSeries_embedding_hasRamBound_one25 below · depth 11 - Natural-number constants have order zero at a place
AlgebraicCurve.Place.ord_natCast1 below · depth 11 - Invariance of ordᵥ under negation
AlgebraicCurve.Place.ord_neg1 below · depth 11 - Nonzero order at a place forces transcendence
AlgebraicCurve.Place.transcendental_of_ord_ne_zero0 below · depth 11 - The place at infinity of K(t) has degree one
AlgebraicCurve.RationalFunctionField.deg_eq_one_of_forall_ne_ofHeightOneSpectrum6 below · depth 11 - Degree of a finite place of K(t) equals deg p
AlgebraicCurve.RationalFunctionField.deg_ofHeightOneSpectrum3 below · depth 11 - Divisors cut out by a polynomial have degree zero
AlgebraicCurve.RationalFunctionField.degree_eq_zero_of_forall_eq_ord_algebraMap18 below · depth 11 - Existence of a place of K(t)/K that is not a finite place
AlgebraicCurve.RationalFunctionField.exists_forall_ne_ofHeightOneSpectrum0 below · depth 11 - Degree-zero divisors on P¹ are principal
AlgebraicCurve.RationalFunctionField.isPrincipal_of_degree_eq_zero18 below · depth 11 - At the infinite place of K(X), ord = -deg
AlgebraicCurve.RationalFunctionField.ord_eq_neg_intDegree_of_forall_ne_ofHeightOneSpectrum6 below · depth 11 - Existence of the genus for separable extensions of K(X)
AlgebraicCurve.RationalFunctionField.stichtenothGenusExists23 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 - Adelic Riemann–Roch from existence of the Stichtenoth genus
AlgebraicCurve.exists_genus_riemannIndex_of_stichtenothGenusExists0 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 - Uniqueness of the place with ̃ j polar and ̃ jₚ̃ j⁻ᵖ vanishing
ModularCurve.cuspChartInftyZero_place_unique106 below · depth 11 - Uniqueness of the place where jmath̃ jmath̃ₚ⁻ᵖ vanishes
ModularCurve.cuspChartZeroInfty_place_unique98 below · depth 11 - Normalised Hahn-series embeddings induce places of F_N
ModularCurve.exists_place_of_emb97 below · depth 11 - Normalised Hahn-series embeddings at a place above j₀
ModularCurve.natCard_normalized_algHom_jBar_eq_toNat_ord151 below · depth 11 - A Hahn-series embedding induces at most one place
ModularCurve.place_eq_of_induces0 below · depth 11 - Finite-level Galois triviality transfers to the p-adic Tate module
W54.tateModule_adicContinuity0 below · depth 11 - Eichler–Shimura relation on the Tate module of J₀(M)
W54.tateModule_frobeniusQuadratic0 below · depth 11 - Unramifiedness passes from p-power torsion to the Tate module
W54.tateModule_unramified0 below · depth 11 - Degree of the pole divisor of x equals [F:K(x)]
AlgebraicCurve.Divisor.degree_eq_finrank_adjoin_of_eq_max_neg_ord13 below · depth 12 - Degree of a divisor as a sum over its support
AlgebraicCurve.Divisor.degree_eq_sum0 below · depth 12 - Invariance of Pic⁰ torsion under constant field extension
AlgebraicCurve.Pic0.natCard_torsion_eq_of_constantFieldExtension82 below · depth 12 - Order of p-torsion in Pic⁰ over ℂ
AlgebraicCurve.Pic0.natCard_torsion_prime_eq_pow_genus_complex213 below · depth 12 - Places with finite residue field over an algebraically closed base have degree one
AlgebraicCurve.Place.deg_eq_one_of_isAlgClosed_of_finite0 below · depth 12 - Places of a constant-field extension centred at K-embeddings
AlgebraicCurve.Place.existsUnique_valuation_sub_lt_one_of_constantFieldExtension53 below · depth 12 - Degree-one places arise from embeddings into K((T))
AlgebraicCurve.Place.exists_algHom_laurentSeries_order_eq_ord0 below · depth 12 - Unique place above P in a constant field extension
AlgebraicCurve.Place.exists_comap_algebraMap_eq_of_constantFieldExtension_of_isAlgClosed7 below · depth 12 - Finitely many places descend to a finite constant field
AlgebraicCurve.Place.exists_finite_constantField_form_fiberConstants_eq_singleton49 below · depth 12 - Divisibility of [P-Q] modulo n on a curve
AlgebraicCurve.Place.exists_natCast_dvd_ord_sub_single_sub_single259 below · depth 12 - Finitely many places of each degree over a finite field
AlgebraicCurve.Place.finite_setOf_deg_eq2 below · depth 12 - The w-adic valuation is equivalent to its place's valuation
AlgebraicCurve.Place.isEquiv_adicValuation_ofHeightOneSpectrum0 below · depth 12 - Membership in a place's valuation ring via v≤ 1
AlgebraicCurve.Place.mem_iff_adicValuation_le_one0 below · depth 12 - Maximal ideal of a place: v-valuation <1
AlgebraicCurve.Place.mem_maximalIdeal_iff_adicValuation_lt_one0 below · depth 12 - A function with no zeros or poles is constant
AlgebraicCurve.Place.mem_range_algebraMap_of_forall_ord_eq_zero11 below · depth 12 - Ultrametric inequality for ord at a place
AlgebraicCurve.Place.min_ord_le_ord_add0 below · depth 12 - Regularity of g dJ from ord(g⁶J⁴(J-1728)³)≥ 0
AlgebraicCurve.Place.ordDiff_smul_D_nonneg_of_ord_pow_six_mul_pow_four_mul_sub_1728_pow_three_nonneg20 below · depth 12 - Puiseux bound d forces ord_W(p)∣ d
AlgebraicCurve.Place.ord_dvd_of_hahnSeries_embedding_of_isGalois18 below · depth 12 - Pole orders forced by the modular polynomial's support
AlgebraicCurve.Place.ord_eq_mul_or_eq_mul_of_modular_support0 below · depth 12 - Laurent embedding over a simple root forces ord_W p = 1
AlgebraicCurve.Place.ord_eq_one_of_hahnSeries_embedding_of_isGalois18 below · depth 12 - Nonnegative order propagates to elements integral over K[j]
AlgebraicCurve.Place.ord_nonneg_of_isIntegral_adjoin_of_ord_nonneg3 below · depth 12 - Order at the place of w is nonzero exactly on w
AlgebraicCurve.Place.ord_ofHeightOneSpectrum_ne_zero_iff0 below · depth 12 - Unramifiedness of degree-p Kummer covers at rational places
AlgebraicCurve.Place.ramificationIndex_eq_one_of_forall_dvd_ord7 below · depth 12 - A generator of a height-one prime of K[X] has order 1
AlgebraicCurve.RationalFunctionField.ord_ofHeightOneSpectrum_of_span3 below · depth 12 - Places of K(t)/K other than the finite ones lie at infinity
AlgebraicCurve.RationalFunctionField.toValuationSubring_eq_of_forall_ne_ofHeightOneSpectrum3 below · depth 12 - deg D-ℓ(D) is constant above a genus-realising divisor
AlgebraicCurve.RiemannGenusReachedAt.eq_of_ge0 below · depth 12 - Degree of the pole divisor of x equals [F:K(x)]
AlgebraicCurve.degree_poleDivisor_eq_finrank_adjoin_of_isAlgClosed_of_transcendental61 below · depth 12 - Descent to a countable algebraically closed field of constants
AlgebraicCurve.exists_constantFieldDescent43 below · depth 12 - Horizontal lift of a constant derivation to a constant field extension
AlgebraicCurve.exists_derivation_constantFieldExtension_map_mem61 below · depth 12 - Eventual exactness of ℓ(N· D) for the pole divisor of x
AlgebraicCurve.exists_ell_nsmul_eq_of_isAlgClosed_of_transcendental66 below · depth 12 - Vanishing index of specialty for a lifted divisor
AlgebraicCurve.exists_indexOfSpecialty_mapDomain_eq_zero_of_constantFieldExtension_of_isAlgClosed40 below · depth 12 - Existence of the pole divisor of a transcendental element
AlgebraicCurve.exists_poleDivisor_of_transcendental43 below · depth 12 - Genus invariance under algebraically closed constant field extension
AlgebraicCurve.genus_eq_of_constantFieldExtension_of_isAlgClosed9 below · depth 12 - Index of specialty equals dim_K H¹(D)
AlgebraicCurve.indexOfSpecialty_eq_finrank_H10 below · depth 12 - Index of specialty at an attained Riemann genus
AlgebraicCurve.indexOfSpecialty_eq_of_genusReached0 below · depth 12 - Index of specialty vanishes at a genus-realising divisor
AlgebraicCurve.indexOfSpecialty_eq_zero_of_genusReached0 below · depth 12 - 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 - L(D)· L(E)⊆ L(D+E)
AlgebraicCurve.mul_mem_lSpace_add0 below · depth 12 - Residue theorem for curves over an algebraically closed field
AlgebraicCurve.residueTheorem_of_isAlgClosed8 below · depth 12 - Existence of the Stichtenoth genus for a curve over a perfect field
AlgebraicCurve.stichtenothGenusExists_of_isCurveOver25 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 - Existence and uniqueness of the value homomorphism at a place
ModularCurve.CharPModel.exists_unique_valueHom0 below · depth 12 - Finiteness of the zero locus of jmath̄ - j₀
ModularCurve.exists_finset_ord_jBar_sub_pos144 below · depth 12 - Divisibility of Pic⁰ of the reduced level-N modular function field
ModularCurve.exists_nsmul_eq_pic0_modularFunctionFieldC_residueField916 below · depth 12 - Normalised Hahn-series embeddings inducing a place above j₀
ModularCurve.natCard_normalized_algHom_hahnSeries_jBar_sub_eq_toNat_ord0 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 - Order bound at a cusp for the coefficient of ω_f = y dj
ModularCurve.one_sub_ord_le_ord_of_coeffMap_mul_thetaL_eq_qExpansion98 below · depth 12 - Places of a Weierstrass function field over ̄ F have degree one
WeierstrassCurve.Affine.deg_ofHeightOneSpectrum_eq_one0 below · depth 12 - Unique degree-one place at infinity of a Weierstrass function field
WeierstrassCurve.Affine.exists_infinitePlace_deg_eq_one2 below · depth 12 - Principal divisors have degree zero on an elliptic curve
WeierstrassCurve.Affine.hasPrincipalDivisors_of_isAlgClosed9 below · depth 12 - A function field with a smooth proper model has infinitely many places
AlgebraicCurve.CurveModel.infinite_place39 below · depth 13 - Pole divisor degree at most [F:K(x)]
AlgebraicCurve.Divisor.degree_le_finrank_adjoin_of_eq_max_neg_ord3 below · depth 13 - Descent of n-torsion divisor classes under constant field extension
AlgebraicCurve.Divisor.exists_torsion_descent_of_constantFieldExtension81 below · depth 13 - Descent of n-torsion divisor classes along constant field extensions
AlgebraicCurve.Divisor.exists_torsion_descent_of_constantFieldExtension_of_finite51 below · depth 13 - Lower bound [F:K(x)] ≤ deg of the pole divisor
AlgebraicCurve.Divisor.finrank_adjoin_le_degree_of_eq_max_neg_ord10 below · depth 13 - Principal divisors descend along a constant-field extension
AlgebraicCurve.Divisor.isPrincipal_of_constantFieldExtension17 below · depth 13
… and 510 more statements (search for the module name to find them).