Module

TwoChartCech_GluedLines.lean

Nyll.AlgebraicCurves.Cohomology.Cech.TwoChartCech_GluedLines
15 declarations indexed from sourceView source ↗

Two Chart Cech Glued Lines

Declarations

TwoChartCech.levalUnit

Evaluate a Laurent polynomial at a unit.

Source context 5 commands

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

noncomputable section
open LaurentPolynomial
universe u
namespace TwoChartCech
variable (R : Type u) [CommRing R] {s : ℕ}
abbrev levalUnit (u : Rˣ) : R[T;T⁻¹] →+* R
TwoChartCech.polyPart

Laurent polynomials supported in nonnegative degrees.

Source context 5 commands

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

noncomputable section
open LaurentPolynomial
universe u
namespace TwoChartCech
variable (R : Type u) [CommRing R] {s : ℕ}
def polyPart : Subalgebra R R[T;T⁻¹] where
  carrier := {f | ∀ n ∈ f.coeff.support, 0 ≤ n}
  mul_mem' := by
    intro f g hf hg n hn
    classical
    obtain ⟨i, hi, j, hj, rfl⟩ :=
      Finset.mem_add.mp (AddMonoidAlgebra.support_coeff_mul_subset f g hn)
    exact add_nonneg (hf i hi) (hg j hj)
  add_mem' := by
    intro f g hf hg n hn
    rw [AddMonoidAlgebra.coeff_add] at hn
    rcases Finset.mem_union.mp (Finsupp.support_add hn) with h | h
    exacts [hf n h, hg n h]
  algebraMap_mem' := by
    intro r n hn
    rw [AddMonoidAlgebra.coe_algebraMap, Function.comp_apply, AddMonoidAlgebra.coeff_single] at hn
    rw [Finset.mem_singleton.mp (Finsupp.support_single_subset hn)]
TwoChartCech.invPolyPart

Laurent polynomials supported in nonpositive degrees.

Source context 5 commands

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

noncomputable section
open LaurentPolynomial
universe u
namespace TwoChartCech
variable (R : Type u) [CommRing R] {s : ℕ}
def invPolyPart : Subalgebra R R[T;T⁻¹] where
  carrier := {f | ∀ n ∈ f.coeff.support, n ≤ 0}
  mul_mem' := by
    intro f g hf hg n hn
    classical
    obtain ⟨i, hi, j, hj, rfl⟩ :=
      Finset.mem_add.mp (AddMonoidAlgebra.support_coeff_mul_subset f g hn)
    exact add_nonpos (hf i hi) (hg j hj)
  add_mem' := by
    intro f g hf hg n hn
    rw [AddMonoidAlgebra.coeff_add] at hn
    rcases Finset.mem_union.mp (Finsupp.support_add hn) with h | h
    exacts [hf n h, hg n h]
  algebraMap_mem' := by
    intro r n hn
    rw [AddMonoidAlgebra.coe_algebraMap, Function.comp_apply, AddMonoidAlgebra.coeff_single] at hn
    rw [Finset.mem_singleton.mp (Finsupp.support_single_subset hn)]
TwoChartCech.mem_polyPart_iff
Source context 5 commands

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

noncomputable section
open LaurentPolynomial
universe u
namespace TwoChartCech
variable (R : Type u) [CommRing R] {s : ℕ}
theorem mem_polyPart_iff {f : R[T;T⁻¹]} : f ∈ polyPart R ↔ ∀ n ∈ f.coeff.support, 0 ≤ n
TwoChartCech.mem_invPolyPart_iff
Source context 5 commands

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

noncomputable section
open LaurentPolynomial
universe u
namespace TwoChartCech
variable (R : Type u) [CommRing R] {s : ℕ}
theorem mem_invPolyPart_iff {f : R[T;T⁻¹]} :
    f ∈ invPolyPart R ↔ ∀ n ∈ f.coeff.support, n ≤ 0
