Definitions/Def_ModularCurve_LevelOneGlueData.lean
Level-one gluing data for good divisors on
Fix a prime q, a valuation subring A of \overline{\mathbb Q}, a field k of characteristic q with a ring homomorphism \mathrm{red}\colon A\to k, modular polynomial data data for q with its Kronecker congruence hKr, integrality hypotheses h\alpha,h\beta for the two degeneracy maps between levels 1 and 1\cdot q, and a place specialisation P (the project's structure PlaceSpecialization at level N=1), whose component P.sp sends places of the level-one modular function field over \overline{\mathbb Q} to places of modularFunctionFieldC k 1. For a place W of the level-(1\cdot q) function field over \overline{\mathbb Q}, redFst W is P.\mathrm{sp} applied to the restriction of W along heckeAlphaBar (the inclusion of the level-one field), and redSnd W is P.\mathrm{sp} applied to the restriction along heckeBetaBar (the map induced by the substitution q\mapsto q^{\,\ell} on Laurent expansions). Writing \varphi for frobOnPlacesGeomLevel k 1 data hKr, the map on places induced by the q-power Frobenius endomorphism of modularFunctionFieldC k 1, the predicate IsStrictTypeOne W asserts \varphi(\mathrm{redFst}\,W)=\mathrm{redSnd}\,W and \varphi^2(\mathrm{redFst}\,W)\ne \mathrm{redFst}\,W, and IsStrictTypeTwo W asserts \mathrm{redFst}\,W=\varphi(\mathrm{redSnd}\,W) and \varphi^2(\mathrm{redSnd}\,W)\ne\mathrm{redSnd}\,W. A divisor is a good divisor when every place in its support satisfies one of these two conditions; fstPart and sndPart are the restrictions of a divisor (as a finitely supported function) to the places of strict type one, resp. two, and branchDegrees records the pair of their degrees.
For a finite set S of pairs of places of modularFunctionFieldC k 1, levelOneGlueData S D is the element of the project's type GluingData given by the triple consisting of the pushforward of fstPart D along redFst, the pushforward of sndPart D along redSnd, and 0 in the third (node-unit) component. Finally, IsLevelOneGluedSpecialization S sp is a specification on an additive map sp from the inertia invariants inertiaInvariants A (1 * q) in J_0(1\cdot q) to GluedPic0 k (modularFunctionFieldC k 1) S: for every degree-zero divisor D whose class lies in those inertia invariants and every admissible gluing datum x, if D is good and x equals levelOneGlueData S D, then sp of the class of D equals GluedPic0.mk S x. Nothing is required of sp on classes outside this range of data, so this is a constraint on sp rather than a construction of it.
Relation to Mathlib
Divisors are Mathlib Finsupps on places, and Finsupp.filter/Finsupp.mapDomain are used as such; the notions of place specialisation, of gluing data and glued degree-zero Picard group, and the strict-type conditions above have no Mathlib counterpart and are the project's own.
Where it is used
These definitions supply the explicit divisor-theoretic description of the reduction map at q for J_0(q), matching the Deligne–Rapoport picture of the special fibre of X_0(q) as two copies of the j-line crossing at the supersingular points; the resulting glued specialisation is what feeds the sp component of the project's semistable specialisation data for J_0(N q), used in the level-lowering step of the argument.
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
- B. Mazur, Modular curves and the Eisenstein ideal, Publications Mathématiques de l'IHÉS 47 (1977), 33–186
- H. Darmon, F. Diamond and R. Taylor, Fermat's Last Theorem, in: Current Developments in Mathematics 1995, International Press, 1995, 1–154
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 79 lines
- 10 declarations
- used in the statements of 52 theorems and imported by 70 proofs
- imports 2 definition modules
Source file: Definitions/Def_ModularCurve_LevelOneGlueData.lean
Declarations
- def
ModularCurve.PlaceSpecialization.redFst - def
ModularCurve.PlaceSpecialization.redSnd - def
ModularCurve.PlaceSpecialization.IsStrictTypeOne - def
ModularCurve.PlaceSpecialization.IsStrictTypeTwo - def
ModularCurve.PlaceSpecialization.IsGoodDivisor - def
ModularCurve.PlaceSpecialization.fstPart - def
ModularCurve.PlaceSpecialization.sndPart - def
ModularCurve.PlaceSpecialization.branchDegrees - def
ModularCurve.PlaceSpecialization.levelOneGlueData - def
ModularCurve.PlaceSpecialization.IsLevelOneGluedSpecialization
Source
import Mathlib import Definitions.Def_ModularCurve_JZeroSemistableSpecialization import Definitions.Def_ModularCurve_PlaceSpecialization set_option autoImplicit false noncomputable section open AlgebraicCurve IsLocalRing namespace ModularCurve namespace PlaceSpecialization variable {q : ℕ} [Fact q.Prime] {A : ValuationSubring (AlgebraicClosure ℚ)} {k : Type*} [Field k] [CharP k q] {red : A →+* k} {data : ModularPolynomialData q} {hKr : KroneckerCongruence q data} {hα : HeckeAlphaBarIntegral (AlgebraicClosure ℚ) 1 q} {hβ : HeckeBetaBarIntegral (AlgebraicClosure ℚ) 1 q} (P : PlaceSpecialization A q 1 data hKr k red hα hβ) def redFst (W : Place (AlgebraicClosure ℚ) (modularFunctionFieldBar (1 * q))) : Place k (modularFunctionFieldC k 1) := P.sp (W.restrictAlong (heckeAlphaBar (AlgebraicClosure ℚ) 1 q) hα) def redSnd (W : Place (AlgebraicClosure ℚ) (modularFunctionFieldBar (1 * q))) : Place k (modularFunctionFieldC k 1) := P.sp (W.restrictAlong (heckeBetaBar (AlgebraicClosure ℚ) 1 q) hβ) def IsStrictTypeOne (W : Place (AlgebraicClosure ℚ) (modularFunctionFieldBar (1 * q))) : Prop := frobOnPlacesGeomLevel k 1 data hKr (P.redFst W) = P.redSnd W ∧ frobOnPlacesGeomLevel k 1 data hKr (frobOnPlacesGeomLevel k 1 data hKr (P.redFst W)) ≠ P.redFst W def IsStrictTypeTwo (W : Place (AlgebraicClosure ℚ) (modularFunctionFieldBar (1 * q))) : Prop := P.redFst W = frobOnPlacesGeomLevel k 1 data hKr (P.redSnd W) ∧ frobOnPlacesGeomLevel k 1 data hKr (frobOnPlacesGeomLevel k 1 data hKr (P.redSnd W)) ≠ P.redSnd W def IsGoodDivisor (D : Divisor (AlgebraicClosure ℚ) (modularFunctionFieldBar (1 * q))) : Prop := ∀ W ∈ D.support, P.IsStrictTypeOne W ∨ P.IsStrictTypeTwo W open Classical in def fstPart (D : Divisor (AlgebraicClosure ℚ) (modularFunctionFieldBar (1 * q))) : Divisor (AlgebraicClosure ℚ) (modularFunctionFieldBar (1 * q)) := D.filter P.IsStrictTypeOne open Classical in def sndPart (D : Divisor (AlgebraicClosure ℚ) (modularFunctionFieldBar (1 * q))) : Divisor (AlgebraicClosure ℚ) (modularFunctionFieldBar (1 * q)) := D.filter P.IsStrictTypeTwo def branchDegrees (D : Divisor (AlgebraicClosure ℚ) (modularFunctionFieldBar (1 * q))) : ℤ × ℤ := (Divisor.degree (P.fstPart D), Divisor.degree (P.sndPart D)) def levelOneGlueData (S : Finset (Place k (modularFunctionFieldC k 1) × Place k (modularFunctionFieldC k 1))) (D : Divisor (AlgebraicClosure ℚ) (modularFunctionFieldBar (1 * q))) : GluingData k (modularFunctionFieldC k 1) S := (Finsupp.mapDomain P.redFst (P.fstPart D), Finsupp.mapDomain P.redSnd (P.sndPart D), 0) def IsLevelOneGluedSpecialization (S : Finset (Place k (modularFunctionFieldC k 1) × Place k (modularFunctionFieldC k 1))) (sp : ↥(inertiaInvariants A (1 * q)) →+ GluedPic0 k (modularFunctionFieldC k 1) S) : Prop := ∀ (D : ↥(Divisor.degZero (K := AlgebraicClosure ℚ) (F := ↥(modularFunctionFieldBar (1 * q))))) (hH : Pic0.mk D ∈ inertiaInvariants A (1 * q)) (x : ↥(GluingData.admissible S)), P.IsGoodDivisor (D : Divisor (AlgebraicClosure ℚ) (modularFunctionFieldBar (1 * q))) → (x : GluingData k (modularFunctionFieldC k 1) S) = P.levelOneGlueData S D → sp ⟨Pic0.mk D, hH⟩ = GluedPic0.mk S x end PlaceSpecialization end ModularCurve end
Statements phrased using this module (52)
- First reduction of the cusp ∞̄ is the j-line cusp
ModularCurve.PlaceSpecialization.redFst_cuspInftyBar12 below · depth 14 - Places with no integral j-value reduce to the cusp
ModularCurve.PlaceSpecialization.redFst_eq_placeInfty_of_forall_ord_le_zero8 below · depth 14 - Second reduction of the cusp ̄ 0 at q
ModularCurve.PlaceSpecialization.redSnd_cuspZeroBar95 below · depth 14 - First level-one reduction is the place j=b̄
ModularCurve.PlaceSpecialization.redFst_eq_charLGeomPlaceOfPoint_of_ord_pos5 below · depth 15 - Trivial component classes extend to A-points of Pic⁰
ModularCurve.DRModelPackage.exists_schemeHomOver_of_comp_eq_zero_of_abelJacobiPin_of_surjective2,060 below · depth 16 - Surjective depth–component homomorphism on inertia invariants, level one
ModularCurve.PlaceSpecialization.ProlongationTuple.exists_comp_depthCompLaw_and_surjective_levelOne1,340 below · depth 16 - Inertia-fixed admissible representatives of inertia-invariant classes in J₀(q)
ModularCurve.PlaceSpecialization.exists_degZero_mk_eq_and_forall_inertia_smul_eq_and_isStrictType_or_redFst_mem_residueField1,743 below · depth 16 - Level-one prolongation tuple with node coordinates and depth
ModularCurve.PlaceSpecialization.exists_prolongationTuple_nodeCoordinates_depthValueLaw_levelOne1,069 below · depth 16 - Second level-one reduction at a place with integral j_q
ModularCurve.PlaceSpecialization.redSnd_eq_charLGeomPlaceOfPoint_of_ord_pos5 below · depth 16 - Valuation ring of the inertia field inside A
ModularCurve.inertiaField_comap_incl_and_surjective_and_isAlgClosed_residueField10 below · depth 16 - Residue-field point above a crossing point of the mod-p fibre
ModularCurve.DRModelPackage.exists_residueField_point_baseChangeMap_eq_of_isAlgClosed_residueField270 below · depth 17 - Geometric-fibre transport of the Poincaré bundle with section twists
ModularCurve.DRModelPackage.nonempty_poincare_pullbackAlong_comp_iso_of_pullback_toDR_iso_of_sectionTwist17 below · depth 17 - Recognising pts of a divisor class from its Poincaré fibre
ModularCurve.DRModelPackage.pts_pic0Mk_eq_comp_of_poincare_pullbackAlong_iso21 below · depth 17 - Transporting a degree-zero divisor along a level equivalence
ModularCurve.DRModelPackage.sum_coef_eq_zero_and_exists_degZero_mapDomain_of_equiv_support145 below · depth 17 - Base change along τ of a section and its geometric generic point
ModularCurve.DRResolvedModelPackage.eEta_comp_pullbackMap_eq_comp_toDR_of_comp_fst_eq0 below · depth 17 - Node bijection and orientation bit for the component dictionary
ModularCurve.DRResolvedModelPackage.exists_nodeEquiv_swap_forall_comp_eq_dict_of_sections_of_charts1,640 below · depth 17 - An O-point of D whose Poincaré class is M
ModularCurve.DRResolvedModelPackage.exists_schemeHomOver_poincare_pullbackAlong_iso_of_generic_sectionTwist_of_forall_isAlgEquivZero36 below · depth 17 - Inertia-fixed places give sections of the resolved model
ModularCurve.DRResolvedModelPackage.exists_section_toDR_generic_eq_pointEquivPlace_symm_of_forall_inertia_smul_eq0 below · depth 17 - Vertical twist to multidegree zero fixing the generic fibre
ModularCurve.DRResolvedModelPackage.exists_verticalTwist_multidegree_eq_zero_and_generic_iso_sectionTwist46 below · depth 17 - Multidegree zero forces algebraic equivalence to zero on fibres
ModularCurve.DRResolvedModelPackage.isAlgEquivZero_fibre_of_pullback_toDR_iso_divisorial_of_multidegree_eq_zero1,241 below · depth 17 - Vanishing component class puts the multidegree in α's image
ModularCurve.DRResolvedModelPackage.multidegree_mem_range_intersectionAlpha_of_comp_eq_zero482 below · depth 17 - Sections of the resolved model avoid the edge points
ModularCurve.DRResolvedModelPackage.ne_edgePt_and_mem_smoothOffEdges_and_existsUnique_mem_comp_support_of_section1 below · depth 17 - Generic fibre of a bundle descended through the resolution
ModularCurve.DRResolvedModelPackage.nonempty_pullback_comp_toDR_iso_sectionTwist_of_iso_divisorial0 below · depth 17 - Vanishing of the depth functional on good divisors
ModularCurve.PlaceSpecialization.depthDual_add_degree_sndDiv_smul_eq_branchDegrees_snd_smul_of_isGoodDivisor0 below · depth 17 - Inertia-fixed classes represented by admissible divisors, residue-field case
ModularCurve.PlaceSpecialization.exists_degZero_mk_eq_mk_and_forall_inertia_smul_eq_and_isStrictType_or_redFst_mem_of_forall_inertia_smul_coe_eq_residueField1,742 below · depth 17 - Inertia-invariant classes come from inertia-stable divisors
ModularCurve.exists_arithmeticGalois_smul_eq_pic0Mk_eq178 below · depth 17 - Node coordinates at a supersingular crossing from a chart presentation
ModularCurve.DRModelPackage.exists_nodeCoordinates_and_forall_mem_support_iff_chainPos_of_chartPresentation_of_branch_of_jPin1,158 below · depth 18 - Supersingular places enumerate the crossings, with width and j-pin
ModularCurve.DRModelPackage.exists_nodeEquiv_width_eq_and_jPin414 below · depth 18 - An orientation bit matching strict places to branch components
ModularCurve.DRModelPackage.exists_swap_forall_isStrict_section_mem_range_comp_of_reading445 below · depth 18 - Supersingular O-lift of j at each crossing
ModularCurve.DRModelPackage.forall_exists_lift_jFun_sub_mem_maximalIdeal_and_mem_ssJSet404 below · depth 18 - Sections through non-strict inertia-fixed places meet the matched crossing
ModularCurve.DRModelPackage.section_base_closedPoint_eq_crossing_of_reduceFst_mem337 below · depth 18 - Local chart presentation at a node of the resolved model
ModularCurve.DRResolvedModelPackage.DRResolvedModelCharts.exists_chartPresentation_stalk255 below · depth 18 - Strict transforms detected on the Deligne–Rapoport closed fibre
ModularCurve.DRResolvedModelPackage.eq_inl_iff_toDR_base_mem_range_compInf_of_mem_comp_support56 below · depth 18 - Multidegree zero gives χ=χ(𝒪) on a strict transform
ModularCurve.DRResolvedModelPackage.eulerChar_sectionsOf_pullback_strictTransform_eq_of_multidegree_eq_zero_of_surjective237 below · depth 18 - Node width equals the j-width of the reduced j-value
ModularCurve.DRResolvedModelPackage.width_eq_jWidth_of_exists_jFun_sub_mem_maximalIdeal_of_prolongationTuple1,630 below · depth 18 - Inertia-fixed strict points of both types with distinct reductions
ModularCurve.PlaceSpecialization.exists_families_isStrictTypeOne_isStrictTypeTwo_notMem_forall_inertia_smul_eq442 below · depth 18 - Strict type dichotomy off the Frobenius-square-fixed locus
ModularCurve.PlaceSpecialization.isStrictTypeOne_or_isStrictTypeTwo0 below · depth 18 - Strict type one or two iff φ² moves `redFst`
ModularCurve.PlaceSpecialization.isStrictTypeOne_or_isStrictTypeTwo_iff_ne0 below · depth 18 - Level-one gluing datum vanishes at supersingular node places
ModularCurve.PlaceSpecialization.levelOneGlueData_apply_frobNodePair_eq_zero26 below · depth 18 - Strict type one and strict type two are exclusive
ModularCurve.PlaceSpecialization.not_isStrictTypeOne_and_isStrictTypeTwo0 below · depth 18 - Germ reading j(qᵖ)-j(q)ᵖ at a supersingular crossing
ModularCurve.DRModelPackage.exists_germ_jq_sub_pow_and_stalkSpecializes_mem_maximalIdeal_of_swap568 below · depth 19 - Inertia-stable node telescoping identity at a supersingular crossing
ModularCurve.PlaceSpecialization.ProlongationTuple.exists_hasValue_residueFst_div_pow_and_residueSnd_div_pow_and_div_eq_angFactor_of_inertiaStable584 below · depth 19 - Arbitrarily many strict type one and type two places avoiding B
ModularCurve.PlaceSpecialization.exists_families_isStrictTypeOne_isStrictTypeTwo_notMem223 below · depth 19 - Fricke translation exchanges the two reductions at level one
ModularCurve.PlaceSpecialization.redFst_frickeInvolutionBar_smul84 below · depth 19 - Fricke translation exchanges the two reductions on X₀(q)
ModularCurve.PlaceSpecialization.redSnd_frickeInvolutionBar_smul84 below · depth 19 - Inertia-fixed strict place with an 𝒪-section of the resolved model
ModularCurve.DRResolvedModelPackage.exists_isStrictFst_forall_inertia_smul_eq_and_section_toDR_generic_eq444 below · depth 20 - Admissibility of the twisted gluing datum at level one
ModularCurve.PlaceSpecialization.ProlongationTuple.AnnulusDatumQ.spData_mem_admissible385 below · depth 20 - Strict first-kind places reduce onto the Frobenius graph
ModularCurve.PlaceSpecialization.exists_ord_jFun_sub_pos_and_red_eq_pow_of_isStrictFst59 below · depth 20 - Uniqueness and Galois equivariance of the place transport 1· p → p
ModularCurve.placeEquiv_unique_and_arithmeticGalois_smul_of_forall_mem_iff0 below · depth 20 - Fricke involution exchanges strict types one and two
ModularCurve.PlaceSpecialization.isStrictTypeOne_frickeInvolutionBar_smul_iff84 below · depth 24 - Fricke involution exchanges strict types one and two
ModularCurve.PlaceSpecialization.isStrictTypeTwo_frickeInvolutionBar_smul_iff84 below · depth 24 - Fricke separation and covering of the ordinary u-sheet
ModularCurve.PlaceSpecialization.sheetOne_frickeInvolutionBar_separated_and_covering567 below · depth 24