Documentation

LeanPool.FLTEichlerShimura.Definitions.Def_AlgebraicCurve_DivisorClassGroup

Places, divisors and the divisor class group of F/K #

Definition: AlgebraicCurve_DivisorClassGroup (10001017-d65a-5012-a2fd-602421b3ec65), by Claude, 2026-09-05.

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.

<!-- Generated by add_prove2me_provenance.py -->

structure AlgebraicCurve.Place (K : Type u_1) (F : Type u_2) [Field K] [Field F] [Algebra K F] :
Type u_2

A discrete valuation ring in F, containing the constants K, represented by its valuation subring.

Instances For
    theorem AlgebraicCurve.Place.ext {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] {v w : Place K F} (h : v.toValuationSubring = w.toValuationSubring) :
    v = w
    theorem AlgebraicCurve.Place.ext_iff {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] {v w : Place K F} :
    @[simp]
    theorem AlgebraicCurve.Place.coe_algebraMap {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) (a : K) :
    ↑((algebraMap K ↥v.toValuationSubring) a) = (algebraMap K F) a
    @[reducible, inline]
    abbrev AlgebraicCurve.Place.ResidueField {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) :
    Type u_2

    The residue field of the valuation ring at a place.

    Equations
    Instances For
      noncomputable def AlgebraicCurve.Place.deg {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) :

      The residue field degree over the constants, with finrank's value zero for infinite degree.

      Equations
      Instances For
        class AlgebraicCurve.Place.FiniteResidue {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) :

        The residue field at this place is finite-dimensional over the constants.

        Instances

          The maximal ideal of the valuation ring, viewed as a height-one prime.

          Equations
          Instances For
            noncomputable def AlgebraicCurve.Place.adicValuation {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) :

            The multiplicative integer-valued valuation associated to the place.

            Equations
            Instances For
              theorem AlgebraicCurve.Place.adicValuation_ne_zero {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) {f : F} (hf : f ≠ 0) :
              theorem AlgebraicCurve.Place.adicValuation_coe_eq_one_iff {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) (a : ↥v.toValuationSubring) :
              theorem AlgebraicCurve.Place.adicValuation_coe_irreducible {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) {π : ↥v.toValuationSubring} (hπ : Irreducible π) :
              noncomputable def AlgebraicCurve.Place.ord {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) (f : F) :

              The order at the place, with the convention ord 0 = 0.

              Equations
              Instances For
                @[simp]
                theorem AlgebraicCurve.Place.ord_zero {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) :
                v.ord 0 = 0
                @[simp]
                theorem AlgebraicCurve.Place.ord_one {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) :
                v.ord 1 = 0
                theorem AlgebraicCurve.Place.ord_mul {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) {f g : F} (hf : f ≠ 0) (hg : g ≠ 0) :
                v.ord (f * g) = v.ord f + v.ord g
                theorem AlgebraicCurve.Place.ord_inv {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) (f : F) :
                v.ord f⁻¹ = -v.ord f
                theorem AlgebraicCurve.Place.ord_coe_unit {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) (u : (↥v.toValuationSubring)ˣ) :
                v.ord ↑↑u = 0
                theorem AlgebraicCurve.Place.ord_coe_irreducible {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) {π : ↥v.toValuationSubring} (hπ : Irreducible π) :
                v.ord ↑π = 1
                theorem AlgebraicCurve.Place.ord_zpow {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) (f : F) (n : ℤ) :
                v.ord (f ^ n) = n * v.ord f
                theorem AlgebraicCurve.Place.ord_unit_smul_zpow {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) (u : (↥v.toValuationSubring)ˣ) {π : ↥v.toValuationSubring} (hπ : Irreducible π) (n : ℤ) :
                v.ord (↑↑u * ↑π ^ n) = n
                theorem AlgebraicCurve.Place.exists_unit_mul_zpow {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) {f : F} (hf : f ≠ 0) {π : ↥v.toValuationSubring} (hπ : Irreducible π) :
                ∃ (u : (↥v.toValuationSubring)ˣ), f = ↑↑u * ↑π ^ v.ord f
                @[reducible, inline]
                abbrev AlgebraicCurve.Divisor (K : Type u_1) (F : Type u_2) [Field K] [Field F] [Algebra K F] :
                Type u_2

                A finitely supported integer-valued function on the places of F over K.

                Equations
                Instances For
                  noncomputable def AlgebraicCurve.Divisor.degree {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] :

                  The degree homomorphism, weighting each coefficient by the residue field degree.

                  Equations
                  Instances For
                    @[simp]
                    theorem AlgebraicCurve.Divisor.degree_single {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) (n : ℤ) :
                    degree (Finsupp.single v n) = n * ↑v.deg
                    noncomputable def AlgebraicCurve.Divisor.degZero {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] :

                    The subgroup of divisors of degree zero.

                    Equations
                    Instances For
                      theorem AlgebraicCurve.Divisor.mem_degZero {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] {D : Divisor K F} :
                      def AlgebraicCurve.Divisor.IsPrincipal {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (D : Divisor K F) :

                      A divisor is principal if its coefficients are the orders of a nonzero function.

                      Equations
                      Instances For
                        def AlgebraicCurve.Divisor.principal {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] :

                        The subgroup of principal divisors.

                        Equations
                        Instances For
                          theorem AlgebraicCurve.Divisor.mem_principal {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] {D : Divisor K F} :
                          class AlgebraicCurve.HasPrincipalDivisors (K : Type u_1) (F : Type u_2) [Field K] [Field F] [Algebra K F] :

                          Every nonzero function has a finitely supported divisor of degree zero.

                          Instances
                            @[reducible, inline]
                            abbrev AlgebraicCurve.Pic (K : Type u_1) (F : Type u_2) [Field K] [Field F] [Algebra K F] :
                            Type u_2

                            The divisor class group: divisors modulo principal divisors.

                            Equations
                            Instances For
                              @[reducible, inline]
                              abbrev AlgebraicCurve.Pic0 (K : Type u_1) (F : Type u_2) [Field K] [Field F] [Algebra K F] :
                              Type u_2

                              The group of degree-zero divisors modulo principal divisors of degree zero.

                              Equations
                              Instances For
                                noncomputable def AlgebraicCurve.Pic0.mk {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (D : ↥Divisor.degZero) :
                                Pic0 K F

                                The class of a degree-zero divisor in Pic0.

                                Equations
                                Instances For
                                  @[simp]
                                  theorem AlgebraicCurve.Pic0.mk_add {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (D E : ↥Divisor.degZero) :
                                  mk (D + E) = mk D + mk E
                                  @[simp]
                                  theorem AlgebraicCurve.Pic0.mk_zero {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] :
                                  mk 0 = 0
                                  noncomputable def AlgebraicCurve.Pic0.torsion (K : Type u_1) (F : Type u_2) [Field K] [Field F] [Algebra K F] (n : ℕ) :

                                  The subgroup of Pic0 annihilated by multiplication by n.

                                  Equations
                                  Instances For
                                    theorem AlgebraicCurve.Pic0.mem_torsion {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] {n : ℕ} {x : Pic0 K F} :
                                    x ∈ torsion K F n ↔ ↑n • x = 0
                                    def AlgebraicCurve.AbelJacobiCard (K : Type u_1) (F : Type u_2) [Field K] [Field F] [Algebra K F] (p g : ℕ) :

                                    The cardinality formula p ^ (2 * g * n) for the p ^ n-torsion of Pic0.

                                    Equations
                                    Instances For
                                      def AlgebraicCurve.Place.smulRingEquiv {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (σ : Gal(F/K)) (A : ValuationSubring F) :
                                      ↥A ≃+* ↥(σ • A)

                                      The equivalence of valuation rings induced by an automorphism of the function field.

                                      Equations
                                      Instances For
                                        @[simp]
                                        theorem AlgebraicCurve.Place.coe_smulRingEquiv_apply {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (σ : Gal(F/K)) (A : ValuationSubring F) (x : ↥A) :
                                        ↑((smulRingEquiv σ A) x) = σ ↑x
                                        theorem ValuationSubring.pointwise_smul_top {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (σ : Gal(F/K)) :
                                        @[instance_reducible]
                                        instance AlgebraicCurve.Place.instSMulAlgEquiv {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] :
                                        SMul Gal(F/K) (Place K F)
                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        @[simp]
                                        theorem AlgebraicCurve.Place.smul_toValuationSubring {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (σ : Gal(F/K)) (v : Place K F) :
                                        @[instance_reducible]
                                        instance AlgebraicCurve.Place.instMulActionAlgEquiv {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] :
                                        MulAction Gal(F/K) (Place K F)
                                        Equations
                                        theorem AlgebraicCurve.Place.ord_smul {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (σ : Gal(F/K)) (v : Place K F) (f : F) :
                                        (σ • v).ord (σ f) = v.ord f
                                        noncomputable def AlgebraicCurve.Place.smulResidueAlgEquiv {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (σ : Gal(F/K)) (v : Place K F) :

                                        The residue field equivalence induced by an automorphism of the function field.

                                        Equations
                                        Instances For
                                          @[simp]
                                          theorem AlgebraicCurve.Place.deg_smul {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (σ : Gal(F/K)) (v : Place K F) :
                                          (σ • v).deg = v.deg
                                          theorem AlgebraicCurve.Divisor.smul_def {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (σ : Gal(F/K)) (D : Divisor K F) :
                                          σ • D = Finsupp.mapDomain (fun (x : Place K F) => σ • x) D
                                          theorem AlgebraicCurve.Divisor.smul_single {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (σ : Gal(F/K)) (v : Place K F) (n : ℤ) :
                                          theorem AlgebraicCurve.Divisor.smul_apply_smul {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (σ : Gal(F/K)) (D : Divisor K F) (v : Place K F) :
                                          (σ • D) (σ • v) = D v
                                          theorem AlgebraicCurve.Divisor.smul_apply {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (σ : Gal(F/K)) (D : Divisor K F) (w : Place K F) :
                                          (σ • D) w = D (σ⁻¹ • w)
                                          @[simp]
                                          theorem AlgebraicCurve.Divisor.degree_smul {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (σ : Gal(F/K)) (D : Divisor K F) :
                                          degree (σ • D) = degree D
                                          theorem AlgebraicCurve.Divisor.smul_mem_degZero {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (σ : Gal(F/K)) {D : Divisor K F} (hD : D ∈ degZero) :
                                          theorem AlgebraicCurve.Divisor.smul_mem_principal {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (σ : Gal(F/K)) {D : Divisor K F} (hD : D ∈ principal) :
                                          noncomputable def AlgebraicCurve.Pic0.degZeroSMulHom {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (σ : Gal(F/K)) :

                                          The action of function-field automorphisms on degree-zero divisors.

                                          Equations
                                          Instances For
                                            @[simp]
                                            theorem AlgebraicCurve.Pic0.coe_degZeroSMulHom {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (σ : Gal(F/K)) (D : ↥Divisor.degZero) :
                                            ↑((degZeroSMulHom σ) D) = σ • ↑D
                                            @[instance_reducible]
                                            noncomputable instance AlgebraicCurve.Pic0.instSMulAlgEquiv {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] :
                                            SMul Gal(F/K) (Pic0 K F)
                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            theorem AlgebraicCurve.Pic0.smul_mk {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (σ : Gal(F/K)) (D : ↥Divisor.degZero) :
                                            σ • mk D = mk ((degZeroSMulHom σ) D)
                                            @[instance_reducible]
                                            noncomputable instance AlgebraicCurve.Pic0.instDistribMulActionAlgEquiv {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] :
                                            DistribMulAction Gal(F/K) (Pic0 K F)
                                            Equations
                                            noncomputable def AlgebraicCurve.Place.ofHeightOneSpectrum {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] {R : Type u_3} [CommRing R] [IsDedekindDomain R] [Algebra R F] [IsFractionRing R F] [Algebra K R] [IsScalarTower K R F] (w : IsDedekindDomain.HeightOneSpectrum R) :
                                            Place K F

                                            The place determined by a height-one prime of a Dedekind domain in its fraction field.

                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            Instances For