TwoChartCech.gluedLinesOverlap

Pairs of Laurent polynomials whose values agree at the identified points.

Source context 5 commands

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

noncomputable section
open LaurentPolynomial
universe u
namespace TwoChartCech
variable (R : Type u) [CommRing R] {s : ℕ}
def gluedLinesOverlap (a b : Fin s → Rˣ) : Subalgebra R (R[T;T⁻¹] × R[T;T⁻¹]) where
  carrier := {f | ∀ i, levalUnit R (a i) f.1 = levalUnit R (b i) f.2}
  mul_mem' := by
    intro f g hf hg i
    simp only [Prod.fst_mul, Prod.snd_mul, map_mul, hf i, hg i]
  add_mem' := by
    intro f g hf hg i
    simp only [Prod.fst_add, Prod.snd_add, map_add, hf i, hg i]
  algebraMap_mem' := by
    intro r i
    simp [Prod.algebraMap_apply, LaurentPolynomial.algebraMap_apply, LaurentPolynomial.eval₂_C]
TwoChartCech.gluedLinesCover

The two-chart cover of the glued lines by polynomial and inverse-polynomial parts.

Source context 5 commands

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

noncomputable section
open LaurentPolynomial
universe u
namespace TwoChartCech
variable (R : Type u) [CommRing R] {s : ℕ}
def gluedLinesCover (a b : Fin s → Rˣ) : Cover.{u, u} R where
  A0 := ↥(gluedLinesOverlap R a b ⊓ (polyPart R).prod (polyPart R))
  A1 := ↥(gluedLinesOverlap R a b ⊓ (invPolyPart R).prod (invPolyPart R))
  A01 := ↥(gluedLinesOverlap R a b)
  ρ0 := Subalgebra.inclusion inf_le_left
  ρ1 := Subalgebra.inclusion inf_le_left
TwoChartCech.GluedCond

The values of a pair agree at the nodes after multiplication by the gluing units.

Source context 6 commands

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

noncomputable section
open LaurentPolynomial
universe u
namespace TwoChartCech
variable (R : Type u) [CommRing R] {s : ℕ}
variable {R}
def GluedCond (a b lam : Fin s → Rˣ) (f : R[T;T⁻¹] × R[T;T⁻¹]) : Prop
TwoChartCech.GluedCond.add
Source context 6 commands

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

noncomputable section
open LaurentPolynomial
universe u
namespace TwoChartCech
variable (R : Type u) [CommRing R] {s : ℕ}
variable {R}
theorem GluedCond.add {a b lam : Fin s → Rˣ} {f g : R[T;T⁻¹] × R[T;T⁻¹]} (hf : GluedCond a b lam f)
    (hg : GluedCond a b lam g) : GluedCond a b lam (f + g)
TwoChartCech.GluedCond.zero
Source context 6 commands

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

noncomputable section
open LaurentPolynomial
universe u
namespace TwoChartCech
variable (R : Type u) [CommRing R] {s : ℕ}
variable {R}
theorem GluedCond.zero (a b lam : Fin s → Rˣ) : GluedCond a b lam 0
TwoChartCech.GluedCond.mul
Source context 6 commands

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

noncomputable section
open LaurentPolynomial
universe u
namespace TwoChartCech
variable (R : Type u) [CommRing R] {s : ℕ}
variable {R}
theorem GluedCond.mul {a b lam : Fin s → Rˣ} {g f : R[T;T⁻¹] × R[T;T⁻¹]}
    (hg : g ∈ gluedLinesOverlap R a b) (hf : GluedCond a b lam f) : GluedCond a b lam (g * f)
TwoChartCech.gluedLinesM01

Pairs satisfying the gluing condition on the overlap.

Source context 7 commands

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

