Definitions/Def_ModularCurve_X0MqResolvedTable.lean
Component table of the resolved special fibre of
Fix a finite type \iota and a function e : \iota \to \mathbb{N}. ModularCurve.X0MqComponents e is the index type \mathrm{Fin}\,2 \oplus \bigl(\Sigma_{x:\iota}\,\mathrm{Fin}(e_x-1)\bigr): two distinguished components, written here Z_0, Z_1, together with, for each x \in \iota, a chain of e_x - 1 further components indexed by 0,\dots,e_x-2 (truncated natural subtraction, so e_x \le 1 contributes nothing).
ModularCurve.x0MqAdj e is the \mathbb{N}-valued adjacency function on this index type: a(Z_i,Z_j) for i \ne j is the number of x \in \iota with e_x = 1, and a(Z_i,Z_i) = 0; a(Z_i,(x,k)) = a((x,k),Z_i) equals 1 exactly when i = 0 and k = 0, or i = 1 and k = e_x - 2, and is 0 otherwise; a((x,k),(x',k')) equals 1 exactly when x = x' and k,k' are consecutive, so that in particular the diagonal vanishes. The lemma ModularCurve.x0MqAdj_symm records that a is symmetric.
ModularCurve.x0MqResolvedTable e is the resulting term of the project's structure MazurRapoportAppendix.SpecialFibreComponentTable: all multiplicities are 1, and the intersection pairing is \mathrm{inter}(i,j) = a(i,j) for i \ne j and \mathrm{inter}(i,i) = -\sum_{j} a(i,j). The structure's fields are discharged as part of the definition: positivity of the multiplicities, symmetry of the pairing, and the relation \sum_j \mathrm{inter}(i,j)\,\mathrm{mult}(j) = 0 for every i, which here reduces to the fact that each row of \mathrm{inter} sums to zero. No geometric interpretation is asserted: the declarations produce purely combinatorial data of the shape required by the component-group machinery.
Relation to Mathlib
Mathlib has no notion of a special-fibre component table or of the associated component group; SpecialFibreComponentTable is the project's own structure, and this module supplies one particular such table.
Where it is used
This table is the combinatorial input to the Mazur–Rapoport construction of MazurRapoportAppendix.AppendixComponentGroup, the quotient \ker\beta / \operatorname{im}\alpha attached to a component table. The shape chosen here — two components meeting at the points x with e_x = 1, joined by chains of length e_x - 1 elsewhere — is that of the minimal regular model of X_0(Mq) at q, whose component group enters the level-lowering step.
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
- K. A. Ribet, On modular representations of \mathrm{Gal}(\overline{\mathbb{Q}}/\mathbb{Q}) arising from modular forms, Inventiones Mathematicae 100 (1990), 431–476
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 44 lines
- 4 declarations
- used in the statements of 42 theorems and imported by 42 proofs
- imports 1 definition modules
Source file: Definitions/Def_ModularCurve_X0MqResolvedTable.lean
Declarations
- abbrev
ModularCurve.X0MqComponents - def
ModularCurve.x0MqAdj - theorem
ModularCurve.x0MqAdj_symm - def
ModularCurve.x0MqResolvedTable
Source
import Mathlib import Definitions.Def_AlgebraicGeometry_MazurRapoportAppendixPicNeronCarriers set_option autoImplicit false namespace ModularCurve open MazurRapoportAppendix variable {ι : Type*} [Fintype ι] [DecidableEq ι] abbrev X0MqComponents (e : ι → ℕ) : Type _ := Fin 2 ⊕ (Σ x : ι, Fin (e x - 1)) def x0MqAdj (e : ι → ℕ) : X0MqComponents e → X0MqComponents e → ℕ | .inl i, .inl j => if i ≠ j then (Finset.univ.filter fun x => e x = 1).card else 0 | .inl i, .inr p => if (i = 0 ∧ p.2.val = 0) ∨ (i = 1 ∧ p.2.val = e p.1 - 2) then 1 else 0 | .inr p, .inl i => if (i = 0 ∧ p.2.val = 0) ∨ (i = 1 ∧ p.2.val = e p.1 - 2) then 1 else 0 | .inr p, .inr p' => if p.1 = p'.1 ∧ (p.2.val + 1 = p'.2.val ∨ p'.2.val + 1 = p.2.val) then 1 else 0 theorem x0MqAdj_symm (e : ι → ℕ) (i j : X0MqComponents e) : x0MqAdj e i j = x0MqAdj e j i := by rcases i with i | p <;> rcases j with j | p' · simp only [x0MqAdj, ne_comm] · rfl · rfl · simp only [x0MqAdj] congr 1 apply propext constructor · rintro ⟨h1, h2⟩; exact ⟨h1.symm, h2.symm⟩ · rintro ⟨h1, h2⟩; exact ⟨h1.symm, h2.symm⟩ def x0MqResolvedTable (e : ι → ℕ) : SpecialFibreComponentTable (X0MqComponents e) where mult _ := 1 inter i j := (x0MqAdj e i j : ℤ) - if i = j then ∑ j', (x0MqAdj e i j' : ℤ) else 0 mult_pos _ := Nat.one_pos inter_symm i j := by by_cases h : i = j · subst h; rfl · rw [if_neg h, if_neg (Ne.symm h), x0MqAdj_symm] fibre_inter_zero i := by simp only [Nat.cast_one, mul_one, Finset.sum_sub_distrib, Finset.sum_ite_eq, Finset.mem_univ, if_true, sub_self] end ModularCurve
Statements phrased using this module (42)
- Existence of a resolved Deligne–Rapoport model with place–component dictionary
ModularCurve.DRModelPackageLevel.exists_dRResolvedModelPackageLevel_nodeEquiv_swap_nodeCoordinates_of_surjective_of_sp_eq_spPlace2,427 below · depth 16 - Sections of the resolved X₀(N₀p) model with depth-prescribed components
ModularCurve.DRModelPackageLevel.exists_sections_multidegree_eq_depth_of_exists_schemeHomOver_of_branch186 below · depth 16 - Depth dictionary gives the depth divisor and second-branch degree
ModularCurve.PlaceSpecialization.sum_height_mul_multidegree_comp_eq_depthDiv_and_apply_inl_one_eq_degree_sndDiv_level144 below · depth 16 - Explicit isomorphism of the Mazur–Rapoport and cycle component groups
ModularCurve.exists_addEquiv_appendixComponentGroup_x0MqResolvedTable_apply_eq_componentGroupProj0 below · depth 16 - Branch swap with chain reversal preserves the resolved intersection table
ModularCurve.x0MqResolvedTable_inter_equiv_of_swap_of_rev0 below · depth 16 - Invariance of the resolved intersection table under re-indexing
ModularCurve.x0MqResolvedTable_inter_equiv_of_width_eq0 below · depth 16 - Depth-to-component dictionary for the resolved Deligne–Rapoport model
ModularCurve.DRModelPackageLevel.exists_nodeCoordinates_and_forall_mem_support_iff_chainPos_of_charts_of_sp_eq_spPlace2,052 below · depth 17 - Strict places specialise into one labelled component
ModularCurve.DRModelPackageLevel.exists_swap_forall_isStrict_section_mem_range_comp_of_sp_eq_spPlace1,861 below · depth 17 - Node widths of the resolved model equal place widths
ModularCurve.DRModelPackageLevel.forall_width_eq_of_charts_of_sp_eq_spPlace2,299 below · depth 17 - Poincaré pullback of an O-point as a twist of sections
ModularCurve.DRModelPackageLevel.nonempty_pullback_toDR_poincare_pullbackAlong_iso_foldr_sectionTwist180 below · depth 17 - Non-strict inertia-fixed places specialise to crossings
ModularCurve.DRModelPackageLevel.section_base_closedPoint_eq_crossing_of_reduceFst_mem_of_sp_eq_spPlace1,891 below · depth 17 - Divisorial descent along the resolved Deligne–Rapoport model
ModularCurve.DRResolvedModelPackage.exists_isInvertible_and_pullback_toDR_iso_of_forall_exceptional_degree_eq_zero1,192 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 - Node coordinates and chain position at one supersingular crossing
ModularCurve.DRModelPackageLevel.exists_nodeCoordinates_and_forall_mem_support_iff_chainPos_of_chartPresentation2,007 below · depth 18 - Function field of the O-model inside ℚ̄(X₀(N₀q))
ModularCurve.DRModelPackageLevel.exists_ringHom_functionField_pullback_forall_eq_algebraMap_and_coe_eq_coeffEmb0 below · depth 18 - Strict places orient sections onto the two special-fibre components
ModularCurve.DRModelPackageLevel.forall_isStrict_section_mem_range_comp_zero_comp_one_of_sp_eq_spPlace1,861 below · depth 18 - Integrality of the q-adic base change of the Deligne–Rapoport model
ModularCurve.DRModelPackageLevel.isIntegral_pullback_toBase_specMap3 below · depth 18 - Non-emptiness of the finite Igusa chart over O
ModularCurve.DRModelPackageLevel.nonempty_preimage_iotaFin_pullback_toBase_specMap0 below · depth 18 - Local chart presentation at a node of the resolved model
ModularCurve.DRResolvedModelPackage.DRResolvedModelCharts.exists_chartPresentation_stalk255 below · depth 18 - Local triviality at a crossing of a degree-zero divisorial sheaf
ModularCurve.DRResolvedModelPackage.DRResolvedModelCharts.exists_open_pullback_iso_unit_of_forall_exceptional_degree_eq_zero94 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 - Local equation uv=q^ew at a node of the resolved model
ModularCurve.DRResolvedModelPackageLevelRam.DRResolvedModelChartsLevelRam.exists_chartPresentation_stalk189 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 - Germ of j(q^q)-j^q vanishing along the first component
ModularCurve.DRModelPackageLevel.exists_germ_jq_sub_pow_and_stalkSpecializes_mem_maximalIdeal_comp_zero299 below · depth 19 - Maximal ideals preserved at crossings under base change
ModularCurve.DRModelPackageLevel.map_maximalIdeal_stalkMap_bcMap_eq_of_inertia_grain0 below · depth 19 - Germs at a supersingular crossing lie in the node ring
ModularCurve.DRModelPackageLevel.mem_nodeIntegers_of_stalk_of_specializes_of_nodeEquiv_eq1,993 below · depth 19 - Branch residues and orders at a supersingular crossing
ModularCurve.DRModelPackageLevel.nodeResidue_eq_zero_iff_and_ord_eq_of_specializes_of_mem_maximalIdeal364 below · depth 19 - Crossing coordinates are uniformisers on the two branches
ModularCurve.DRModelPackageLevel.ord_placeOfPoint_stalkMap_eq_one_of_span_eq_maximalIdeal0 below · depth 19 - Evaluation at a place equals pull-back along an O-section
ModularCurve.DRModelPackageLevel.phi_mem_and_evalAt_eq_stalkClosedPointTo_of_section3 below · depth 19 - Crossing points are rational over the inertia ring O
ModularCurve.DRModelPackageLevel.surjective_residue_comp_germ_comp_appTop_of_inertia_grain10 below · depth 19 - Raw intersection rows for the resolved X₀(Mq) table
ModularCurve.intersectionAlpha_x0MqResolvedTable_eq_sum_x0MqAdj_and_sum_x0MqAdj_inl0 below · depth 19 - Strict-transform rows of the resolved X₀(Mq) intersection table
ModularCurve.intersectionAlpha_x0MqResolvedTable_inl0 below · depth 19 - A-points above supersingular places specialise to the crossing
ModularCurve.DRModelPackageLevel.base_closedPoint_eq_crossing_of_reduceFst_eq_of_sp_eq_spPlace1,891 below · depth 20 - Branch germs read as Gauss residues on X₀(N₀)_{κ_A}
ModularCurve.DRModelPackageLevel.ffEquiv_symm_stalkMap_genericPoint_eq_residue_phi363 below · depth 20 - Germs at a point met by both branches lie in both prolongations
ModularCurve.DRModelPackageLevel.mem_integers_and_mem_integers_of_stalk_of_specializes361 below · depth 20 - Branch generic stalks map into the two Gauss prolongations
ModularCurve.DRModelPackageLevel.phi_algebraMap_stalk_mem_integers_comp_genericPoint360 below · depth 20 - Chart-pinned readings agree at the generic point
ModularCurve.DRModelPackageLevel.specMap_comp_fromSpecStalk_genericPoint_comp_fst_eq_of_coe_eq_coeffEmb0 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