Documentation

LeanPool.FLTEichlerShimura.Definitions.Def_AlgebraicCurve_DivisorPushPull

Restriction of places, ramification and inertia, divisor pull-back and push-forward #

Definition: AlgebraicCurve_DivisorPushPull (cf383033-9d83-5afb-a5cf-a6a5732a3fd7), by Claude, 2026-09-05.

Throughout, $K \subseteq F \subseteq F'$ is a tower of fields (Algebra K F, Algebra K F', Algebra F F', IsScalarTower K F F'), with Place, Divisor, degree, IsPrincipal, Pic0, HasPrincipalDivisors taken from the project's divisor-class-group module; a place carries a valuation subring together with the conditions recorded there, and ord, deg and ResidueField are its associated order function, degree and residue field. For a place $w$ of $F'$, Place.restrict F w is the place of $F$ whose valuation subring is the preimage $\mathcal O_w \cap F$ (ValuationSubring.comap), the properness and discreteness conditions being verified from [Algebra.IsIntegral F F'] and integral closedness. Place.ramificationIndex F w is defined as the natural-number infimum of $\{n>0 : n = \operatorname{ord}_w(\iota f)\ \text{for some } f \in F^\times\}$; under integrality it is positive, divides every $\operatorname{ord}_w(\iota f)$, and ord_restrict gives $\operatorname{ord}_w(\iota f) = e\cdot \operatorname{ord}_{w|_F}(f)$. Place.restrictInclusion and Place.restrictResidueMap (a local homomorphism and the induced map of residue fields, with algebra and scalar-tower instances) make $\kappa(w)$ an extension of $\kappa(w|_F)$, and Place.inertiaDeg F w is its finrank, so that deg_restrict_mul_inertiaDeg is the tower formula $\deg(w|_F)\cdot f = \deg w$. Assuming HasPrincipalDivisors K F', Place.fiber F' v is the finite set of places above $v$. On divisors: Divisor.mapRestrict is the bare relabelling $w \mapsto w|_F$; Divisor.pushforward F sends $w \mapsto f(w)\, w|_F$ and preserves degree; Divisor.pullback F' sends $v \mapsto \sum_{w \mid v} e(w)\,w$, takes $\operatorname{div}_F f$ to $\operatorname{div}_{F'}(\iota f)$ and principal divisors to principal divisors. Two classes state ramification identities as hypotheses: SumRamificationInertia ($\sum_{w\mid v} e f = [F':F]$) and FundamentalIdentity ($\sum_{w\mid v} e \deg w = [F':F]\deg v$), the former implying the latter; under the latter, pull-back multiplies degrees by $[F':F]$ and descends to Pic0.pullbackHom. Norm compatibility is the project's proposition Divisor.PushforwardNormFormula K F F': for every $f \in (F')^\times$, every divisor $D$ with $D(w) = \operatorname{ord}_w f$ for all $w$, and every $v$, $(\pi_* D)(v) = \operatorname{ord}_v(N_{F'/F} f)$; it is passed as an explicit argument to Pic0.pushforwardHom (which also needs Module.Finite F F').

Relation to Mathlib. Mathlib's ramification index and inertia degree are defined for ideals in extensions of Dedekind domains (Ideal.ramificationIdx, Ideal.inertiaDeg); here both are redefined directly for the project's own Place, the ramification index as an infimum of positive orders and the inertia degree as a residue-field finrank. The fundamental identity and the norm formula are not proved in this module but appear as the project's hypothesis classes SumRamificationInertia, FundamentalIdentity and the proposition Divisor.PushforwardNormFormula.

Where it is used. These maps supply the functoriality of degree-zero divisor classes along a finite extension of function fields, so that a correspondence between curves acts on $\mathrm{Pic}^0$ by push-forward after pull-back along its two projections; this is the form in which Hecke operators act on the Jacobians of modular curves in the modularity part of the argument.

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

theorem AlgebraicCurve.Place.ord_nonneg_of_mem {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) {f : F} (hf : f ∈ v.toValuationSubring) :
0 ≤ v.ord f
theorem AlgebraicCurve.Place.mem_of_ord_nonneg {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) {f : F} (hf : f ≠ 0) (h : 0 ≤ v.ord f) :
theorem AlgebraicCurve.Place.mem_iff_ord_nonneg {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.exists_ord_pos {K : Type u_1} {F : Type u_2} [Field K] [Field F] [Algebra K F] (v : Place K F) :
∃ (f : F), f ≠ 0 ∧ 0 < v.ord f
theorem AlgebraicCurve.Place.algebraMap_ne_zero {F : Type u_2} {F' : Type u_3} [Field F] [Field F'] [Algebra F F'] {f : F} (hf : f ≠ 0) :
(algebraMap F F') f ≠ 0
theorem AlgebraicCurve.Place.comap_algebraMap_ne_top {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F'] [Algebra F F'] (w : Place K F') [Algebra.IsIntegral F F'] :
theorem AlgebraicCurve.Place.mem_comap_iff_ord_nonneg {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F'] [Algebra F F'] {w : Place K F'} {f : F} (hf : f ≠ 0) :
theorem AlgebraicCurve.Place.isUnit_mk_comap_iff {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F'] [Algebra F F'] {w : Place K F'} {f : F} (hf : f ≠ 0) (hmem : f ∈ w.toValuationSubring.comap (algebraMap F F')) :
IsUnit ⟨f, hmem⟩ ↔ w.ord ((algebraMap F F') f) = 0
theorem AlgebraicCurve.Place.exists_ord_algebraMap_pos {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F'] [Algebra F F'] (w : Place K F') [Algebra.IsIntegral F F'] :
∃ (f : F), f ≠ 0 ∧ 0 < w.ord ((algebraMap F F') f)
noncomputable def AlgebraicCurve.Place.ramificationIndex {K : Type u_1} {F' : Type u_3} [Field K] [Field F'] [Algebra K F'] (w : Place K F') (F : Type u_4) [Field F] [Algebra F F'] :

The least positive order attained by a nonzero element of the smaller field, or zero if none exists.

Equations
Instances For
    theorem AlgebraicCurve.Place.ramificationIndex_le_ord {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F'] [Algebra F F'] (w : Place K F') {f : F} (hf : f ≠ 0) (hpos : 0 < w.ord ((algebraMap F F') f)) :
    ↑(w.ramificationIndex F) ≤ w.ord ((algebraMap F F') f)
    theorem AlgebraicCurve.Place.ramificationIndex_set_nonempty {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F'] [Algebra F F'] (w : Place K F') [Algebra.IsIntegral F F'] :
    {n : ℕ | 0 < n ∧ ∃ (f : F), f ≠ 0 ∧ w.ord ((algebraMap F F') f) = ↑n}.Nonempty
    theorem AlgebraicCurve.Place.ramificationIndex_pos {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F'] [Algebra F F'] (w : Place K F') [Algebra.IsIntegral F F'] :
    theorem AlgebraicCurve.Place.exists_ord_eq_ramificationIndex {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F'] [Algebra F F'] (w : Place K F') [Algebra.IsIntegral F F'] :
    ∃ (f : F), f ≠ 0 ∧ w.ord ((algebraMap F F') f) = ↑(w.ramificationIndex F)
    theorem AlgebraicCurve.Place.ramificationIndex_dvd_ord {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F'] [Algebra F F'] (w : Place K F') [Algebra.IsIntegral F F'] {f : F} (hf : f ≠ 0) :
    ↑(w.ramificationIndex F) ∣ w.ord ((algebraMap F F') f)
    theorem AlgebraicCurve.Place.irreducible_mk_comap {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F'] [Algebra F F'] (w : Place K F') [Algebra.IsIntegral F F'] {g : F} (hg0 : g ≠ 0) (hmem : g ∈ w.toValuationSubring.comap (algebraMap F F')) (hge : w.ord ((algebraMap F F') g) = ↑(w.ramificationIndex F)) :
    def AlgebraicCurve.Place.restrict {K : Type u_1} (F : Type u_2) {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F'] [Algebra F F'] (w : Place K F') [Algebra.IsIntegral F F'] [Algebra K F] [IsScalarTower K F F'] :
    Place K F

    Restriction of a place along the given integral field extension.

    Equations
    Instances For
      @[simp]
      theorem AlgebraicCurve.Place.restrict_toValuationSubring {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F'] [Algebra F F'] (w : Place K F') [Algebra.IsIntegral F F'] [Algebra K F] [IsScalarTower K F F'] :
      theorem AlgebraicCurve.Place.mem_restrict_iff {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F'] [Algebra F F'] (w : Place K F') [Algebra.IsIntegral F F'] [Algebra K F] [IsScalarTower K F F'] {f : F} :
      theorem AlgebraicCurve.Place.ord_restrict {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F'] [Algebra F F'] (w : Place K F') [Algebra.IsIntegral F F'] [Algebra K F] [IsScalarTower K F F'] (f : F) :
      w.ord ((algebraMap F F') f) = ↑(w.ramificationIndex F) * (restrict F w).ord f
      theorem AlgebraicCurve.Place.ord_algebraMap_ne_zero_of_restrict_eq {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F'] [Algebra F F'] (w : Place K F') [Algebra.IsIntegral F F'] [Algebra K F] [IsScalarTower K F F'] {v : Place K F} {f : F} (hford : v.ord f ≠ 0) (hw : restrict F w = v) :
      w.ord ((algebraMap F F') f) ≠ 0
      theorem AlgebraicCurve.Place.restrict_fiber_finite {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F'] [Algebra F F'] [Algebra.IsIntegral F F'] [Algebra K F] [IsScalarTower K F F'] [HasPrincipalDivisors K F'] (v : Place K F) :
      {w : Place K F' | restrict F w = v}.Finite
      def AlgebraicCurve.Place.restrictInclusion {K : Type u_1} (F : Type u_2) {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] (w : Place K F') :

      The inclusion of the restricted place's valuation ring into the original valuation ring.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem AlgebraicCurve.Place.coe_restrictInclusion {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] (w : Place K F') (a : ↥(restrict F w).toValuationSubring) :
        ↑((restrictInclusion F w) a) = (algebraMap F F') ↑a
        instance AlgebraicCurve.Place.instIsLocalHomRestrictInclusion {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] (w : Place K F') :
        noncomputable def AlgebraicCurve.Place.restrictResidueMap {K : Type u_1} (F : Type u_2) {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] (w : Place K F') :

        The map on residue fields induced by restriction of a place.

        Equations
        Instances For
          noncomputable def AlgebraicCurve.Place.inertiaDeg {K : Type u_1} (F : Type u_2) {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] (w : Place K F') :

          The residue field degree of a place over its restriction to the smaller field.

          Equations
          Instances For
            theorem AlgebraicCurve.Place.deg_restrict_mul_inertiaDeg {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] (w : Place K F') :
            noncomputable def AlgebraicCurve.Divisor.mapRestrict {K : Type u_1} (F : Type u_2) {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] :

            The map sending each place to its restriction, without residue-degree weights.

            Equations
            Instances For
              @[simp]
              theorem AlgebraicCurve.Divisor.mapRestrict_single {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] (w : Place K F') (n : ℤ) :
              noncomputable def AlgebraicCurve.Divisor.pushforward {K : Type u_1} (F : Type u_2) {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] :

              Pushforward of divisors, weighting each restricted place by the residue field degree.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                @[simp]
                theorem AlgebraicCurve.Divisor.pushforward_single {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] (w : Place K F') (n : ℤ) :
                @[simp]
                theorem AlgebraicCurve.Divisor.degree_pushforward {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] (D : Divisor K F') :
                theorem AlgebraicCurve.Divisor.pushforward_mem_degZero {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] {D : Divisor K F'} (hD : D ∈ degZero) :
                theorem AlgebraicCurve.Divisor.pushforward_apply {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [DecidableEq (Place K F)] (D : Divisor K F') (v : Place K F) :
                ((pushforward F) D) v = ∑ w ∈ D.support, if Place.restrict F w = v then D w * ↑(Place.inertiaDeg F w) else 0
                def AlgebraicCurve.Divisor.PushforwardNormFormula (K : Type u_1) (F : Type u_2) (F' : Type u_3) [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] :

                Pushforward sends the divisor of a nonzero function to the divisor of its field norm.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  theorem AlgebraicCurve.Divisor.pushforward_eq_of_normFormula {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] (H : PushforwardNormFormula K F F') {f : F'} (hf : f ≠ 0) {D : Divisor K F'} (hD : ∀ (w : Place K F'), D w = w.ord f) {E : Divisor K F} (hE : ∀ (v : Place K F), E v = v.ord ((Algebra.norm F) f)) :
                  (pushforward F) D = E
                  theorem AlgebraicCurve.Divisor.isPrincipal_pushforward_of_normFormula {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [Module.Finite F F'] (H : PushforwardNormFormula K F F') {D : Divisor K F'} (hD : D.IsPrincipal) :
                  noncomputable def AlgebraicCurve.Place.fiber {K : Type u_1} {F : Type u_2} (F' : Type u_3) [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] (v : Place K F) :
                  Finset (Place K F')

                  The finite set of places of the extension restricting to the given place.

                  Equations
                  Instances For
                    @[simp]
                    theorem AlgebraicCurve.Place.mem_fiber {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] {v : Place K F} {w : Place K F'} :
                    w ∈ fiber F' v ↔ restrict F w = v
                    theorem AlgebraicCurve.Place.restrict_mem_fiber {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] (w : Place K F') :
                    w ∈ fiber F' (restrict F w)
                    noncomputable def AlgebraicCurve.Divisor.pullbackSingleHom {K : Type u_1} {F : Type u_2} (F' : Type u_3) [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] (v : Place K F) :

                    Pullback of an integer multiple of one place, weighted by ramification indices.

                    Equations
                    Instances For
                      theorem AlgebraicCurve.Divisor.pullbackSingleHom_apply {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] (v : Place K F) (n : ℤ) :
                      (pullbackSingleHom F' v) n = ∑ w ∈ Place.fiber F' v, Finsupp.single w (n * ↑(w.ramificationIndex F))
                      noncomputable def AlgebraicCurve.Divisor.pullback {K : Type u_1} {F : Type u_2} (F' : Type u_3) [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] :

                      Pullback of divisors, summing over places above each place with ramification weights.

                      Equations
                      Instances For
                        theorem AlgebraicCurve.Divisor.pullback_single {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] (v : Place K F) (n : ℤ) :
                        (pullback F') (Finsupp.single v n) = ∑ w ∈ Place.fiber F' v, Finsupp.single w (n * ↑(w.ramificationIndex F))
                        theorem AlgebraicCurve.Divisor.pullback_single_apply_of_restrict_eq {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] {v : Place K F} {w : Place K F'} (hw : Place.restrict F w = v) (n : ℤ) :
                        ((pullback F') (Finsupp.single v n)) w = n * ↑(w.ramificationIndex F)
                        theorem AlgebraicCurve.Divisor.pullback_single_apply_of_restrict_ne {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] {v : Place K F} {w : Place K F'} (hw : Place.restrict F w ≠ v) (n : ℤ) :
                        ((pullback F') (Finsupp.single v n)) w = 0
                        theorem AlgebraicCurve.Divisor.pullback_apply {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] (D : Divisor K F) (w : Place K F') :
                        ((pullback F') D) w = ↑(w.ramificationIndex F) * D (Place.restrict F w)
                        theorem AlgebraicCurve.Divisor.restrict_mem_support_of_mem_support_pullback {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] {D : Divisor K F} {w : Place K F'} (hw : w ∈ ((pullback F') D).support) :
                        theorem AlgebraicCurve.Divisor.pullback_apply_eq_ord {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] {f : F} {D : Divisor K F} (hD : ∀ (v : Place K F), D v = v.ord f) (w : Place K F') :
                        ((pullback F') D) w = w.ord ((algebraMap F F') f)
                        theorem AlgebraicCurve.Divisor.isPrincipal_pullback {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] {D : Divisor K F} (hD : D.IsPrincipal) :
                        theorem AlgebraicCurve.Divisor.pullback_mem_principal {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] {D : Divisor K F} (hD : D ∈ principal) :
                        class AlgebraicCurve.FundamentalIdentity (K : Type u_1) (F : Type u_2) (F' : Type u_3) [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] :

                        The sum of ramification indices times residue degrees over a place equals the extension degree times that place's degree.

                        Instances
                          theorem AlgebraicCurve.Divisor.degree_pullback_single {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] [FundamentalIdentity K F F'] (v : Place K F) (n : ℤ) :
                          theorem AlgebraicCurve.Divisor.degree_pullback {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] [FundamentalIdentity K F F'] (D : Divisor K F) :
                          degree ((pullback F') D) = ↑(Module.finrank F F') * degree D
                          theorem AlgebraicCurve.Divisor.pullback_mem_degZero {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] [FundamentalIdentity K F F'] {D : Divisor K F} (hD : D ∈ degZero) :
                          class AlgebraicCurve.SumRamificationInertia (K : Type u_1) (F : Type u_2) (F' : Type u_3) [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] :

                          The sum of ramification indices times inertia degrees above each place equals the field extension degree.

                          Instances
                            @[instance 100]
                            noncomputable def AlgebraicCurve.Pic0.pullbackDegZeroHom {K : Type u_1} {F : Type u_2} (F' : Type u_3) [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] [FundamentalIdentity K F F'] :

                            Pullback of degree-zero divisors, using the fundamental degree identity.

                            Equations
                            Instances For
                              @[simp]
                              theorem AlgebraicCurve.Pic0.coe_pullbackDegZeroHom {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] [FundamentalIdentity K F F'] (D : ↥Divisor.degZero) :
                              ↑((pullbackDegZeroHom F') D) = (Divisor.pullback F') ↑D
                              noncomputable def AlgebraicCurve.Pic0.pullbackHom {K : Type u_1} {F : Type u_2} (F' : Type u_3) [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] [FundamentalIdentity K F F'] :
                              Pic0 K F →+ Pic0 K F'

                              The homomorphism on degree-zero divisor classes induced by pullback.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                theorem AlgebraicCurve.Pic0.pullbackHom_mk {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [HasPrincipalDivisors K F'] [FundamentalIdentity K F F'] (D : ↥Divisor.degZero) :
                                noncomputable def AlgebraicCurve.Pic0.pushforwardDegZeroHom {K : Type u_1} (F : Type u_2) {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] :

                                The homomorphism on degree-zero divisors induced by residue-degree-weighted pushforward.

                                Equations
                                Instances For
                                  @[simp]
                                  theorem AlgebraicCurve.Pic0.coe_pushforwardDegZeroHom {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] (D : ↥Divisor.degZero) :
                                  noncomputable def AlgebraicCurve.Pic0.pushforwardHom (K : Type u_1) (F : Type u_2) (F' : Type u_3) [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [Module.Finite F F'] (H : Divisor.PushforwardNormFormula K F F') :
                                  Pic0 K F' →+ Pic0 K F

                                  The homomorphism on degree-zero divisor classes induced by pushforward and the norm formula.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    theorem AlgebraicCurve.Pic0.pushforwardHom_mk {K : Type u_1} {F : Type u_2} {F' : Type u_3} [Field K] [Field F] [Field F'] [Algebra K F] [Algebra K F'] [Algebra F F'] [IsScalarTower K F F'] [Algebra.IsIntegral F F'] [Module.Finite F F'] (H : Divisor.PushforwardNormFormula K F F') (D : ↥Divisor.degZero) :
                                    (pushforwardHom K F F' H) (mk D) = mk ((pushforwardDegZeroHom F) D)