Module

LogDeRham.lean

Nyll.AlgebraicCurves.Cohomology.LogDeRham
57 declarations indexed from sourceView source ↗

Log De Rham

Declarations

AlgebraicCurve.Place.unifLDR
Source context 6 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace Place
variable (v : Place K F)
def unifLDR : F
AlgebraicCurve.Place.unifLDR_mem
Source context 6 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace Place
variable (v : Place K F)
theorem unifLDR_mem : v.unifLDR ∈ v.toValuationSubring
AlgebraicCurve.Place.dCoord_eq_D_unifLDR
Source context 6 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace Place
variable (v : Place K F)
theorem dCoord_eq_D_unifLDR : v.dCoord = D K F v.unifLDR
AlgebraicCurve.Place.HasPoleOrderLE

The differential coefficient becomes integral after multiplication by a uniformizer power.

Source context 6 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace Place
variable (v : Place K F)
def HasPoleOrderLE (n : ℕ) (ω : Ω[F⁄K]) : Prop
AlgebraicCurve.Place.FnPoleOrderLE

The function becomes integral after multiplication by a uniformizer power.

Source context 6 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace Place
variable (v : Place K F)
def FnPoleOrderLE (n : ℕ) (g : F) : Prop
AlgebraicCurve.Place.HasLogResidue

The uniformizer times the differential coefficient has the specified residue.

Source context 6 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace Place
variable (v : Place K F)
def HasLogResidue (ω : Ω[F⁄K]) (a : K) : Prop
AlgebraicCurve.Place.hasPoleOrderLE_zero_right
Source context 8 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace Place
variable (v : Place K F)
variable {v}
variable (v) in
theorem hasPoleOrderLE_zero_right (n : ℕ) : v.HasPoleOrderLE n (0 : Ω[F⁄K])
theorem

add

L58 ↗
AlgebraicCurve.Place.HasPoleOrderLE.add
Source context 8 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace Place
variable (v : Place K F)
variable {v}
variable (v) in
theorem HasPoleOrderLE.add {n : ℕ} {ω η : Ω[F⁄K]} (hω : v.HasPoleOrderLE n ω)
    (hη : v.HasPoleOrderLE n η) : v.HasPoleOrderLE n (ω + η)
theorem

neg

L64 ↗
AlgebraicCurve.Place.HasPoleOrderLE.neg
Source context 8 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace Place
variable (v : Place K F)
variable {v}
variable (v) in
theorem HasPoleOrderLE.neg {n : ℕ} {ω : Ω[F⁄K]} (hω : v.HasPoleOrderLE n ω) :
    v.HasPoleOrderLE n (-ω)
theorem

sub

L69 ↗
AlgebraicCurve.Place.HasPoleOrderLE.sub
Source context 8 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace Place
variable (v : Place K F)
variable {v}
variable (v) in
theorem HasPoleOrderLE.sub {n : ℕ} {ω η : Ω[F⁄K]} (hω : v.HasPoleOrderLE n ω)
    (hη : v.HasPoleOrderLE n η) : v.HasPoleOrderLE n (ω - η)
AlgebraicCurve.Place.HasPoleOrderLE.smul
Source context 8 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace Place
variable (v : Place K F)
variable {v}
variable (v) in
theorem HasPoleOrderLE.smul {n : ℕ} (c : K) {ω : Ω[F⁄K]} (hω : v.HasPoleOrderLE n ω) :
    v.HasPoleOrderLE n (c • ω)
AlgebraicCurve.Place.HasPoleOrderLE.of_le
Source context 8 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace Place
variable (v : Place K F)
variable {v}
variable (v) in
theorem HasPoleOrderLE.of_le {m n : ℕ} (h : m ≤ n) {ω : Ω[F⁄K]} (hω : v.HasPoleOrderLE m ω) :
    v.HasPoleOrderLE n ω
AlgebraicCurve.Place.hasPoleOrderLE_zero_of_mem
Source context 8 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace Place
variable (v : Place K F)
variable {v}
variable (v) in
theorem hasPoleOrderLE_zero_of_mem {f : F} (hf : f ∈ v.toValuationSubring) :
    v.HasPoleOrderLE 0 (f • v.dCoord)
theorem

add

L92 ↗
AlgebraicCurve.Place.FnPoleOrderLE.add
Source context 8 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace Place
variable (v : Place K F)
variable {v}
variable (v) in
theorem FnPoleOrderLE.add {n : ℕ} {g h : F} (hg : v.FnPoleOrderLE n g) (hh : v.FnPoleOrderLE n h) :
    v.FnPoleOrderLE n (g + h)
