Documentation

TauCeti.AlgebraicGeometry.WeilDivisor.Basic

Weil divisors as finite integer combinations of points #

This file provides the first, purely combinatorial piece of the Jacobian roadmap's Layer A: Weil divisors are finite formal integer sums of points. The scheme-theoretic predicates which decide which points are codimension-one points, the principal-divisor map, and the comparison with Cartier divisors are deliberately not bundled here; those are later geometric constructions.

The API here records the free-abelian-group operations needed before that geometry exists: point divisors, effectivity, pushforward of formal sums along a map of point sets, and both the unweighted degree and the weighted degree used for curves over a field. It also packages the degree-zero subgroups that later receive principal divisors and model the abstract Pic⁰ kernel before the Picard functor and Picard scheme exist.

For a curve over k, the intended weighted degree has weight x ↦ [κ(x) : k]; this file only supplies the formal finite-sum operation against an arbitrary integer-valued weight.

This advances the Tau Ceti Jacobian roadmap, Layer A, "Divisors on a curve: Weil divisors ⊕_x ℤ", "Degree", and "Pic⁰ X = ker deg (as an abstract group)".

@[reducible, inline]

A Weil divisor on a type of points X is a finite formal integer sum of points of X.

Equations
Instances For

    The coefficient of a point in a Weil divisor.

    Equations
    Instances For
      @[simp]
      @[simp]
      theorem TauCeti.AlgebraicGeometry.WeilDivisor.coeff_add {X : Type u_1} (D E : WeilDivisor X) (x : X) :
      (D + E).coeff x = D.coeff x + E.coeff x
      @[simp]
      theorem TauCeti.AlgebraicGeometry.WeilDivisor.coeff_neg {X : Type u_1} (D : WeilDivisor X) (x : X) :
      (-D).coeff x = -D.coeff x
      @[simp]
      theorem TauCeti.AlgebraicGeometry.WeilDivisor.coeff_sub {X : Type u_1} (D E : WeilDivisor X) (x : X) :
      (D - E).coeff x = D.coeff x - E.coeff x
      theorem TauCeti.AlgebraicGeometry.WeilDivisor.ext {X : Type u_1} {D E : WeilDivisor X} (h : ∀ (x : X), D.coeff x = E.coeff x) :
      D = E
      theorem TauCeti.AlgebraicGeometry.WeilDivisor.ext_iff {X : Type u_1} {D E : WeilDivisor X} :
      D = E ↔ ∀ (x : X), D.coeff x = E.coeff x

      A point lies in the support of a Weil divisor exactly when its coefficient is nonzero. This is the coeff-level restatement of Finsupp.mem_support_iff.

      noncomputable def TauCeti.AlgebraicGeometry.WeilDivisor.ofPoint {X : Type u_1} (x : X) :

      The prime/point divisor supported at a single point with coefficient 1.

      Equations
      Instances For
        @[simp]
        theorem TauCeti.AlgebraicGeometry.WeilDivisor.coeff_ofPoint_of_ne {X : Type u_1} {x y : X} (h : y ≠ x) :
        (ofPoint x).coeff y = 0

        The scaled point divisor b • ofPoint a is the single spike Finsupp.single a b. This is the ofPoint/Finsupp.single bridge in its integer-scaled form, shared by the divisor files that expand a divisor into its point contributions.

        A divisor is effective when every coefficient is nonnegative.

        Equations
        Instances For

          A nonzero effective divisor has some point with positive coefficient.

          Effective Weil divisors form an additive submonoid of the group of all Weil divisors.

          Equations
          Instances For
            noncomputable def TauCeti.AlgebraicGeometry.WeilDivisor.pushforward {X : Type u_1} {Y : Type u_2} (f : X → Y) :

            Push forward a formal divisor along a map of point sets by summing coefficients over fibres. Geometric pushforward of Weil divisors will specialize this once the relevant point maps and residue-degree factors are available.

            Equations
            Instances For

              The explicit unfolding equation for formal pushforward: pushforward f D is D.mapDomain f. Use this for manual rewriting rather than as a simp normal form.

              theorem TauCeti.AlgebraicGeometry.WeilDivisor.coeff_pushforward {X : Type u_1} {Y : Type u_2} [DecidableEq Y] (f : X → Y) (D : WeilDivisor X) (y : Y) :
              ((pushforward f) D).coeff y = ∑ x ∈ D.support with f x = y, D.coeff x

              The coefficient of the pushed-forward divisor at y is the sum of the coefficients over the fibre of f above y.

              theorem TauCeti.AlgebraicGeometry.WeilDivisor.pushforward_zero {X : Type u_1} {Y : Type u_2} (f : X → Y) :
              (pushforward f) 0 = 0
              @[simp]
              theorem TauCeti.AlgebraicGeometry.WeilDivisor.pushforward_add {X : Type u_1} {Y : Type u_2} (f : X → Y) (D E : WeilDivisor X) :
              (pushforward f) (D + E) = (pushforward f) D + (pushforward f) E
              @[simp]
              theorem TauCeti.AlgebraicGeometry.WeilDivisor.pushforward_ofPoint {X : Type u_1} {Y : Type u_2} (f : X → Y) (x : X) :
              theorem TauCeti.AlgebraicGeometry.WeilDivisor.pushforward_comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} (g : Y → Z) (f : X → Y) :

              The unweighted degree of a Weil divisor, summing its coefficients. On a curve over a non-algebraically-closed field, use weightedDegree with residue-field degrees instead.

              Equations
              Instances For
                @[simp]
                theorem TauCeti.AlgebraicGeometry.WeilDivisor.degree_pushforward {X : Type u_1} {Y : Type u_2} (f : X → Y) (D : WeilDivisor X) :

                On a nonempty point type the unweighted degree map is surjective: a single point has degree 1, so its integer multiples realise every degree.

                On a nonempty point type the unweighted degree map hits all of ℤ.

                The weighted degree of a Weil divisor against an integer-valued weight on points.

                For a curve over k, the intended weight is x ↦ [κ(x) : k].

                Equations
                Instances For
                  theorem TauCeti.AlgebraicGeometry.WeilDivisor.weightedDegree_apply {X : Type u_1} (w : X → ℤ) (D : WeilDivisor X) :
                  (weightedDegree w) D = Finsupp.sum D fun (x : X) (n : ℤ) => n * w x
                  @[simp]
                  theorem TauCeti.AlgebraicGeometry.WeilDivisor.weightedDegree_pushforward {X : Type u_1} {Y : Type u_2} (wY : Y → ℤ) (f : X → Y) (D : WeilDivisor X) :

                  The image of the weighted degree homomorphism is the subgroup of ℤ generated by the weights. The point divisors generate the free abelian group of Weil divisors and weightedDegree w (ofPoint x) = w x, so the image is AddSubgroup.closure (Set.range w); being a subgroup of ℤ, it is d·ℤ for a unique d ≥ 0, the index of the weights.

                  theorem TauCeti.AlgebraicGeometry.WeilDivisor.IsEffective.weightedDegree_nonneg {X : Type u_1} {w : X → ℤ} (hw : ∀ (x : X), 0 ≤ w x) {D : WeilDivisor X} (hD : D.IsEffective) :

                  An effective divisor has nonnegative weighted degree when all weights are nonnegative.

                  With strictly positive weights on the support, an effective divisor has weighted degree zero iff it is zero.

                  theorem TauCeti.AlgebraicGeometry.WeilDivisor.IsEffective.eq_zero_of_weightedDegree_eq_zero_of_pos_on_support {X : Type u_1} {w : X → ℤ} {D : WeilDivisor X} (hD : D.IsEffective) (hw : ∀ x ∈ D.support, 0 < w x) (hdeg : (weightedDegree w) D = 0) :
                  D = 0

                  With strictly positive weights on the support, an effective divisor of weighted degree zero is zero.

                  theorem TauCeti.AlgebraicGeometry.WeilDivisor.IsEffective.weightedDegree_eq_zero_iff_of_pos {X : Type u_1} {w : X → ℤ} (hw : ∀ (x : X), 0 < w x) {D : WeilDivisor X} (hD : D.IsEffective) :
                  (weightedDegree w) D = 0 ↔ D = 0

                  With strictly positive weights, an effective divisor has weighted degree zero iff it is zero.

                  theorem TauCeti.AlgebraicGeometry.WeilDivisor.IsEffective.eq_zero_of_weightedDegree_eq_zero_of_pos {X : Type u_1} {w : X → ℤ} (hw : ∀ (x : X), 0 < w x) {D : WeilDivisor X} (hD : D.IsEffective) (hdeg : (weightedDegree w) D = 0) :
                  D = 0

                  With strictly positive weights, an effective divisor of weighted degree zero is zero.

                  theorem TauCeti.AlgebraicGeometry.WeilDivisor.IsEffective.weightedDegree_pos_of_pos {X : Type u_1} {w : X → ℤ} (hw : ∀ (x : X), 0 < w x) {D : WeilDivisor X} (hD : D.IsEffective) (hD0 : D ≠ 0) :

                  With strictly positive weights, a nonzero effective divisor has positive weighted degree.

                  An effective divisor has nonnegative degree.

                  An effective divisor has degree zero iff it is zero.

                  An effective divisor of degree zero is zero.

                  A nonzero effective divisor has positive degree.

                  The subgroup of divisors of unweighted degree zero.

                  For a smooth proper curve over an algebraically closed field this is the formal divisor group whose quotient by principal divisors gives the abstract degree-zero Picard group. Over a general field, use weightedDegreeZeroSubgroup with residue-field degrees as weights.

                  Equations
                  Instances For

                    An effective divisor lying in the unweighted degree-zero subgroup is zero.

                    The formal divisor [x] - [y], a basic source of degree-zero divisors.

                    Equations
                    Instances For
                      @[simp]

                      Point differences telescope additively: [x] - [y] + ([y] - [z]) = [x] - [z].

                      Reversing a point difference negates it.

                      @[simp]
                      @[simp]
                      theorem TauCeti.AlgebraicGeometry.WeilDivisor.pushforward_pointDifference {X : Type u_1} {Y : Type u_2} (f : X → Y) (x y : X) :
                      noncomputable def TauCeti.AlgebraicGeometry.WeilDivisor.pushforwardDegreeZero {X : Type u_1} {Y : Type u_2} (f : X → Y) :

                      Pushforward as a homomorphism on unweighted degree-zero divisors.

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

                        The subgroup of divisors of weighted degree zero for a weight function on points.

                        For a curve over a field k, the intended weight is x ↦ [κ(x) : k], giving the formal degree-zero divisor group before principal divisors are introduced.

                        Equations
                        Instances For
                          noncomputable def TauCeti.AlgebraicGeometry.WeilDivisor.weightedAbelJacobiDegreeZeroDivisor {X : Type u_1} (w : X → ℤ) {x₀ : X} (hx₀ : w x₀ = 1) (D : WeilDivisor X) :

                          The degree-corrected representative of a divisor in the weighted degree-zero divisor group.

                          For a weight-one base point x₀, this is D - weightedDegree(D) • [x₀], viewed as a weighted-degree-zero divisor.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            @[simp]
                            theorem TauCeti.AlgebraicGeometry.WeilDivisor.coe_weightedAbelJacobiDegreeZeroDivisor {X : Type u_1} (w : X → ℤ) {x₀ : X} (hx₀ : w x₀ = 1) (D : WeilDivisor X) :
                            theorem TauCeti.AlgebraicGeometry.WeilDivisor.coe_weightedDegreeZeroSubgroup_eq_zero_of_isEffective {X : Type u_1} {w : X → ℤ} (hw : ∀ (x : X), 0 < w x) {D : ↥(weightedDegreeZeroSubgroup w)} (hD : (↑D).IsEffective) :
                            ↑D = 0

                            For strictly positive weights, an effective divisor lying in the weighted degree-zero subgroup is zero.

                            Degree-corrected point divisors #

                            noncomputable def TauCeti.AlgebraicGeometry.WeilDivisor.weightedPointBaseDifference {X : Type u_1} (w : X → ℤ) (x₀ x : X) :

                            The divisor [x] - w(x)[x₀].

                            For the geometric weight w x = [κ(x) : k] and a rational base point x₀ with w x₀ = 1, this is the degree-zero divisor underlying the Abel-Jacobi class of the closed point x. In the algebraically closed/unweighted specialization, this recovers pointDifference x x₀.

                            Equations
                            Instances For

                              The degree-corrected point divisor is [x] minus w x copies of the base point [x₀]. This exposes the definition as a public equation for use across modules.

                              At the constant weight 1, the degree-corrected point divisor is the usual point difference. This lets unweighted API reuse the weighted construction.

                              @[simp]

                              If the point has weight 1, the degree-corrected point divisor is the usual point difference.

                              @[simp]
                              theorem TauCeti.AlgebraicGeometry.WeilDivisor.coeff_weightedPointBaseDifference {X : Type u_1} [DecidableEq X] (w : X → ℤ) (x₀ x y : X) :
                              (weightedPointBaseDifference w x₀ x).coeff y = (if y = x then 1 else 0) - if y = x₀ then w x else 0

                              Coefficients of the degree-corrected point divisor, used as the pointwise simp form of weightedPointBaseDifference.

                              The support of [x] - w(x)[x₀] is contained in {x, x₀}.

                              theorem TauCeti.AlgebraicGeometry.WeilDivisor.weightedPointBaseDifference_self {X : Type u_1} {w : X → ℤ} {x₀ : X} (hx₀ : w x₀ = 1) :

                              If the base point has weight 1, the divisor [x₀] - w(x₀)[x₀] is zero.

                              @[simp]

                              The weighted degree of [x] - w(x)[x₀] is w(x) * (1 - w(x₀)).

                              If the base point has weight 1, then [x] - w(x)[x₀] has weighted degree zero.

                              Changing the base point in the weighted point-base divisor translates it by w(x) • ([x₀] - [y₀]).

                              The difference between the weighted point-base divisors for two base points is w(x) • ([x₀] - [y₀]).

                              Subtracting two degree-corrected point divisors with the same base point cancels the base term when the two points have equal weight.

                              noncomputable def TauCeti.AlgebraicGeometry.WeilDivisor.pushforwardWeightedDegreeZero {X : Type u_1} {Y : Type u_2} (wX : X → ℤ) (wY : Y → ℤ) (f : X → Y) (hw : ∀ (x : X), wY (f x) = wX x) :

                              Pushforward as a homomorphism on weighted degree-zero divisors, when the target weight pulls back to the source weight.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                @[simp]
                                theorem TauCeti.AlgebraicGeometry.WeilDivisor.pushforwardWeightedDegreeZero_apply {X : Type u_1} {Y : Type u_2} (wX : X → ℤ) (wY : Y → ℤ) (f : X → Y) (hw : ∀ (x : X), wY (f x) = wX x) (D : ↥(weightedDegreeZeroSubgroup wX)) :
                                ↑((pushforwardWeightedDegreeZero wX wY f hw) D) = (pushforward f) ↑D
                                theorem TauCeti.AlgebraicGeometry.WeilDivisor.pushforwardWeightedDegreeZero_comp {X : Type u_1} {Y : Type u_2} {Z : Type u_3} (wX : X → ℤ) (wY : Y → ℤ) (wZ : Z → ℤ) (f : X → Y) (g : Y → Z) (hf : ∀ (x : X), wY (f x) = wX x) (hg : ∀ (y : Y), wZ (g y) = wY y) :