Definitions/Def_ModularCurve_DRResolvedModelPackageLevel.lean
Resolved Deligne–Rapoport model package at level
Throughout, N_0\ge 1 and q is a prime with q\nmid N_0, R=R_q is the subring of \mathbb{Q} of fractions whose denominator is coprime to q, and \mathfrak{X} is a DRModelPackageLevel for (N_0,q), i.e. a package of data and properties attached to the Igusa scheme X of level N_0q over \operatorname{Spec}R (its smooth locus, Atkin–Lehner involution, degeneracy components c_0,c_1 of the special fibre, and so on). Two helpers set up the base change: for a ring map \rho\colon R\to O, DRLevel.XO ρ is the fibre product X\times_{\operatorname{Spec}R}\operatorname{Spec}O, and DRLevel.bcMap ρ toκ, for toκ\colon O\to\kappa, is the induced map from X\times_{\operatorname{Spec}R}\operatorname{Spec}\kappa to X\times_{\operatorname{Spec}R}\operatorname{Spec}O. The combinatorial helper chainPos width n d sends d=0 to the first strict transform, 0<d<\mathrm{width}(n) to the (d-1)-st exceptional curve over the node n, and d\ge\mathrm{width}(n) to the second strict transform; here the index type of components is \mathrm{Fin}\,2\sqcup\coprod_n \mathrm{Fin}(\mathrm{width}(n)-1).
The structure DRResolvedModelPackageLevel, for O, \rho\colon R\to O, an algebraically closed field \kappa of characteristic q and toκ\colon O\to\kappa, carries a scheme Y with morphisms \mathrm{toBase}\colon Y\to\operatorname{Spec}O and \mathrm{toDR}\colon Y\to X\times_R\operatorname{Spec}O compatible over \operatorname{Spec}O, with Y integral and locally Noetherian, \mathrm{toBase} proper and flat and \mathrm{toDR} proper. Over the locus where q vanishes (the complement of the preimage of the basic open D(q)\subseteq\operatorname{Spec}O) all stalks of Y are required to be regular local of Krull dimension at most 2; \mathrm{toDR} is required to restrict to an isomorphism over the preimage of \mathfrak{X}'s smooth locus and over the preimage of D(q).
The special fibre is described by data rather than constructed: a finite type node with an equivalence to the points of the scheme-theoretic intersection c_0\times_{X_\kappa}c_1 of the two components of the fibre over \kappa, widths \mathrm{width}(n)\ge 1 (data, not computed from a formula), and a family comp of ideal sheaf data indexed by \mathrm{Fin}\,2\sqcup\coprod_n\mathrm{Fin}(\mathrm{width}(n)-1), each invertible in the sense of Scheme.IdealSheafData.IsInvertible (locally generated on affine basic opens by a non-zerodivisor), with integral closed subscheme and support inside the q=0 locus, and whose product has ideal (q) on every affine open. Chosen points \eta_v are required to be generic points of the respective components: on some affine open the germ of the ideal of \mathrm{comp}\,v generates the maximal ideal of the stalk at \eta_v while the germs of all other component ideals are the unit ideal; conversely every point of the q=0 locus whose stalk has Krull dimension at most 1 is one of the \eta_v. For i\in\mathrm{Fin}\,2 the base change to \kappa of the i-th strict transform is required to be isomorphic over \operatorname{Spec}\kappa to the level-N_0 Igusa fibre, compatibly with \mathfrak{X}'s component c_i followed by bcMap and with \mathrm{toDR}; each exceptional component is required to be supported over the single image point of the corresponding node, and its base change to \kappa to be isomorphic over \kappa to the curve of a CurveModel with function field \kappa(t). Incidence is recorded by points \mathrm{edgePt}\,n\,d for d\in\mathrm{Fin}(\mathrm{width}(n)): the assignment is injective, \mathrm{edgePt}\,n\,d lies in the supports of the components \mathrm{chainPos}\,n\,d and \mathrm{chainPos}\,n\,(d+1) and maps to the image of the node n, every point lying on two distinct components is such an edge point with the corresponding pair of chain positions, and at each edge point the germs of the two ideals together generate the maximal ideal (transversality). Finally there is an open \mathrm{smoothOffEdges} which is smooth of relative dimension 1 over \operatorname{Spec}O and contains every point that is not an edge point.
Relation to Mathlib
Mathlib supplies the ambient notions used (\mathrm{Spec}, pullbacks, IdealSheafData, IsProper, Flat, IsIntegral, IsLocallyNoetherian, IsRegularLocalRing, ringKrullDim, SmoothOfRelativeDimension); the invertibility condition on ideal sheaf data, the component index type X0MqComponents, the curve-model notion and the model package itself are the project's own.
Where it is used
The structure axiomatises the minimal regular model of X_0(N_0q) over a base O in which q is not invertible, obtained from the Deligne–Rapoport model by resolving the crossings of the two copies of X_0(N_0)_\kappa into chains of rational curves. Its component data (widths, chain incidences, the identification of the two strict transforms with the level-N_0 fibre) is what feeds the computation of the component group of the Néron model of J_0(N_0q) at q used in level lowering at q.
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
- N. M. Katz and B. Mazur, Arithmetic Moduli of Elliptic Curves, Annals of Mathematics Studies 108, Princeton University Press, 1985
- B. Edixhoven, Minimal resolution and stable reduction of X_0(N), Annales de l'Institut Fourier 40 (1990), 31–67
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 129 lines
- 39 declarations
- used in the statements of 40 theorems and imported by 43 proofs
- imports 3 definition modules
Source file: Definitions/Def_ModularCurve_DRResolvedModelPackageLevel.lean
Imports
Declarations
- def
ModularCurve.DRResolvedModelPackageLevel.chainPos - abbrev
ModularCurve.DRLevel.XO - def
ModularCurve.DRLevel.bcMap - structure
ModularCurve.DRResolvedModelPackageLevel - field
ModularCurve.DRResolvedModelPackageLevel.O - field
ModularCurve.DRResolvedModelPackageLevel.Y - field
ModularCurve.DRResolvedModelPackageLevel.toBase - field
ModularCurve.DRResolvedModelPackageLevel.toDR - field
ModularCurve.DRResolvedModelPackageLevel.toDR_over - field
ModularCurve.DRResolvedModelPackageLevel.regular - field
ModularCurve.DRResolvedModelPackageLevel.IsRegularLocalRing - field
ModularCurve.DRResolvedModelPackageLevel.stalk_dim_le_two - field
ModularCurve.DRResolvedModelPackageLevel.ringKrullDim - field
ModularCurve.DRResolvedModelPackageLevel.toDR_iso_smoothLocus - field
ModularCurve.DRResolvedModelPackageLevel.toDR_iso_generic - field
ModularCurve.DRResolvedModelPackageLevel.node - field
ModularCurve.DRResolvedModelPackageLevel.width - field
ModularCurve.DRResolvedModelPackageLevel.one_le_width - field
ModularCurve.DRResolvedModelPackageLevel.nodeEquiv - field
ModularCurve.DRResolvedModelPackageLevel.comp - field
ModularCurve.DRResolvedModelPackageLevel.comp_isInvertible - field
ModularCurve.DRResolvedModelPackageLevel.comp_integral - field
ModularCurve.DRResolvedModelPackageLevel.comp_support - field
ModularCurve.DRResolvedModelPackageLevel.comp_prod - field
ModularCurve.DRResolvedModelPackageLevel.codim - field
ModularCurve.DRResolvedModelPackageLevel.ringKrullDim - field
ModularCurve.DRResolvedModelPackageLevel.strict_iso - field
ModularCurve.DRResolvedModelPackageLevel.exc_image - field
ModularCurve.DRResolvedModelPackageLevel.edgePt - field
ModularCurve.DRResolvedModelPackageLevel.edgePt_injective - field
ModularCurve.DRResolvedModelPackageLevel.edgePt_mem - field
ModularCurve.DRResolvedModelPackageLevel.edgePt_over - field
ModularCurve.DRResolvedModelPackageLevel.edgePt_exhaust - field
ModularCurve.DRResolvedModelPackageLevel.edgePt_transversal - field
ModularCurve.DRResolvedModelPackageLevel.comp - field
ModularCurve.DRResolvedModelPackageLevel.exc_rational - field
ModularCurve.DRResolvedModelPackageLevel.e - field
ModularCurve.DRResolvedModelPackageLevel.smoothOffEdges - field
ModularCurve.DRResolvedModelPackageLevel.mem_smoothOffEdges
Source
import Mathlib import Definitions.Def_ModularCurve_DRModelPackageLevel import Definitions.Def_ModularCurve_X0MqResolvedTable import Definitions.Def_AlgebraicCurve_RelCartier set_option autoImplicit false set_option maxHeartbeats 800000 set_option synthInstance.maxHeartbeats 400000 noncomputable section open CategoryTheory CategoryTheory.Limits AlgebraicGeometry NeronModelInfra open ModularCurve.IgusaScheme namespace ModularCurve attribute [local instance] DRModelPackageLevel.neZero_mul def DRResolvedModelPackageLevel.chainPos {node : Type} (width : node → ℕ) (n : node) (d : ℕ) : X0MqComponents width := if h0 : d = 0 then Sum.inl 0 else if h : d < width n then Sum.inr ⟨n, ⟨d - 1, by omega⟩⟩ else Sum.inl 1 namespace DRLevel variable {N₀ q : ℕ} [NeZero N₀] [Fact q.Prime] abbrev XO {O : Type} [CommRing O] (ρ : R q →+* O) : Scheme.{0} := pullback (toBase N₀ q) (Spec.map (CommRingCat.ofHom ρ)) def bcMap {O : Type} [CommRing O] (ρ : R q →+* O) {κ : Type} [CommRing κ] (toκ : O →+* κ) : fibre (N₀ := N₀) (toκ.comp ρ) ⟶ XO (N₀ := N₀) ρ := pullback.map _ _ _ _ (𝟙 _) (Spec.map (CommRingCat.ofHom toκ)) (𝟙 _) (by rw [Category.comp_id, Category.id_comp]) (by rw [Category.comp_id, ← Spec.map_comp, ← CommRingCat.ofHom_comp]) end DRLevel open DRLevel structure DRResolvedModelPackageLevel (N₀ q : ℕ) [NeZero N₀] [Fact q.Prime] {hqN : ¬ q ∣ N₀} (𝔛 : DRModelPackageLevel N₀ q hqN) (O : Type) [CommRing O] (ρ : R q →+* O) (κ : Type) [Field κ] [CharP κ q] [IsAlgClosed κ] [DecidableEq κ] (toκ : O →+* κ) where Y : Scheme.{0} toBase : Y ⟶ Spec (CommRingCat.of O) toDR : Y ⟶ XO (N₀ := N₀) ρ toDR_over : toDR ≫ pullback.snd _ _ = toBase [toDR_proper : IsProper toDR] [isProper : IsProper toBase] [flat : Flat toBase] [isIntegral : IsIntegral Y] [isLocallyNoetherian : IsLocallyNoetherian Y] regular : ∀ y : Y, y ∉ toBase ⁻¹ᵁ (PrimeSpectrum.basicOpen ((q : ℕ) : O) : (Spec (CommRingCat.of O)).Opens) → IsRegularLocalRing (Y.presheaf.stalk y) stalk_dim_le_two : ∀ y : Y, y ∉ toBase ⁻¹ᵁ (PrimeSpectrum.basicOpen ((q : ℕ) : O) : (Spec (CommRingCat.of O)).Opens) → ringKrullDim (Y.presheaf.stalk y) ≤ 2 toDR_iso_smoothLocus : IsIso (toDR ∣_ (pullback.fst (DRLevel.toBase N₀ q) (Spec.map (CommRingCat.ofHom ρ)) ⁻¹ᵁ 𝔛.smoothLocus)) toDR_iso_generic : IsIso (toDR ∣_ (pullback.snd (DRLevel.toBase N₀ q) (Spec.map (CommRingCat.ofHom ρ)) ⁻¹ᵁ (PrimeSpectrum.basicOpen ((q : ℕ) : O) : (Spec (CommRingCat.of O)).Opens))) node : Type [node_fintype : Fintype node] [node_deq : DecidableEq node] width : node → ℕ one_le_width : ∀ n, 1 ≤ width n nodeEquiv : node ≃ ↥(pullback (𝔛.comp κ (toκ.comp ρ) 0) (𝔛.comp κ (toκ.comp ρ) 1)) comp : X0MqComponents width → Y.IdealSheafData comp_isInvertible : ∀ v, (comp v).IsInvertible comp_integral : ∀ v, IsIntegral (comp v).subscheme comp_support : ∀ v (y : Y), y ∈ (comp v).support → y ∉ toBase ⁻¹ᵁ (PrimeSpectrum.basicOpen ((q : ℕ) : O) : (Spec (CommRingCat.of O)).Opens) comp_prod : ∀ U : Y.affineOpens, (∏ v, comp v).ideal U = Ideal.span {((q : ℕ) : Γ(Y, U))} η : X0MqComponents width → Y η_not_mem : ∀ v, η v ∉ toBase ⁻¹ᵁ (PrimeSpectrum.basicOpen ((q : ℕ) : O) : (Spec (CommRingCat.of O)).Opens) η_stalk : ∀ v, ∃ (U : Y.affineOpens) (hU : η v ∈ (U : Y.Opens)), Ideal.map (Y.presheaf.germ (U : Y.Opens) (η v) hU).hom ((comp v).ideal U) = IsLocalRing.maximalIdeal (Y.presheaf.stalk (η v)) ∧ ∀ w, w ≠ v → Ideal.map (Y.presheaf.germ (U : Y.Opens) (η v) hU).hom ((comp w).ideal U) = ⊤ codim : ∀ y : Y, y ∉ toBase ⁻¹ᵁ (PrimeSpectrum.basicOpen ((q : ℕ) : O) : (Spec (CommRingCat.of O)).Opens) → ringKrullDim (Y.presheaf.stalk y) ≤ 1 → ∃ v, y = η v strict_iso : ∀ i : Fin 2, ∃ e : pullback ((comp (Sum.inl i)).subschemeι ≫ toBase) (Spec.map (CommRingCat.ofHom toκ)) ⟶ fibre0 (N₀ := N₀) (toκ.comp ρ), IsIso e ∧ e ≫ pullback.snd _ _ = pullback.snd _ _ ∧ e ≫ 𝔛.comp κ (toκ.comp ρ) i ≫ bcMap ρ toκ = pullback.fst _ _ ≫ (comp (Sum.inl i)).subschemeι ≫ toDR exc_image : ∀ (n : node) (i : Fin (width n - 1)), ∀ y ∈ (comp (Sum.inr ⟨n, i⟩)).support, toDR.base y = (pullback.fst (𝔛.comp κ (toκ.comp ρ) 0) (𝔛.comp κ (toκ.comp ρ) 1) ≫ 𝔛.comp κ (toκ.comp ρ) 0 ≫ bcMap ρ toκ).base (nodeEquiv n) edgePt : (n : node) → Fin (width n) → Y edgePt_injective : Function.Injective (fun e : Σ n, Fin (width n) => edgePt e.1 e.2) edgePt_mem : ∀ (n : node) (d : Fin (width n)), edgePt n d ∈ ((comp (DRResolvedModelPackageLevel.chainPos width n d)).support : Set Y) ∩ ((comp (DRResolvedModelPackageLevel.chainPos width n (d + 1))).support : Set Y) edgePt_over : ∀ (n : node) (d : Fin (width n)), toDR.base (edgePt n d) = (pullback.fst (𝔛.comp κ (toκ.comp ρ) 0) (𝔛.comp κ (toκ.comp ρ) 1) ≫ 𝔛.comp κ (toκ.comp ρ) 0 ≫ bcMap ρ toκ).base (nodeEquiv n) edgePt_exhaust : ∀ v w, v ≠ w → ∀ y ∈ ((comp v).support : Set Y) ∩ ((comp w).support : Set Y), ∃ (n : node) (d : Fin (width n)), y = edgePt n d ∧ ((v = DRResolvedModelPackageLevel.chainPos width n d ∧ w = DRResolvedModelPackageLevel.chainPos width n (d + 1)) ∨ (w = DRResolvedModelPackageLevel.chainPos width n d ∧ v = DRResolvedModelPackageLevel.chainPos width n (d + 1))) edgePt_transversal : ∀ (n : node) (d : Fin (width n)), ∃ (U : Y.affineOpens) (hU : edgePt n d ∈ (U : Y.Opens)), Ideal.map (Y.presheaf.germ (U : Y.Opens) (edgePt n d) hU).hom ((comp (DRResolvedModelPackageLevel.chainPos width n d)).ideal U ⊔ (comp (DRResolvedModelPackageLevel.chainPos width n (d + 1))).ideal U) = IsLocalRing.maximalIdeal (Y.presheaf.stalk (edgePt n d)) exc_rational : ∀ (n : node) (i : Fin (width n - 1)), ∃ (M : AlgebraicCurve.CurveModel κ (RatFunc κ)) (e : M.C ⟶ pullback ((comp (Sum.inr ⟨n, i⟩)).subschemeι ≫ toBase) (Spec.map (CommRingCat.ofHom toκ))), IsIso e ∧ e ≫ pullback.snd _ _ = M.toBase smoothOffEdges : Y.Opens [smoothOffEdges_smooth : SmoothOfRelativeDimension 1 (smoothOffEdges.ι ≫ toBase)] mem_smoothOffEdges : ∀ y : Y, (∀ (n : node) (d : Fin (width n)), y ≠ edgePt n d) → y ∈ smoothOffEdges attribute [instance] DRResolvedModelPackageLevel.toDR_proper DRResolvedModelPackageLevel.isProper DRResolvedModelPackageLevel.flat DRResolvedModelPackageLevel.isIntegral DRResolvedModelPackageLevel.isLocallyNoetherian DRResolvedModelPackageLevel.node_fintype DRResolvedModelPackageLevel.node_deq DRResolvedModelPackageLevel.smoothOffEdges_smooth end ModularCurve end
Statements phrased using this module (40)
- 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 - Multidegree lies in the image of the intersection pairing
ModularCurve.DRResolvedModelPackageLevel.multidegree_mem_range_intersectionAlpha_of_pullbackAlong_generic_iso_of_surjective272 below · depth 16 - Existence of a resolved model with étale crossing charts
ModularCurve.DRModelPackageLevel.exists_dRResolvedModelPackageLevel_and_dRResolvedModelChartsLevelRam414 below · depth 17 - 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 - Crossing points rational over an algebraically closed residue field
ModularCurve.DRModelPackageLevel.exists_residueField_point_baseChangeMap_eq_of_isAlgClosed_residueField16 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 presentation of a Pic⁰-point on the regular model
ModularCurve.DRResolvedModelPackageLevel.exists_pullback_toDR_iso_foldr_ker_tensor_invModule_prod_comp53 below · depth 17 - Sections avoiding the zeroth branch meet only the component inl 1
ModularCurve.DRResolvedModelPackageLevel.mem_support_comp_inl_one_of_not_mem_range0 below · depth 17 - Section off the branch meets only `comp (Sum.inl 0)`
ModularCurve.DRResolvedModelPackageLevel.mem_support_comp_inl_zero_of_not_mem_range0 below · depth 17 - Vanishing multidegree of a divisorially presented bundle on the resolved model
ModularCurve.DRResolvedModelPackageLevel.sum_single_add_intersectionAlpha_eq_zero_of_pullback_toDR_iso251 below · depth 17 - 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 - Euler characteristic of the Poincaré pullback on a component
ModularCurve.DRResolvedModelPackageLevel.eulerChar_sectionsOf_pullback_comp_toDR_poincare_tensor_unit_eq82 below · depth 18 - Euler characteristic of a divisorial twist on a fibre component
ModularCurve.DRResolvedModelPackageLevel.eulerChar_sectionsOf_pullback_foldr_ker_tensor_prod_comp_eq_add_sum_single_add_intersectionAlpha135 below · depth 18 - Special-fibre components as proper κ-curves with two affine charts
ModularCurve.DRResolvedModelPackageLevel.exists_toSpec_comp_eq_and_isProper_and_twoAffineOpenCover_and_sections_of_surjective95 below · depth 18 - Sections of a resolved model avoid the edge points
ModularCurve.DRResolvedModelPackageLevel.ne_edgePt_and_mem_smoothOffEdges_and_existsUnique_mem_comp_support_of_section1 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 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 - Sections miss generic points of special-fibre components
ModularCurve.DRResolvedModelPackageLevel.eta_notMem_range_of_comp_toBase_eq_id3 below · depth 19 - Euler characteristics of ± a C_c twists on the resolved model
ModularCurve.DRResolvedModelPackageLevel.eulerChar_sectionsOf_pullback_pow_comp_invModule_tensor_and_module_tensor_self126 below · depth 19 - Component intersection on the resolved model: finite, degree the edge count
ModularCurve.DRResolvedModelPackageLevel.isFinite_and_finrank_subscheme_comap_comp_eq_natCard2 below · depth 19 - Restriction of a component ideal to a distinct component is invertible
ModularCurve.DRResolvedModelPackageLevel.isInvertible_comap_comp_subschemeIota1 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