AlgebraicCurve.Place.FnPoleOrderLE.smul
Source context 8 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace Place
variable (v : Place K F)
variable {v}
variable (v) in
theorem FnPoleOrderLE.smul {n : ℕ} (c : K) {g : F} (hg : v.FnPoleOrderLE n g) :
    v.FnPoleOrderLE n (algebraMap K F c * g)
AlgebraicCurve.Place.fnPoleOrderLE_zero_iff
Source context 8 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace Place
variable (v : Place K F)
variable {v}
variable (v) in
theorem fnPoleOrderLE_zero_iff (g : F) : v.FnPoleOrderLE 0 g ↔ g ∈ v.toValuationSubring
AlgebraicCurve.Place.HasLogResidue.hasPoleOrderLE
Source context 8 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace Place
variable (v : Place K F)
variable {v}
variable (v) in
theorem HasLogResidue.hasPoleOrderLE {ω : Ω[F⁄K]} {a : K} (h : v.HasLogResidue ω a) :
    v.HasPoleOrderLE 1 ω
AlgebraicCurve.logForms

Differentials regular off the specified places and with at most simple poles at those places.

Source context 6 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
section LogForms
variable (K F)
def logForms (S : Set (Place K F)) : Submodule K Ω[F⁄K] where
  carrier := {ω | ∀ v : Place K F, (v ∉ S → v.HasPoleOrderLE 0 ω) ∧ (v ∈ S → v.HasPoleOrderLE 1 ω)}
  zero_mem' v := ⟨fun _ => v.hasPoleOrderLE_zero_right 0, fun _ => v.hasPoleOrderLE_zero_right 1⟩
  add_mem' hω hη v :=
    ⟨fun hv => ((hω v).1 hv).add ((hη v).1 hv), fun hv => ((hω v).2 hv).add ((hη v).2 hv)⟩
  smul_mem' c _ hω v := ⟨fun hv => ((hω v).1 hv).smul c, fun hv => ((hω v).2 hv).smul c⟩
AlgebraicCurve.mem_logForms_iff
Source context 7 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
section LogForms
variable (K F)
variable {K F}
theorem mem_logForms_iff {S : Set (Place K F)} {ω : Ω[F⁄K]} :
    ω ∈ logForms K F S ↔
      ∀ v : Place K F, (v ∉ S → v.HasPoleOrderLE 0 ω) ∧ (v ∈ S → v.HasPoleOrderLE 1 ω)
AlgebraicCurve.regularDifferentials_le_logForms
Source context 7 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
section LogForms
variable (K F)
variable {K F}
theorem regularDifferentials_le_logForms (S : Set (Place K F)) :
    regularDifferentials K F ≤ logForms K F S
AlgebraicCurve.LogDeRham.cocycles

Differential-function pairs satisfying the logarithmic regularity conditions.

