Definitions/Def_CerednikDrinfeld_FormalUpperHalfPlaneChartRings.lean
Chart rings corepresenting the formal upper half-plane charts
Fix a commutative ring R, an element \pi \in R and a natural number q. Two R-algebras are defined. The vertex chart ring chartVRing R q is the localisation of R[X] away from vertexDiscr R q = X^q - X, with distinguished element ζ the image of X; by construction \zeta^q - \zeta is a unit there. The edge chart ring chartERing R π q is the localisation, away from the image of edgeDiscr R q = (X_0^{q-1}-1)(X_1^{q-1}-1), of the quotient edgeQuot R π of R[X_0,X_1] by the ideal generated by edgeRel R π = X_0X_1 - \pi (exponents use truncated subtraction in \mathbb{N}); its distinguished elements ξ, η are the images of X_0, X_1, and satisfy \xi\eta = \pi with \xi^{q-1}-1 and \eta^{q-1}-1 units.
Each ring carries a universal point: chartVRing.point is \zeta together with the witness that \zeta^q-\zeta is a unit, an element of (\mathtt{chartV } R\, q).\mathrm{obj} of the ring, where chartV R q assigns to an R-algebra B the set of \zeta \in B with \zeta^q-\zeta \in B^{\times}; chartERing.point is (\xi,\eta) with its three witnesses, an element of (\mathtt{chartE } R\, \pi\, q).\mathrm{obj} of the ring, where chartE R π q assigns to B the set of pairs (x,y) with xy = \pi and x^{q-1}-1, y^{q-1}-1 units. The corepresentability results chartVRing.corepEquiv and chartERing.corepEquiv give, for every R-algebra B, bijections between R-algebra homomorphisms out of the chart ring and the corresponding chart set, sending \varphi to the image of the universal point and a point to the homomorphism lift obtained by evaluation (via aeval, descent through the quotient, and inversion of the localised element). Naturality in B is recorded, and corepNatTrans packages each bijection as a natural transformation from AlgFunctor.corep of the chart ring to the chart functor.
A final section specialises to truncations: truncRing 𝒪 π n = \mathcal{O}/(\pi^{n+1}), with chartVRingMod and chartERingMod the chart rings over it (the edge ring formed with the image of \pi), and isNilpotent_algebraMap_of_isScalarTower states that for any commutative ring B which is an algebra over both \mathcal{O} and \mathcal{O}/(\pi^{n+1}) compatibly, the image of \pi in B is nilpotent, with (n+1)-st power zero.
Relation to Mathlib
The rings are Mathlib objects: Localization.Away applied to Polynomial and to a quotient of MvPolynomial, and the lifts come from Mathlib's IsLocalization and quotient universal properties. The ambient framework of functors on commutative \mathcal{O}-algebras (AlgFunctor, AlgFunctor.NatTrans, AlgFunctor.corep) and the chart functors chartV, chartE are the project's own bundled notions rather than Mathlib's category-theoretic functors.
Where it is used
These are the affine charts of the formal model of the p-adic upper half-plane used on the Čerednik–Drinfeld side of the argument: vertices of the Bruhat–Tits tree contribute the rings R[\zeta][(\zeta^q-\zeta)^{-1}] and edges the rings (R[\xi,\eta]/(\xi\eta-\pi))[((\xi^{q-1}-1)(\eta^{q-1}-1))^{-1}], glued along the tree. The corepresentability identifications let statements about functions on the formal scheme, and about its reductions modulo \pi^{n+1}, be made with honest finitely presented algebras, which feeds the analysis of Shimura curves at a prime of bad reduction used in level lowering.
References
- J.-F. Boutot and H. Carayol, Uniformisation p-adique des courbes de Shimura: les théorèmes de Čerednik et de Drinfeld, Astérisque 196–197 (1991), 45–158
- V. G. Drinfeld, Coverings of p-adic symmetric domains, Functional Analysis and its Applications 10 (1976), 107–115
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 255 lines
- 49 declarations
- used in the statements of 85 theorems and imported by 92 proofs
- imports 1 definition modules
Source file: Definitions/Def_CerednikDrinfeld_FormalUpperHalfPlaneChartRings.lean
Declarations
- abbrev
CerednikDrinfeld.FormalOmega.vertexDiscr - abbrev
CerednikDrinfeld.FormalOmega.chartVRing - def
CerednikDrinfeld.FormalOmega.chartVRing.ζ - theorem
CerednikDrinfeld.FormalOmega.chartVRing.algebraMap_vertexDiscr - theorem
CerednikDrinfeld.FormalOmega.chartVRing.isUnit_ζ_pow_sub - def
CerednikDrinfeld.FormalOmega.chartVRing.point - theorem
CerednikDrinfeld.FormalOmega.chartVRing.isUnit_aeval_of_mem_powers - def
CerednikDrinfeld.FormalOmega.chartVRing.lift - theorem
CerednikDrinfeld.FormalOmega.chartVRing.lift_ζ - def
CerednikDrinfeld.FormalOmega.chartVRing.corepEquiv - theorem
CerednikDrinfeld.FormalOmega.chartVRing.corepEquiv_apply_val - theorem
CerednikDrinfeld.FormalOmega.chartVRing.corepEquiv_natural - def
CerednikDrinfeld.FormalOmega.chartVRing.corepNatTrans - abbrev
CerednikDrinfeld.FormalOmega.edgeRel - def
CerednikDrinfeld.FormalOmega.edgeQuot - instance
CerednikDrinfeld.FormalOmega.edgeQuot.instCommRing - instance
CerednikDrinfeld.FormalOmega.edgeQuot.instAlgebra - def
CerednikDrinfeld.FormalOmega.edgeQuot.mk - theorem
CerednikDrinfeld.FormalOmega.edgeQuot.mk_edgeRel - abbrev
CerednikDrinfeld.FormalOmega.edgeDiscr - def
CerednikDrinfeld.FormalOmega.edgeQuot.discr - abbrev
CerednikDrinfeld.FormalOmega.chartERing - def
CerednikDrinfeld.FormalOmega.chartERing.ofPoly - def
CerednikDrinfeld.FormalOmega.chartERing.ξ - def
CerednikDrinfeld.FormalOmega.chartERing.η - theorem
CerednikDrinfeld.FormalOmega.chartERing.ofPoly_edgeRel - theorem
CerednikDrinfeld.FormalOmega.chartERing.ξ_mul_η - theorem
CerednikDrinfeld.FormalOmega.chartERing.ofPoly_edgeDiscr - theorem
CerednikDrinfeld.FormalOmega.chartERing.isUnit_discr - def
CerednikDrinfeld.FormalOmega.chartERing.point - abbrev
CerednikDrinfeld.FormalOmega.chartERing.evalPoly - theorem
CerednikDrinfeld.FormalOmega.chartERing.evalPoly_X_zero - theorem
CerednikDrinfeld.FormalOmega.chartERing.evalPoly_X_one - theorem
CerednikDrinfeld.FormalOmega.chartERing.evalPoly_edgeRel - def
CerednikDrinfeld.FormalOmega.chartERing.evalQuot - theorem
CerednikDrinfeld.FormalOmega.chartERing.evalQuot_mk - theorem
CerednikDrinfeld.FormalOmega.chartERing.isUnit_evalQuot_of_mem_powers - def
CerednikDrinfeld.FormalOmega.chartERing.lift - theorem
CerednikDrinfeld.FormalOmega.chartERing.lift_ofPoly - theorem
CerednikDrinfeld.FormalOmega.chartERing.lift_ξ - theorem
CerednikDrinfeld.FormalOmega.chartERing.lift_η - def
CerednikDrinfeld.FormalOmega.chartERing.corepEquiv - theorem
CerednikDrinfeld.FormalOmega.chartERing.corepEquiv_apply_val - theorem
CerednikDrinfeld.FormalOmega.chartERing.corepEquiv_natural - def
CerednikDrinfeld.FormalOmega.chartERing.corepNatTrans - abbrev
CerednikDrinfeld.FormalOmega.truncRing - abbrev
CerednikDrinfeld.FormalOmega.chartVRingMod - abbrev
CerednikDrinfeld.FormalOmega.chartERingMod - theorem
CerednikDrinfeld.FormalOmega.isNilpotent_algebraMap_of_isScalarTower
Source
import Mathlib import Definitions.Def_CerednikDrinfeld_FormalUpperHalfPlaneCharts set_option autoImplicit false noncomputable section open Polynomial namespace CerednikDrinfeld namespace FormalOmega section ChartRings variable (R : Type) [CommRing R] abbrev vertexDiscr (q : ℕ) : R[X] := X ^ q - X abbrev chartVRing (q : ℕ) : Type := Localization.Away (vertexDiscr R q) namespace chartVRing variable (q : ℕ) def ζ : chartVRing R q := algebraMap R[X] (chartVRing R q) X theorem algebraMap_vertexDiscr : algebraMap R[X] (chartVRing R q) (vertexDiscr R q) = ζ R q ^ q - ζ R q := by show algebraMap R[X] (chartVRing R q) (X ^ q - X) = _ rw [map_sub, map_pow]; rfl theorem isUnit_ζ_pow_sub : IsUnit (ζ R q ^ q - ζ R q) := by rw [← algebraMap_vertexDiscr] exact IsLocalization.Away.algebraMap_isUnit (vertexDiscr R q) def point : (chartV R q).obj (chartVRing R q) := ⟨ζ R q, isUnit_ζ_pow_sub R q⟩ variable {R q} theorem isUnit_aeval_of_mem_powers {B : Type} [CommRing B] [Algebra R B] (x : (chartV R q).obj B) (y : Submonoid.powers (vertexDiscr R q)) : IsUnit (Polynomial.aeval (R := R) x.1 (y : R[X])) := by obtain ⟨_, n, rfl⟩ := y rw [map_pow] refine IsUnit.pow n ?_ have : Polynomial.aeval (R := R) x.1 (vertexDiscr R q) = x.1 ^ q - x.1 := by show Polynomial.aeval (R := R) x.1 (X ^ q - X) = _ rw [map_sub (Polynomial.aeval (R := R) x.1), map_pow (Polynomial.aeval (R := R) x.1), Polynomial.aeval_X] rw [this]; exact x.2 def lift {B : Type} [CommRing B] [Algebra R B] (x : (chartV R q).obj B) : chartVRing R q →ₐ[R] B := IsLocalization.liftAlgHom (M := Submonoid.powers (vertexDiscr R q)) (f := Polynomial.aeval (R := R) x.1) (isUnit_aeval_of_mem_powers x) @[simp] theorem lift_ζ {B : Type} [CommRing B] [Algebra R B] (x : (chartV R q).obj B) : lift x (ζ R q) = x.1 := by rw [lift, IsLocalization.liftAlgHom_apply, ζ, IsLocalization.lift_eq] exact Polynomial.aeval_X x.1 variable (R q) in def corepEquiv (B : Type) [CommRing B] [Algebra R B] : (chartVRing R q →ₐ[R] B) ≃ (chartV R q).obj B where toFun φ := (chartV R q).map φ (point R q) invFun x := lift x left_inv φ := by apply IsLocalization.algHom_ext (Submonoid.powers (vertexDiscr R q)) apply Polynomial.algHom_ext show lift ((chartV R q).map φ (point R q)) (algebraMap R[X] _ X) = φ (algebraMap R[X] _ X) exact lift_ζ _ right_inv x := Subtype.ext (lift_ζ x) @[simp] theorem corepEquiv_apply_val (B : Type) [CommRing B] [Algebra R B] (φ : chartVRing R q →ₐ[R] B) : (corepEquiv R q B φ).1 = φ (ζ R q) := rfl theorem corepEquiv_natural {B : Type} [CommRing B] [Algebra R B] {B' : Type} [CommRing B'] [Algebra R B'] (f : B →ₐ[R] B') (φ : chartVRing R q →ₐ[R] B) : corepEquiv R q B' ((AlgFunctor.corep (𝒪 := R) (chartVRing R q)).map f φ) = (chartV R q).map f (corepEquiv R q B φ) := Subtype.ext rfl variable (R q) in def corepNatTrans : AlgFunctor.NatTrans (AlgFunctor.corep (𝒪 := R) (chartVRing R q)) (chartV R q) where app B _ _ φ := corepEquiv R q B φ naturality f φ := corepEquiv_natural f φ end chartVRing abbrev edgeRel (π : R) : MvPolynomial (Fin 2) R := MvPolynomial.X 0 * MvPolynomial.X 1 - MvPolynomial.C π def edgeQuot (π : R) : Type := MvPolynomial (Fin 2) R ⧸ Ideal.span {edgeRel R π} instance edgeQuot.instCommRing (π : R) : CommRing (edgeQuot R π) := show CommRing (MvPolynomial (Fin 2) R ⧸ Ideal.span {edgeRel R π}) from inferInstance instance edgeQuot.instAlgebra (π : R) : Algebra R (edgeQuot R π) := show Algebra R (MvPolynomial (Fin 2) R ⧸ Ideal.span {edgeRel R π}) from inferInstance def edgeQuot.mk (π : R) : MvPolynomial (Fin 2) R →ₐ[R] edgeQuot R π := Ideal.Quotient.mkₐ R (Ideal.span {edgeRel R π}) theorem edgeQuot.mk_edgeRel (π : R) : edgeQuot.mk R π (edgeRel R π) = 0 := Ideal.Quotient.eq_zero_iff_mem.mpr (Ideal.subset_span (Set.mem_singleton _)) abbrev edgeDiscr (q : ℕ) : MvPolynomial (Fin 2) R := (MvPolynomial.X 0 ^ (q - 1) - 1) * (MvPolynomial.X 1 ^ (q - 1) - 1) def edgeQuot.discr (π : R) (q : ℕ) : edgeQuot R π := edgeQuot.mk R π (edgeDiscr R q) abbrev chartERing (π : R) (q : ℕ) : Type := Localization.Away (edgeQuot.discr R π q) namespace chartERing variable (π : R) (q : ℕ) def ofPoly : MvPolynomial (Fin 2) R →ₐ[R] chartERing R π q := (Algebra.algHom R (edgeQuot R π) (chartERing R π q)).comp (edgeQuot.mk R π) def ξ : chartERing R π q := ofPoly R π q (MvPolynomial.X 0) def η : chartERing R π q := ofPoly R π q (MvPolynomial.X 1) theorem ofPoly_edgeRel : ofPoly R π q (edgeRel R π) = 0 := by rw [ofPoly, AlgHom.comp_apply, edgeQuot.mk_edgeRel, map_zero] theorem ξ_mul_η : ξ R π q * η R π q = algebraMap R (chartERing R π q) π := by have hC : ofPoly R π q (MvPolynomial.C π) = algebraMap R (chartERing R π q) π := (ofPoly R π q).commutes π have h2 : ofPoly R π q (edgeRel R π) = ξ R π q * η R π q - algebraMap R (chartERing R π q) π := by show ofPoly R π q (MvPolynomial.X 0 * MvPolynomial.X 1 - MvPolynomial.C π) = _ rw [map_sub (ofPoly R π q), map_mul (ofPoly R π q), hC]; rfl rw [← sub_eq_zero, ← h2, ofPoly_edgeRel] theorem ofPoly_edgeDiscr : ofPoly R π q (edgeDiscr R q) = (ξ R π q ^ (q - 1) - 1) * (η R π q ^ (q - 1) - 1) := by show ofPoly R π q ((MvPolynomial.X 0 ^ (q - 1) - 1) * (MvPolynomial.X 1 ^ (q - 1) - 1)) = _ rw [map_mul (ofPoly R π q), map_sub (ofPoly R π q), map_sub (ofPoly R π q), map_pow (ofPoly R π q), map_pow (ofPoly R π q), map_one]; rfl theorem isUnit_discr : IsUnit ((ξ R π q ^ (q - 1) - 1) * (η R π q ^ (q - 1) - 1)) := by rw [← ofPoly_edgeDiscr] exact IsLocalization.Away.algebraMap_isUnit (edgeQuot.discr R π q) def point : (chartE R π q).obj (chartERing R π q) := ⟨(ξ R π q, η R π q), ξ_mul_η R π q, isUnit_of_mul_isUnit_left (isUnit_discr R π q), isUnit_of_mul_isUnit_right (isUnit_discr R π q)⟩ variable {R π q} abbrev evalPoly {B : Type} [CommRing B] [Algebra R B] (x : (chartE R π q).obj B) : MvPolynomial (Fin 2) R →ₐ[R] B := MvPolynomial.aeval (fun i : Fin 2 => if i = 0 then x.1.1 else x.1.2) @[simp] theorem evalPoly_X_zero {B : Type} [CommRing B] [Algebra R B] (x : (chartE R π q).obj B) : evalPoly x (MvPolynomial.X 0) = x.1.1 := by simp [evalPoly, MvPolynomial.aeval_X] @[simp] theorem evalPoly_X_one {B : Type} [CommRing B] [Algebra R B] (x : (chartE R π q).obj B) : evalPoly x (MvPolynomial.X 1) = x.1.2 := by simp [evalPoly, MvPolynomial.aeval_X] theorem evalPoly_edgeRel {B : Type} [CommRing B] [Algebra R B] (x : (chartE R π q).obj B) : evalPoly x (edgeRel R π) = 0 := by have hC : evalPoly x (MvPolynomial.C π) = algebraMap R B π := (evalPoly x).commutes π show evalPoly x (MvPolynomial.X 0 * MvPolynomial.X 1 - MvPolynomial.C π) = 0 rw [map_sub (evalPoly x), map_mul (evalPoly x), evalPoly_X_zero, evalPoly_X_one, hC, x.2.1, sub_self] def evalQuot {B : Type} [CommRing B] [Algebra R B] (x : (chartE R π q).obj B) : edgeQuot R π →ₐ[R] B := Ideal.Quotient.liftₐ (Ideal.span {edgeRel R π}) (evalPoly x) (fun a ha => by obtain ⟨c, rfl⟩ := Ideal.mem_span_singleton'.mp ha rw [map_mul (evalPoly x), evalPoly_edgeRel, mul_zero]) theorem evalQuot_mk {B : Type} [CommRing B] [Algebra R B] (x : (chartE R π q).obj B) (p : MvPolynomial (Fin 2) R) : evalQuot x (edgeQuot.mk R π p) = evalPoly x p := rfl theorem isUnit_evalQuot_of_mem_powers {B : Type} [CommRing B] [Algebra R B] (x : (chartE R π q).obj B) (y : Submonoid.powers (edgeQuot.discr R π q)) : IsUnit (evalQuot x (y : edgeQuot R π)) := by obtain ⟨_, n, rfl⟩ := y rw [map_pow] refine IsUnit.pow n ?_ rw [edgeQuot.discr, evalQuot_mk] show IsUnit (evalPoly x ((MvPolynomial.X 0 ^ (q - 1) - 1) * (MvPolynomial.X 1 ^ (q - 1) - 1))) rw [map_mul (evalPoly x), map_sub (evalPoly x), map_sub (evalPoly x), map_pow (evalPoly x), map_pow (evalPoly x), map_one, evalPoly_X_zero, evalPoly_X_one] exact x.2.2.1.mul x.2.2.2 def lift {B : Type} [CommRing B] [Algebra R B] (x : (chartE R π q).obj B) : chartERing R π q →ₐ[R] B := IsLocalization.liftAlgHom (M := Submonoid.powers (edgeQuot.discr R π q)) (f := evalQuot x) (isUnit_evalQuot_of_mem_powers x) theorem lift_ofPoly {B : Type} [CommRing B] [Algebra R B] (x : (chartE R π q).obj B) (p : MvPolynomial (Fin 2) R) : lift x (ofPoly R π q p) = evalPoly x p := by rw [lift, IsLocalization.liftAlgHom_apply, ofPoly, AlgHom.comp_apply] exact (IsLocalization.lift_eq _ _).trans (evalQuot_mk x p) @[simp] theorem lift_ξ {B : Type} [CommRing B] [Algebra R B] (x : (chartE R π q).obj B) : lift x (ξ R π q) = x.1.1 := by rw [ξ, lift_ofPoly, evalPoly_X_zero] @[simp] theorem lift_η {B : Type} [CommRing B] [Algebra R B] (x : (chartE R π q).obj B) : lift x (η R π q) = x.1.2 := by rw [η, lift_ofPoly, evalPoly_X_one] variable (R π q) in def corepEquiv (B : Type) [CommRing B] [Algebra R B] : (chartERing R π q →ₐ[R] B) ≃ (chartE R π q).obj B where toFun φ := (chartE R π q).map φ (point R π q) invFun x := lift x left_inv φ := by apply IsLocalization.algHom_ext (Submonoid.powers (edgeQuot.discr R π q)) apply Ideal.Quotient.algHom_ext apply MvPolynomial.algHom_ext intro i show lift ((chartE R π q).map φ (point R π q)) (ofPoly R π q (MvPolynomial.X i)) = φ (ofPoly R π q (MvPolynomial.X i)) fin_cases i · exact lift_ξ _ · exact lift_η _ right_inv x := Subtype.ext (Prod.ext (lift_ξ x) (lift_η x)) @[simp] theorem corepEquiv_apply_val (B : Type) [CommRing B] [Algebra R B] (φ : chartERing R π q →ₐ[R] B) : (corepEquiv R π q B φ).1 = (φ (ξ R π q), φ (η R π q)) := rfl theorem corepEquiv_natural {B : Type} [CommRing B] [Algebra R B] {B' : Type} [CommRing B'] [Algebra R B'] (f : B →ₐ[R] B') (φ : chartERing R π q →ₐ[R] B) : corepEquiv R π q B' ((AlgFunctor.corep (𝒪 := R) (chartERing R π q)).map f φ) = (chartE R π q).map f (corepEquiv R π q B φ) := Subtype.ext rfl variable (R π q) in def corepNatTrans : AlgFunctor.NatTrans (AlgFunctor.corep (𝒪 := R) (chartERing R π q)) (chartE R π q) where app B _ _ φ := corepEquiv R π q B φ naturality f φ := corepEquiv_natural f φ end chartERing section Level variable (𝒪 : Type) [CommRing 𝒪] (π : 𝒪) (q n : ℕ) abbrev truncRing : Type := 𝒪 ⧸ Ideal.span {π ^ (n + 1)} abbrev chartVRingMod : Type := chartVRing (truncRing 𝒪 π n) q abbrev chartERingMod : Type := chartERing (truncRing 𝒪 π n) (Ideal.Quotient.mk (Ideal.span {π ^ (n + 1)}) π) q theorem isNilpotent_algebraMap_of_isScalarTower (B : Type) [CommRing B] [Algebra 𝒪 B] [Algebra (truncRing 𝒪 π n) B] [IsScalarTower 𝒪 (truncRing 𝒪 π n) B] : IsNilpotent (algebraMap 𝒪 B π) := by refine ⟨n + 1, ?_⟩ rw [← map_pow, IsScalarTower.algebraMap_apply 𝒪 (truncRing 𝒪 π n) B, Ideal.Quotient.algebraMap_eq, Ideal.Quotient.eq_zero_iff_mem.mpr (Ideal.subset_span (Set.mem_singleton _)), map_zero] end Level end ChartRings end FormalOmega end CerednikDrinfeld end
Statements phrased using this module (85)
- Deligne datum in the standard edge chart: existence of chart point
CerednikDrinfeld.FormalOmega.DeligneDatum.exists_algHom_chartERing_line_eq_of_inEdgeChart_of_finite0 below · depth 28 - Edge chart points yield Deligne data with prescribed lines
CerednikDrinfeld.FormalOmega.exists_deligneDatum_line_eq_inEdgeChart_of_isNilpotent2 below · depth 28 - Edge-chart morphisms of a formally étale uniformisation are étale
CerednikDrinfeld.QM.etale_edgeChartMorphism_of_cerednikDrinfeld_uniformization_fine7 below · depth 28 - Finite edge-chart cover over an open of the Čerednik–Drinfeld quotient
CerednikDrinfeld.exists_finset_chartUnitLocus_cover_of_cerednikDrinfeld_quotient12 below · depth 28 - Edge-chart unit locus as a finite union of linear pieces
CerednikDrinfeld.exists_linearPieces_eq_chartUnitLocus_of_cerednikDrinfeld_quotient13 below · depth 28 - Holomorphy of pull-backs of regular functions on edge-chart loci
CerednikDrinfeld.exists_mem_holOn_apply_toOmega_eq_of_chartMap_of_cerednikDrinfeld_quotient7 below · depth 28 - Edge charts covering a formal Čerednik–Drinfeld quotient
CerednikDrinfeld.exists_opens_chartMorphism_of_cerednikDrinfeld_quotient422 below · depth 28 - Adic points in a chart unit locus factor through V
CerednikDrinfeld.le_preimage_of_toOmega_mem_chartUnitLocus_of_cerednikDrinfeld_quotient7 below · depth 28 - Edge nondegeneracy transports under pull-back by h
CerednikDrinfeld.FormalOmega.DeligneDatum.edgeNondegAt_pullback_act_inv0 below · depth 29 - Pull-back of a Deligne datum into the standard edge chart
CerednikDrinfeld.FormalOmega.DeligneDatum.exists_isPullback_inEdgeChart_of_isLocalRing6 below · depth 29 - Nondegeneracy of the standard edge at primes containing π
CerednikDrinfeld.FormalOmega.edgeNondegAt_stdEdge_of_isUnit0 below · depth 29 - Level-independence of chart preimages of an open of X
CerednikDrinfeld.basicOpen_le_preimage_chartMorphism_of_level_zero_of_cerednikDrinfeld_quotient3 below · depth 29 - Vertex nondegeneracy implies edge nondegeneracy at adjacent lattices
CerednikDrinfeld.FormalOmega.DeligneDatum.edgeNondegAt_of_vertexNondegAt0 below · depth 30 - Edge condition at the maximal ideal holds at every prime
CerednikDrinfeld.FormalOmega.DeligneDatum.inEdgeChart_of_edgeNondegAt_maximalIdeal0 below · depth 30 - Edge transitivity of GL₂(K) on full lattices
CerednikDrinfeld.FormalOmega.exists_act_stdFullLattice_eq_and_act_act_eq_of_lt_of_lt1 below · depth 30 - Every full lattice has a neighbour between π M and M
CerednikDrinfeld.FormalOmega.exists_fullLattice_lt_and_lt1 below · depth 30 - Standard edge chart represents the edge subfunctor of Ω̂
CerednikDrinfeld.FormalOmega.DeligneDatum.existsUnique_algHom_chartERing_line_eq_and_natural_of_inEdgeChart5 below · depth 32 - Zariski-local reduction of Deligne data to the standard edge chart
CerednikDrinfeld.FormalOmega.DeligneDatum.exists_cover_pullback_map_inEdgeChart_stdEdge_line_eq7 below · depth 32 - Translated edge chart of Ω̂ is affinely representable
CerednikDrinfeld.FormalOmega.Omega.exists_natural_injective_inEdgeChart_act_iff_spec_tensorProduct_chartERing7 below · depth 32 - Base change for the edge chart ring Aₑ
CerednikDrinfeld.FormalOmega.chartERing.existsUnique_isPushout_baseChange1 below · depth 32 - Truncated edge chart rings commute with base change
CerednikDrinfeld.FormalOmega.chartERing.existsUnique_isPushout_quotient_baseChange1 below · depth 32 - Edge transport fixing or reversing the ends of an edge
CerednikDrinfeld.FormalOmega.associated_algEquiv_chartERing_xi_eta_of_isPullback4 below · depth 33 - Flatness over the base of the edge chart ring
CerednikDrinfeld.FormalOmega.chartERing.flat0 below · depth 33 - Each component of the special fibre of the edge chart is infinite
CerednikDrinfeld.FormalOmega.chartERing.infinite_setOf_le_of_mem_minimalPrimes_quotient_level_zero0 below · depth 33 - Level-zero edge chart: primes maximal or minimal
CerednikDrinfeld.FormalOmega.chartERing.isMaximal_or_mem_minimalPrimes_quotient_level_zero0 below · depth 33 - Reducedness of the level-zero quotient of the edge chart ring
CerednikDrinfeld.FormalOmega.chartERing.isReduced_quotient_level_zero0 below · depth 33 - Each branch of the level-zero edge chart is smooth of dimension one
CerednikDrinfeld.FormalOmega.chartERing.smoothOfRelativeDimension_one_specMap_quotient_of_mem_minimalPrimes_level_zero3 below · depth 33 - Unique edge-chart automorphism from an edge-stabilising g
CerednikDrinfeld.FormalOmega.existsUnique_algEquiv_chartERing_isPullback_of_act_stdEdge4 below · depth 33 - Unique vertex-chart automorphism transporting Deligne data
CerednikDrinfeld.FormalOmega.existsUnique_algEquiv_chartVRing_isPullback_of_act_stdFullLattice_eq4 below · depth 33 - The vertex chart as a localisation of the edge chart mod πⁿ⁺¹
CerednikDrinfeld.FormalOmega.exists_algHom_chartERing_chartVRing_isLocalization_away0 below · depth 33 - Separatedness of a Mumford glued level over 𝒪/πⁿ⁺¹
CerednikDrinfeld.FormalOmega.isSeparated_of_mumfordGlueLaws7 below · depth 33 - Edge-chart incidence for translated Deligne data
CerednikDrinfeld.FormalOmega.act_stdVertex_or_isUnit_of_isPullback_of_line_eq_chartERing5 below · depth 34 - Minimal primes of the level-zero edge chart fibre
CerednikDrinfeld.FormalOmega.chartERing.eq_span_xi_or_eq_span_eta_of_mem_minimalPrimes_level_zero0 below · depth 34 - Level-zero branch of the edge chart is a localised line
CerednikDrinfeld.FormalOmega.chartERing.exists_ringEquiv_quotient_level_zero_span_ofPoly_X_localizationAway0 below · depth 34 - Adjacent edge charts generate the vertex chart ring
CerednikDrinfeld.FormalOmega.range_sup_range_comp_eq_top_of_isPullback_chartVRing4 below · depth 34 - Lifting a quadruple's (α,β) with αβ=π
CerednikDrinfeld.FormalOmega.DrinfeldDatum.IsQuadrupleOf.exists_mul_eq_and_map_eq_of_isBaseChange_of_inEdgeChart29 below · depth 35 - Representability of the formal upper half plane over a Noetherian base
CerednikDrinfeld.FormalOmega.Omega.exists_scheme_equiv_nilpPoints_and_isOpenImmersion_of_isNoetherianRing23 below · depth 35 - Separatedness of a scheme representing the Deligne datum functor
CerednikDrinfeld.FormalOmega.Omega.isSeparated_of_equiv_nilpPoints1 below · depth 35 - Reducedness and finite type of the edge chart ring over W(k)/p
CerednikDrinfeld.FormalOmega.finiteType_and_isReduced_tensorProduct_chartERing_of_isAlgClosed4 below · depth 35 - Lifting edge-chart coordinates along a nilpotent thickening
CerednikDrinfeld.FormalOmega.DeligneDatum.exists_algHom_chartERing_comp_eq_of_isBaseChange_of_surjective6 below · depth 36 - Uniqueness of the Pi-pair of a Drinfeld quadruple up to (u,u⁻¹)
CerednikDrinfeld.FormalOmega.DrinfeldDatum.IsQuadrupleOf.exists_unit_eq_mul_chartERing_eta_of_line_eq21 below · depth 36 - Explicit Drinfeld quadruple over the standard edge chart
CerednikDrinfeld.FormalOmega.DeligneDatum.exists_isQuadrupleOf_and_pi_eq_smul_chartERing_of_line_eq8 below · depth 37 - Reversing the orientation of an edge chart
CerednikDrinfeld.FormalOmega.DeligneDatum.inEdgeChart_act_scalarGL_inv_of_inEdgeChart2 below · depth 38 - Drinfeld surjectivity on the standard edge chart in characteristic p
CerednikDrinfeld.SpecialFormal.Rigidified.exists_isAdmissible_isCartierQuadruple_isQuadrupleOf_of_line_eq_of_charP486 below · depth 38 - Pulled-back edge family recovers the standard-chart Deligne datum
CerednikDrinfeld.SpecialFormal.Rigidified.eq_of_isQuadrupleOf_of_isCartierQuadruple_map_of_forall_algClosed_line_eq366 below · depth 39 - Admissible rigidified family over the reduced edge chart
CerednikDrinfeld.SpecialFormal.Rigidified.exists_isAdmissible_forall_isCartierQuadruple_map_line_eq_edgeRingCharP414 below · depth 39 - Reducedness of the edge chart ring over W(k)/p
CerednikDrinfeld.EdgeFamily.isReduced_edgeRingCharP_wittVector_quotient_of_isAlgClosed0 below · depth 40 - Special formal mathcal O_D-module of height 4 over the edge chart
CerednikDrinfeld.FormalODModule.exists_isHomogeneousVBasis_hasStructureConstants_edgeRingConstants_isSpecial_hasHeight_of_isAlgClosed101 below · depth 40 - Rigidification of the explicit edge family with standard Drinfeld lines
CerednikDrinfeld.FormalODModule.forall_exists_isAdmissible_forall_isCartierQuadruple_map_line_eq_of_hasStructureConstants_edgeRingConstants399 below · depth 40 - Explicit height-4 edge isogeny between special formal mathcal O_D-modules
CerednikDrinfeld.FormalODModule.exists_hom_map_eq_sub_verschiebungInt_and_isIsogenyOfHeight_of_hasStructureConstants_edgeConstants64 below · depth 41 - Normalised node isogeny onto the edge family's node fibre
CerednikDrinfeld.FormalODModule.exists_isIsogenyOfHeight_map_node_rigidNum_single_eq199 below · depth 41 - Cartier quadruples at geometric points of the edge family
CerednikDrinfeld.FormalODModule.forall_isCartierQuadruple_map_line_eq_of_rigidNum_single_eq_of_edge_isogeny346 below · depth 41 - Height four from the edge structure constants
CerednikDrinfeld.FormalODModule.hasHeight_four_of_hasStructureConstants_edgeRingConstants_of_isAlgClosed92 below · depth 41 - Closed Witt form of the edge structure constants
CerednikDrinfeld.FormalODModule.endAct_varpiEnd_eq_teichmuller_sub_smul_add_verschiebungInt_of_hasStructureConstants_edgeConstants4 below · depth 42 - Edge structure constants force nilpotent coordinates modulo [p]
CerednikDrinfeld.FormalODModule.exists_X_pow_mem_span_act_of_hasStructureConstants_edgeConstants48 below · depth 42 - Cartier quadruple of the edge family at a node point
CerednikDrinfeld.FormalODModule.exists_isCartierQuadruple_map_line_eq_of_edge_isogeny_of_apply_xi_eq_zero_of_apply_eta_eq_zero331 below · depth 42 - Geometric fibre of the edge family on the η-branch
CerednikDrinfeld.FormalODModule.exists_isCartierQuadruple_map_line_eq_of_edge_isogeny_of_apply_xi_eq_zero_of_apply_eta_ne_zero319 below · depth 42 - Cartier quadruple and Deligne lines at a point with y(ξ)≠ 0
CerednikDrinfeld.FormalODModule.exists_isCartierQuadruple_map_line_eq_of_edge_isogeny_of_apply_xi_ne_zero320 below · depth 42 - Degree p⁴ for [p] on the edge-family formal 𝒪_D-module
CerednikDrinfeld.FormalODModule.finrank_kerAlgebra_map_act_eq_pow_four_of_hasStructureConstants_edgeRingConstants_of_isAlgClosed90 below · depth 42 - Explicit edge homomorphism is an isogeny of height 4
CerednikDrinfeld.FormalODModule.isIsogenyOfHeight_four_of_map_eq_sub_verschiebungInt_edgeRingCharP61 below · depth 42 - Node determinant det A = u p^{2m} for rigidified data
CerednikDrinfeld.SpecialFormal.Rigidified.exists_det_eq_mul_pow_of_rigidNum_eq_sum_smul_map_node140 below · depth 42 - Integral p-adic matrix for the rigidification numerator at a node
CerednikDrinfeld.SpecialFormal.Rigidified.exists_rigidNum_eq_sum_smul_of_isIsogenyOfHeight_map_node123 below · depth 42 - Height and rigidification numerator under composition with a central endomorphism
CerednikDrinfeld.SpecialFormal.Rigidified.isIsogenyOfHeight_comp_and_rigidNum_comp_eq_rigidNum_mulVec_of_centralizer22 below · depth 42 - Node witnesses: mathcal O_D-linearity and graded reductions
CerednikDrinfeld.SpecialFormal.Rigidified.isODHom_and_isGradedSbar_and_isGradedPhiS_map_node6 below · depth 42 - Branch-generic point of the edge chart dominating node points
CerednikDrinfeld.EdgeFamily.edgeRingCharP.exists_ker_le_and_forall_ker_le_of_apply_eq_zero0 below · depth 43 - Nilpotent coordinates on X[p] for a pure edge branch
CerednikDrinfeld.FormalODModule.exists_X_pow_mem_span_act_of_hasStructureConstants_edgeConstants_zero47 below · depth 43 - Edge-family Cartier module is free of rank 4 on γ, Vγ
CerednikDrinfeld.FormalODModule.exists_basis_cartierModule_eq_of_hasStructureConstants_edgeConstants25 below · depth 43 - Node case: Cartier quadruple with node Deligne lines
CerednikDrinfeld.FormalODModule.forall_isCartierQuadruple_map_node_line_eq_of_rigidNum_single_eq309 below · depth 43 - Edge structure constants force height four
CerednikDrinfeld.FormalODModule.hasHeight_four_of_hasStructureConstants_edgeConstants_of_perfectRing89 below · depth 43 - Stalk kernels at an η-branch point of the edge family
CerednikDrinfeld.FormalODModule.ker_eq_span_of_lattice_eq_of_isCartierQuadruple_map_edge_of_apply_xi_eq_zero_of_apply_eta_ne_zero120 below · depth 43 - Kernels of u₀ and u₁ at a ξ-point
CerednikDrinfeld.FormalODModule.ker_eq_span_of_lattice_eq_of_isCartierQuadruple_map_edge_of_apply_xi_ne_zero121 below · depth 43 - η-branch: both Drinfeld lattices equal p⁻¹ diag(p,1) ℤₚ²
CerednikDrinfeld.FormalODModule.lattice_eq_of_isCartierQuadruple_map_edge_of_apply_xi_eq_zero_of_apply_eta_ne_zero89 below · depth 43 - Lattices of a Cartier quadruple at a ξ-point
CerednikDrinfeld.FormalODModule.lattice_eq_of_isCartierQuadruple_map_edge_of_apply_xi_ne_zero90 below · depth 43 - Admissibility of a composed rigidification over the edge-chart ring
CerednikDrinfeld.SpecialFormal.Rigidified.isAdmissible_mk_edgeRingCharP_comp_of_isIsogenyOfHeight23 below · depth 43 - Degree-one η-sections with tangent ratio -y(η)
CerednikDrinfeld.FormalODModule.exists_isEtaSection_one_tangent_eq_neg_mul_of_edge_isogeny_of_apply_xi_eq_zero_of_apply_eta_ne_zero114 below · depth 44 - Degree-one eta-sections on the ξ-branch of the edge family
CerednikDrinfeld.FormalODModule.exists_isEtaSection_one_tangent_eq_neg_mul_of_edge_isogeny_of_apply_xi_ne_zero115 below · depth 44 - Degree-zero η-sections on the η-branch: tangent ratio -y(η)
CerednikDrinfeld.FormalODModule.exists_isEtaSection_zero_tangent_eq_neg_mul_of_edge_isogeny_of_apply_xi_eq_zero_of_apply_eta_ne_zero115 below · depth 44 - Degree-zero η-sections of the edge family where y(ξ)≠ 0
CerednikDrinfeld.FormalODModule.exists_isEtaSection_zero_tangent_eq_neg_mul_of_edge_isogeny_of_apply_xi_ne_zero115 below · depth 44 - Node stalks of a Cartier quadruple: lattices and kernel lines
CerednikDrinfeld.FormalODModule.lattice_eq_and_ker_eq_span_of_isCartierQuadruple_map_node_of_rigidNum_single_eq97 below · depth 44 - Rigidification numerator of the edge family at an arbitrary base point
CerednikDrinfeld.FormalODModule.smul_rigidNum_map_single_eq_smul_baseChange_of_rigidNum_single_eq_of_edge_isogeny0 below · depth 44 - Node kernels of a Cartier quadruple are coordinate lines
CerednikDrinfeld.FormalODModule.ker_eq_span_of_lattice_eq_of_isCartierQuadruple_map_node_of_rigidNum_single_eq94 below · depth 45 - Node lattices of the Cartier quadruple of the normalised node triple
CerednikDrinfeld.FormalODModule.lattice_eq_of_isCartierQuadruple_map_node_of_rigidNum_single_eq91 below · depth 45 - Degree-one η-sections at the node of the standard edge
CerednikDrinfeld.FormalODModule.exists_isEtaSection_one_tangent_eq_neg_mul_map_node_of_rigidNum_single_eq90 below · depth 46 - Degree-zero η-sections at the node of the standard edge
CerednikDrinfeld.FormalODModule.exists_isEtaSection_zero_tangent_eq_neg_mul_map_node_of_rigidNum_single_eq90 below · depth 46 - Node normalisation of the rigidification numerator propagates under base change
CerednikDrinfeld.FormalODModule.smul_rigidNum_map_node_single_eq_smul_baseChange_of_rigidNum_single_eq0 below · depth 46