Module

Index.lean

Nyll.AlgebraicCurves.Cohomology.Adelic.Index
68 declarations indexed from sourceView source ↗

Adelic spaces, indices of specialty and Weil differentials. Valuation bounds and global functions define the quotients and genus conditions.

Imports1
Imported by242

Declarations

AlgebraicCurve.LSpace

The Riemann--Roch subspace of functions bounded by a divisor.

Source context 4 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
abbrev LSpace (D : Divisor K F) : Submodule K F
AlgebraicCurve.ell

The dimension of the Riemann--Roch space of a divisor.

Source context 4 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
abbrev ell (D : Divisor K F) : ℕ
AlgebraicCurve.mem_lSpace_iff
Source context 5 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
theorem mem_lSpace_iff {f : F} :
    f ∈ LSpace D ↔ ∀ v : Place K F, v.adicValuation f ≤ WithZero.exp (D v)
AlgebraicCurve.mem_lSpace_iff_ord
Source context 5 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
theorem mem_lSpace_iff_ord {f : F} :
    f ∈ LSpace D ↔ f = 0 ∨ ∀ v : Place K F, -D v ≤ v.ord f
AlgebraicCurve.lSpace_mono
Source context 5 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
theorem lSpace_mono (hDE : D ≤ E) : LSpace D ≤ LSpace E
AlgebraicCurve.algebraMap_mem_lSpace_zero
Source context 5 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
theorem algebraMap_mem_lSpace_zero (c : K) :
    algebraMap K F c ∈ LSpace (0 : Divisor K F)
AlgebraicCurve.one_mem_lSpace_zero
Source context 5 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
theorem one_mem_lSpace_zero : (1 : F) ∈ LSpace (0 : Divisor K F)
AlgebraicCurve.ConstantsAreBase

The functions bounded by the zero divisor are exactly the base-field constants.

Source context 5 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
def ConstantsAreBase (K F : Type*) [Field K] [Field F] [Algebra K F] : Prop
AlgebraicCurve.ell_zero_eq_one_of_constantsAreBase
Source context 5 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
theorem ell_zero_eq_one_of_constantsAreBase (h : ConstantsAreBase K F) :
    ell (0 : Divisor K F) = 1
AlgebraicCurve.adeleBdd

The submodule of place-indexed families bounded by a divisor.

Source context 5 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
def adeleBdd (D : Divisor K F) : Submodule K (Place K F → F) where
  carrier := {α | ∀ v : Place K F, v.adicValuation (α v) ≤ WithZero.exp (D v)}
  add_mem' := fun {α β} hα hβ v =>
    (v.adicValuation.map_add (α v) (β v)).trans (max_le (hα v) (hβ v))
  zero_mem' := fun v => by rw [Pi.zero_apply, Valuation.map_zero]; exact zero_le
  smul_mem' := fun c α hα v => by
    rw [Pi.smul_apply, Algebra.smul_def, Valuation.map_mul]
    calc v.adicValuation (algebraMap K F c) * v.adicValuation (α v)
        ≤ 1 * v.adicValuation (α v) := by gcongr; exact v.adicValuation_algebraMap_le_one c
      _ = v.adicValuation (α v) := one_mul _
      _ ≤ WithZero.exp (D v) := hα v
AlgebraicCurve.mem_adeleBdd
Source context 6 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
theorem mem_adeleBdd {α : Place K F → F} :
    α ∈ adeleBdd D ↔ ∀ v : Place K F, v.adicValuation (α v) ≤ WithZero.exp (D v)
AlgebraicCurve.adeleBdd_mono
Source context 6 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
theorem adeleBdd_mono (hDE : D ≤ E) : adeleBdd D ≤ adeleBdd E
AlgebraicCurve.diagonalHom

The linear map sending a function to its constant family at all places.

Source context 7 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
def diagonalHom : F →ₗ[K] (Place K F → F) where
  toFun f := fun _ => f
  map_add' _ _ := rfl
  map_smul' _ _ := rfl
AlgebraicCurve.diagonalHom_apply
Source context 7 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
theorem diagonalHom_apply (f : F) (v : Place K F) : diagonalHom K F f v = f
AlgebraicCurve.diagonalHom_injective
Source context 7 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
theorem diagonalHom_injective [Nonempty (Place K F)] :
    Function.Injective (diagonalHom K F)