Source context 6 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
def cocycles (S : Set (Place K F)) : Submodule K (Ω[F⁄K] × F) where
  carrier := {c | (∀ v : Place K F, v ∉ S → v.HasPoleOrderLE 0 c.1) ∧
    (∀ v : Place K F, v ∈ S → v.HasPoleOrderLE 1 (c.1 - D K F c.2))}
  zero_mem' := by
    refine ⟨fun v _ => ?_, fun v _ => ?_⟩
    · exact v.hasPoleOrderLE_zero_right 0
    · change v.HasPoleOrderLE 1 ((0 : Ω[F⁄K]) - D K F (0 : F))
      rw [map_zero, sub_zero]; exact v.hasPoleOrderLE_zero_right 1
  add_mem' {c c'} hc hc' := by
    refine ⟨fun v hv => ?_, fun v hv => ?_⟩
    · change v.HasPoleOrderLE 0 (c.1 + c'.1)
      exact (hc.1 v hv).add (hc'.1 v hv)
    · have h := (hc.2 v hv).add (hc'.2 v hv)
      change v.HasPoleOrderLE 1 ((c.1 + c'.1) - D K F (c.2 + c'.2))
      rw [map_add]
      convert h using 1
      abel
  smul_mem' a {c} hc := by
    refine ⟨fun v hv => ?_, fun v hv => ?_⟩
    · change v.HasPoleOrderLE 0 (a • c.1)
      exact (hc.1 v hv).smul a
    · have h := (hc.2 v hv).smul a
      rw [smul_sub] at h
      change v.HasPoleOrderLE 1 (a • c.1 - D K F (a • c.2))
      have hD : D K F (a • c.2) = a • D K F c.2 := by
        rw [Algebra.smul_def, Derivation.leibniz, Derivation.map_algebraMap, smul_zero, add_zero,
          ← algebraMap_smul F a (D K F c.2)]
      rw [hD]; exact h
AlgebraicCurve.LogDeRham.exactPart

Exact differential-function pairs arising from functions regular off the specified places.

Source context 6 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
def exactPart (S : Set (Place K F)) : Submodule K (Ω[F⁄K] × F) where
  carrier := {c | ∃ h : F, (∀ v : Place K F, v ∉ S → h ∈ v.toValuationSubring) ∧ c = (D K F h, h)}
  zero_mem' := ⟨0, fun v _ => zero_mem _, Prod.ext (by simp) rfl⟩
  add_mem' := by
    rintro _ _ ⟨h, hh, rfl⟩ ⟨h', hh', rfl⟩
    exact ⟨h + h', fun v hv => add_mem (hh v hv) (hh' v hv), Prod.ext (by simp [map_add]) rfl⟩
  smul_mem' := by
    rintro a _ ⟨h, hh, rfl⟩
    refine ⟨a • h, fun v hv => ?_, ?_⟩
    · rw [Algebra.smul_def]; exact mul_mem (v.algebraMap_mem' a) (hh v hv)
    · have hD : D K F (a • h) = a • D K F h := by
        rw [Algebra.smul_def, Derivation.leibniz, Derivation.map_algebraMap, smul_zero, add_zero,
          ← algebraMap_smul F a (D K F h)]
      exact Prod.ext (by rw [Prod.smul_mk, hD]) (by rw [Prod.smul_mk])
AlgebraicCurve.LogDeRham.localPart

Pairs with zero differential and a function regular on the specified places.

Source context 6 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
def localPart (S : Set (Place K F)) : Submodule K (Ω[F⁄K] × F) where
  carrier := {c | c.1 = 0 ∧ ∀ v : Place K F, v ∈ S → c.2 ∈ v.toValuationSubring}
  zero_mem' := ⟨rfl, fun v _ => zero_mem _⟩
  add_mem' {c c'} hc hc' := ⟨by rw [Prod.fst_add, hc.1, hc'.1, add_zero],
    fun v hv => add_mem (hc.2 v hv) (hc'.2 v hv)⟩
  smul_mem' a {c} hc := ⟨by rw [Prod.smul_fst, hc.1, smul_zero], fun v hv => by
    rw [Prod.smul_snd, Algebra.smul_def]; exact mul_mem (v.algebraMap_mem' a) (hc.2 v hv)⟩
AlgebraicCurve.LogDeRham.coboundaries

The sum of the exact and locally regular subspaces.

Source context 6 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
def coboundaries (S : Set (Place K F)) : Submodule K (Ω[F⁄K] × F)
AlgebraicCurve.LogDeRham.coboundariesIn

The coboundary subspace regarded as a subspace of cocycles.

Source context 6 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
abbrev coboundariesIn (S : Set (Place K F)) : Submodule K ↥(cocycles K F S)
AlgebraicCurve.LogDeRham.H1

Logarithmic de Rham cocycles modulo coboundaries.

Source context 6 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
abbrev H1 (S : Set (Place K F)) : Type _
AlgebraicCurve.LogDeRham.regularOff

Functions integral at every place outside the specified set.

Source context 6 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
def regularOff (S : Set (Place K F)) : Submodule K F where
  carrier := {h | ∀ v : Place K F, v ∉ S → h ∈ v.toValuationSubring}
  zero_mem' v _ := zero_mem _
  add_mem' {h h'} hh hh' v hv := add_mem (hh v hv) (hh' v hv)
  smul_mem' a {h} hh v hv := by rw [Algebra.smul_def]; exact mul_mem (v.algebraMap_mem' a) (hh v hv)
AlgebraicCurve.LogDeRham.regularOn

Functions integral at every place in the specified set.

Source context 6 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
def regularOn (S : Set (Place K F)) : Submodule K F where
  carrier := {r | ∀ v : Place K F, v ∈ S → r ∈ v.toValuationSubring}
  zero_mem' v _ := zero_mem _
  add_mem' {h h'} hh hh' v hv := add_mem (hh v hv) (hh' v hv)
  smul_mem' a {h} hh v hv := by rw [Algebra.smul_def]; exact mul_mem (v.algebraMap_mem' a) (hh v hv)
