Definitions/Def_WeierstrassCurve_ReductionMap.lean
Reduction of Weierstrass points along a valuation subring
Let L be a field, A \subseteq L a valuation subring with residue field \kappa_A, and W a Weierstrass curve over A, i.e. a tuple a_1,a_2,a_3,a_4,a_6 \in A. Writing W_L for the base change along the inclusion A \to L and \tilde W for the base change along the residue map A \to \kappa_A, the main definition WeierstrassCurve.reducePoint takes a hypothesis h_\Delta asserting \Delta(\tilde W) \neq 0 and produces a map from the affine points of W_L to the affine points of \tilde W: the point at infinity goes to the point at infinity; an affine point (x,y) goes to (\bar x, \bar y) if x \in A, and to the point at infinity otherwise. This is a map of pointed sets defined by cases, not yet a homomorphism. Two facts make it well posed: Affine.Y_mem_of_X_mem, which says that a solution of the Weierstrass equation of W_L with x \in A automatically has y \in A (otherwise 1 would lie in the nonunits of A), and Affine.nonsingular_residue, which upgrades the reduced equation to nonsingularity using \Delta(\tilde W) \neq 0. The criterion map_residue_Δ_ne_zero_iff identifies that hypothesis with \Delta(W) being a unit of A.
The equational lemmas record the three branches, and reducePoint_neg states that reduction commutes with negation. Under a K-algebra structure on L, reducePoint_some_apply_of_mem_inertia states that if \sigma : L \simeq_K L stabilises A and acts trivially on \kappa_A, then (\sigma x, \sigma y) and (x,y) have the same reduction; this rests on smul_mem_of_mem_decompositionSubgroup (\sigma preserves A) and residue_smul_eq_of_mem_inertiaSubgroup. Further supporting lemmas concern the predicate LiesOverPrime A q, which says that q \in L is a nonunit of A: such an A has q in its maximal ideal and residue field of characteristic q (charP_residueField_of_liesOverPrime_def), and for L of characteristic zero and q prime such an A exists (exists_liesOverPrime). Finally, mem_inertiaSubgroupIn unfolds membership in the image of the inertia subgroup inside L \simeq_K L.
Relation to Mathlib
Mathlib supplies WeierstrassCurve, affine points, base change, and the decomposition and inertia subgroups of a valuation subring; the reduction map on points along a valuation subring, the predicate LiesOverPrime and the subgroup inertiaSubgroupIn of L \simeq_K L are the project's own.
Where it is used
The reduction map is the basis for comparing the p-torsion of the Frey curve with the points of its special fibre, and reducePoint_some_apply_of_mem_inertia is the computational input to the statement that the mod p Galois representation is unramified at a prime of good reduction.
References
- J. H. Silverman, The Arithmetic of Elliptic Curves, Graduate Texts in Mathematics 106, Springer, 1986, Ch. VII
- J.-P. Serre and J. Tate, Good reduction of abelian varieties, Annals of Mathematics 88 (1968), 492–517
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 254 lines
- 21 declarations
- used in the statements of 84 theorems and imported by 140 proofs
- imports 2 definition modules
Source file: Definitions/Def_WeierstrassCurve_ReductionMap.lean
Declarations
- lemma
ValuationSubring.liesOverPrime_iff - lemma
ValuationSubring.natCast_mem' - lemma
ValuationSubring.natCast_mem_maximalIdeal_of_liesOverPrime - theorem
ValuationSubring.exists_liesOverPrime - theorem
ValuationSubring.charP_residueField_of_liesOverPrime_def - lemma
ValuationSubring.mem_inertiaSubgroupIn - theorem
ValuationSubring.mul_mem_nonunits - theorem
ValuationSubring.one_notMem_nonunits - lemma
WeierstrassCurve.some_congr - theorem
WeierstrassCurve.Affine.Y_mem_of_X_mem - theorem
WeierstrassCurve.map_residue_Δ_ne_zero_iff - theorem
WeierstrassCurve.Affine.equation_residue - theorem
WeierstrassCurve.Affine.nonsingular_residue - def
WeierstrassCurve.reducePoint - lemma
WeierstrassCurve.reducePoint_zero - lemma
WeierstrassCurve.reducePoint_some_of_mem - lemma
WeierstrassCurve.reducePoint_some_of_notMem - theorem
WeierstrassCurve.reducePoint_neg - theorem
ValuationSubring.smul_mem_of_mem_decompositionSubgroup - theorem
ValuationSubring.residue_smul_eq_of_mem_inertiaSubgroup - theorem
WeierstrassCurve.reducePoint_some_apply_of_mem_inertia
Source
import Definitions.Def_FLTPrelim_Ramification import Definitions.Def_FreyPackage_GaloisRep import Mathlib.RingTheory.Valuation.RamificationGroup ↗ import Mathlib.RingTheory.Valuation.LocalSubring ↗ set_option autoImplicit false open IsLocalRing namespace ValuationSubring variable {L : Type*} [Field L] lemma liesOverPrime_iff {A : ValuationSubring L} {q : ℕ} : A.LiesOverPrime q ↔ (q : L) ∈ A.nonunits := Iff.rfl lemma natCast_mem' (A : ValuationSubring L) (q : ℕ) : (q : L) ∈ A := natCast_mem A.toSubring q lemma natCast_mem_maximalIdeal_of_liesOverPrime {A : ValuationSubring L} {q : ℕ} (h : A.LiesOverPrime q) : (q : A) ∈ IsLocalRing.maximalIdeal A := by have : ((q : A) : L) ∈ A.nonunits := by simpa using liesOverPrime_iff.mp h exact A.coe_mem_nonunits_iff.mp this theorem exists_liesOverPrime [CharZero L] {q : ℕ} (hq : q.Prime) : ∃ A : ValuationSubring L, A.LiesOverPrime q := by set R : Subring L := ⊥ with hR have hqR : ¬IsUnit ((q : ℕ) : R) := by rw [isUnit_iff_exists_inv] rintro ⟨y, hy⟩ have hy' : (q : L) * (y : L) = 1 := by have := congrArg (R.subtype) hy simpa using this obtain ⟨n, hn⟩ := Subring.mem_bot.mp y.2 rw [← hn] at hy' have hqn : (q : ℤ) * n = 1 := by have : (((q : ℤ) * n : ℤ) : L) = ((1 : ℤ) : L) := by push_cast; linear_combination hy' exact_mod_cast this have h1 : (q : ℤ) ≤ 1 := Int.le_of_dvd one_pos ⟨n, hqn.symm⟩ have h2 : 2 ≤ q := hq.two_le omega obtain ⟨B, -, hB⟩ := Ideal.image_subset_nonunits_valuationSubring (Ideal.span {((q : ℕ) : R)}) (fun h => hqR (Ideal.span_singleton_eq_top.mp h)) refine ⟨B, hB ⟨((q : ℕ) : R), Ideal.subset_span rfl, ?_⟩⟩ simp theorem charP_residueField_of_liesOverPrime_def {A : ValuationSubring L} {q : ℕ} (hq : q.Prime) (h : A.LiesOverPrime q) : CharP (IsLocalRing.ResidueField A) q := by rw [CharP.charP_iff_prime_eq_zero hq] have : ((q : ℕ) : IsLocalRing.ResidueField A) = IsLocalRing.residue A ((q : ℕ) : A) := by simp rw [this] exact Ideal.Quotient.eq_zero_iff_mem.mpr (natCast_mem_maximalIdeal_of_liesOverPrime h) variable (K : Type*) [Field K] [Algebra K L] lemma mem_inertiaSubgroupIn {A : ValuationSubring L} {σ : L ≃ₐ[K] L} : σ ∈ A.inertiaSubgroupIn K ↔ ∃ h : σ ∈ A.decompositionSubgroup K, (⟨σ, h⟩ : A.decompositionSubgroup K) ∈ A.inertiaSubgroup K := by constructor · rintro ⟨⟨τ, hτ⟩, hτI, rfl⟩ exact ⟨hτ, hτI⟩ · rintro ⟨h, hI⟩ exact ⟨⟨σ, h⟩, hI, rfl⟩ end ValuationSubring namespace ValuationSubring variable {L : Type*} [Field L] {A : ValuationSubring L} theorem mul_mem_nonunits {a x : L} (ha : a ∈ A) (hx : x ∈ A.nonunits) : a * x ∈ A.nonunits := by rw [mem_nonunits_iff] at hx ⊢ calc A.valuation (a * x) = A.valuation a * A.valuation x := map_mul _ _ _ _ ≤ 1 * A.valuation x := mul_le_mul_left ((A.valuation_le_one_iff a).mpr ha) _ _ = A.valuation x := one_mul _ _ < 1 := hx theorem one_notMem_nonunits : (1 : L) ∉ A.nonunits := by simp [mem_nonunits_iff] end ValuationSubring namespace WeierstrassCurve variable {L : Type*} [Field L] {A : ValuationSubring L} private lemma some_congr {R : Type*} [CommRing R] {V : Affine R} {x₁ x₂ y₁ y₂ : R} (hx : x₁ = x₂) (hy : y₁ = y₂) (h₁ : V.Nonsingular x₁ y₁) (h₂ : V.Nonsingular x₂ y₂) : Affine.Point.some x₁ y₁ h₁ = Affine.Point.some x₂ y₂ h₂ := by subst hx; subst hy; rfl variable (W : WeierstrassCurve A) theorem Affine.Y_mem_of_X_mem {x y : L} (h : (W.map A.subtype).toAffine.Equation x y) (hx : x ∈ A) : y ∈ A := by by_contra hy have hy0 : y ≠ 0 := fun h0 => hy (h0 ▸ A.zero_mem) have hyinv : y⁻¹ ∈ A.nonunits := A.inv_mem_nonunits_iff.mpr (Or.inr hy) rw [equation_iff] at h have key : (1 : L) = (x ^ 3 + (W.map A.subtype).toAffine.a₂ * x ^ 2 + (W.map A.subtype).toAffine.a₄ * x + (W.map A.subtype).toAffine.a₆) * (y⁻¹ * y⁻¹) - (W.map A.subtype).toAffine.a₁ * x * y⁻¹ - (W.map A.subtype).toAffine.a₃ * y⁻¹ := by field_simp linear_combination h refine A.one_notMem_nonunits ?_ rw [key] have ha₁ : (W.map A.subtype).toAffine.a₁ ∈ A := SetLike.coe_mem W.a₁ have ha₂ : (W.map A.subtype).toAffine.a₂ ∈ A := SetLike.coe_mem W.a₂ have ha₃ : (W.map A.subtype).toAffine.a₃ ∈ A := SetLike.coe_mem W.a₃ have ha₄ : (W.map A.subtype).toAffine.a₄ ∈ A := SetLike.coe_mem W.a₄ have ha₆ : (W.map A.subtype).toAffine.a₆ ∈ A := SetLike.coe_mem W.a₆ have hcubic : x ^ 3 + (W.map A.subtype).toAffine.a₂ * x ^ 2 + (W.map A.subtype).toAffine.a₄ * x + (W.map A.subtype).toAffine.a₆ ∈ A := add_mem (add_mem (add_mem (pow_mem hx 3) (mul_mem ha₂ (pow_mem hx 2))) (mul_mem ha₄ hx)) ha₆ exact sub_mem (sub_mem (A.mul_mem_nonunits hcubic (mul_mem hyinv hyinv)) (A.mul_mem_nonunits (mul_mem ha₁ hx) hyinv)) (A.mul_mem_nonunits ha₃ hyinv) theorem map_residue_Δ_ne_zero_iff : (W.map (residue A)).Δ ≠ 0 ↔ IsUnit W.Δ := by rw [map_Δ] exact residue_ne_zero_iff_isUnit W.Δ theorem Affine.equation_residue {x y : A} (h : (W.map A.subtype).toAffine.Equation (x : L) (y : L)) : (W.map (residue A)).toAffine.Equation (residue A x) (residue A y) := by have hA : W.toAffine.Equation x y := (W.toAffine.map_equation A.subtype_injective x y).mp h exact hA.map (residue A) theorem Affine.nonsingular_residue (hΔ : (W.map (residue A)).Δ ≠ 0) {x y : A} (h : (W.map A.subtype).toAffine.Equation (x : L) (y : L)) : (W.map (residue A)).toAffine.Nonsingular (residue A x) (residue A y) := (Affine.equation_iff_nonsingular_of_Δ_ne_zero hΔ).mp (Affine.equation_residue W h) variable {W} open Classical in noncomputable def reducePoint (hΔ : (W.map (residue A)).Δ ≠ 0) : (W.map A.subtype).toAffine.Point → (W.map (residue A)).toAffine.Point | .zero => .zero | .some x y h => if hx : x ∈ A then .some (residue A ⟨x, hx⟩) (residue A ⟨y, Affine.Y_mem_of_X_mem W h.1 hx⟩) (Affine.nonsingular_residue W hΔ h.1) else .zero variable (hΔ : (W.map (residue A)).Δ ≠ 0) @[simp] lemma reducePoint_zero : reducePoint hΔ (0 : (W.map A.subtype).toAffine.Point) = 0 := rfl lemma reducePoint_some_of_mem {x y : L} (h : (W.map A.subtype).toAffine.Nonsingular x y) (hx : x ∈ A) : reducePoint hΔ (.some x y h) = .some (residue A ⟨x, hx⟩) (residue A ⟨y, Affine.Y_mem_of_X_mem W h.1 hx⟩) (Affine.nonsingular_residue W hΔ h.1) := by simp only [reducePoint] exact dif_pos hx lemma reducePoint_some_of_notMem {x y : L} (h : (W.map A.subtype).toAffine.Nonsingular x y) (hx : x ∉ A) : reducePoint hΔ (.some x y h) = 0 := by simp only [reducePoint] exact dif_neg hx theorem reducePoint_neg (P : (W.map A.subtype).toAffine.Point) : reducePoint hΔ (-P) = -reducePoint hΔ P := by cases P with | zero => rfl | some x y h => rw [Affine.Point.neg_some] by_cases hx : x ∈ A · have hy : y ∈ A := Affine.Y_mem_of_X_mem W h.1 hx rw [reducePoint_some_of_mem _ _ hx, reducePoint_some_of_mem _ _ hx, Affine.Point.neg_some] refine some_congr rfl ?_ _ _ show residue A (W.toAffine.negY ⟨x, hx⟩ ⟨y, hy⟩) = _ exact (Affine.map_negY (residue A) (⟨x, hx⟩ : A) (⟨y, hy⟩ : A)).symm · rw [reducePoint_some_of_notMem _ _ hx, reducePoint_some_of_notMem _ _ hx] rfl section Inertia open scoped Pointwise variable (K : Type*) [Field K] [Algebra K L] theorem _root_.ValuationSubring.smul_mem_of_mem_decompositionSubgroup {σ : L ≃ₐ[K] L} (hσ : σ ∈ A.decompositionSubgroup K) {z : L} (hz : z ∈ A) : σ z ∈ A := by have h1 : σ • z ∈ σ • A := ValuationSubring.smul_mem_pointwise_smul σ z A hz rwa [MulAction.mem_stabilizer_iff.mp hσ, AlgEquiv.smul_def] at h1 variable {K} theorem _root_.ValuationSubring.residue_smul_eq_of_mem_inertiaSubgroup {σ : L ≃ₐ[K] L} (hσ : σ ∈ A.decompositionSubgroup K) (hσI : (⟨σ, hσ⟩ : A.decompositionSubgroup K) ∈ A.inertiaSubgroup K) (a : A) : residue A ((⟨σ, hσ⟩ : A.decompositionSubgroup K) • a) = residue A a := by have h1 : MulSemiringAction.toRingAut (A.decompositionSubgroup K) (ResidueField A) ⟨σ, hσ⟩ = 1 := hσI calc residue A ((⟨σ, hσ⟩ : A.decompositionSubgroup K) • a) = (⟨σ, hσ⟩ : A.decompositionSubgroup K) • residue A a := rfl _ = MulSemiringAction.toRingAut (A.decompositionSubgroup K) (ResidueField A) ⟨σ, hσ⟩ (residue A a) := rfl _ = residue A a := by rw [h1]; rfl theorem reducePoint_some_apply_of_mem_inertia {σ : L ≃ₐ[K] L} (hσ : σ ∈ A.decompositionSubgroup K) (hσI : (⟨σ, hσ⟩ : A.decompositionSubgroup K) ∈ A.inertiaSubgroup K) {x y : L} (h : (W.map A.subtype).toAffine.Nonsingular x y) (h' : (W.map A.subtype).toAffine.Nonsingular (σ x) (σ y)) : reducePoint hΔ (.some (σ x) (σ y) h') = reducePoint hΔ (.some x y h) := by by_cases hx : x ∈ A · have hy : y ∈ A := Affine.Y_mem_of_X_mem W h.1 hx have hσx : σ x ∈ A := A.smul_mem_of_mem_decompositionSubgroup K hσ hx have hσy : σ y ∈ A := A.smul_mem_of_mem_decompositionSubgroup K hσ hy rw [reducePoint_some_of_mem _ _ hσx, reducePoint_some_of_mem _ _ hx] refine some_congr ?_ ?_ _ _ · calc residue A (⟨σ x, hσx⟩ : A) = residue A ((⟨σ, hσ⟩ : A.decompositionSubgroup K) • (⟨x, hx⟩ : A)) := rfl _ = residue A (⟨x, hx⟩ : A) := A.residue_smul_eq_of_mem_inertiaSubgroup hσ hσI _ · calc residue A (⟨σ y, hσy⟩ : A) = residue A ((⟨σ, hσ⟩ : A.decompositionSubgroup K) • (⟨y, hy⟩ : A)) := rfl _ = residue A (⟨y, hy⟩ : A) := A.residue_smul_eq_of_mem_inertiaSubgroup hσ hσI _ · have hσx : σ x ∉ A := fun hmem => hx (by simpa using A.smul_mem_of_mem_decompositionSubgroup K (inv_mem hσ) hmem) rw [reducePoint_some_of_notMem _ _ hσx, reducePoint_some_of_notMem _ _ hx] end Inertia end WeierstrassCurve
Statements phrased using this module (84)
- Decomposition-group stability of the kernel of the component map
ModularCurve.PlaceSpecialization.componentMap_decomposition_smul_eq_zero_of_eq_zero88 below · depth 11 - Frobenius stability of the kernel of the component map
ModularCurve.PlaceSpecialization.componentMap_frobenius_smul_eq_zero_of_eq_zero4 below · depth 11 - Hecke stability of the kernel of the component map at q
ModularCurve.PlaceSpecialization.componentMap_heckeAlg_smul_eq_zero_of_eq_zero_of_isModel965 below · depth 11 - T_ℓ acts as ℓ+1 through the component map
ModularCurve.PlaceSpecialization.componentMap_heckeGen_smul_eq_add_one_smul_of_isModel2,484 below · depth 11 - Injectivity of `spPic0` on prime-to-q torsion
ModularCurve.PlaceSpecialization.eq_zero_of_primeToTorsion_of_spPic0_eq_zero995 below · depth 11 - Hecke-equivariant component map and toric monodromy detection
ModularCurve.PlaceSpecialization.exists_heckeModule_componentGroup_toricMonodromyPart_mem_of_isModel2,736 below · depth 11 - Hecke-equivariance of the Pic⁰ specialisation map
ModularCurve.PlaceSpecialization.exists_heckeModule_pic0_spPic0_heckeAlg_smul999 below · depth 11 - Prime-to-q torsion classes lift along `spPic0`
ModularCurve.PlaceSpecialization.exists_primeToTorsion_spPic0_eq_of_primeToTorsion1,772 below · depth 11 - Lifting m-torsion from the component group to inertia invariants
ModularCurve.PlaceSpecialization.exists_torsion_preimage_componentMap_of_isModel1,311 below · depth 11 - Lifting m-torsion through the glued specialization at q
ModularCurve.PlaceSpecialization.exists_torsion_preimage_gluedSpecialization_of_isModel1,137 below · depth 11 - Widths, component map and glued specialisation over a place above q
ModularCurve.PlaceSpecialization.exists_widths_componentMap_gluedSpecialization_placeWidthChar_of_isModel1,892 below · depth 11 - Injectivity on prime-to-q torsion of component and glued specialization maps
ModularCurve.PlaceSpecialization.gluedSpecialization_componentMap_injective_primeToTorsion_of_isModel1,053 below · depth 11 - Frobenius law for the glued specialization
ModularCurve.PlaceSpecialization.gluedSpecialization_frobenius_smul_eq_glueMap4 below · depth 11 - Hecke action at q on node units of the glued specialisation
ModularCurve.PlaceSpecialization.gluedSpecialization_nodeUnit_heckeGen_eq_nodePerm_symm_comp526 below · depth 11 - Inertia differences on prime-to-q torsion are toric
ModularCurve.PlaceSpecialization.inertia_smul_sub_self_componentMap_eq_zero_toPic0Pair_eq_zero_of_isModel1,962 below · depth 11 - Decomposition-group equivariance of the glued specialization's Pic⁰-pair
ModularCurve.PlaceSpecialization.toPic0Pair_gluedSpecialization_decomposition_smul_eq_spPic0_smul158 below · depth 11 - Decomposition-group stability of the vanishing Pic⁰-pair
ModularCurve.PlaceSpecialization.toPic0Pair_gluedSpecialization_decomposition_smul_eq_zero_of_eq_zero88 below · depth 11 - Hecke stability of the toric kernel of the glued specialization
ModularCurve.PlaceSpecialization.toPic0Pair_gluedSpecialization_heckeAlg_smul_eq_zero_of_eq_zero_of_isModel1,199 below · depth 11 - Hecke equivariance of the projected glued specialization at q
ModularCurve.PlaceSpecialization.toPic0Pair_gluedSpecialization_heckeGen_equivariant_of_isModel957 below · depth 11 - Hecke law for the glued specialization on Pic⁰ pairs
ModularCurve.PlaceSpecialization.toPic0Pair_gluedSpecialization_heckeGen_smul_eq_heckePic0Fibre_of_isModel1,173 below · depth 11 - Comparison of the H=top and Igusa integral models
ModularCurve.exists_iso_xHDRLevel_top_drLevel_epsInf_pointEquivPlace191 below · depth 11 - Néron object of J₀(N₀p) at p with its bridges
ModularCurve.exists_jZeroNeronObjectAtP_and_bridge4,509 below · depth 11 - Finite and toric parts transport from Jₜop(N₀p) to J₀(N₀p)
ModularCurve.map_finPts_jHNeronObjectAtP_top_eq_and_map_toricPts_eq_of_pic0Congr_of_bridge136 below · depth 11 - Néron object of J₀(N₀p) at p from a level model
ModularCurve.DRModelPackageLevel.exists_jZeroNeronObjectAtP_and_bridge_representsRelSubPic_abqFibre_of_levelModel4,507 below · depth 12 - Inertia displacement of prime-to-q torsion: good divisor with vanishing Pic⁰ pair
ModularCurve.PlaceSpecialization.exists_goodRep_toPic0Pair_eq_zero_smul_sub_self_of_isModel1,928 below · depth 12 - Glued classes killed by `toPic0Pair` lift to toric monodromy
ModularCurve.PlaceSpecialization.exists_mem_toricMonodromyPart_sp_eq_of_toPic0Pair_eq_zero_of_isModel2,694 below · depth 12 - Widths, component map, glued specialisation and Hecke matrices
ModularCurve.PlaceSpecialization.exists_widths_componentMap_gluedSpecialization_placeWidthChar_correspondence_heckeComponentAction_agree_of_isModel2,483 below · depth 12 - Inertia-invariance of inertial displacements of prime-to-q torsion
ModularCurve.PlaceSpecialization.smul_sub_self_mem_inertiaInvariants_of_primeToTorsion_of_isModel1,961 below · depth 12 - Pull-back along φ⁻¹ intertwines the two Abel–Jacobi dictionaries
ModularCurve.jZeroNeronObjectAtP_pts_pic0Congr_eq_pts_comp_pullbackHom_of_modelIso_levelData66 below · depth 12 - Special-fibre torus, abelian quotient and pins at level N₀p
ModularCurve.DRModelPackageLevel.exists_torusFibre_abqFibre_degeneracy_specialFibre_pins_of_levelModel1,857 below · depth 13 - Prime-to-p inertia differences lie in the toric part
ModularCurve.JZeroNeronObjectAtP.smul_sub_self_mem_toricPts_of_isGluedSpecialization2,620 below · depth 13 - Inertia displacements σ V-V admit good admissible representatives
ModularCurve.PlaceSpecialization.exists_goodRep_admissible_smul_single_sub_self_of_isModel1,474 below · depth 13 - Inertial differences realise prescribed node units at one node pair
ModularCurve.PlaceSpecialization.exists_inertia_smul_sub_self_sp_eq_nodeUnit_of_isModel2,693 below · depth 13 - Good effective divisors avoiding a finite set of reductions
ModularCurve.PlaceSpecialization.exists_isGoodDiv_reduce_notMem_isPrincipal_sub_of_smul_eq175 below · depth 13 - Hecke transport of node units on the glued fibre at q
ModularCurve.PlaceSpecialization.exists_matrix_eq_correspondence_gluedSpecialization_nodeUnit_heckeGen_of_ne_of_isModel1,780 below · depth 13 - Moving divisor classes off places outside the supersingular locus
ModularCurve.PlaceSpecialization.exists_rep_reduce_notMem_of_moving_of_disjoint_of_isModel959 below · depth 13 - Inertial displacements of strict divisors: goodness and vanishing glue datum
ModularCurve.PlaceSpecialization.isGoodDiv_and_glueData_smul_sub_self_eq_zero_of_forall_isStrict3 below · depth 13 - U_q preserves good divisors and transports their gluing data
ModularCurve.PlaceSpecialization.isGoodDiv_heckeDivBar_self_and_glueData_mem_admissible281 below · depth 13 - A semistable witness package for J₀(Nq) at q∤ N
ModularCurve.exists_placeSpecialization_prolongationTuple_width_comp_sp_gluedSpecialization_placeWidthChar_regularityLaw_nodeValueLaw3,321 below · depth 13 - Abelian coordinates of the reduction equal the glued specialisation pair
ModularCurve.DRModelPackageLevel.ptsSp_symm_abq_reduction_eq_toPic0Pair_of_isGluedSpecialization1,470 below · depth 14 - Inertial displacements of prime-to-q torsion are good toric classes
ModularCurve.PlaceSpecialization.IsGluedSpecialization.isGoodClass_and_toPic0Pair_apply_smul_sub_self_of_isModel1,962 below · depth 14 - Genus-zero transfer of good-class and glued-specialization data
ModularCurve.PlaceSpecialization.exists_isGoodClass_iff_isGluedSpecialization_of_not_genusFF_pos1,681 below · depth 14 - T_ℓ (ℓ≠ q) acts on node units by a correspondence matrix
ModularCurve.PlaceSpecialization.exists_matrix_eq_correspondence_gluedSpecialization_nodeUnit_heckeGen_of_ne_of_isModel_of_prolongation_of_regularityLaw_nodeValueLaw986 below · depth 14 - Moving lemma: representatives with j-residues avoiding S
ModularCurve.PlaceSpecialization.exists_rep_forall_exists_ord_sub_pos_residue_notMem_of_isModel_of_regularityLaw_of_orderLawFixed_of_ssPlaces956 below · depth 14 - Inertia acts unipotently on prime-to-q torsion of J₀(q)
ModularCurve.PlaceSpecialization.smul_sub_self_mem_inertiaInvariants_of_primeToTorsion_of_isModel_levelOne1,494 below · depth 14 - Reduction killed by both restriction maps when glued Pic⁰-pair vanishes
ModularCurve.DRModelPackageLevel.abq_reduction_eq_one_of_toPic0Pair_glueData_eq_zero_residueField1,404 below · depth 15 - Strict places of the first kind reduce into the first component
ModularCurve.DRModelPackageLevel.exists_placeOfPoint_eq_reduceFst_of_isStrictFst1 below · depth 15 - Strict second-kind places reduce onto the second DR component
ModularCurve.DRModelPackageLevel.exists_placeOfPoint_eq_reduceSnd_of_isStrictSnd1 below · depth 15 - Abelian-quotient reduction of a good class matches the glued specialisation
ModularCurve.DRModelPackageLevel.ptsSp_symm_abq_reduction_pair_eq_toPic0Pair_of_isGluedSpecialization1,211 below · depth 15 - Points through a crossing have supersingular first reduction
ModularCurve.DRModelPackageLevel.reduceFst_mem_ssPlaces_of_specialPoint_eq_crossing126 below · depth 15 - Special fibre of an A-point equals reduction mod λ
ModularCurve.JZeroNeronObjectAtP.LevelModel.ptsSp_symm_schemeHomOverComp_resPt_eq_reductionModL741 below · depth 15 - Good admissible representatives of inertia displacements at level q
ModularCurve.PlaceSpecialization.exists_goodRep_toPic0Pair_eq_zero_smul_sub_self_levelOne1,113 below · depth 15 - Local points over a crossing factor through the finite-j chart
ModularCurve.DRModelPackageLevel.exists_eq_spec_map_comp_iotaFin_of_comp_base_eq1 below · depth 16 - The two abq coordinates of a reduced Abel–Jacobi point
ModularCurve.DRModelPackageLevel.nonempty_poincare_pullbackAlong_abq_reduction_iso_pointTwist1,142 below · depth 16 - Positivity of ord_W(j-φ(j)) for a chart A-point
ModularCurve.DRModelPackageLevel.ord_jFun_sub_pos_of_eq_spec_map_comp_iotaFin1 below · depth 16 - Reduction of the chart value of j at a crossing
ModularCurve.DRModelPackageLevel.red_jChartFin_eq_evalAt_jGeomGen_nodeEquiv1 below · depth 16 - Degree-zero twists by A-sections come from D₀
ModularCurve.JZeroNeronObjectAtP.LevelModel.exists_schemeHomOver_poincare_pullbackAlong_iso_rigidify_sectionTwist_of_sum_eq_zero281 below · depth 16 - Reduction of a point classifying a rigidified section twist
ModularCurve.JZeroNeronObjectAtP.LevelModel.nonempty_poincare_baseChange_pullbackAlong_iso_pointTwist_of_iso_rigidify_sectionTwist29 below · depth 16 - Rigidified section twists restrict to the geometric generic fibre
ModularCurve.JZeroNeronObjectAtP.LevelModel.nonempty_poincare_pullbackAlong_iso_pointTwist_of_iso_rigidify_sectionTwist29 below · depth 16 - Poincaré pullback at a degree-zero class is the point twist
ModularCurve.JZeroNeronObjectAtP.LevelModel.nonempty_poincare_pullbackAlong_pts_pic0Mk_iso_pointTwist15 below · depth 16 - Level-one glued class of an inertial displacement is a node unit
ModularCurve.PlaceSpecialization.exists_goodRep_gluedMk_eq_nodeUnit_smul_single_sub_self_levelOne1,086 below · depth 16 - Moving lemma for degree-zero classes at level 1· q
ModularCurve.PlaceSpecialization.exists_rep_reduce_notMem_of_moving_of_disjoint_levelOne932 below · depth 16 - First reduction at q commutes with T_ℓ, ℓ ≠ q
ModularCurve.PlaceSpecialization.mapDomain_reduceFst_heckeDivBar_eq_heckeDivFibre_mapDomain_reduceFst_of_ne278 below · depth 16 - Good admissible representative of σ V-V at a wide node
ModularCurve.PlaceSpecialization.LevelOneProlongationPair.exists_goodRep_admissible_smul_single_sub_self_of_eq_zero_or_eq1,025 below · depth 17 - Good admissible representative of σ V-V at a supersingular node
ModularCurve.PlaceSpecialization.LevelOneProlongationPair.exists_goodRep_admissible_smul_single_sub_self_of_ne_zero_of_ne913 below · depth 17 - Moving representatives of J₀(q)-classes off a finite place set
ModularCurve.PlaceSpecialization.LevelOneProlongationPair.exists_rep_redFst_redSnd_notMem_of_forall_notMem_ssPlaces591 below · depth 17 - First-sheet divisor law at ordinary affine φ²-fixed places
ModularCurve.PlaceSpecialization.ProlongationTuple.mapDomain_reduceFst_filter_sheetOne_eq_ord_residueFst_residueField1,889 below · depth 17 - Second-sheet divisor law at ordinary affine φ²-fixed places
ModularCurve.PlaceSpecialization.ProlongationTuple.mapDomain_reduceSnd_filter_sheetTwo_eq_ord_residueSnd_residueField1,890 below · depth 17 - Inertia-stable representatives of J₀(q)^{I_A} avoiding a finite place set
ModularCurve.PlaceSpecialization.LevelOneProlongationPair.exists_inertiaStable_rep_redFst_redSnd_notMem_of_forall_notMem_ssPlaces702 below · depth 18 - One-point moving lemma on X₀(q) at level one
ModularCurve.PlaceSpecialization.LevelOneProlongationPair.exists_ord_eq_one_forall_redFst_redSnd_notMem590 below · depth 18 - Common unit with simple pole over an ordinary Frobenius-fixed place
ModularCurve.PlaceSpecialization.ProlongationTuple.exists_commonUnit_pole_of_reduceFst_fixed_ordinary_residueField1,852 below · depth 18 - Two-level degeneracy glue for glued specialisations at q'
ModularCurve.PlaceSpecialization.gluedSpecialization_twoLevel_degeneracyGlue_of_isModel_placeWidthChar_restrictAlong1,917 below · depth 18 - One witness package for the semistable specialisation of J₀(Nq)
ModularCurve.exists_placeSpecialization_prolongationTuple_width_comp_sp_gluedSpecialization_placeWidthChar3,321 below · depth 18 - Frobenius and Uₚ on the toric part of J₀(N₀p)[pⁿ]
ModularCurve.jZeroNeronObjectAtP_smul_mem_toricPts_and_heckeGen_smul_eq_of_isFrobeniusAt_of_bridge1,998 below · depth 18 - Inertia-equivariant one-point moving lemma on X₀(q)
ModularCurve.PlaceSpecialization.LevelOneProlongationPair.exists_ord_eq_one_forall_redFst_redSnd_notMem_forall_inertia_smul_eq_residueField693 below · depth 19 - Frobenius and Uₚ on prime-to-p toric torsion
ModularCurve.jZeroNeronObjectAtP_smul_mem_toricPts_and_heckeGen_smul_eq_and_smul_heckeGen_eq_of_isFrobeniusAt_of_ne1,993 below · depth 19 - Prime-to-q inertia-invariant classes with equal glued specialisation coincide
ModularCurve.PlaceSpecialization.eq_of_primeToTorsion_of_componentMap_eq_zero_of_gluedSpecialization_eq1,054 below · depth 20 - Hecke transport of node units on the glued fibre at q
ModularCurve.PlaceSpecialization.exists_matrix_gluedSpecialization_nodeUnit_heckeGen_of_ne_of_isModel1,780 below · depth 21 - Genus-zero transport of glued specialisation data along a node-stable automorphism
ModularCurve.PlaceSpecialization.exists_isNodeStable_isGoodClass_iff_isGluedSpecialization_glueMap_of_not_genusFF_pos1,681 below · depth 22 - Integral node matrix for T_ℓ, ℓ≠ q, on glued specialisations
ModularCurve.PlaceSpecialization.exists_matrix_gluedSpecialization_nodeUnit_heckeGen_of_ne_of_isModel_of_prolongation_of_regularityLaw_nodeValueLaw986 below · depth 22 - Node-unit Poincaré bundle puts a special-fibre class in the toric part
ModularCurve.JHNeronObjectAtP.ptsSp_symm_schemeHomOverComp_mem_range_nodeUnit_of_isNodeUnitModule_poincare_pullbackAlong1,672 below · depth 26 - Weight-two cusp forms give differentials regular off supersingular places
CuspForm.exists_forall_isRegularAt_of_not_mem_ssPlacesQExp_diffQExp_eq_intSeriesC_of_isIntegralQExp_residueField1,316 below · depth 30 - Chart-local presentation of η gives regularity after reduction
ModularCurve.XHDRModelAtP.isRegularAt_placeOfPoint_of_smul_eq_sum_smul_D_chartAlgFin_of_diffQExp_eq_intSeriesC424 below · depth 31 - Chart-local presentation gives regularity of the reduced differential
ModularCurve.XHDRModelAtP.isRegularAt_placeOfPoint_of_smul_eq_sum_smul_D_chartAlgInf_of_diffQExp_eq_intSeriesC423 below · depth 31