noncomputable section
open LaurentPolynomial
universe u
namespace TwoChartCech
variable (R : Type u) [CommRing R] {s : ℕ}
variable {R}
variable (R)
def gluedLinesM01 (a b lam : Fin s → Rˣ) :
    Submodule ↥(gluedLinesOverlap R a b) (R[T;T⁻¹] × R[T;T⁻¹]) where
  carrier := {f | GluedCond a b lam f}
  add_mem' := fun hf hg => hf.add hg
  zero_mem' := GluedCond.zero a b lam
  smul_mem' := fun g _ hf => GluedCond.mul g.2 hf
TwoChartCech.gluedLinesM0

Polynomial pairs satisfying the gluing condition on the first chart.

Source context 7 commands

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

noncomputable section
open LaurentPolynomial
universe u
namespace TwoChartCech
variable (R : Type u) [CommRing R] {s : ℕ}
variable {R}
variable (R)
def gluedLinesM0 (a b lam : Fin s → Rˣ) :
    Submodule ↥(gluedLinesOverlap R a b ⊓ (polyPart R).prod (polyPart R)) (R[T;T⁻¹] × R[T;T⁻¹])
      where
  carrier := {f | GluedCond a b lam f ∧ f ∈ (polyPart R).prod (polyPart R)}
  add_mem' := fun hf hg => ⟨hf.1.add hg.1, Subalgebra.add_mem _ hf.2 hg.2⟩
  zero_mem' := ⟨GluedCond.zero a b lam, Subalgebra.zero_mem _⟩
  smul_mem' := fun g _ hf => ⟨GluedCond.mul g.2.1 hf.1, Subalgebra.mul_mem _ g.2.2 hf.2⟩
TwoChartCech.gluedLinesM1

Pairs satisfying the gluing condition and the specified bounds at infinity.

Source context 7 commands

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

noncomputable section
open LaurentPolynomial
universe u
namespace TwoChartCech
variable (R : Type u) [CommRing R] {s : ℕ}
variable {R}
variable (R)
def gluedLinesM1 (a b lam : Fin s → Rˣ) (n m : ℤ) :
    Submodule ↥(gluedLinesOverlap R a b ⊓ (invPolyPart R).prod (invPolyPart R)) (R[T;T⁻¹] ×
      R[T;T⁻¹]) where
  carrier := {f | GluedCond a b lam f ∧ f.1 * T (-n) ∈ invPolyPart R ∧ f.2 * T (-m) ∈ invPolyPart R}
  add_mem' := fun {f g} hf hg => ⟨hf.1.add hg.1, by
    rw [Prod.fst_add, add_mul]; exact Subalgebra.add_mem _ hf.2.1 hg.2.1, by
    rw [Prod.snd_add, add_mul]; exact Subalgebra.add_mem _ hf.2.2 hg.2.2⟩
  zero_mem' := ⟨GluedCond.zero a b lam, by
    rw [Prod.fst_zero, zero_mul]; exact Subalgebra.zero_mem _, by
    rw [Prod.snd_zero, zero_mul]; exact Subalgebra.zero_mem _⟩
  smul_mem' := fun g f hf => ⟨GluedCond.mul g.2.1 hf.1, by
    rw [Subalgebra.smul_def, smul_eq_mul, Prod.fst_mul, mul_assoc]
    exact Subalgebra.mul_mem _ (Subalgebra.mem_prod.mp g.2.2).1 hf.2.1, by
    rw [Subalgebra.smul_def, smul_eq_mul, Prod.snd_mul, mul_assoc]
    exact Subalgebra.mul_mem _ (Subalgebra.mem_prod.mp g.2.2).2 hf.2.2⟩
TwoChartCech.gluedLinesSections

The two-chart module of sections with the prescribed gluing and twists.

Source context 7 commands

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

noncomputable section
open LaurentPolynomial
universe u
namespace TwoChartCech
variable (R : Type u) [CommRing R] {s : ℕ}
variable {R}
variable (R)
def gluedLinesSections (a b lam : Fin s → Rˣ) (n m : ℤ) : Sections.{u, u, u} (gluedLinesCover R a
  b)