Module

TwoChartCechLaurentChart.lean

Nyll.AlgebraicCurves.Cohomology.Cech.TwoChartCechLaurentChart
39 declarations indexed from sourceView source ↗

Two Chart Cech Laurent Chart

Declarations

LaurentSeries.derivative_coeff
Source context 4 commands

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

noncomputable section
universe u v
namespace LaurentSeries
variable (R : Type*) [CommRing R]
theorem derivative_coeff (x : LaurentSeries R) (n : ℤ) :
    (derivative R x).coeff n = (n + 1) • x.coeff (n + 1)
LaurentSeries.derivative_single_one_mul
Source context 4 commands

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

noncomputable section
universe u v
namespace LaurentSeries
variable (R : Type*) [CommRing R]
theorem derivative_single_one_mul (n : ℤ) (x : LaurentSeries R) :
    derivative R (HahnSeries.single n (1 : R) * x) =
      HahnSeries.single (n - 1) (n : R) * x + HahnSeries.single n (1 : R) * derivative R x
LaurentSeries.coeff_ofPowerSeries_of_neg
Source context 4 commands

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

noncomputable section
universe u v
namespace LaurentSeries
variable (R : Type*) [CommRing R]
theorem coeff_ofPowerSeries_of_neg (p : PowerSeries R) {m : ℤ} (hm : m < 0) :
    (HahnSeries.ofPowerSeries ℤ R p).coeff m = 0
LaurentSeries.derivative_ofPowerSeries
Source context 4 commands

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

noncomputable section
universe u v
namespace LaurentSeries
variable (R : Type*) [CommRing R]
theorem derivative_ofPowerSeries (p : PowerSeries R) :
    derivative R (HahnSeries.ofPowerSeries ℤ R p) =
      HahnSeries.ofPowerSeries ℤ R (PowerSeries.derivative p)
LaurentSeries.derivative_mul_def
Source context 4 commands

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

noncomputable section
universe u v
namespace LaurentSeries
variable (R : Type*) [CommRing R]
theorem derivative_mul_def (x y : LaurentSeries R) :
    derivative R (x * y) = x * derivative R y + derivative R x * y
LaurentSeries.residue

The residue of a Laurent series, given by its coefficient of exponent -1.

Source context 4 commands

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

noncomputable section
universe u v
namespace LaurentSeries
variable (R : Type*) [CommRing R]
def residue : LaurentSeries R →ₗ[R] R
LaurentSeries.residue_apply
Source context 4 commands

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

noncomputable section
universe u v
namespace LaurentSeries
variable (R : Type*) [CommRing R]
theorem residue_apply (x : LaurentSeries R) : residue R x = x.coeff (-1)
LaurentSeries.residue_ofPowerSeries
Source context 4 commands

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

noncomputable section
universe u v
namespace LaurentSeries
variable (R : Type*) [CommRing R]
theorem residue_ofPowerSeries (p : PowerSeries R) : residue R (HahnSeries.ofPowerSeries ℤ R p) =
  0
LaurentSeries.residue_ofPowerSeries_mul_derivative_ofPowerSeries
Source context 4 commands

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

noncomputable section
universe u v
namespace LaurentSeries
variable (R : Type*) [CommRing R]
theorem residue_ofPowerSeries_mul_derivative_ofPowerSeries (p q : PowerSeries R) :
    residue R (HahnSeries.ofPowerSeries ℤ R p * derivative R (HahnSeries.ofPowerSeries ℤ R q)) =
      0
LaurentSeries.residue_single_neg_one_mul_derivative_single_one
Source context 4 commands

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

noncomputable section
universe u v
namespace LaurentSeries
variable (R : Type*) [CommRing R]
theorem residue_single_neg_one_mul_derivative_single_one :
    residue R (HahnSeries.single (-1) (1 : R) * derivative R (HahnSeries.single 1 (1 : R))) = 1
LaurentSeries.map_derivative
Source context 4 commands

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