AlgebraicCurve.LogDeRham.H1O

Functions modulo the sum of the subspaces regular on and off the specified set.

Source context 6 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
abbrev H1O (S : Set (Place K F)) : Type _
AlgebraicCurve.LogDeRham.H1.mk

The quotient map from logarithmic cocycles to their cohomology classes.

Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
namespace H1
variable {K F}
variable (S : Set (Place K F))
def mk : ↥(cocycles K F S) →ₗ[K] H1 K F S
AlgebraicCurve.LogDeRham.H1.inl_mem_cocycles
Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
namespace H1
variable {K F}
variable (S : Set (Place K F))
theorem inl_mem_cocycles {ω : Ω[F⁄K]} (hω : ω ∈ logForms K F S) : (ω, (0 : F)) ∈ cocycles K F S
AlgebraicCurve.LogDeRham.H1.ofLog

The cohomology class of a logarithmic differential with zero function component.

Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
namespace H1
variable {K F}
variable (S : Set (Place K F))
def ofLog : ↥(logForms K F S) →ₗ[K] H1 K F S
AlgebraicCurve.LogDeRham.H1.ofRegular

The logarithmic cohomology class of a regular differential.

Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
namespace H1
variable {K F}
variable (S : Set (Place K F))
def ofRegular : ↥(regularDifferentials K F) →ₗ[K] H1 K F S
AlgebraicCurve.LogDeRham.H1.snd_mem_of_mem_coboundaries
Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
namespace H1
variable {K F}
variable (S : Set (Place K F))
theorem snd_mem_of_mem_coboundaries {c : Ω[F⁄K] × F} (hc : c ∈ coboundaries K F S) :
    c.2 ∈ regularOff K F S ⊔ regularOn K F S
AlgebraicCurve.LogDeRham.H1.toH1O

The map on cohomology induced by the function component of a cocycle.

Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
namespace H1
variable {K F}
variable (S : Set (Place K F))
def toH1O : H1 K F S →ₗ[K] H1O K F S
AlgebraicCurve.LogDeRham.H1.HasResidueAt

A representative of the class has the specified logarithmic residue at the place.

Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
namespace H1
variable {K F}
variable (S : Set (Place K F))
def HasResidueAt (v : Place K F) (x : H1 K F S) (a : K) : Prop
AlgebraicCurve.LogDeRham.H1.IsSecondKind

The cohomology class has residue zero at each specified place.

Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
namespace H1
variable {K F}
variable (S : Set (Place K F))
def IsSecondKind (x : H1 K F S) : Prop
AlgebraicCurve.LogDeRham.H1.IsClassOfWithTail

The differential represents the class with a function component of bounded pole order.

Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
namespace H1
variable {K F}
variable (S : Set (Place K F))
def IsClassOfWithTail (m : ℕ) (ω : Ω[F⁄K]) (x : H1 K F S) : Prop
AlgebraicCurve.LogDeRham.pullbackForm

