Module

OpenDivisorResidues.lean

Nyll.JacobianVarieties.Kummer.OpenDivisorResidues
11 declarations indexed from sourceView source ↗

Boundary residues of divisorial Kummer classes

For a set of omitted places, a function is unramified away from the boundary when its orders there are divisible by the exponent. Boundary orders modulo the exponent define a homomorphism on functions modulo powers. Its zero residue representatives are exactly the everywhere-unramified functions used in the proper Kummer comparison.

This file is divisor theory. The comparison with actual derived H¹ of an open curve, and the image description by the degree-zero residue relation, are separate results and are not assumed here.

Declarations

AlgebraicCurve.Pic0.openKummerUnits

Functions whose orders away from the omitted places are divisible by the positive exponent.

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 openKummerUnits (S : Set (Place K F)) (n : ℕ+) : Subgroup Fˣ where
  carrier := {u | ∀ v : Place K F, v ∉ S → (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 hv
    rw [Units.val_mul, v.ord_mul (Units.ne_zero u) (Units.ne_zero w)]
    exact dvd_add (hu v hv) (hw v hv)
  inv_mem' := by
    intro u hu v hv
    rw [Units.val_inv_eq_inv_val, v.ord_inv]
    exact dvd_neg.mpr (hu v hv)
AlgebraicCurve.Pic0.openKummerPowers

Actual powers, viewed inside functions unramified away from the boundary.

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 openKummerPowers (S : Set (Place K F)) (n : ℕ+) :
    Subgroup (openKummerUnits K F S n)
AlgebraicCurve.Pic0.openKummerResidue

Boundary orders modulo the exponent, with the additive target written multiplicatively to match multiplication of functions.

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}
def openKummerResidue (S : Set (Place K F)) (n : ℕ+) :
    openKummerUnits K F S n →* Multiplicative (S → ZMod (n : ℕ)) where
  toFun u := Multiplicative.ofAdd (fun v => (v.val.ord (u.val : F) : ZMod (n : ℕ)))
  map_one' := by
    apply Multiplicative.toAdd.injective
    funext v
    change (v.val.ord (1 : F) : ZMod (n : ℕ)) = 0
    rw [v.val.ord_one, Int.cast_zero]
  map_mul' u w := by
    apply Multiplicative.toAdd.injective
    funext v
    change (v.val.ord ((u.val : F) * (w.val : F)) : ZMod (n : ℕ)) =
      (v.val.ord (u.val : F) : ZMod (n : ℕ)) +
        (v.val.ord (w.val : F) : ZMod (n : ℕ))
    rw [v.val.ord_mul (Units.ne_zero u.val) (Units.ne_zero w.val), Int.cast_add]
AlgebraicCurve.Pic0.openKummerResidue_eq_one_iff

Vanishing of all boundary residues fills in exactly the missing divisibility conditions at the omitted places.

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}
theorem openKummerResidue_eq_one_iff
    (S : Set (Place K F)) (n : ℕ+) (u : openKummerUnits K F S n) :
    openKummerResidue S n u = 1 ↔ u.val ∈ kummerUnits K F n
AlgebraicCurve.Pic0.openKummerPowers_le_residue_ker

Powers have zero boundary residue, so the residue map descends to genuine Kummer classes rather than depending on a chosen function.

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}
theorem openKummerPowers_le_residue_ker
    (S : Set (Place K F)) (n : ℕ+) :
    openKummerPowers K F S n ≤ (openKummerResidue S n).ker
AlgebraicCurve.Pic0.openKummerResidueQuotient

Residues of functions unramified away from the boundary, modulo actual powers of functions.

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}
def openKummerResidueQuotient (S : Set (Place K F)) (n : ℕ+) :
    openKummerUnits K F S n ⧸ openKummerPowers K F S n →*
      Multiplicative (S → ZMod (n : ℕ))
AlgebraicCurve.Pic0.openKummerResidueQuotient_mk

The quotient residue map is computed by the orders of any representative.

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}
theorem openKummerResidueQuotient_mk
    (S : Set (Place K F)) (n : ℕ+) (u : openKummerUnits K F S n) :
    openKummerResidueQuotient S n (QuotientGroup.mk u) =
      openKummerResidue S n u
AlgebraicCurve.Pic0.kummerUnitsToOpen

Forget the divisibility conditions at the omitted places.

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}
def kummerUnitsToOpen (S : Set (Place K F)) (n : ℕ+) :
    kummerUnits K F n →* openKummerUnits K F S n where
  toFun u := ⟨u.val, fun v _ => u.property v⟩
  map_one' := rfl
  map_mul' _ _ := rfl
AlgebraicCurve.Pic0.kummerQuotientToOpen

The inclusion of proper divisorial Kummer classes into open classes. Both quotients use actual powers in the same function field.

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}
def kummerQuotientToOpen (S : Set (Place K F)) (n : ℕ+) :
    kummerUnits K F n ⧸ kummerPowers K F n →*
      openKummerUnits K F S n ⧸ openKummerPowers K F S n
AlgebraicCurve.Pic0.kummerQuotientToOpen_injective

Filling in the boundary introduces no extra identifications between proper Kummer classes.

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}
theorem kummerQuotientToOpen_injective (S : Set (Place K F)) (n : ℕ+) :
    Function.Injective (kummerQuotientToOpen S n)
AlgebraicCurve.Pic0.kummerQuotientToOpen_range

Exactness at open divisorial Kummer classes: zero boundary residue is equivalent to coming from the proper curve's divisorial Kummer quotient.

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}
theorem kummerQuotientToOpen_range
    (S : Set (Place K F)) (n : ℕ+) :
    (kummerQuotientToOpen S n).range =
      (openKummerResidueQuotient S n).ker