noncomputable section
universe u v
namespace LaurentSeries
variable (R : Type*) [CommRing R]
theorem map_derivative {S : Type*} [CommRing S] (τ : R →+* S) (x : LaurentSeries R) :
    (derivative R x).map τ = derivative S (x.map τ)
LaurentSeries.residue_map
Source context 4 commands

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

noncomputable section
universe u v
namespace LaurentSeries
variable (R : Type*) [CommRing R]
theorem residue_map {S : Type*} [CommRing S] (τ : R →+* S) (x : LaurentSeries R) :
    residue S (x.map τ) = τ (residue R x)
TwoChartCech.Cover.LaurentChart

A Laurent-series expansion of the overlap ring compatible with the base-ring algebra map.

Source context 4 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
structure LaurentChart (𝒰 : Cover.{u, v} R) where
  /-- The ring homomorphism expanding elements of the overlap ring as Laurent series. -/
  expand : 𝒰.A01 →+* LaurentSeries R
  /-- Base-ring scalars expand as constant Laurent series. -/
  expand_algebraMap : ∀ r : R, expand (algebraMap R 𝒰.A01 r) = HahnSeries.C r
TwoChartCech.Cover.LaurentChart.expandModule

The action of the overlap ring on Laurent series through the expansion homomorphism.

Source context 6 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
namespace LaurentChart
variable {𝒰 : Cover.{u, v} R} (Λ : 𝒰.LaurentChart)
abbrev expandModule : Module 𝒰.A01 (LaurentSeries R)
TwoChartCech.Cover.LaurentChart.expand_smul
Source context 6 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
namespace LaurentChart
variable {𝒰 : Cover.{u, v} R} (Λ : 𝒰.LaurentChart)
theorem expand_smul (r : R) (a : 𝒰.A01) : Λ.expand (r • a) = r • Λ.expand a
TwoChartCech.Cover.LaurentChart.isScalarTower_expandModule
Source context 6 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
namespace LaurentChart
variable {𝒰 : Cover.{u, v} R} (Λ : 𝒰.LaurentChart)
theorem isScalarTower_expandModule :
    letI := Λ.expandModule
    IsScalarTower R 𝒰.A01 (LaurentSeries R) :=
  letI := Λ.expandModule
  ⟨fun r a x => by
    change Λ.expand (r • a) * x = r • (Λ.expand a * x)
    rw [expand_smul, ← HahnSeries.C_mul_eq_smul, ← HahnSeries.C_mul_eq_smul, mul_assoc]⟩
TwoChartCech.Cover.LaurentChart.expandLinear

The expansion homomorphism viewed as an R-linear map.

Source context 6 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
namespace LaurentChart
variable {𝒰 : Cover.{u, v} R} (Λ : 𝒰.LaurentChart)
def expandLinear : 𝒰.A01 →ₗ[R] LaurentSeries R where
  toFun := Λ.expand
  map_add' := map_add _
  map_smul' := Λ.expand_smul
TwoChartCech.Cover.LaurentChart.expandLinear_apply
Source context 6 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
namespace LaurentChart
variable {𝒰 : Cover.{u, v} R} (Λ : 𝒰.LaurentChart)
theorem expandLinear_apply (a : 𝒰.A01) : Λ.expandLinear a = Λ.expand a
TwoChartCech.Cover.LaurentChart.expandDerivation

Differentiate the Laurent expansion to obtain a derivation of the overlap ring.

Source context 6 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
namespace LaurentChart
variable {𝒰 : Cover.{u, v} R} (Λ : 𝒰.LaurentChart)
def expandDerivation :
    letI := Λ.expandModule
    Derivation R 𝒰.A01 (LaurentSeries R) :=
  letI := Λ.expandModule
  Derivation.mk' (LaurentSeries.derivative R ∘ₗ Λ.expandLinear) fun f g => by
    change LaurentSeries.derivative R (Λ.expand (f * g)) =
      Λ.expand f * LaurentSeries.derivative R (Λ.expand g) + Λ.expand g *
        LaurentSeries.derivative R (Λ.expand f)
    rw [map_mul, LaurentSeries.derivative_mul_def, mul_comm (LaurentSeries.derivative R
      (Λ.expand f))]
