Definitions/Def_CerednikDrinfeld_EdgeFamilyConstants.lean
Witt branch constants and edge constants on edge charts
Fix a prime p. For an element x of a commutative ring R, wittDigit p x j is the j-th Witt coefficient of F[x]-[x]\in W(R), where [\,\cdot\,] is the Teichmüller map and F the Witt-vector Frobenius; in particular the 0-th coefficient is x^p-x. From this the family branchConstants p x : ℕ → R is defined by cases on the index m: it is x^p-x for m=0, it is 1 for m=1, it is \mathrm{wittDigit}\,p\,x\,(m/2)^{\,p^{m/2}} for even m\ge 2, and 0 for odd m\ge 3. For a pair (\xi,\eta) of elements of R, edgeConstants p ξ η : ℕ → Fin 2 → R is the two-branch family sending (m,0) to the m-th branch constant of \eta and (m,1) to that of \xi; thus a_{0,0}=\eta^p-\eta, a_{0,1}=\xi^p-\xi and a_{1,i}=1, as recorded by the accompanying simp lemmas. Two further groups of lemmas are established: if \xi\eta=0 then a_{0,0}a_{0,1}=0 (factoring (\eta^p-\eta)(\xi^p-\xi) through \xi\eta), and this product equals (p:R) whenever p vanishes in R; and all three families commute with ring homomorphisms, f(\mathrm{wittDigit}\,p\,x\,j)=\mathrm{wittDigit}\,p\,(f x)\,j and likewise for the branch and edge constants, so base change is evaluation.
The module then specialises to the standard edge chart in characteristic p: for a commutative ring k, edgeRingCharP p k is the edge-chart ring FormalOmega.chartERing k (0 : k) p, that is the localisation of k[X_0,X_1]/(X_0X_1) away from the image of (X_0^{p-1}-1)(X_1^{p-1}-1), with coordinates edgeRingCharP.ξ and edgeRingCharP.η satisfying \xi\eta=0. edgeRingConstants p k is the edge-constant family of this pair, and the final result states that when k has characteristic p the product of its two constants in degree 0 equals p in that ring. Nothing here asserts that these constants present any particular formal module; they are defined as an explicit family.
Relation to Mathlib
Witt vectors, the Teichmüller map and the Witt-vector Frobenius are Mathlib's; the branch and edge constant families, and the edge-chart ring they are evaluated on, are the project's own.
Where it is used
These are the candidate structure constants for Drinfeld's special formal module over the standard edge chart of the formal upper half-plane in characteristic p, entering the Cerednik–Drinfeld uniformisation of Shimura curves; the relation a_{0,0}a_{0,1}=p reflects the nodal relation \xi\eta=\pi degenerating at \pi=0.
References
- J.-F. Boutot and H. Carayol, Uniformisation p-adique des courbes de Shimura: théorèmes de Cerednik 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.
- 99 lines
- 19 declarations
- used in the statements of 42 theorems and imported by 43 proofs
- imports 1 definition modules
Source file: Definitions/Def_CerednikDrinfeld_EdgeFamilyConstants.lean
Imported by
- no other definition module
Declarations
- def
CerednikDrinfeld.EdgeFamily.wittDigit - def
CerednikDrinfeld.EdgeFamily.branchConstants - def
CerednikDrinfeld.EdgeFamily.edgeConstants - theorem
CerednikDrinfeld.EdgeFamily.branchConstants_zero - theorem
CerednikDrinfeld.EdgeFamily.branchConstants_one - theorem
CerednikDrinfeld.EdgeFamily.edgeConstants_zero_zero - theorem
CerednikDrinfeld.EdgeFamily.edgeConstants_zero_one - theorem
CerednikDrinfeld.EdgeFamily.edgeConstants_one - theorem
CerednikDrinfeld.EdgeFamily.edgeConstants_zero_zero_mul_zero_one - theorem
CerednikDrinfeld.EdgeFamily.edgeConstants_zero_zero_mul_zero_one_eq_natCast - theorem
CerednikDrinfeld.EdgeFamily.wittDigit_map - theorem
CerednikDrinfeld.EdgeFamily.branchConstants_map - theorem
CerednikDrinfeld.EdgeFamily.edgeConstants_map - abbrev
CerednikDrinfeld.EdgeFamily.edgeRingCharP - abbrev
CerednikDrinfeld.EdgeFamily.edgeRingCharP.ξ - abbrev
CerednikDrinfeld.EdgeFamily.edgeRingCharP.η - theorem
CerednikDrinfeld.EdgeFamily.edgeRingCharP.ξ_mul_η - abbrev
CerednikDrinfeld.EdgeFamily.edgeRingConstants - theorem
CerednikDrinfeld.EdgeFamily.edgeRingConstants_mul
Source
import Mathlib import Definitions.Def_CerednikDrinfeld_FormalUpperHalfPlaneChartRings set_option autoImplicit false noncomputable section universe u namespace CerednikDrinfeld namespace EdgeFamily variable (p : ℕ) [Fact p.Prime] def wittDigit {R : Type*} [CommRing R] (x : R) (j : ℕ) : R := (WittVector.frobenius (WittVector.teichmuller p x) - WittVector.teichmuller p x).coeff j def branchConstants {R : Type*} [CommRing R] (x : R) (m : ℕ) : R := if m = 0 then x ^ p - x else if m = 1 then 1 else if m % 2 = 0 then wittDigit p x (m / 2) ^ p ^ (m / 2) else 0 def edgeConstants {R : Type*} [CommRing R] (ξ η : R) : ℕ → Fin 2 → R := fun m i => if i = 0 then branchConstants p η m else branchConstants p ξ m variable {p} @[simp] theorem branchConstants_zero {R : Type*} [CommRing R] (x : R) : branchConstants p x 0 = x ^ p - x := by simp [branchConstants] @[simp] theorem branchConstants_one {R : Type*} [CommRing R] (x : R) : branchConstants p x 1 = 1 := by simp [branchConstants] @[simp] theorem edgeConstants_zero_zero {R : Type*} [CommRing R] (ξ η : R) : edgeConstants p ξ η 0 0 = η ^ p - η := by simp [edgeConstants] @[simp] theorem edgeConstants_zero_one {R : Type*} [CommRing R] (ξ η : R) : edgeConstants p ξ η 0 1 = ξ ^ p - ξ := by simp [edgeConstants] @[simp] theorem edgeConstants_one {R : Type*} [CommRing R] (ξ η : R) (i : Fin 2) : edgeConstants p ξ η 1 i = 1 := by fin_cases i <;> simp [edgeConstants] theorem edgeConstants_zero_zero_mul_zero_one {R : Type*} [CommRing R] (ξ η : R) (h : ξ * η = 0) : edgeConstants p ξ η 0 0 * edgeConstants p ξ η 0 1 = 0 := by have hp : 0 < p := (Fact.out : p.Prime).pos obtain ⟨n, hn⟩ : ∃ n, p = n + 1 := ⟨p - 1, by omega⟩ simp only [edgeConstants_zero_zero, edgeConstants_zero_one] have : (η ^ p - η) * (ξ ^ p - ξ) = (ξ * η) * ((η ^ n - 1) * (ξ ^ n - 1)) := by rw [hn]; ring rw [this, h, zero_mul] theorem edgeConstants_zero_zero_mul_zero_one_eq_natCast {R : Type*} [CommRing R] (ξ η : R) (h : ξ * η = 0) (hp0 : (p : R) = 0) : edgeConstants p ξ η 0 0 * edgeConstants p ξ η 0 1 = (p : R) := by rw [edgeConstants_zero_zero_mul_zero_one ξ η h, hp0] theorem wittDigit_map {R S : Type u} [CommRing R] [CommRing S] (f : R →+* S) (x : R) (j : ℕ) : f (wittDigit p x j) = wittDigit p (f x) j := by have h1 : WittVector.map f (WittVector.frobenius (WittVector.teichmuller p x)) = WittVector.frobenius (WittVector.map f (WittVector.teichmuller p x)) := by exact (WittVector.frobenius_isPoly p).map f _ simp only [wittDigit] rw [← WittVector.map_coeff, map_sub, h1, WittVector.map_teichmuller] theorem branchConstants_map {R S : Type u} [CommRing R] [CommRing S] (f : R →+* S) (x : R) (m : ℕ) : f (branchConstants p x m) = branchConstants p (f x) m := by simp only [branchConstants] split_ifs <;> simp [map_sub, map_pow, wittDigit_map] theorem edgeConstants_map {R S : Type u} [CommRing R] [CommRing S] (f : R →+* S) (ξ η : R) (m : ℕ) (i : Fin 2) : f (edgeConstants p ξ η m i) = edgeConstants p (f ξ) (f η) m i := by simp only [edgeConstants] split_ifs <;> exact branchConstants_map f _ m variable (p) abbrev edgeRingCharP (k : Type) [CommRing k] : Type := FormalOmega.chartERing k (0 : k) p abbrev edgeRingCharP.ξ (k : Type) [CommRing k] : edgeRingCharP p k := FormalOmega.chartERing.ξ k (0 : k) p abbrev edgeRingCharP.η (k : Type) [CommRing k] : edgeRingCharP p k := FormalOmega.chartERing.η k (0 : k) p omit [Fact p.Prime] in theorem edgeRingCharP.ξ_mul_η (k : Type) [CommRing k] : edgeRingCharP.ξ p k * edgeRingCharP.η p k = 0 := by rw [edgeRingCharP.ξ, edgeRingCharP.η, FormalOmega.chartERing.ξ_mul_η, map_zero] abbrev edgeRingConstants (k : Type) [CommRing k] : ℕ → Fin 2 → edgeRingCharP p k := edgeConstants p (edgeRingCharP.ξ p k) (edgeRingCharP.η p k) theorem edgeRingConstants_mul (k : Type) [CommRing k] [CharP k p] : edgeRingConstants p k 0 0 * edgeRingConstants p k 0 1 = (p : edgeRingCharP p k) := by apply edgeConstants_zero_zero_mul_zero_one_eq_natCast _ _ (edgeRingCharP.ξ_mul_η p k) rw [← map_natCast (algebraMap k (edgeRingCharP p k)), CharP.cast_eq_zero, map_zero] end EdgeFamily end CerednikDrinfeld end
Statements phrased using this module (42)
- 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 - Maps out of the edge chart ring killing ξ,η factor through the node
CerednikDrinfeld.EdgeFamily.edgeRingCharP.eq_comp_of_apply_xi_eq_zero_of_apply_eta_eq_zero0 below · depth 43 - 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