AlgebraicCurve.diagonal_mem_adeleBdd_iff
Source context 7 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
theorem diagonal_mem_adeleBdd_iff {f : F} :
    diagonalHom K F f ∈ adeleBdd D ↔ f ∈ LSpace D
AlgebraicCurve.adeleSpace

The union of the submodules bounded by divisors.

Source context 8 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
def adeleSpace : Submodule K (Place K F → F)
AlgebraicCurve.adeleBdd_le_adeleSpace
Source context 8 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
theorem adeleBdd_le_adeleSpace : adeleBdd D ≤ adeleSpace K F
AlgebraicCurve.diagonal_mem_adeleSpace
Source context 8 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
theorem diagonal_mem_adeleSpace [HasPrincipalDivisors K F] (f : F) :
    diagonalHom K F f ∈ adeleSpace K F
AlgebraicCurve.globalSub

The submodule of constant families arising from global functions.

Source context 9 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
def globalSub : Submodule K (Place K F → F)
AlgebraicCurve.diagonal_mem_globalSub
Source context 9 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
theorem diagonal_mem_globalSub (f : F) : diagonalHom K F f ∈ globalSub K F
AlgebraicCurve.map_diagonal_lSpace
Source context 9 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
theorem map_diagonal_lSpace (D : Divisor K F) :
    (LSpace D).map (diagonalHom K F) = adeleBdd D ⊓ globalSub K F
AlgebraicCurve.lSpaceEquivAdeleBddInfGlobal

Identify bounded global families with the corresponding Riemann--Roch space.

Source context 9 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
def lSpaceEquivAdeleBddInfGlobal [Nonempty (Place K F)] (D : Divisor K F) :
    LSpace D ≃ₗ[K] (adeleBdd D ⊓ globalSub K F : Submodule K (Place K F → F))
AlgebraicCurve.finrank_adeleBdd_inf_global_eq_ell
Source context 9 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
theorem finrank_adeleBdd_inf_global_eq_ell [Nonempty (Place K F)] (D : Divisor K F) :
    Module.finrank K (adeleBdd D ⊓ globalSub K F : Submodule K (Place K F → F)) = ell D
AlgebraicCurve.indexOfSpecialty

The dimension of the adelic quotient by bounded families and global functions.

Source context 9 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
def indexOfSpecialty (D : Divisor K F) : ℕ
AlgebraicCurve.adeleBdd_directed
Source context 9 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
theorem adeleBdd_directed :
    Directed (· ≤ ·) (adeleBdd (K := K) (F := F))
AlgebraicCurve.mem_adeleSpace_iff
Source context 9 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
theorem mem_adeleSpace_iff {α : Place K F → F} :
    α ∈ adeleSpace K F ↔ ∃ D : Divisor K F, α ∈ adeleBdd D
AlgebraicCurve.adeleBddPrincipal

The sum of bounded families and global functions inside the adelic space.

Source context 10 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
abbrev adeleBddPrincipal (D : Divisor K F) : Submodule K (adeleSpace K F)
AlgebraicCurve.indexOfSpecialty_eq
Source context 10 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
theorem indexOfSpecialty_eq (D : Divisor K F) :
    indexOfSpecialty D = Module.finrank K (adeleSpace K F ⧸ adeleBddPrincipal K F D)
AlgebraicCurve.omegaSpace

The annihilator of bounded families and global functions in the adelic dual.

Source context 10 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
def omegaSpace (D : Divisor K F) : Submodule K (Module.Dual K (adeleSpace K F))
AlgebraicCurve.omegaSpace_vanishBdd
Source context 10 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
theorem omegaSpace_vanishBdd {D : Divisor K F} {φ : Module.Dual K (adeleSpace K F)}
    (hφ : φ ∈ omegaSpace D) {α : adeleSpace K F} (hα : (α : Place K F → F) ∈ adeleBdd D) :
    φ α = 0
