Definitions/Def_CerednikDrinfeld_MumfordPeriod.lean
Quotient graph data and Mumford period data
The first half of the module turns a group acting on a graph into a degeneracy datum. A GraphAction of a group G on a simple graph \mathcal{T} with vertex type W (carrying a G-action) is the propositional assertion that v \sim w implies g\cdot v \sim g\cdot w; from it the darts (ordered adjacent pairs) inherit a G-action acting on both coordinates, compatibly with dart reversal. Writing QuotEdge for the orbit set G\backslash\mathrm{Dart}(\mathcal{T}) and QuotVert for G\backslash W, the width stabWidth of a dart orbit is \#\mathrm{Stab}_G(d) for a chosen representative d, with the convention that the value is 1 when that cardinality is 0 (infinite stabiliser); the order of the stabiliser is constant along an orbit, and the width of the class of d is computed from \mathrm{Stab}_G(d). Then quotientDegeneracyData is the DegeneracyData with edge level G\backslash\mathrm{Dart}(\mathcal{T}), vertex level G\backslash W, the two maps sending [d] to the orbits of its origin and terminus, and this width; quotientReversal is the involution induced by d\mapsto\bar d, and formalU is the integer matrix on dart orbits with (e,e') entry [\,a(e')=b(e)\,]-[\,\overline{e'}=e\,].
The second half fixes a degeneracy datum D on finite levels, fields K\subseteq L and an additive homomorphism \mathrm{ord}:K^\times\to\mathbb{Z}. A PeriodDatum is a structure carrying a \mathbb{Z}-bilinear map Q on the ribbon kernel Z=\ker a_*\cap\ker b_* with values in K^\times, together with two of its properties as fields: symmetry, and \mathrm{ord}\,Q(x,y)=\sum_e w(e)x_ey_e. HeckeAdjointable asserts, for a HeckeData H on D, that for each prime \ell and each y\in Z some y' satisfies Q(y, T_\ell z)=Q(y',z) for all z — existence of an adjoint, not a formula for it. Composing Q with the map K^\times\to L^\times gives QL : Z → Hom(Z,L^\times); its range is the periodLattice \Lambda, the quotient \mathrm{Hom}(Z,L^\times)/\Lambda is JacPoints, U is the submodule of torus points with torsion image, and π the induced map U\to\mathrm{JacPoints}. Finally IsTorsionOf T is a predicate on an abstract abelian group T: some additive homomorphism U\to T has torsion image containing all torsion of T and kernel exactly \Lambda — an identification of the torsion of T with U/\Lambda up to abstract isomorphism rather than a chosen one.
Relation to Mathlib
Mathlib supplies SimpleGraph.Dart, orbit quotients orbitRel.Quotient, stabilisers and Submodule.torsion; the class GraphAction (adjacency-preserving action, rather than a homomorphism into the graph's automorphism group), the induced action on darts, and all the period-datum notions are the project's own.
Where it is used
These definitions package the combinatorial and multiplicative input of the Čerednik–Drinfeld description of a Shimura curve at a prime of bad reduction: the quotient of the Bruhat–Tits tree by a discrete subgroup gives the dual graph with thicknesses of the special fibre, and a period datum gives the multiplicative period pairing whose valuation is the monodromy pairing, hence the toric description of the Jacobian's points and its torsion. They feed the component-group computations used in the level-lowering step.
References
- J.-P. Serre, Arbres, amalgames, SL_2, Astérisque 46, Société Mathématique de France, 1977
- D. Mumford, An analytic construction of degenerating curves over complete local rings, Compositio Mathematica 24 (1972), 129–174
- 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
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 120 lines
- 29 declarations
- used in the statements of 54 theorems and imported by 63 proofs
- imports 1 definition modules
Source file: Definitions/Def_CerednikDrinfeld_MumfordPeriod.lean
Imports
Declarations
- class
CerednikDrinfeld.Mumford.GraphAction - field
CerednikDrinfeld.Mumford.GraphAction.smul_adj - instance
CerednikDrinfeld.Mumford.dartAction - theorem
CerednikDrinfeld.Mumford.smul_dart_fst - theorem
CerednikDrinfeld.Mumford.smul_dart_snd - theorem
CerednikDrinfeld.Mumford.smul_dart_symm - abbrev
CerednikDrinfeld.Mumford.QuotEdge - abbrev
CerednikDrinfeld.Mumford.QuotVert - theorem
CerednikDrinfeld.Mumford.card_stabilizer_smul - def
CerednikDrinfeld.Mumford.stabWidth - theorem
CerednikDrinfeld.Mumford.stabWidth_mk - def
CerednikDrinfeld.Mumford.quotientDegeneracyData - def
CerednikDrinfeld.Mumford.quotientReversal - def
CerednikDrinfeld.Mumford.formalU - structure
CerednikDrinfeld.Mumford.PeriodDatum - field
CerednikDrinfeld.Mumford.PeriodDatum.Q - field
CerednikDrinfeld.Mumford.PeriodDatum.Q_symm - field
CerednikDrinfeld.Mumford.PeriodDatum.ord_Q - def
CerednikDrinfeld.Mumford.PeriodDatum.HeckeAdjointable - def
CerednikDrinfeld.Mumford.unitsBaseChange - theorem
CerednikDrinfeld.Mumford.unitsBaseChange_apply - abbrev
CerednikDrinfeld.Mumford.PeriodDatum.TorusPoints - def
CerednikDrinfeld.Mumford.PeriodDatum.QL - theorem
CerednikDrinfeld.Mumford.PeriodDatum.QL_apply - def
CerednikDrinfeld.Mumford.PeriodDatum.periodLattice - abbrev
CerednikDrinfeld.Mumford.PeriodDatum.JacPoints - def
CerednikDrinfeld.Mumford.PeriodDatum.U - def
CerednikDrinfeld.Mumford.PeriodDatum.π - def
CerednikDrinfeld.Mumford.PeriodDatum.IsTorsionOf
Source
import Definitions.Def_CerednikDrinfeld_Ribbon import Mathlib.Combinatorics.SimpleGraph.Dart ↗ import Mathlib.Combinatorics.SimpleGraph.Acyclic ↗ import Mathlib.GroupTheory.GroupAction.Quotient ↗ import Mathlib.GroupTheory.OrderOfElement ↗ import Mathlib.Algebra.Module.Torsion.Basic ↗ import Mathlib.LinearAlgebra.BilinearMap ↗ set_option autoImplicit false noncomputable section namespace CerednikDrinfeld namespace Mumford open ModularCurve MulAction class GraphAction (G : Type) [Group G] {W : Type} [MulAction G W] (𝒯 : SimpleGraph W) : Prop where smul_adj : ∀ (g : G) {v w : W}, 𝒯.Adj v w → 𝒯.Adj (g • v) (g • w) variable {G : Type} [Group G] {W : Type} [MulAction G W] (𝒯 : SimpleGraph W) [GraphAction G 𝒯] instance dartAction : MulAction G 𝒯.Dart where smul g d := ⟨(g • d.fst, g • d.snd), GraphAction.smul_adj g d.adj⟩ one_smul d := SimpleGraph.Dart.ext _ _ (Prod.ext (one_smul G d.fst) (one_smul G d.snd)) mul_smul g h d := SimpleGraph.Dart.ext _ _ (Prod.ext (mul_smul g h d.fst) (mul_smul g h d.snd)) @[simp] theorem smul_dart_fst (g : G) (d : 𝒯.Dart) : (g • d).fst = g • d.fst := rfl @[simp] theorem smul_dart_snd (g : G) (d : 𝒯.Dart) : (g • d).snd = g • d.snd := rfl theorem smul_dart_symm (g : G) (d : 𝒯.Dart) : (g • d).symm = g • d.symm := rfl abbrev QuotEdge (G : Type) [Group G] {W : Type} [MulAction G W] (𝒯 : SimpleGraph W) [GraphAction G 𝒯] := orbitRel.Quotient G 𝒯.Dart abbrev QuotVert (G : Type) [Group G] (W : Type) [MulAction G W] := orbitRel.Quotient G W theorem card_stabilizer_smul (g : G) (d : 𝒯.Dart) : Nat.card (stabilizer G (g • d)) = Nat.card (stabilizer G d) := by rw [stabilizer_smul_eq_stabilizer_map_conj] exact Subgroup.card_map_of_injective (MulAut.conj g).injective variable (G) in def stabWidth (e : QuotEdge G 𝒯) : ℕ+ := Nat.toPNat' (Nat.card (stabilizer G e.out)) theorem stabWidth_mk (d : 𝒯.Dart) : stabWidth G 𝒯 (Quotient.mk'' d) = Nat.toPNat' (Nat.card (stabilizer G d)) := congrArg Nat.toPNat' (Nat.card_congr (stabilizerEquivStabilizerOfOrbitRel (Quotient.mk_out (s := orbitRel G 𝒯.Dart) d)).toEquiv) variable (G) in def quotientDegeneracyData : DegeneracyData (QuotEdge G 𝒯) (QuotVert G W) where a := Quotient.map' (fun d : 𝒯.Dart => d.fst) (by rintro _ b ⟨g, rfl⟩; exact ⟨g, rfl⟩) b := Quotient.map' (fun d : 𝒯.Dart => d.snd) (by rintro _ b ⟨g, rfl⟩; exact ⟨g, rfl⟩) w := stabWidth G 𝒯 variable (G) in def quotientReversal : QuotEdge G 𝒯 → QuotEdge G 𝒯 := Quotient.map' SimpleGraph.Dart.symm (by rintro _ b ⟨g, rfl⟩; exact ⟨g, rfl⟩) variable (G) in def formalU [Fintype (QuotEdge G 𝒯)] [DecidableEq (QuotEdge G 𝒯)] [Fintype (QuotVert G W)] [DecidableEq (QuotVert G W)] : Matrix (QuotEdge G 𝒯) (QuotEdge G 𝒯) ℤ := (degeneracyMatrix (quotientDegeneracyData G 𝒯).b).transpose * degeneracyMatrix (quotientDegeneracyData G 𝒯).a - Matrix.of fun e e' => if quotientReversal G 𝒯 e' = e then 1 else 0 structure PeriodDatum {E V : Type} [Fintype E] [DecidableEq V] (D : DegeneracyData E V) (K L : Type) [Field K] [Field L] [Algebra K L] (ord : Additive Kˣ →+ ℤ) where Q : ↥(ribbonKernel D) →ₗ[ℤ] ↥(ribbonKernel D) →ₗ[ℤ] Additive Kˣ Q_symm : ∀ x y, Q x y = Q y x ord_Q : ∀ x y, ord (Q x y) = ribbonGram D x y def PeriodDatum.HeckeAdjointable {E V : Type} [Fintype E] [Fintype V] [DecidableEq V] {D : DegeneracyData E V} {K L : Type} [Field K] [Field L] [Algebra K L] {ord : Additive Kˣ →+ ℤ} (P : PeriodDatum D K L ord) (H : HeckeData D) : Prop := ∀ (ℓ : Nat.Primes) (y : ↥(ribbonKernel D)), ∃ y' : ↥(ribbonKernel D), ∀ z : ↥(ribbonKernel D), P.Q y (heckeKernelMap H ℓ z) = P.Q y' z def unitsBaseChange (K L : Type) [Field K] [Field L] [Algebra K L] : Additive Kˣ →ₗ[ℤ] Additive Lˣ := (MonoidHom.toAdditive (Units.map (algebraMap K L).toMonoidHom)).toIntLinearMap @[simp] theorem unitsBaseChange_apply (K L : Type) [Field K] [Field L] [Algebra K L] (u : Kˣ) : unitsBaseChange K L (Additive.ofMul u) = Additive.ofMul (Units.map (algebraMap K L).toMonoidHom u) := rfl namespace PeriodDatum variable {E V : Type} [Fintype E] [DecidableEq V] {D : DegeneracyData E V} {K L : Type} [Field K] [Field L] [Algebra K L] {ord : Additive Kˣ →+ ℤ} (P : PeriodDatum D K L ord) set_option linter.unusedVariables false in abbrev TorusPoints (P : PeriodDatum D K L ord) : Type := ↥(ribbonKernel D) →ₗ[ℤ] Additive Lˣ def QL : ↥(ribbonKernel D) →ₗ[ℤ] P.TorusPoints := P.Q.compr₂ (unitsBaseChange K L) @[simp] theorem QL_apply (x y : ↥(ribbonKernel D)) : P.QL x y = unitsBaseChange K L (P.Q x y) := rfl def periodLattice : Submodule ℤ P.TorusPoints := LinearMap.range P.QL abbrev JacPoints : Type := P.TorusPoints ⧸ P.periodLattice def U : Submodule ℤ P.TorusPoints := (Submodule.torsion ℤ P.JacPoints).comap P.periodLattice.mkQ def π : ↥P.U →ₗ[ℤ] P.JacPoints := P.periodLattice.mkQ ∘ₗ P.U.subtype def IsTorsionOf (T : Type) [AddCommGroup T] : Prop := ∃ e : ↥P.U →+ T, (∀ t : T, IsOfFinAddOrder t → t ∈ e.range) ∧ (∀ u, IsOfFinAddOrder (e u)) ∧ ∀ u : ↥P.U, e u = 0 ↔ (u : P.TorusPoints) ∈ P.periodLattice end PeriodDatum end Mumford end CerednikDrinfeld end
Statements phrased using this module (54)
- The group U of a period datum is divisible
CerednikDrinfeld.Mumford.PeriodDatum.U_divisible0 below · depth 18 - Ribbon kernel realised as ker π via periods
CerednikDrinfeld.Mumford.PeriodDatum.exists_periodEquiv0 below · depth 18 - Gram adjointness of a Hecke map from its period identity
CerednikDrinfeld.Mumford.PeriodDatum.period_adjoint_of_ord_Q0 below · depth 18 - Torsion points of a period Jacobian lie in imπ
CerednikDrinfeld.Mumford.PeriodDatum.pi_surj_torsion0 below · depth 18 - Natural equivariant uniformisation of Jacobians of Mumford quotients
AlgebraicCurve.Pic0.exists_equivariantUniformization_family_natural_of_mumfordQuotient_of_v_card_stabilizer_eq_one296 below · depth 19 - p-torsion of a period datum's uniformising group
CerednikDrinfeld.Mumford.PeriodDatum.exists_torsionEquiv0 below · depth 19 - Kummer law for p-th roots of Mumford periods
CerednikDrinfeld.Mumford.PeriodDatum.kummer_of_ord_Q0 below · depth 19 - Quotient-graph presentation of the Mumford side at q'
CerednikDrinfeld.exists_quotientPresentation_classSet_hecke_of_descentIntertwining_one_zero3,953 below · depth 19 - Quotient-graph presentation at q with class set and Hecke
CerednikDrinfeld.exists_quotientPresentation_classSet_hecke_of_descentIntertwining_zero_one3,951 below · depth 19 - Level-group vertex stabilisers have order prime to q'
CerednikDrinfeld.valuation_natCard_stabilizer_vertex_levelGroups_eq_one_of_descentIntertwining_one_zero3,792 below · depth 19 - Vertex stabilisers of the level groups have order prime to q
CerednikDrinfeld.valuation_natCard_stabilizer_vertex_levelGroups_eq_one_of_descentIntertwining_zero_one3,792 below · depth 19 - Push-forward square for pinned Mumford uniformisations along φ
AlgebraicCurve.Pic0.eFull_comp_pullback_eq_mk_pushforwardAlong_of_mumfordQuotient_theta65 below · depth 20 - Pullback compatibility of pinned Mumford uniformisations of Pic⁰
AlgebraicCurve.Pic0.eFull_comp_pushforward_eq_mk_pullbackAlong_of_mumfordQuotient_theta_of_v_card_stabilizer_eq_one138 below · depth 20 - Equivariant Manin–Drinfeld uniformisation of Jacobians of Mumford quotients
AlgebraicCurve.Pic0.exists_equivariantUniformization_of_mumfordQuotient_theta_of_mem_valuationSubring_iff_of_v_card_stabilizer_eq_one247 below · depth 20 - Adjointness of pullback and pushforward for Mumford period pairings
AlgebraicCurve.Pic0.periodPairing_pullback_eq_periodPairing_pushforward_of_mumfordQuotient_theta50 below · depth 20 - Finite vertex stabilisers from finite dart stabilisers on the Bruhat–Tits tree
CerednikDrinfeld.BruhatTits.finite_stabilizer_vertex_of_finite_stabilizer_dart6 below · depth 20 - Class-set dictionary for the Bruhat–Tits quotient at r
CerednikDrinfeld.CosetGraph.exists_quot_equiv_classSet_shift_forget_of_mumfordSideFrame3,794 below · depth 20 - Mumford frame at r: tame stabilisers, finite quotients, class sets
CerednikDrinfeld.CosetGraph.finite_stabilizer_and_finite_quot_and_exists_equiv_classSet_of_mumfordSideFrame3,783 below · depth 20 - Local shape at v of a normalising prime Hecke element
CerednikDrinfeld.CosetGraph.mul_self_mem_level_and_not_mem_level_and_mem_inf_conj_iff_of_mem_primeHeckeSet21 below · depth 20 - Harmonic morphism of oriented quotient data from g⁻¹Xg≤ Y
CerednikDrinfeld.Mumford.exists_finiteHom_orientedQuotient_of_conj_le2 below · depth 20 - Splitting quotients of a two-coloured graph by a type-exchanging subgroup
CerednikDrinfeld.Mumford.exists_quotVert_prod_equiv_and_quotEdge_equiv_oriented_of_exchanger1 below · depth 20 - Vertex types on a connected bipartite graph with automorphisms
CerednikDrinfeld.Mumford.vertexType_add_one_of_adj_and_vertexType_smul_and_exists_typeCharacter0 below · depth 20 - Realisation-independent permutation actions on quotients of the Bruhat–Tits tree
CerednikDrinfeld.exists_perm_quotVert_quotEdge_realisation_independent_of_descentIntertwining_one_zero3,952 below · depth 20 - Realisation-independent permutation actions on Bruhat–Tits tree quotients
CerednikDrinfeld.exists_perm_quotVert_quotEdge_realisation_independent_of_descentIntertwining_zero_one3,950 below · depth 20 - Theta torus point lifting a two-point divisor and its push-forward
AlgebraicCurve.Pic0.exists_eFull_eq_mk_single_sub_single_and_eFull_comp_pullback_eq_mk_pushforwardAlong_of_mumfordQuotient_theta62 below · depth 21 - A theta torus point compatible with degeneracy push-forward
AlgebraicCurve.Pic0.exists_eFull_eq_mk_single_sub_single_and_eFull_comp_pushforward_eq_mk_pullbackAlong_of_mumfordQuotient_theta_of_v_card_stabilizer_eq_one135 below · depth 21 - Period datum of a Mumford quotient pinned to analytic periods
AlgebraicCurve.Pic0.exists_periodDatum_Q_mul_period_eq_one_of_mumfordQuotient81 below · depth 21 - Theta uniformisation of Pic⁰ of a tame Mumford quotient
AlgebraicCurve.Pic0.exists_torusPoints_uniformization_of_periodDatum_of_mumfordQuotient_of_v_card_stabilizer_eq_one146 below · depth 21 - Equivariance of the period pairing and the theta-pinned uniformisation
AlgebraicCurve.Pic0.periodDatum_equivariant_of_theta_pinned_uniformization_of_mumfordQuotient125 below · depth 21 - Coset graph quotient at r is the class-set degeneracy datum
CerednikDrinfeld.CosetGraph.exists_quotVert_equiv_classSet_and_quotEdge_equiv_classSet_of_isEichlerOrder3,743 below · depth 21 - Coset graph modulo r-units versus class-set degeneracy datum
CerednikDrinfeld.CosetGraph.exists_quotVert_equiv_classSet_and_quotEdge_equiv_classSet_of_isEichlerOrder_of_level3,754 below · depth 21 - Dart stabiliser order is half the unit count of the conjugated meet order
CerednikDrinfeld.CosetGraph.natCard_stabilizer_dart_eq_natCard_isUnitOf_conjByFiniteIdele_meetOrder_div_two26 below · depth 21 - Reversing a dart realises the class-set shift by n
CerednikDrinfeld.CosetGraph.quotEdge_symm_eq_classSetShift_of_forall_eq_classSet_mk29 below · depth 21 - Naturality of period lattices under pullback along μ
CerednikDrinfeld.Mumford.PeriodDatum.comp_pullback_mem_periodLattice_of_forall_eq0 below · depth 21 - Period lattices are natural along a finite harmonic morphism
CerednikDrinfeld.Mumford.PeriodDatum.comp_pushforward_mem_periodLattice_of_forall_eq0 below · depth 21 - Finite-index subgroups induce finite morphisms of quotient degeneracy data
CerednikDrinfeld.Mumford.exists_finiteHom_quotientDegeneracyData_of_subgroup0 below · depth 21 - Finite vertex stabilisers from finite dart stabilisers
CerednikDrinfeld.Mumford.finite_stabilizer_of_finite_stabilizer_dart0 below · depth 21 - Class of ̄ w x equals the varpi'-shift of x
CerednikDrinfeld.classSet_mk_eq_classSetShift_mk_of_finiteAdeleEvalAt_eq_mul_of_nrd_eq41 below · depth 21 - Principal theta divisors on a Mumford quotient are periods
AlgebraicCurve.Pic0.exists_prod_theta_eq_period_of_isPrincipal_of_v_card_stabilizer_eq_one138 below · depth 22 - Equal theta multipliers give a principal divisor on a Mumford quotient
AlgebraicCurve.Pic0.isPrincipal_sum_sub_sum_of_prod_theta_eq_of_v_card_stabilizer_eq_one119 below · depth 22 - Fixing every coset-graph vertex forces a rational scalar
CerednikDrinfeld.CosetGraph.exists_coe_eq_smul_one_of_forall_smul_vert_eq12 below · depth 22 - Graph actions preserve the graph distance
CerednikDrinfeld.Mumford.GraphAction.dist_smul_smul0 below · depth 22 - Galois transport of a theta-pinned Mumford torus point
CerednikDrinfeld.Mumford.exists_monoidHom_theta_coeffMap_precomp_apply_eq_of_apply_eq8 below · depth 22 - Descending a symmetric pairing to a period datum
CerednikDrinfeld.Mumford.exists_periodDatum_apply_eq_of_surjective_of_forall_ker0 below · depth 22 - Pinned theta multipliers exist for every pair of points
CerednikDrinfeld.Mumford.exists_theta_multiplier_and_torusPoint_apply_eq_of_mumfordQuotient49 below · depth 22 - Total degree equals index of the conjugated level
CerednikDrinfeld.Mumford.finiteHom_degTotal_eq_index_of_mumfordQuotient_conj11 below · depth 22 - Automorphic units on Ω have period multipliers: tame torsion case
CerednikDrinfeld.Omega.exists_forall_eq_period_of_isUnit_of_apply_smul_eq_mul_of_forall_isOfFinOrder75 below · depth 23 - Finitely many vertex orbits implies finitely many dart orbits
CerednikDrinfeld.BruhatTits.finite_quotEdge_of_finite_quotVert5 below · depth 24 - Valuation current of an automorphic unit as a weighted cycle
CerednikDrinfeld.Omega.exists_mem_ribbonKernel_and_v_apply_smul_eq_mul_zpow_stabWidth_of_isUnit_of_forall_isOfFinOrder16 below · depth 24 - Harmonic quasi-invariant potentials give stabiliser-weighted cycles on the quotient graph
CerednikDrinfeld.Mumford.exists_mem_ribbonKernel_and_sub_eq_sum_stabWidth_mul_walkCycle_of_dvd0 below · depth 25 - Theta multipliers realising a prescribed valuation on one dart orbit
CerednikDrinfeld.Omega.exists_pairs_v_prod_theta_eq_v_zpow_stabWidth_mul_pathCycle_forall_ne63 below · depth 25 - Period law for theta units at arbitrary affinoid points
CerednikDrinfeld.Omega.v_apply_smul_mul_zpow_sum_stabWidth_mul_pathCycle_mul_walkCycle_eq_of_isUnit_of_eq_theta56 below · depth 25 - Tame finite vertex stabilisers on the Bruhat–Tits tree
CerednikDrinfeld.CosetGraph.finite_stabilizer_vertex_and_not_dvd_natCard_of_mumfordSideFrame3,792 below · depth 26 - Single-dart period law for the theta unit
CerednikDrinfeld.Omega.v_theta_pmoebius_mul_zpow_sum_stabWidth_mul_pathCycle_mul_walkCycle_eq55 below · depth 26