Definitions/Def_TwoChartCech_GluedLines.lean
Two projective lines glued at points: Čech model
Over a commutative ring R, with s a natural number, the module sets up a two-chart Čech presentation of two projective lines glued at s points, functions being Laurent polynomials in the coordinate of each line. The abbreviation levalUnit R u is evaluation R[T;T^{-1}] \to R at a unit u (the ring map \mathrm{eval}_2 of the identity of R at u). The subalgebras polyPart R and invPolyPart R of R[T;T^{-1}] are cut out by the support conditions that all exponents occurring in the coefficient support be \ge 0, respectively \le 0; mem_polyPart_iff and mem_invPolyPart_iff record these memberships. Given a, b : \mathrm{Fin}\,s \to R^\times, gluedLinesOverlap R a b is the R-subalgebra of pairs (p,q) \in R[T;T^{-1}]^2 with p(a_i) = q(b_i) for every i, and gluedLinesCover R a b is the Cover with A_{01} this subalgebra, A_0 its intersection with \mathrm{polyPart} \times \mathrm{polyPart}, A_1 its intersection with \mathrm{invPolyPart} \times \mathrm{invPolyPart}, and both restriction maps the subalgebra inclusions.
For a further unit vector \lambda, the predicate GluedCond a b lam f on f = (p,q) asserts p(a_i) = \lambda_i\, q(b_i) for all i; the lemmas GluedCond.add, GluedCond.zero and GluedCond.mul give closure under addition, vanishing, and multiplication by elements of the overlap algebra. Accordingly gluedLinesM01 is the A_{01}-submodule of pairs satisfying GluedCond, gluedLinesM0 its elements with both components in polyPart, and gluedLinesM1 … n m its elements with p\,T^{-n} and q\,T^{-m} in invPolyPart, i.e. exponents bounded above by n and m. These assemble into gluedLinesSections R a b lam n m, a Sections of the above cover whose restriction maps are the inclusions into gluedLinesM01; its Čech H^0 therefore consists of pairs of polynomials of degrees at most n and m satisfying the \lambda-twisted gluing, and its H^1 is M_{01} modulo the images of M_0 and M_1.
Relation to Mathlib
Laurent polynomials R[T;T^{-1}], subalgebras and submodules are Mathlib's; polyPart and invPolyPart are defined here directly by support conditions rather than via Mathlib's polynomial-to-Laurent embedding. The Cover/Sections framework for two-chart Čech data is the project's own.
Where it is used
The construction provides an algebraic model for the special fibre of the Deligne–Rapoport model of X_0(p), two rational curves meeting at the supersingular points, together with its line bundles of given multidegree and gluing data at the nodes, as needed in the analysis of the associated Picard scheme.
References
- P. Deligne and M. Rapoport, Les schémas de modules de courbes elliptiques, in: Modular Functions of One Variable II, Lecture Notes in Mathematics 349, Springer, 1973, 143–316
- R. Hartshorne, Algebraic Geometry, Graduate Texts in Mathematics 52, Springer, 1977, Chapter III, §4
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 150 lines
- 15 declarations
- used in the statements of 20 theorems and imported by 22 proofs
- imports 1 definition modules
Source file: Definitions/Def_TwoChartCech_GluedLines.lean
Imported by
- no other definition module
Declarations
- abbrev
TwoChartCech.levalUnit - def
TwoChartCech.polyPart - def
TwoChartCech.invPolyPart - theorem
TwoChartCech.mem_polyPart_iff - theorem
TwoChartCech.mem_invPolyPart_iff - def
TwoChartCech.gluedLinesOverlap - def
TwoChartCech.gluedLinesCover - def
TwoChartCech.GluedCond - theorem
TwoChartCech.GluedCond.add - theorem
TwoChartCech.GluedCond.zero - theorem
TwoChartCech.GluedCond.mul - def
TwoChartCech.gluedLinesM01 - def
TwoChartCech.gluedLinesM0 - def
TwoChartCech.gluedLinesM1 - def
TwoChartCech.gluedLinesSections
Source
import Definitions.Def_AlgebraicGeometry_TwoChartCech import Mathlib.Algebra.Polynomial.Laurent ↗ import Mathlib.Algebra.Algebra.Subalgebra.Prod ↗ set_option autoImplicit false noncomputable section open LaurentPolynomial universe u namespace TwoChartCech variable (R : Type u) [CommRing R] {s : ℕ} abbrev levalUnit (u : Rˣ) : R[T;T⁻¹] →+* R := LaurentPolynomial.eval₂ (RingHom.id R) u 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)] 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)] theorem mem_polyPart_iff {f : R[T;T⁻¹]} : f ∈ polyPart R ↔ ∀ n ∈ f.coeff.support, 0 ≤ n := Iff.rfl theorem mem_invPolyPart_iff {f : R[T;T⁻¹]} : f ∈ invPolyPart R ↔ ∀ n ∈ f.coeff.support, n ≤ 0 := Iff.rfl 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] @[reducible] 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 variable {R} def GluedCond (a b lam : Fin s → Rˣ) (f : R[T;T⁻¹] × R[T;T⁻¹]) : Prop := ∀ i, levalUnit R (a i) f.1 = lam i * levalUnit R (b i) f.2 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) := fun i => by simp only [Prod.fst_add, Prod.snd_add, map_add, hf i, hg i, mul_add] theorem GluedCond.zero (a b lam : Fin s → Rˣ) : GluedCond a b lam 0 := fun i => by simp 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) := fun i => by simp only [Prod.fst_mul, Prod.snd_mul, map_mul, hg i, hf i] ring 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 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⟩ 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⟩ def gluedLinesSections (a b lam : Fin s → Rˣ) (n m : ℤ) : Sections.{u, u, u} (gluedLinesCover R a b) := { M0 := ↥(gluedLinesM0 R a b lam) M1 := ↥(gluedLinesM1 R a b lam n m) M01 := ↥(gluedLinesM01 R a b lam) M0_addCommGroup := inferInstance M0_moduleA := Submodule.module _ M0_module := Submodule.module' _ M0_tower := Submodule.isScalarTower _ M1_addCommGroup := inferInstance M1_moduleA := Submodule.module _ M1_module := Submodule.module' _ M1_tower := Submodule.isScalarTower _ M01_addCommGroup := inferInstance M01_moduleA := Submodule.module _ M01_module := Submodule.module' _ M01_tower := Submodule.isScalarTower _ r0 := { toFun := fun f => ⟨f.1, f.2.1⟩, map_add' := fun _ _ => rfl, map_smul' := fun _ _ => rfl } r1 := { toFun := fun f => ⟨f.1, f.2.1⟩, map_add' := fun _ _ => rfl, map_smul' := fun _ _ => rfl } r0_smul := fun _ _ => rfl r1_smul := fun _ _ => rfl } end TwoChartCech end
Statements phrased using this module (20)
- Algebraically trivial bundle with a section on two glued lines
AlgebraicGeometry.TwoGluedProjectiveLines.nonempty_iso_unit_of_isAlgEquivZero_of_ne_zero331 below · depth 15 - Line bundles on two glued projective lines: Čech model
AlgebraicGeometry.TwoGluedProjectiveLines.exists_linearEquiv_sectionsOf_gluedLinesSections_and_eulerChar_pullback_of_isAlgClosed327 below · depth 16 - Two glued lines: h⁰ ≤ 1 at multidegree (0,0)
TwoChartCech.finrank_H0_gluedLinesSections_zero_zero_le_one0 below · depth 16 - Euler characteristic n+m+2-s for two glued lines
TwoChartCech.finrank_H0_sub_finrank_H1_gluedLinesSections1 below · depth 16 - Chart rings of a smooth proper model of K(T)
AlgebraicCurve.CurveModel.range_sections_eq_map_eval2_polyPart_invPolyPart_of_coe_eq_compl6 below · depth 17 - Chart rings of two projective lines glued at nodes
AlgebraicGeometry.TwoGluedProjectiveLines.exists_algEquiv_cover_gluedLinesCover8 below · depth 17 - Anchored chart dictionary for two transversally glued projective lines
AlgebraicGeometry.TwoGluedProjectiveLines.exists_algEquiv_cover_gluedLinesCover_eval2_apply_eq8 below · depth 17 - Node-ratio invariant for two glued projective lines
AlgebraicGeometry.TwoGluedProjectiveLines.exists_nodeRatioHom72 below · depth 17 - Invertible sections on glued lines are the model ones
TwoChartCech.exists_linearEquiv_gluedLinesSections_of_invertible6 below · depth 17 - Invertible sections on the glued-lines cover are the explicit model
TwoChartCech.exists_semilinearEquiv_gluedLinesSections_of_invertible6 below · depth 17 - Čech cohomology of glued lines in multidegree (s-1,0)
TwoChartCech.finrank_H0_gluedLinesSections_eq_one_and_subsingleton_H10 below · depth 17 - Glued line bundle trivial iff n=m=0 and λ constant
TwoChartCech.gluedLinesSections_nonempty_linearEquiv_structureSheaf_iff0 below · depth 17 - Two lines glued at s points: s = g+1
AlgebraicGeometry.TwoGluedProjectiveLines.eq_finrank_H1_add_one_of_finrank_H0_eq_one330 below · depth 18 - Trivial pullbacks of L force h⁰(M_±)<2
AlgebraicGeometry.TwoGluedProjectiveLines.finrank_H0_twists_lt_two_of_nonempty_pullback_iso_unit334 below · depth 18 - Triviality on both lines when h⁰ of both twists is <2
AlgebraicGeometry.TwoGluedProjectiveLines.nonempty_pullback_iso_unit_of_finrank_H0_twists_lt_two334 below · depth 18 - Invertible modules over the glued-lines chart ring are node twists
TwoChartCech.exists_linearEquiv_gluedLinesM0_of_invertible2 below · depth 18 - Invertible modules over the glued-lines chart ring A₁
TwoChartCech.exists_linearEquiv_gluedLinesM1_of_invertible2 below · depth 18 - Čech cohomology of a bundle on two glued projective lines
AlgebraicGeometry.TwoGluedProjectiveLines.exists_finrank_H0_sectionsOf_eq_finrank_H0_gluedLinesSections_and_eulerChar_pullback_of_isAlgClosed328 below · depth 19 - Glued lines: h⁰ = n+1-s in bidegree (n,m), m<0
TwoChartCech.finrank_H0_gluedLinesSections_of_sub_one_le_of_neg0 below · depth 19 - Lower bound h⁰ ≥ (n+1)⁺ + (m+1)⁺ - s
TwoChartCech.toNat_add_toNat_le_finrank_H0_gluedLinesSections_add2 below · depth 19