AlgebraicCurve.omegaSpace_vanishGlobal
Source context 10 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
theorem omegaSpace_vanishGlobal {D : Divisor K F} {φ : Module.Dual K (adeleSpace K F)}
    (hφ : φ ∈ omegaSpace D) {α : adeleSpace K F} (hα : (α : Place K F → F) ∈ globalSub K F) :
    φ α = 0
AlgebraicCurve.omegaSpace_antitone
Source context 10 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
theorem omegaSpace_antitone {D E : Divisor K F} (hDE : D ≤ E) :
    omegaSpace E ≤ omegaSpace D
AlgebraicCurve.omegaSpaceEquivIndexDual

Identify the annihilator with the dual of the corresponding adelic quotient.

Source context 10 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
def omegaSpaceEquivIndexDual (D : Divisor K F) :
    omegaSpace D ≃ₗ[K] Module.Dual K (adeleSpace K F ⧸ adeleBddPrincipal K F D)
AlgebraicCurve.finrank_omegaSpace_eq_indexOfSpecialty
Source context 10 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
theorem finrank_omegaSpace_eq_indexOfSpecialty (D : Divisor K F) :
    Module.finrank K (omegaSpace D) = indexOfSpecialty D
AlgebraicCurve.weilDifferentialModule

The union of the differential spaces bounded by divisors.

Source context 11 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
def weilDifferentialModule : Submodule K (Module.Dual K (adeleSpace K F))
AlgebraicCurve.omegaSpace_le_weilDifferentialModule
Source context 11 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
theorem omegaSpace_le_weilDifferentialModule (D : Divisor K F) :
    omegaSpace D ≤ weilDifferentialModule K F
AlgebraicCurve.omegaSpace_directed
Source context 11 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
theorem omegaSpace_directed :
    Directed (· ≤ ·) (omegaSpace (K := K) (F := F))
AlgebraicCurve.mem_weilDifferentialModule_iff
Source context 11 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
theorem mem_weilDifferentialModule_iff {φ : Module.Dual K (adeleSpace K F)} :
    φ ∈ weilDifferentialModule K F ↔ ∃ D : Divisor K F, φ ∈ omegaSpace D
AlgebraicCurve.mulAdele

The linear map multiplying every component of a family by a fixed function.

Source context 12 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
def mulAdele (f : F) : (Place K F → F) →ₗ[K] (Place K F → F) where
  toFun α := fun v => f * α v
  map_add' α β := funext fun v => mul_add f (α v) (β v)
  map_smul' c α := funext fun v => by
    simp only [Pi.smul_apply, Algebra.smul_def, RingHom.id_apply]; ring
AlgebraicCurve.mulAdele_apply
Source context 12 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
theorem mulAdele_apply (f : F) (α : Place K F → F) (v : Place K F) :
    mulAdele K f α v = f * α v
AlgebraicCurve.mulAdele_one
Source context 12 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
theorem mulAdele_one : mulAdele K (1 : F) = LinearMap.id
AlgebraicCurve.mulAdele_mul
Source context 12 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
theorem mulAdele_mul (f g : F) :
    mulAdele K (f * g) = (mulAdele K f).comp (mulAdele K g)
AlgebraicCurve.mulAdele_mem_adeleBdd_sub
Source context 12 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
theorem mulAdele_mem_adeleBdd_sub {f : F} (hf : f ≠ 0) {P : Divisor K F}
    (hP : ∀ v, P v = v.ord f) {D : Divisor K F} {α : Place K F → F}
    (hα : α ∈ adeleBdd D) : mulAdele K f α ∈ adeleBdd (D - P)
AlgebraicCurve.mulAdele_globalSub_le
Source context 12 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
theorem mulAdele_globalSub_le (f : F) :
    (globalSub K F).map (mulAdele K f) ≤ globalSub K F
AlgebraicCurve.mulAdele_mem_adeleSpace
Source context 12 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
theorem mulAdele_mem_adeleSpace [HasPrincipalDivisors K F] (f : F) {α : Place K F → F}
    (hα : α ∈ adeleSpace K F) : mulAdele K f α ∈ adeleSpace K F
AlgebraicCurve.adeleSpaceMul

Componentwise multiplication by a function restricted to the adelic space.