TwoChartCech.Cover.LaurentChart.expandDerivation_apply
Source context 6 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
namespace LaurentChart
variable {𝒰 : Cover.{u, v} R} (Λ : 𝒰.LaurentChart)
theorem expandDerivation_apply (f : 𝒰.A01) :
    letI := Λ.expandModule
    Λ.expandDerivation f = LaurentSeries.derivative R (Λ.expand f) := rfl
TwoChartCech.Cover.LaurentChart.expandKaehler

The linear map on Kaehler differentials induced by differentiating Laurent expansions.

Source context 6 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
namespace LaurentChart
variable {𝒰 : Cover.{u, v} R} (Λ : 𝒰.LaurentChart)
def expandKaehler :
    letI := Λ.expandModule
    Ω[𝒰.A01⁄R] →ₗ[𝒰.A01] LaurentSeries R :=
  letI := Λ.expandModule
  haveI := Λ.isScalarTower_expandModule
  Λ.expandDerivation.liftKaehlerDifferential
TwoChartCech.Cover.LaurentChart.expandKaehler_smul_D
Source context 6 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
namespace LaurentChart
variable {𝒰 : Cover.{u, v} R} (Λ : 𝒰.LaurentChart)
theorem expandKaehler_smul_D (f g : 𝒰.A01) :
    letI := Λ.expandModule
    Λ.expandKaehler (f • KaehlerDifferential.D R 𝒰.A01 g) = Λ.expand f *
      LaurentSeries.derivative R (Λ.expand g) := by
  let := Λ.expandModule
  have := Λ.isScalarTower_expandModule
  change Λ.expandDerivation.liftKaehlerDifferential (f • KaehlerDifferential.D R 𝒰.A01 g) = _
  rw [LinearMap.map_smul, Derivation.liftKaehlerDifferential_comp_D]
  rfl
TwoChartCech.Cover.LaurentChart.expandKaehler_D
Source context 6 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
namespace LaurentChart
variable {𝒰 : Cover.{u, v} R} (Λ : 𝒰.LaurentChart)
theorem expandKaehler_D (g : 𝒰.A01) :
    letI := Λ.expandModule
    Λ.expandKaehler (KaehlerDifferential.D R 𝒰.A01 g) = LaurentSeries.derivative R (Λ.expand g)
      := by
  let := Λ.expandModule
  have := Λ.isScalarTower_expandModule
  exact Λ.expandDerivation.liftKaehlerDifferential_comp_D g
TwoChartCech.Cover.LaurentChart.residue

The residue of a Kaehler differential, extracted from the coefficient of exponent -1 of its expansion.

