Module

DivisorClasses.lean

Nyll.JacobianVarieties.Kummer.DivisorClasses
14 declarations indexed from sourceView source ↗

Divisorial Kummer classes

Functions whose orders are divisible by a positive integer, modulo powers of that integer, identify with the actual torsion subgroup of the degree-zero divisor class group. The map sends a function to its principal divisor divided by the integer. This is the divisor-theoretic part of the Kummer comparison; no identification with etale cohomology is assumed here.

Declarations

AlgebraicCurve.Pic0.kummerUnits

Nonzero functions whose orders at every place are divisible by n.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve.Pic0
variable (K F : Type*) [Field K] [Field F] [Algebra K F]
def kummerUnits (n : ℕ+) : Subgroup Fˣ where
  carrier := {u | ∀ v : Place K F, (n : ℤ) ∣ v.ord (u : F)}
  one_mem' := by
    intro v
    rw [Units.val_one, v.ord_one]
    exact dvd_zero _
  mul_mem' := by
    intro u w hu hw v
    rw [Units.val_mul, v.ord_mul (Units.ne_zero u) (Units.ne_zero w)]
    exact dvd_add (hu v) (hw v)
  inv_mem' := by
    intro u hu v
    rw [Units.val_inv_eq_inv_val, v.ord_inv]
    exact dvd_neg.mpr (hu v)
AlgebraicCurve.Pic0.kummerPowers

The subgroup consisting of actual nth powers of functions.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve.Pic0
variable (K F : Type*) [Field K] [Field F] [Algebra K F]
def kummerPowers (n : ℕ+) : Subgroup (kummerUnits K F n)
AlgebraicCurve.Pic0.kummerDivisor
Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve.Pic0
variable (K F : Type*) [Field K] [Field F] [Algebra K F]
section PrincipalDivisors
variable {K F} [HasPrincipalDivisors K F]
def kummerDivisor (n : ℕ+) (u : kummerUnits K F n) :
    Divisor.degZero (K := K) (F := F)
AlgebraicCurve.Pic0.kummerDivisor_spec
Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve.Pic0
variable (K F : Type*) [Field K] [Field F] [Algebra K F]
section PrincipalDivisors
variable {K F} [HasPrincipalDivisors K F]
theorem kummerDivisor_spec (n : ℕ+) (u : kummerUnits K F n)
    (v : Place K F) :
    v.ord (u.val : F) = (n : ℤ) * (kummerDivisor n u : Divisor K F) v
AlgebraicCurve.Pic0.kummerDivisor_eq
Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve.Pic0
variable (K F : Type*) [Field K] [Field F] [Algebra K F]
section PrincipalDivisors
variable {K F} [HasPrincipalDivisors K F]
theorem kummerDivisor_eq (n : ℕ+) (u : kummerUnits K F n)
    (D : Divisor.degZero (K := K) (F := F))
    (hD : ∀ v : Place K F, v.ord (u.val : F) = (n : ℤ) * (D : Divisor K F) v) :
    kummerDivisor n u = D
AlgebraicCurve.Pic0.kummerDivisor_one
Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve.Pic0
variable (K F : Type*) [Field K] [Field F] [Algebra K F]
section PrincipalDivisors
variable {K F} [HasPrincipalDivisors K F]
theorem kummerDivisor_one (n : ℕ+) :
    kummerDivisor n (1 : kummerUnits K F n) = 0
AlgebraicCurve.Pic0.kummerDivisor_mul
Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve.Pic0
variable (K F : Type*) [Field K] [Field F] [Algebra K F]
section PrincipalDivisors
variable {K F} [HasPrincipalDivisors K F]
theorem kummerDivisor_mul (n : ℕ+) (u w : kummerUnits K F n) :
    kummerDivisor n (u * w) = kummerDivisor n u + kummerDivisor n w