Source context 13 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
def adeleSpaceMul [HasPrincipalDivisors K F] (f : F) :
    adeleSpace K F →ₗ[K] adeleSpace K F
AlgebraicCurve.adeleSpaceMul_coe
Source context 13 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
theorem adeleSpaceMul_coe [HasPrincipalDivisors K F] (f : F) (α : adeleSpace K F) :
    (adeleSpaceMul K F f α : Place K F → F) = mulAdele K f (α : Place K F → F)
AlgebraicCurve.weilSmul

The action of a function on the adelic dual by precomposition with multiplication.

Source context 14 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
def weilSmul [HasPrincipalDivisors K F] (f : F) :
    Module.Dual K (adeleSpace K F) →ₗ[K] Module.Dual K (adeleSpace K F)
AlgebraicCurve.weilSmul_apply
Source context 14 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
theorem weilSmul_apply [HasPrincipalDivisors K F] (f : F)
    (φ : Module.Dual K (adeleSpace K F)) (α : adeleSpace K F) :
    weilSmul K F f φ α = φ (adeleSpaceMul K F f α)
AlgebraicCurve.adeleSpaceMul_one
Source context 14 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
theorem adeleSpaceMul_one [HasPrincipalDivisors K F] :
    adeleSpaceMul K F (1 : F) = LinearMap.id
AlgebraicCurve.adeleSpaceMul_mul
Source context 14 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
theorem adeleSpaceMul_mul [HasPrincipalDivisors K F] (f g : F) :
    adeleSpaceMul K F (f * g) = (adeleSpaceMul K F f).comp (adeleSpaceMul K F g)
AlgebraicCurve.weilSmul_one
Source context 14 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
theorem weilSmul_one [HasPrincipalDivisors K F] :
    weilSmul K F (1 : F) = LinearMap.id
AlgebraicCurve.weilSmul_mul
Source context 14 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
theorem weilSmul_mul [HasPrincipalDivisors K F] (f g : F) :
    weilSmul K F (f * g) = (weilSmul K F g).comp (weilSmul K F f)
AlgebraicCurve.weilSmul_injective
Source context 14 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
theorem weilSmul_injective [HasPrincipalDivisors K F] {f : F} (hf : f ≠ 0) :
    Function.Injective (weilSmul K F f)
AlgebraicCurve.weilSmul_mem_omegaSpace_add
Source context 14 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
theorem weilSmul_mem_omegaSpace_add [HasPrincipalDivisors K F] {f : F} (hf : f ≠ 0)
    {P : Divisor K F} (hP : ∀ v, P v = v.ord f) {D : Divisor K F}
    {φ : Module.Dual K (adeleSpace K F)} (hφ : φ ∈ omegaSpace D) :
    weilSmul K F f φ ∈ omegaSpace (D + P)
AlgebraicCurve.weilSmul_mem_omegaSpace_of_mem_lSpace
Source context 14 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
theorem weilSmul_mem_omegaSpace_of_mem_lSpace [HasPrincipalDivisors K F]
    {W D : Divisor K F} {φ : Module.Dual K (adeleSpace K F)} (hφ : φ ∈ omegaSpace W)
    {g : F} (hg : g ∈ LSpace (W - D)) :
    weilSmul K F g φ ∈ omegaSpace D
AlgebraicCurve.residuePairing

Pair a bounded function with a Weil differential to obtain a bounded differential.

Source context 15 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
variable (K F) in
def residuePairing [HasPrincipalDivisors K F] (W D : Divisor K F)
    {φ : Module.Dual K (adeleSpace K F)} (hφ : φ ∈ omegaSpace W) :
    LSpace (W - D) →ₗ[K] omegaSpace D where
  toFun g := ⟨weilSmul K F (g : F) φ, weilSmul_mem_omegaSpace_of_mem_lSpace hφ g.2⟩
  map_add' g₁ g₂ := by
    refine Subtype.ext ?_
    change weilSmul K F ((g₁ : F) + (g₂ : F)) φ
      = weilSmul K F (g₁ : F) φ + weilSmul K F (g₂ : F) φ
    ext α; simp only [weilSmul_apply, LinearMap.add_apply]
    rw [← map_add]; congr 1
    exact Subtype.ext (funext fun v => by simp [add_mul])
  map_smul' c g := by
    refine Subtype.ext ?_
    change weilSmul K F (c • (g : F)) φ = c • weilSmul K F (g : F) φ
    ext α; simp only [weilSmul_apply, LinearMap.smul_apply]
    rw [← map_smul]; congr 1
    exact Subtype.ext (funext fun v => by simp [Algebra.smul_def]; ring)