The map on differentials induced by the given algebra homomorphism.

Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Map
variable {K F}
variable {F' : Type*} [Field F'] [Algebra K F']
def pullbackForm (φ : F →ₐ[K] F') : Ω[F⁄K] →ₗ[K] Ω[F'⁄K]
AlgebraicCurve.LogDeRham.pullbackForm_D
Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Map
variable {K F}
variable {F' : Type*} [Field F'] [Algebra K F']
theorem pullbackForm_D (φ : F →ₐ[K] F') (x : F) :
    pullbackForm φ (D K F x) = D K F' (φ x)
AlgebraicCurve.LogDeRham.pullbackPair

Apply the induced map on differentials and the algebra map to a cocycle pair.

Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Map
variable {K F}
variable {F' : Type*} [Field F'] [Algebra K F']
def pullbackPair (φ : F →ₐ[K] F') : (Ω[F⁄K] × F) →ₗ[K] (Ω[F'⁄K] × F')
AlgebraicCurve.LogDeRham.pullbackPair_apply
Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Map
variable {K F}
variable {F' : Type*} [Field F'] [Algebra K F']
theorem pullbackPair_apply (φ : F →ₐ[K] F') (c : Ω[F⁄K] × F) :
    pullbackPair φ c = (pullbackForm φ c.1, φ c.2)
AlgebraicCurve.LogDeRham.pullbackPair_D
Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Map
variable {K F}
variable {F' : Type*} [Field F'] [Algebra K F']
theorem pullbackPair_D (φ : F →ₐ[K] F') (h : F) :
    pullbackPair φ (D K F h, h) = (D K F' (φ h), φ h)
AlgebraicCurve.LogDeRham.H1.map

The map on logarithmic cohomology induced by a map preserving cocycles and coboundaries.

Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Map
variable {K F}
variable {F' : Type*} [Field F'] [Algebra K F']
def H1.map (S : Set (Place K F)) (T : Set (Place K F')) (φ : F →ₐ[K] F')
    (hZ : ∀ c ∈ cocycles K F S, pullbackPair φ c ∈ cocycles K F' T)
    (hB : ∀ c ∈ coboundaries K F S, pullbackPair φ c ∈ coboundaries K F' T) :
    H1 K F S →ₗ[K] H1 K F' T
AlgebraicCurve.LogDeRham.H1.map_mk
Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Map
variable {K F}
variable {F' : Type*} [Field F'] [Algebra K F']
theorem H1.map_mk (S : Set (Place K F)) (T : Set (Place K F')) (φ : F →ₐ[K] F')
    (hZ : ∀ c ∈ cocycles K F S, pullbackPair φ c ∈ cocycles K F' T)
    (hB : ∀ c ∈ coboundaries K F S, pullbackPair φ c ∈ coboundaries K F' T)
    (c : ↥(cocycles K F S)) :
    H1.map S T φ hZ hB (H1.mk S c) = H1.mk T ⟨pullbackPair φ c, hZ c c.2⟩
AlgebraicCurve.LogDeRham.D_pow_char
Source context 10 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Frobenius
variable {K F}
variable (p : ℕ) [Fact p.Prime] [CharP K p]
omit [Fact p.Prime] in
theorem D_pow_char (g : F) : D K F (g ^ p) = 0
AlgebraicCurve.LogDeRham.frobPair

The Frobenius-semilinear map taking a pair to zero and the power of its function component.

Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Frobenius
variable {K F}
variable (p : ℕ) [Fact p.Prime] [CharP K p]
def frobPair : (Ω[F⁄K] × F) →ₛₗ[frobenius K p] (Ω[F⁄K] × F) where
  toFun c := (0, c.2 ^ p)
  map_add' c c' := by
    ext
    · simp
    · have : CharP F p := charP_of_injective_algebraMap (algebraMap K F).injective p
      change (c.2 + c'.2) ^ p = c.2 ^ p + c'.2 ^ p
      exact add_pow_char (p := p) c.2 c'.2
  map_smul' a c := by
    ext
    · simp
    · simp only [Prod.smul_snd, frobenius_def, Algebra.smul_def, mul_pow, map_pow]
AlgebraicCurve.LogDeRham.frobPair_mem_cocycles
Source context 10 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Frobenius
variable {K F}
variable (p : ℕ) [Fact p.Prime] [CharP K p]
variable (S : Set (Place K F))
theorem frobPair_mem_cocycles (c : ↥(cocycles K F S)) : frobPair p (c : Ω[F⁄K] × F) ∈ cocycles K F
  S
AlgebraicCurve.LogDeRham.frobCocycles

The Frobenius-semilinear map restricted to logarithmic cocycles.

Source context 10 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Frobenius
variable {K F}
variable (p : ℕ) [Fact p.Prime] [CharP K p]
variable (S : Set (Place K F))
def frobCocycles : ↥(cocycles K F S) →ₛₗ[frobenius K p] ↥(cocycles K F S)
AlgebraicCurve.LogDeRham.coboundariesIn_le_comap_frobCocycles
Source context 10 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Frobenius
variable {K F}
variable (p : ℕ) [Fact p.Prime] [CharP K p]
variable (S : Set (Place K F))
theorem coboundariesIn_le_comap_frobCocycles :
    coboundariesIn K F S ≤ (coboundariesIn K F S).comap (frobCocycles p S)
AlgebraicCurve.LogDeRham.H1.frob

The Frobenius-semilinear endomorphism of logarithmic cohomology.

Source context 10 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Frobenius
variable {K F}
variable (p : ℕ) [Fact p.Prime] [CharP K p]
variable (S : Set (Place K F))
def H1.frob : H1 K F S →ₛₗ[frobenius K p] H1 K F S
AlgebraicCurve.LogDeRham.CartierHypotheses

The semilinearity, exactness, and pole-preservation properties required of a Cartier map.

Source context 9 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Cartier
variable {K F}
variable (p : ℕ) [Fact p.Prime] [CharP K p] [PerfectRing K p]
structure CartierHypotheses (C : Ω[F⁄K] →+ Ω[F⁄K]) : Prop where
  /-- The map is semilinear for inverse Frobenius on the base field. -/
  semi : ∀ (a : K) (ω : Ω[F⁄K]), C (a • ω) = (frobeniusEquiv K p).symm a • C ω
  /-- The map kills exact differentials. -/
  ker : ∀ f : F, C (D K F f) = 0
  /-- The map preserves regularity at each place. -/
  regular : ∀ (v : Place K F) (ω : Ω[F⁄K]), v.HasPoleOrderLE 0 ω → v.HasPoleOrderLE 0 (C ω)
  /-- The map preserves the bound of at most a simple pole at each place. -/
  log : ∀ (v : Place K F) (ω : Ω[F⁄K]), v.HasPoleOrderLE 1 ω → v.HasPoleOrderLE 1 (C ω)
AlgebraicCurve.LogDeRham.cartierPair

Apply the Cartier map to the differential component and set the function component to zero.

Source context 12 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Cartier
variable {K F}
variable (p : ℕ) [Fact p.Prime] [CharP K p] [PerfectRing K p]
variable {p}
variable {C : Ω[F⁄K] →+ Ω[F⁄K]} (hC : CartierHypotheses p C)
variable (S : Set (Place K F))
def cartierPair :
    (Ω[F⁄K] × F) →ₛₗ[((frobeniusEquiv K p).symm : K →+* K)] (Ω[F⁄K] × F) where
  toFun c := (C c.1, 0)
  map_add' c c' := by ext <;> simp [map_add]
  map_smul' a c := by
    ext
    · simp only [Prod.smul_fst, RingHom.coe_coe]; exact hC.semi a c.1
    · simp
AlgebraicCurve.LogDeRham.cartierPair_mem_cocycles
Source context 12 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Cartier
variable {K F}
variable (p : ℕ) [Fact p.Prime] [CharP K p] [PerfectRing K p]
variable {p}
variable {C : Ω[F⁄K] →+ Ω[F⁄K]} (hC : CartierHypotheses p C)
variable (S : Set (Place K F))
theorem cartierPair_mem_cocycles (c : ↥(cocycles K F S)) :
    cartierPair hC (c : Ω[F⁄K] × F) ∈ cocycles K F S
AlgebraicCurve.LogDeRham.cartierCocycles

The inverse-Frobenius-semilinear Cartier map restricted to logarithmic cocycles.

Source context 12 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Cartier
variable {K F}
variable (p : ℕ) [Fact p.Prime] [CharP K p] [PerfectRing K p]
variable {p}
variable {C : Ω[F⁄K] →+ Ω[F⁄K]} (hC : CartierHypotheses p C)
variable (S : Set (Place K F))
def cartierCocycles :
    ↥(cocycles K F S) →ₛₗ[((frobeniusEquiv K p).symm : K →+* K)] ↥(cocycles K F S)
AlgebraicCurve.LogDeRham.coboundariesIn_le_comap_cartierCocycles
Source context 12 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Cartier
variable {K F}
variable (p : ℕ) [Fact p.Prime] [CharP K p] [PerfectRing K p]
variable {p}
variable {C : Ω[F⁄K] →+ Ω[F⁄K]} (hC : CartierHypotheses p C)
variable (S : Set (Place K F))
theorem coboundariesIn_le_comap_cartierCocycles :
    coboundariesIn K F S ≤ (coboundariesIn K F S).comap (cartierCocycles hC S)
AlgebraicCurve.LogDeRham.H1.cartier

The Cartier endomorphism induced on logarithmic cohomology.

Source context 12 commands

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

noncomputable section
open KaehlerDifferential
namespace AlgebraicCurve
variable {K F : Type*} [Field K] [Field F] [Algebra K F]
namespace LogDeRham
variable (K F)
section Cartier
variable {K F}
variable (p : ℕ) [Fact p.Prime] [CharP K p] [PerfectRing K p]
variable {p}
variable {C : Ω[F⁄K] →+ Ω[F⁄K]} (hC : CartierHypotheses p C)
variable (S : Set (Place K F))
def H1.cartier :
    H1 K F S →ₛₗ[((frobeniusEquiv K p).symm : K →+* K)] H1 K F S