AlgebraicCurve.Pic0.kummerDivisor_class_mem
Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve.Pic0
variable (K F : Type*) [Field K] [Field F] [Algebra K F]
section PrincipalDivisors
variable {K F} [HasPrincipalDivisors K F]
theorem kummerDivisor_class_mem (n : ℕ+) (u : kummerUnits K F n) :
    mk (kummerDivisor n u) ∈ torsion K F n
AlgebraicCurve.Pic0.kummerClass

Divide the actual principal divisor by n and take its torsion class.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve.Pic0
variable (K F : Type*) [Field K] [Field F] [Algebra K F]
section PrincipalDivisors
variable {K F} [HasPrincipalDivisors K F]
def kummerClass (n : ℕ+) : kummerUnits K F n →* Multiplicative (torsion K F n) where
  toFun u := Multiplicative.ofAdd ⟨mk (kummerDivisor n u), kummerDivisor_class_mem n u⟩
  map_one' := by
    apply congrArg Multiplicative.ofAdd
    apply Subtype.ext
    change mk (kummerDivisor n (1 : kummerUnits K F n)) = 0
    rw [kummerDivisor_one, mk_zero]
  map_mul' u w := by
    apply congrArg Multiplicative.ofAdd
    apply Subtype.ext
    change mk (kummerDivisor n (u * w)) =
      mk (kummerDivisor n u) + mk (kummerDivisor n w)
    rw [kummerDivisor_mul, mk_add]
AlgebraicCurve.Pic0.kummerClass_eq

The Kummer class is computed by any divisor with the required orders.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve.Pic0
variable (K F : Type*) [Field K] [Field F] [Algebra K F]
section PrincipalDivisors
variable {K F} [HasPrincipalDivisors K F]
theorem kummerClass_eq (n : ℕ+) (u : kummerUnits K F n)
    (D : Divisor.degZero (K := K) (F := F))
    (hD : ∀ v : Place K F, v.ord (u.val : F) = (n : ℤ) * (D : Divisor K F) v) :
    (Multiplicative.toAdd (kummerClass n u)).val = mk D
AlgebraicCurve.Pic0.kummerClass_surjective

Every actual torsion class is represented by a function with divisible orders.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve.Pic0
variable (K F : Type*) [Field K] [Field F] [Algebra K F]
section PrincipalDivisors
variable {K F} [HasPrincipalDivisors K F]
theorem kummerClass_surjective (n : ℕ+) :
    Function.Surjective (kummerClass (K := K) (F := F) n)
AlgebraicCurve.Pic0.kummerClass_ker

Over algebraically closed constants, the kernel consists of actual powers.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve.Pic0
variable (K F : Type*) [Field K] [Field F] [Algebra K F]
variable {K F} [IsAlgClosed K] [Algebra.EssFiniteType K F] [IsCurveOver K F]
theorem kummerClass_ker (n : ℕ+) :
    (kummerClass (K := K) (F := F) n).ker = kummerPowers K F n
AlgebraicCurve.Pic0.kummerDivisorEquiv

Divisorial Kummer classes are exactly the actual n-torsion in Pic⁰.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve.Pic0
variable (K F : Type*) [Field K] [Field F] [Algebra K F]
variable {K F} [IsAlgClosed K] [Algebra.EssFiniteType K F] [IsCurveOver K F]
variable (K F)
def kummerDivisorEquiv (n : ℕ+) :
    kummerUnits K F n ⧸ kummerPowers K F n ≃* Multiplicative (torsion K F n)
AlgebraicCurve.Pic0.kummerDivisorEquiv_mk

The quotient comparison sends a represented function to its divided divisor class.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve.Pic0
variable (K F : Type*) [Field K] [Field F] [Algebra K F]
variable {K F} [IsAlgClosed K] [Algebra.EssFiniteType K F] [IsCurveOver K F]
variable (K F)
theorem kummerDivisorEquiv_mk (n : ℕ+) (u : kummerUnits K F n) :
    kummerDivisorEquiv K F n (QuotientGroup.mk u) = kummerClass n u