Source context 6 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
namespace LaurentChart
variable {𝒰 : Cover.{u, v} R} (Λ : 𝒰.LaurentChart)
def residue : Ω[𝒰.A01⁄R] →ₗ[R] R where
  toFun ω := letI := Λ.expandModule; LaurentSeries.residue R (Λ.expandKaehler ω)
  map_add' ω ω' := by
    let := Λ.expandModule
    change LaurentSeries.residue R (Λ.expandKaehler (ω + ω')) = _
    rw [map_add, map_add]
  map_smul' r ω := by
    let := Λ.expandModule
    have := Λ.isScalarTower_expandModule
    change LaurentSeries.residue R (Λ.expandKaehler (r • ω)) = r • LaurentSeries.residue R
      (Λ.expandKaehler ω)
    have h1 : Λ.expandKaehler (r • ω) = r • Λ.expandKaehler ω := by
      rw [← IsScalarTower.algebraMap_smul 𝒰.A01 r ω, LinearMap.map_smul]
      change Λ.expand (algebraMap R 𝒰.A01 r) * Λ.expandKaehler ω = _
      rw [expand_algebraMap, HahnSeries.C_mul_eq_smul]
    rw [h1, map_smul]
TwoChartCech.Cover.LaurentChart.residue_apply
Source context 6 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
namespace LaurentChart
variable {𝒰 : Cover.{u, v} R} (Λ : 𝒰.LaurentChart)
theorem residue_apply (ω : Ω[𝒰.A01⁄R]) :
    letI := Λ.expandModule
    Λ.residue ω = (Λ.expandKaehler ω).coeff (-1) := rfl
TwoChartCech.Cover.LaurentChart.residue_smul_D
Source context 6 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
namespace LaurentChart
variable {𝒰 : Cover.{u, v} R} (Λ : 𝒰.LaurentChart)
theorem residue_smul_D (f g : 𝒰.A01) :
    Λ.residue (f • KaehlerDifferential.D R 𝒰.A01 g) =
      (Λ.expand f * LaurentSeries.derivative R (Λ.expand g)).coeff (-1)
TwoChartCech.Cover.LaurentChart.residue_D
Source context 6 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
namespace LaurentChart
variable {𝒰 : Cover.{u, v} R} (Λ : 𝒰.LaurentChart)
theorem residue_D (g : 𝒰.A01) :
    Λ.residue (KaehlerDifferential.D R 𝒰.A01 g) = (LaurentSeries.derivative R (Λ.expand
      g)).coeff (-1)
TwoChartCech.Cover.LaurentChart.IsRegular

Every element from B expands as a power series under the map ρ.

Source context 6 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
namespace LaurentChart
variable {𝒰 : Cover.{u, v} R} (Λ : 𝒰.LaurentChart)
def IsRegular {B : Type*} [CommRing B] [Algebra R B] (ρ : B →ₐ[R] 𝒰.A01) : Prop
TwoChartCech.Cover.LaurentChart.IsRegular.exists_eq_ofPowerSeries
Source context 6 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
namespace LaurentChart
variable {𝒰 : Cover.{u, v} R} (Λ : 𝒰.LaurentChart)
theorem IsRegular.exists_eq_ofPowerSeries {B : Type*} [CommRing B] [Algebra R B] {ρ : B →ₐ[R] 𝒰.A01}
    (h : Λ.IsRegular ρ) (b : B) : ∃ p : PowerSeries R, HahnSeries.ofPowerSeries ℤ R p = Λ.expand
      (ρ b)
TwoChartCech.Cover.LaurentChart.HasParameter

Some element from B expands as the Laurent monomial of exponent 1 with coefficient 1.

Source context 6 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
namespace LaurentChart
variable {𝒰 : Cover.{u, v} R} (Λ : 𝒰.LaurentChart)
def HasParameter {B : Type*} [CommRing B] [Algebra R B] (ρ : B →ₐ[R] 𝒰.A01) : Prop
TwoChartCech.Cover.formalDisc

The two-chart cover with Laurent-series rings on the overlap and first chart, and a power-series ring on the second chart.

Source context 4 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
def formalDisc (R : Type u) [CommRing R] : Cover.{u, u} R
TwoChartCech.Cover.formalDiscChart

The Laurent chart on formalDisc R with identity expansion on the overlap ring.

Source context 4 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
def formalDiscChart (R : Type u) [CommRing R] : (formalDisc R).LaurentChart where
  expand := RingHom.id _
  expand_algebraMap _ := rfl
TwoChartCech.Cover.formalDiscChart_isRegular
Source context 4 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
theorem formalDiscChart_isRegular (R : Type u) [CommRing R] : (formalDiscChart R).IsRegular
  (formalDisc R).ρ1
TwoChartCech.Cover.formalDiscChart_hasParameter
Source context 4 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
theorem formalDiscChart_hasParameter (R : Type u) [CommRing R] :
    (formalDiscChart R).HasParameter (formalDisc R).ρ1
TwoChartCech.Cover.formalDiscChart_residue_tinv_dt
Source context 4 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
variable {R : Type u} [CommRing R]
theorem formalDiscChart_residue_tinv_dt (R : Type u) [CommRing R] (f g : (formalDisc R).A01)
    (hf : f = HahnSeries.single (-1) (1 : R)) (hg : g = HahnSeries.single 1 (1 : R)) :
    (formalDiscChart R).residue (f • KaehlerDifferential.D R (formalDisc R).A01 g) = 1
TwoChartCech.Cover.LaurentChart.IsCompletionAlong

A regular Laurent expansion whose finite jets lift from B and whose vanishing jets detect powers of the kernel of e.

Source context 4 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover.LaurentChart
variable {R : Type u} [CommRing R] {𝒰 : Cover.{u, v} R}
structure IsCompletionAlong (Λ : 𝒰.LaurentChart) {B : Type*} [CommRing B] [Algebra R B]
    (ρ : B →ₐ[R] 𝒰.A01) (e : B →ₐ[R] R) : Prop where
  /-- The Laurent expansion is regular along `ρ`. -/
  isRegular : Λ.IsRegular ρ
  /-- Every finite list of coefficients of a power series is realized by the expansion of an
  element of `B`. -/
  exists_coeff_eq : ∀ (n : ℕ) (p : PowerSeries R), ∃ b : B,
    ∀ k : ℕ, k < n → (Λ.expand (ρ b)).coeff (k : ℤ) = PowerSeries.coeff k p
  /-- Vanishing of the first `n` coefficients is equivalent to membership in the `n`th power of
  the kernel of `e`. -/
  forall_coeff_eq_zero_iff : ∀ (n : ℕ) (b : B),
    (∀ k : ℕ, k < n → (Λ.expand (ρ b)).coeff (k : ℤ) = 0) ↔ b ∈ RingHom.ker e.toRingHom ^ n
PowerSeries.forall_coeff_eq_zero_iff_mem_ker_constantCoeff_pow
Source context 2 commands

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

noncomputable section
universe u v
theorem PowerSeries.forall_coeff_eq_zero_iff_mem_ker_constantCoeff_pow (R : Type*) [CommRing R]
  (n : ℕ)
    (a : PowerSeries R) :
    (∀ k : ℕ, k < n → PowerSeries.coeff k a = 0) ↔ a ∈ RingHom.ker (PowerSeries.constantCoeff (R
      := R)) ^ n
TwoChartCech.Cover.formalDiscPoint

The algebra homomorphism from the power-series chart to R given by the constant coefficient.

Source context 3 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
def formalDiscPoint (R : Type u) [CommRing R] : (formalDisc R).A1 →ₐ[R] R
TwoChartCech.Cover.formalDiscChart_isCompletionAlong
Source context 3 commands

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

noncomputable section
universe u v
namespace TwoChartCech.Cover
theorem formalDiscChart_isCompletionAlong (R : Type u) [CommRing R] :
    (formalDiscChart R).IsCompletionAlong (formalDisc R).ρ1 (formalDiscPoint R) where
  isRegular := formalDiscChart_isRegular R
  exists_coeff_eq n p := ⟨p, fun k _ => HahnSeries.ofPowerSeries_apply_coeff p k⟩
  forall_coeff_eq_zero_iff n a := by
    refine Iff.trans ?_ (PowerSeries.forall_coeff_eq_zero_iff_mem_ker_constantCoeff_pow R n a)
    simp only [show ∀ b, (formalDiscChart R).expand ((formalDisc R).ρ1 b) =
      HahnSeries.ofPowerSeries ℤ R b from
      fun _ => rfl]
    constructor
    · intro h k hk
      exact (HahnSeries.ofPowerSeries_apply_coeff (Γ := ℤ) a k).symm.trans (h k hk)
    · intro h k hk
      exact (HahnSeries.ofPowerSeries_apply_coeff (Γ := ℤ) a k).trans (h k hk)