AlgebraicCurve.residuePairing_apply_coe
Source context 15 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
variable (K F) in
theorem residuePairing_apply_coe [HasPrincipalDivisors K F] (W D : Divisor K F)
    {φ : Module.Dual K (adeleSpace K F)} (hφ : φ ∈ omegaSpace W) (g : LSpace (W - D)) :
    (residuePairing K F W D hφ g : Module.Dual K (adeleSpace K F))
      = weilSmul K F (g : F) φ
AlgebraicCurve.residuePairing_injective
Source context 15 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
variable (K F) in
theorem residuePairing_injective [HasPrincipalDivisors K F] (W D : Divisor K F)
    {φ : Module.Dual K (adeleSpace K F)} (hφ : φ ∈ omegaSpace W) (hφ0 : φ ≠ 0) :
    Function.Injective (residuePairing K F W D hφ)
AlgebraicCurve.ell_sub_le_indexOfSpecialty
Source context 15 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
variable (K F) in
theorem ell_sub_le_indexOfSpecialty [HasPrincipalDivisors K F] (W D : Divisor K F)
    {φ : Module.Dual K (adeleSpace K F)} (hφ : φ ∈ omegaSpace W) (hφ0 : φ ≠ 0)
    [Module.Finite K (omegaSpace (K := K) (F := F) D)] :
    ell (W - D) ≤ indexOfSpecialty D
AlgebraicCurve.WeilDifferentialRankOne

Every nonzero Weil differential uniquely generates all Weil differentials by functions.

Source context 16 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F)
def WeilDifferentialRankOne [HasPrincipalDivisors K F] : Prop
AlgebraicCurve.HasWeilCanonicalDivisor

Every nonzero Weil differential has a largest divisor bound.

Source context 16 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F)
def HasWeilCanonicalDivisor : Prop
AlgebraicCurve.RiemannGenusReachedAt

A divisor attains the maximal degree-minus-dimension value specified by a genus.

Source context 17 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F)
variable {K F}
structure RiemannGenusReachedAt (γ : ℤ) (D₀ : Divisor K F) : Prop where
  /-- The Riemann--Roch space of the attaining divisor is finite-dimensional. -/
  finite : FiniteDimensional K (LSpace D₀)
  /-- The attaining divisor has degree minus dimension equal to the genus minus one. -/
  eq : Divisor.degree D₀ - (ell D₀ : ℤ) = γ - 1
  /-- All divisors satisfy the same upper bound for degree minus dimension. -/
  isMax : ∀ D : Divisor K F, Divisor.degree D - (ell D : ℤ) ≤ γ - 1
AlgebraicCurve.RiemannGenusReached

The genus bound is attained and the zero-divisor space is finite-dimensional.

Source context 18 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F)
variable {K F}
variable (K F) in
def RiemannGenusReached (γ : ℤ) : Prop
AlgebraicCurve.StichtenothGenusExists

Some integer genus bound is attained, with a finite-dimensional zero-divisor space.

Source context 19 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F)
variable {K F}
variable (K F) in
variable (K F) in
def StichtenothGenusExists : Prop
AlgebraicCurve.RiemannGenusBounded

Degree minus Riemann--Roch dimension is bounded above over all divisors.

Source context 20 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F)
variable {K F}
variable (K F) in
variable (K F) in
variable (K F) in
def RiemannGenusBounded : Prop
AlgebraicCurve.IndexOfSpecialtyFinite

Some bounded adelic quotient is a finite module over the base field.

Source context 21 commands

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

noncomputable section
open IsDedekindDomain WithZero Module
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
variable {D E : Divisor K F}
variable {D E : Divisor K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K) in
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F)
variable {K F}
variable (K F) in
variable (K F) in
variable (K F) in
variable (K F) in
def IndexOfSpecialtyFinite : Prop