Definitions/Def_ValuationSubring_ReduceAt.lean
Residue field as and the reduction map reduceAt
Throughout, L is a field and A a valuation subring of L; A.LiesOverPrime q means that the image of q in L lies in A.nonunits, i.e. q is a non-unit of A, so that by charP_residueField_of_liesOverPrime_def the residue field \kappa(A) = ResidueField A has characteristic q. Two groups of facts precede the main construction. First, field-theoretic ones: if L is algebraically closed then \kappa(A) is algebraically closed (registered as an instance, proved by lifting a monic irreducible polynomial to A[X], finding a root in L, and using that a valuation ring is integrally closed); under the same hypothesis, for q prime with A lying over q, the q-power map on \kappa(A) is bijective; if moreover L has characteristic zero and is algebraic over \mathbb{Q}, then every residue \mathrm{res}_A(a), a \in A, is algebraic over \mathbb{Z}/\ell, whence \kappa(A) is an algebraic closure of \mathbb{Z}/\ell (isAlgClosure_residueField). Second, integrality facts: for \ell prime with A lying over \ell and n \in \mathbb{Z} with \ell \nmid n, the image of n in A is a unit and its residue is non-zero; consequently A lies over no prime q \neq \ell. A side lemma records that over a nontrivial ring of prime characteristic every element is algebraic over \mathbb{Z}, the witness being \ell X.
From isAlgClosure_residueField one obtains a ring equivalence residueFieldEquivAlgebraicClosure : ResidueField A ≃+* AlgebraicClosure (ZMod ℓ), chosen via the isomorphism of any two algebraic closures and therefore not canonical. The main definition reduceAt A hA : L → AlgebraicClosure (ZMod ℓ) sends a \in A to the image of \mathrm{res}_A(a) under this equivalence and sends a \notin A to 0. It is thus not a ring homomorphism: the accompanying lemmas give \mathrm{reduceAt}(0)=0, \mathrm{reduceAt}(1)=1, additivity and multiplicativity only for arguments in A, surjectivity, the vanishing criterion \mathrm{reduceAt}(a)=0 \iff a lies in the maximal ideal of A (for a \in A), compatibility with integer and natural-number casts, \mathrm{reduceAt}(\ell)=0, and non-vanishing on integers prime to \ell.
Relation to Mathlib
Mathlib supplies ValuationSubring, IsLocalRing.ResidueField, IsAlgClosure and AlgebraicClosure; the predicate LiesOverPrime and the total reduction function reduceAt (defined to be 0 off A) are the project's own, as is the instance that the residue field of a valuation subring of an algebraically closed field is algebraically closed.
Where it is used
The function reduceAt A hA is the scalar-level reduction map at a place of \overline{\mathbb{Q}} above \ell used in the specialisation of moduli coordinates and of points of elliptic curves to the closed fibre, and hence in the comparison of inertia and Frobenius actions entering the study of the mod-p representation attached to a Frey package.
References
- A. J. Engler and A. Prestel, Valued Fields, Springer Monographs in Mathematics, Springer, 2005
- O. Zariski and P. Samuel, Commutative Algebra II, Van Nostrand, 1960
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 305 lines
- 23 declarations
- used in the statements of 172 theorems and imported by 262 proofs
- imports 1 definition modules
Source file: Definitions/Def_ValuationSubring_ReduceAt.lean
Imported by
- no other definition module
Declarations
- instance
ValuationSubring.instIsAlgClosedResidueField - theorem
ValuationSubring.pow_residueChar_bijective - theorem
ValuationSubring.intCast_isUnit_of_not_dvd - theorem
ValuationSubring.residue_intCast_ne_zero - theorem
ValuationSubring.gate_not_liesOverPrime_of_ne - theorem
ValuationSubring.isAlgebraic_residue - theorem
ValuationSubring.gate_isAlgebraic_int_vacuous_of_charP - theorem
ValuationSubring.isAlgClosure_residueField - def
ValuationSubring.residueFieldEquivAlgebraicClosure - def
ValuationSubring.reduceAt - theorem
ValuationSubring.reduceAt_of_mem - theorem
ValuationSubring.reduceAt_of_notMem - theorem
ValuationSubring.reduceAt_coe - theorem
ValuationSubring.reduceAt_zero - theorem
ValuationSubring.reduceAt_one - theorem
ValuationSubring.reduceAt_add - theorem
ValuationSubring.reduceAt_mul - theorem
ValuationSubring.reduceAt_surjective - theorem
ValuationSubring.reduceAt_eq_zero_iff_of_mem - theorem
ValuationSubring.reduceAt_intCast - theorem
ValuationSubring.reduceAt_natCast - theorem
ValuationSubring.reduceAt_residueChar - theorem
ValuationSubring.reduceAt_intCast_ne_zero
Source
import Mathlib import Definitions.Def_WeierstrassCurve_ReductionMap set_option autoImplicit false open IsLocalRing Polynomial namespace ValuationSubring section ResidueAlgClosed variable {L : Type*} [Field L] (A : ValuationSubring L) instance instIsAlgClosedResidueField [IsAlgClosed L] : IsAlgClosed (ResidueField A) := by refine IsAlgClosed.of_exists_root _ (fun f hf_monic hf_irr => ?_) have hf_lifts : f ∈ lifts (residue A) := by rw [lifts_iff_coeff_lifts] exact fun n => residue_surjective (f.coeff n) obtain ⟨g, hg_map, -, hg_monic⟩ := lifts_and_degree_eq_and_monic hf_lifts hf_monic have hgL_monic : (g.map (algebraMap A L)).Monic := hg_monic.map _ have hgL_deg : (g.map (algebraMap A L)).degree ≠ 0 := by rw [hg_monic.degree_map] intro h0 have hg_nat : g.natDegree = 0 := natDegree_eq_zero_iff_degree_le_zero.mpr (le_of_eq h0) have hf_deg : f.natDegree = 0 := by rw [← hg_map, hg_monic.natDegree_map] exact hg_nat have hf1 : f = 1 := (hf_monic.natDegree_eq_zero).mp hf_deg exact hf_irr.not_isUnit (by rw [hf1]; exact isUnit_one) obtain ⟨α, hα⟩ := IsAlgClosed.exists_root _ hgL_deg have hα_int : IsIntegral A α := by refine ⟨g, hg_monic, ?_⟩ rwa [IsRoot.def, eval_map] at hα obtain ⟨a, ha⟩ := IsIntegrallyClosed.isIntegral_iff.mp hα_int refine ⟨residue A a, ?_⟩ have hga : g.eval a = 0 := by have : algebraMap A L (g.eval a) = 0 := by have hcomm : algebraMap A L (g.eval a) = (g.map (algebraMap A L)).eval α := by rw [← ha, eval_map, eval₂_hom] rw [hcomm] exact hα exact (map_eq_zero_iff _ Subtype.coe_injective).mp this have : f.eval (residue A a) = residue A (g.eval a) := by rw [← hg_map, eval_map, eval₂_hom] rw [this, hga, map_zero] variable {A} theorem pow_residueChar_bijective [IsAlgClosed L] {q : ℕ} (hq : q.Prime) (hA : A.LiesOverPrime q) : Function.Bijective (fun x : ResidueField A => x ^ q) := by haveI : CharP (ResidueField A) q := charP_residueField_of_liesOverPrime_def hq hA haveI : Fact q.Prime := ⟨hq⟩ constructor · intro x y hxy have hxy' : x ^ q = y ^ q := hxy have hsub : (x - y) ^ q = 0 := by rw [sub_pow_char, hxy', sub_self] have := pow_eq_zero_iff hq.ne_zero |>.mp hsub exact sub_eq_zero.mp this · intro x obtain ⟨y, hy⟩ := IsAlgClosed.exists_pow_nat_eq x hq.pos exact ⟨y, hy⟩ end ResidueAlgClosed variable {L : Type*} [Field L] section IntegerUnits variable {A : ValuationSubring L} {ℓ : ℕ} theorem intCast_isUnit_of_not_dvd (hℓ : ℓ.Prime) (hA : A.LiesOverPrime ℓ) {n : ℤ} (hn : ¬(ℓ : ℤ) ∣ n) : IsUnit ((n : ℤ) : A) := by by_contra hunit have hnmem : ((n : ℤ) : A) ∈ maximalIdeal A := by rw [IsLocalRing.mem_maximalIdeal] exact hunit have hℓmem : ((ℓ : ℕ) : A) ∈ maximalIdeal A := natCast_mem_maximalIdeal_of_liesOverPrime hA obtain ⟨u, v, huv⟩ := (Nat.prime_iff_prime_int.mp hℓ).coprime_iff_not_dvd.mpr hn have h1 : (1 : A) ∈ maximalIdeal A := by have h := congrArg (fun z : ℤ => ((z : ℤ) : A)) huv simp only [Int.cast_add, Int.cast_mul, Int.cast_one, Int.cast_natCast] at h rw [← h] exact Ideal.add_mem _ (Ideal.mul_mem_left _ _ hℓmem) (Ideal.mul_mem_left _ _ hnmem) exact (maximalIdeal.isMaximal A).ne_top ((Ideal.eq_top_iff_one _).mpr h1) theorem residue_intCast_ne_zero (hℓ : ℓ.Prime) (hA : A.LiesOverPrime ℓ) {n : ℤ} (hn : ¬(ℓ : ℤ) ∣ n) : residue A ((n : ℤ) : A) ≠ 0 := (residue_ne_zero_iff_isUnit _).mpr (intCast_isUnit_of_not_dvd hℓ hA hn) theorem gate_not_liesOverPrime_of_ne (hℓ : ℓ.Prime) (hA : A.LiesOverPrime ℓ) {q : ℕ} (hq : q.Prime) (hne : q ≠ ℓ) : ¬A.LiesOverPrime q := by intro hq' have hqmem : ((q : ℕ) : A) ∈ maximalIdeal A := natCast_mem_maximalIdeal_of_liesOverPrime hq' have hqdvd : ¬(ℓ : ℤ) ∣ (q : ℤ) := by intro h rcases (Nat.prime_dvd_prime_iff_eq hℓ hq).mp (Int.natCast_dvd_natCast.mp h) with rfl exact hne rfl have := intCast_isUnit_of_not_dvd hℓ hA hqdvd rw [IsLocalRing.mem_maximalIdeal] at hqmem exact hqmem (by exact_mod_cast this) end IntegerUnits section Algebraicity variable (A : ValuationSubring L) {ℓ : ℕ} theorem isAlgebraic_residue [CharZero L] [Algebra ℚ L] [Algebra.IsAlgebraic ℚ L] (hℓ : ℓ.Prime) [Algebra (ZMod ℓ) (ResidueField A)] (a : A) : IsAlgebraic (ZMod ℓ) (residue A a) := by obtain ⟨p, hp0, hpa⟩ := Algebra.IsAlgebraic.isAlgebraic (R := ℚ) (a : L) set P₀ : ℤ[X] := IsLocalization.integerNormalization (nonZeroDivisors ℤ) p with hP₀def have hP₀a : aeval (a : L) P₀ = 0 := IsLocalization.integerNormalization_aeval_eq_zero (nonZeroDivisors ℤ) p hpa have hP₀0 : P₀ ≠ 0 := fun h => hp0 ((IsLocalization.integerNormalization_eq_zero_iff le_rfl p).mp h) set P : ℤ[X] := P₀.primPart with hPdef have hPa : aeval (a : L) P = 0 := aeval_primPart_eq_zero hP₀0 hP₀a have hPprim : P.IsPrimitive := P₀.isPrimitive_primPart have hP0 : P ≠ 0 := P₀.primPart_ne_zero have hcoeff : ∃ i, ¬(ℓ : ℤ) ∣ P.coeff i := by by_contra h simp only [not_exists, not_not] at h have hu : IsUnit ((ℓ : ℤ)) := hPprim _ ((C_dvd_iff_dvd_coeff _ _).mpr h) rw [Int.isUnit_iff] at hu have h2 := hℓ.two_le omega have hPaA : aeval a P = 0 := by have hmap : algebraMap A L (aeval a P) = 0 := by rw [← Polynomial.aeval_algebraMap_apply] exact hPa exact (map_eq_zero_iff _ Subtype.coe_injective).mp hmap have hPres : aeval (residue A a) P = 0 := by have hcomm : aeval (residue A a) P = (residue A) (aeval a P) := Polynomial.aeval_algHom_apply (RingHom.toIntAlgHom (residue A)) a P rw [hcomm, hPaA, map_zero] refine ⟨P.map (algebraMap ℤ (ZMod ℓ)), ?_, ?_⟩ · obtain ⟨i, hi⟩ := hcoeff intro h0 apply hi have hzero : (P.map (algebraMap ℤ (ZMod ℓ))).coeff i = 0 := by rw [h0]; simp rw [coeff_map] at hzero exact (ZMod.intCast_zmod_eq_zero_iff_dvd _ _).mp hzero · rw [aeval_def, eval₂_map, show (algebraMap (ZMod ℓ) (ResidueField A)).comp (algebraMap ℤ (ZMod ℓ)) = algebraMap ℤ (ResidueField A) from RingHom.ext_int _ _, ← aeval_def] exact hPres theorem gate_isAlgebraic_int_vacuous_of_charP {R : Type*} [CommRing R] [Nontrivial R] {ℓ : ℕ} (hℓ : ℓ.Prime) [CharP R ℓ] (x : R) : IsAlgebraic ℤ x := by refine ⟨C (ℓ : ℤ) * X, ?_, ?_⟩ · intro h have hc := congrArg (fun q : ℤ[X] => q.coeff 1) h simp only [coeff_C_mul, coeff_X_one, mul_one, coeff_zero] at hc have h2 := hℓ.two_le omega · simp end Algebraicity section Identification variable (A : ValuationSubring L) {ℓ : ℕ} theorem isAlgClosure_residueField [IsAlgClosed L] [CharZero L] [Algebra ℚ L] [Algebra.IsAlgebraic ℚ L] [Fact ℓ.Prime] [Algebra (ZMod ℓ) (ResidueField A)] : IsAlgClosure (ZMod ℓ) (ResidueField A) := by refine ⟨inferInstance, ⟨fun x => ?_⟩⟩ obtain ⟨a, rfl⟩ := residue_surjective (R := A) x exact isAlgebraic_residue A Fact.out a noncomputable def residueFieldEquivAlgebraicClosure [IsAlgClosed L] [CharZero L] [Algebra ℚ L] [Algebra.IsAlgebraic ℚ L] [Fact ℓ.Prime] (hA : A.LiesOverPrime ℓ) : ResidueField A ≃+* AlgebraicClosure (ZMod ℓ) := by haveI hchar : CharP (ResidueField A) ℓ := charP_residueField_of_liesOverPrime_def Fact.out hA letI halg : Algebra (ZMod ℓ) (ResidueField A) := ZMod.algebra (ResidueField A) ℓ haveI htf : Module.IsTorsionFree (ZMod ℓ) (ResidueField A) := by refine Module.IsTorsionFree.of_smul_eq_zero (fun r m h => ?_) rw [Algebra.smul_def] at h rcases mul_eq_zero.mp h with h' | h' · exact Or.inl ((map_eq_zero_iff _ (algebraMap (ZMod ℓ) (ResidueField A)).injective).mp h') · exact Or.inr h' haveI hcl : IsAlgClosure (ZMod ℓ) (ResidueField A) := isAlgClosure_residueField A exact (IsAlgClosure.equiv (ZMod ℓ) (ResidueField A) (AlgebraicClosure (ZMod ℓ))).toRingEquiv end Identification section ReduceAt variable {ℓ : ℕ} [Fact ℓ.Prime] variable (A : ValuationSubring L) [IsAlgClosed L] [CharZero L] [Algebra ℚ L] [Algebra.IsAlgebraic ℚ L] variable (hA : A.LiesOverPrime ℓ) open Classical in noncomputable def reduceAt (a : L) : AlgebraicClosure (ZMod ℓ) := if h : a ∈ A then residueFieldEquivAlgebraicClosure A hA (residue A ⟨a, h⟩) else 0 variable {A hA} theorem reduceAt_of_mem {a : L} (h : a ∈ A) : reduceAt A hA a = residueFieldEquivAlgebraicClosure A hA (residue A ⟨a, h⟩) := dif_pos h theorem reduceAt_of_notMem {a : L} (h : a ∉ A) : reduceAt A hA a = 0 := dif_neg h @[simp] theorem reduceAt_coe (a : A) : reduceAt A hA (a : L) = residueFieldEquivAlgebraicClosure A hA (residue A a) := reduceAt_of_mem a.2 @[simp] theorem reduceAt_zero : reduceAt A hA (0 : L) = 0 := by have h := reduceAt_coe (A := A) (hA := hA) (0 : A) simpa using h @[simp] theorem reduceAt_one : reduceAt A hA (1 : L) = 1 := by have h := reduceAt_coe (A := A) (hA := hA) (1 : A) simpa using h theorem reduceAt_add {a b : L} (ha : a ∈ A) (hb : b ∈ A) : reduceAt A hA (a + b) = reduceAt A hA a + reduceAt A hA b := by rw [reduceAt_of_mem ha, reduceAt_of_mem hb, reduceAt_of_mem (A.add_mem _ _ ha hb), show (⟨a + b, A.add_mem _ _ ha hb⟩ : A) = ⟨a, ha⟩ + ⟨b, hb⟩ from rfl, map_add, map_add] theorem reduceAt_mul {a b : L} (ha : a ∈ A) (hb : b ∈ A) : reduceAt A hA (a * b) = reduceAt A hA a * reduceAt A hA b := by rw [reduceAt_of_mem ha, reduceAt_of_mem hb, reduceAt_of_mem (A.mul_mem _ _ ha hb), show (⟨a * b, A.mul_mem _ _ ha hb⟩ : A) = ⟨a, ha⟩ * ⟨b, hb⟩ from rfl, map_mul, map_mul] theorem reduceAt_surjective : Function.Surjective (reduceAt A hA) := by intro y obtain ⟨a, ha⟩ := residue_surjective (R := A) ((residueFieldEquivAlgebraicClosure A hA).symm y) exact ⟨(a : L), by rw [reduceAt_coe, ha, RingEquiv.apply_symm_apply]⟩ theorem reduceAt_eq_zero_iff_of_mem {a : L} (h : a ∈ A) : reduceAt A hA a = 0 ↔ (⟨a, h⟩ : A) ∈ maximalIdeal A := by rw [reduceAt_of_mem h, map_eq_zero_iff _ (residueFieldEquivAlgebraicClosure A hA).injective] exact residue_eq_zero_iff _ @[simp] theorem reduceAt_intCast (n : ℤ) : reduceAt A hA ((n : ℤ) : L) = ((n : ℤ) : AlgebraicClosure (ZMod ℓ)) := by have hmem : ((n : ℤ) : L) = (((n : ℤ) : A) : L) := by norm_cast rw [hmem, reduceAt_coe, map_intCast (residue A) n] exact map_intCast (residueFieldEquivAlgebraicClosure A hA) n @[simp] theorem reduceAt_natCast (n : ℕ) : reduceAt A hA ((n : ℕ) : L) = ((n : ℕ) : AlgebraicClosure (ZMod ℓ)) := by have h := reduceAt_intCast (A := A) (hA := hA) (n : ℤ) push_cast at h exact h theorem reduceAt_residueChar : reduceAt A hA ((ℓ : ℕ) : L) = 0 := by rw [reduceAt_natCast] exact CharP.cast_eq_zero (AlgebraicClosure (ZMod ℓ)) ℓ theorem reduceAt_intCast_ne_zero {n : ℤ} (hn : ¬(ℓ : ℤ) ∣ n) : reduceAt A hA ((n : ℤ) : L) ≠ 0 := by rw [reduceAt_intCast] intro h apply hn rw [show ((n : ℤ) : AlgebraicClosure (ZMod ℓ)) = algebraMap (ZMod ℓ) (AlgebraicClosure (ZMod ℓ)) ((n : ℤ) : ZMod ℓ) from (map_intCast _ n).symm] at h exact (ZMod.intCast_zmod_eq_zero_iff_dvd n ℓ).mp ((map_eq_zero_iff _ (algebraMap (ZMod ℓ) (AlgebraicClosure (ZMod ℓ))).injective).mp h) end ReduceAt end ValuationSubring
Statements phrased using this module (172)
- Good-reduction specialisation datum for J₀(N), N prime
ModularCurve.CharPModel.FibreModel.exists_jZeroGoodReductionSpecialization_sp_eq_spPic0_of_prime1,099 below · depth 9 - Packaging the fibre-model specialisation as a place-specialisation packet
ModularCurve.CharPModel.FibreModel.exists_placeSpecialization_spPic0_eq_of_prime998 below · depth 9 - Hecke descent along the fibre specialisation, Eichler–Shimura at ℓ
ModularCurve.CharPModel.FibreModel.exists_heckeDescentFamily_spPic0_and_match_of_prime1,032 below · depth 10 - Widths, component map and glued specialisation for J₀(Nq) at q
ModularCurve.exists_width_comp_sp3,537 below · depth 10 - Specialisation of J₀(N) intertwines T_q with the special-fibre operator
ModularCurve.CharPModel.FibreModel.heckePic0Fibre_spPic0_eq_spPic0_heckeGen_smul963 below · depth 11 - 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 - Existence of a model prolongation tuple at a place above q
ModularCurve.exists_placeSpecialization_prolongationTuple_isModel_regularityLaw_nodeValueLaw_orderLawFixed1,659 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 - Kind-respecting good admissible representative for T_ℓ on J₀(Nq)
ModularCurve.PlaceSpecialization.exists_good_admissible_rep_heckeDivBar_good_admissible_kindResp_of_isModel930 below · depth 12 - Good admissible representatives stable under the q-correspondence
ModularCurve.PlaceSpecialization.exists_good_admissible_rep_heckeDivBar_self_good_admissible284 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 - Hecke propagation of glued vanishing away from q
ModularCurve.PlaceSpecialization.toPic0Pair_gluedSpecialization_heckeGen_dvd_smul_eq_zero_of_eq_zero_of_isModel1,171 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 - Strict points reduce to reduceFst and reduceSnd
ModularCurve.DRModelPackageLevel.compat_reduceFst_reduceSnd_of_sp_eq_spPlace1,848 below · depth 13 - 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 - Extension to an A-point of relative Pic⁰ versus good classes
ModularCurve.DRModelPackageLevel.extendsToPlace_pts_iff_isGoodClass3,053 below · depth 13 - Inertia displacements σ x-x extend over the place
ModularCurve.DRModelPackageLevel.extendsToPlace_pts_smul_sub2,607 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 - Moving good classes off a finite set of reductions
ModularCurve.PlaceSpecialization.ProlongationTuple.exists_good_admissible_rep_reduce_notMem_of_isGoodClass_of_isModel925 below · depth 13 - Hecke equivariance of the depth functional in the component group
ModularCurve.PlaceSpecialization.componentGroupProj_depthDual_add_eq_heckeComponentAction_of_heckeGen_smul2,247 below · depth 13 - Inertial displacements at non-strict supersingular places give node units
ModularCurve.PlaceSpecialization.exists_gluedMk_eq_nodeUnit_of_isGoodDiv_of_admissible_of_pic0Mk_eq_smul_single_sub_self_of_isModel242 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 - Residue field of a place of ℚ̄ above q is algebraic over mathbb F_q
ValuationSubring.exists_pow_pow_eq_self_residueField_of_liesOverPrime0 below · depth 13 - Unique A-section of the model through a given place
ModularCurve.DRModelPackageLevel.existsUnique_section_comp_eq_pointEquivPlace_symm0 below · depth 14 - Closure under addition of points extending to a place
ModularCurve.DRModelPackageLevel.extendsToPlace_pts_add0 below · depth 14 - Inertia displacement at a non-crossing point extends to A
ModularCurve.DRModelPackageLevel.extendsToPlace_pts_mk_smul_single_sub_single_of_not_mem_range_comp_inter1,146 below · depth 14 - Negation preserves extendability of Picard points to a place
ModularCurve.DRModelPackageLevel.extendsToPlace_pts_neg0 below · depth 14 - Good classes extend to A-points of relative Pic⁰
ModularCurve.DRModelPackageLevel.extendsToPlace_pts_of_isGoodClass1,152 below · depth 14 - Extension over A implies good class for P
ModularCurve.DRModelPackageLevel.isGoodClass_of_extendsToPlace_pts3,008 below · depth 14 - Crossing special point: non-strict place, supersingular first reduction
ModularCurve.DRModelPackageLevel.not_isStrict_and_reduceFst_mem_of_range_subset_range_comp_inter1,910 below · depth 14 - Strict places reduce to reduceFst, reduceSnd on the Deligne–Rapoport model
ModularCurve.DRModelPackageLevel.placeOfPoint_eq_reduce_of_isModel_of_orderLawFixed1,896 below · depth 14 - Abelian coordinates of the reduction equal the glued specialisation pair
ModularCurve.DRModelPackageLevel.ptsSp_symm_abq_reduction_eq_toPic0Pair_of_isGluedSpecialization1,470 below · depth 14 - Inertia fixes the reduction of the section attached to a place
ModularCurve.DRModelPackageLevel.residue_comp_section_smul_eq_of_mem_inertia1 below · depth 14 - Norm along φ_κ acts as Frobenius pushforward on Pic⁰
ModularCurve.JZeroNeronObjectAtP.LevelModel.symm_fibreMap_frobeniusNormHom_eq_frobeniusPushforwardModL_symm1,181 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 - Envelope and local equation for an inertial displacement at a node
ModularCurve.PlaceSpecialization.ProlongationTuple.exists_envelope_localEquation_smul_single_sub_single947 below · depth 14 - One-point moving on X₀(Nq) into the strict locus
ModularCurve.PlaceSpecialization.ProlongationTuple.exists_ord_eq_one_forall_isStrict_reduceFst_reduceSnd_notMem922 below · depth 14 - Hecke transport of the depth functional: annulus case, q≥ 5
ModularCurve.PlaceSpecialization.componentGroupProj_depthDual_add_eq_heckeComponentAction_of_heckeGen_smul_of_five_le_of_not_isGoodDiv2,172 below · depth 14 - Hecke transport of depth functionals in component groups, q<5
ModularCurve.PlaceSpecialization.componentGroupProj_depthDual_add_eq_heckeComponentAction_of_heckeGen_smul_of_lt_five2,237 below · depth 14 - Depth functional of a principal divisor lies in the Gram image
ModularCurve.PlaceSpecialization.depthDual_add_mem_range_gramMap_of_isPrincipal1,553 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 - Regular prolongation at level N reducing j and j_N
ModularCurve.PlaceSpecialization.exists_regularProlongation_sp_jq_jqN330 below · depth 14 - Moving the strict part of a divisor off T₀, kind-respecting
ModularCurve.PlaceSpecialization.exists_rep_eq_off_strict_reduce_notMem_heckeDivBar_strictPart_good_kindResp_of_isModel929 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 - Level-one place specialisation over an arbitrary residue field
ModularCurve.placeSpecialization_exists_level_one_of_surjective227 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 - Bidegree-zero section twists give A-points of relative Pic⁰
ModularCurve.DRModelPackageLevel.exists_schemeHomOver_poincare_pullbackAlong_iso_rigidify_sectionTwist_of_sum_eq_zero1,134 below · depth 15 - Strict places reduce onto one Deligne–Rapoport component, off the other
ModularCurve.DRModelPackageLevel.exists_swap_forall_isStrict_range_subset_range_comp3 below · depth 15 - Geometric generic points lie in the smooth locus
ModularCurve.DRModelPackageLevel.mem_smoothLocus_of_mem_range_fst_geomGeneric0 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 - Frobenius conjugation and fibre points of the Igusa model
ModularCurve.JZeroNeronObjectAtP.LevelModel.fibrePt_eq_fibrePt_comp_frobenius_of_isFrobeniusAt86 below · depth 15 - Special fibre of an A-point equals reduction mod λ
ModularCurve.JZeroNeronObjectAtP.LevelModel.ptsSp_symm_schemeHomOverComp_resPt_eq_reductionModL741 below · depth 15 - Hecke equivariance of the depth class, good case
ModularCurve.PlaceSpecialization.componentGroupProj_depthDual_add_eq_heckeComponentAction_of_heckeGen_smul_of_isGoodDiv2,025 below · depth 15 - Hecke transport of the depth functional: annulus case, q<5
ModularCurve.PlaceSpecialization.componentGroupProj_depthDual_add_eq_heckeComponentAction_of_heckeGen_smul_of_lt_five_of_not_isGoodDiv2,235 below · depth 15 - Hecke neighbours inherit strictness and kind off a finite set
ModularCurve.PlaceSpecialization.exists_finset_isStrict_and_kind_of_mem_support_heckeDivBar_single_of_reduce_notMem223 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 - Cross-power law for node depths under the ℓ-degeneracy maps
ModularCurve.PlaceSpecialization.exists_reduceFst_eq_and_yDepth_restrictAlong_heckeAlphaBar_pow_width_eq_of_ne_of_not_dvd1,950 below · depth 15 - First reduction intertwines T_ℓ with the fibre correspondence
ModularCurve.PlaceSpecialization.mapDomain_reduceFst_heckeDivBar_eq_heckeDivFibre_mapDomain_reduceFst_of_ne_of_isModel_of_orderLawFixed842 below · depth 15 - First reduction of the Hecke divisor of one place
ModularCurve.PlaceSpecialization.mapDomain_reduceFst_heckeDivBar_single_apply_eq_correspondence_of_ne346 below · depth 15 - Supersingularity propagates along the ℓ-Hecke correspondence, ℓ ≠ q
ModularCurve.PlaceSpecialization.reduceFst_mem_ssPlaces_of_mem_support_heckeDivBar_single_of_ne345 below · depth 15 - Cartier anchors for toric monodromy, with witnesses identified
CerednikDrinfeld.exists_cartierAnchors_degeneracyDuality_jZero_ssPlaces_correspondence_arithFrobC_restrictAlong_placeWidthChar3,361 below · depth 16 - A fibre model with cusp chart yields a place-specialization packet
ModularCurve.CharPModel.FibreModel.exists_placeSpecialization_spPic0_eq998 below · depth 16 - 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 - 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 - Bidegree-zero section twists are algebraically trivial on geometric fibres
ModularCurve.DRModelPackageLevel.isAlgEquivZero_fibreAt_sectionTwist_of_closedPoint_mem_range1,129 below · depth 16 - Degree-zero section twists vanish away from the closed point
ModularCurve.DRModelPackageLevel.isAlgEquivZero_fibreAt_sectionTwist_of_closedPoint_notMem_range1,043 below · depth 16 - Invertibility of section twists at smooth A-points
ModularCurve.DRModelPackageLevel.isInvertible_sectionTwist16 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 - Vanishing divisor class trivialises a point twist on the special fibre
ModularCurve.DRModelPackageLevel.nonempty_pointTwist_comp0_iso_unit_of_pic0Mk_eq_zero629 below · depth 16 - Rigidified section twist restricted to the zeroth special-fibre component
ModularCurve.DRModelPackageLevel.nonempty_pullbackCurve_comp0_sectionTwist_iso854 below · depth 16 - Point twists of trivial divisor class are rigidly trivial
ModularCurve.DRModelPackageLevel.nonempty_rigidify_pointTwist_comp1_iso_unit_of_pic0Mk_eq_zero629 below · depth 16 - Restriction of the rigidified section twist to the second component
ModularCurve.DRModelPackageLevel.nonempty_rigidify_pullbackCurve_comp1_sectionTwist_iso854 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 - Depth dual of a principal divisor lies in the Gram image
ModularCurve.PlaceSpecialization.depthDual_add_mem_range_gramMap_of_isPrincipal_widthChar1,985 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 - Cross-power law for node depths along the level-ℓ Hecke roof
ModularCurve.PlaceSpecialization.exists_reduceFst_eq_and_yDepth_restrictAlong_heckeAlphaBar_pow_placeWidthChar_eq_of_ne_of_not_dvd1,949 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 - Place specialisation commutes with both degeneracy maps
ModularCurve.PlaceSpecialization.restrictAlong_heckeAlphaC_sp_and_restrictAlong_heckeBetaC_sp_eq_sp_restrictAlong_of_isModel933 below · depth 16 - Node depth along the degeneracy tower is a ramification power
ModularCurve.PlaceSpecialization.yDepth_restrictAlong_towerInclBar_eq_yDepth_pow_ramificationIndexAlong_heckeAlphaC1,296 below · depth 16 - Depth along the ℓ-substitution leg is a ramification power
ModularCurve.PlaceSpecialization.yDepth_restrictAlong_towerSubstBar_eq_yDepth_pow_ramificationIndexAlong_heckeBetaC985 below · depth 16 - Level-one place specialization over the residue field of A
ModularCurve.placeSpecialization_exists_level_one_residueField228 below · depth 16 - Two-level joint semistable specialisation with pinned Hecke transport
CerednikDrinfeld.exists_twoLevelSemistableSpecialization_jointConstruction_ssPlaces_heckeTransport_canonical_levelPrimeIntertwine_correspondence_arithFrobC_restrictAlong_placeWidthChar3,351 below · depth 17 - Bidegree-zero section twist: algebraic triviality on the special fibre
ModularCurve.DRModelPackageLevel.isAlgEquivZero_baseChange_rigidify_sectionTwist_residueField1,126 below · depth 17 - Degree-zero section twists on geometric fibres are algebraically equivalent to zero
ModularCurve.DRModelPackageLevel.isAlgEquivZero_fibreAt_sectionTwist_algebraicClosure1,040 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 - 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 - Specialisation commutes with degeneracy at fixed affine places
ModularCurve.PlaceSpecialization.sp_restrictAlong_eq_restrictAlong_sp_of_isModel_of_fixed_of_isAffineGeomPlace940 below · depth 17 - Node depth along the ℓ-degeneracy leg is a ramified power
ModularCurve.PlaceSpecialization.yDepth_restrictAlong_towerInclBar_eq_yDepth_pow_ramificationIndexAlong_heckeAlphaC_of_prime1,308 below · depth 17 - Node depth along the substitution degeneracy leg at ℓ≠ q
ModularCurve.PlaceSpecialization.yDepth_restrictAlong_towerSubstBar_eq_yDepth_pow_ramificationIndexAlong_heckeBetaC_of_prime985 below · depth 17 - Joint two-level semistable specialisation with widths and arithmetic Frobenius
CerednikDrinfeld.exists_twoLevelSemistableSpecialization_jointConstruction_ssPlaces_heckeTransport_correspondence_restrictAlong_degeneracyComp_placeWidthChar_frobArithFrobC3,338 below · depth 18 - 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 - 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 - Node pack at a supersingular place with no order-one j-difference
ModularCurve.PlaceSpecialization.ProlongationTuple.nodePack_residueField_of_not_ord_sub_pow_sq_eq_one_or1,764 below · depth 19 - Node pack at supersingular places over κ_A
ModularCurve.PlaceSpecialization.ProlongationTuple.nodePack_residueField_of_ord_sub_pow_sq_eq_one_or1,764 below · depth 19 - Good representatives whose support avoids a finite set of places
ModularCurve.PlaceSpecialization.exists_isGoodDiv_mem_admissible_mk_eq_reduce_notMem_nodePairsOfPlaces1,719 below · depth 19 - Degeneracy pushforward of good divisors and glue data
ModularCurve.PlaceSpecialization.isGoodDiv_pushforwardAlong_and_glueData_eq_of_isModel944 below · depth 19 - Two integral degeneracy embeddings of modular function fields
ModularCurve.exists_degeneracyPair_residueField132 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 - Saturation of the two node residues at a supersingular place
ModularCurve.PlaceSpecialization.ProlongationTuple.nodeResidue_saturated_of_sp_eq_spPlace_residueField1,762 below · depth 20 - 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 - Moving good classes off finite place sets: genus-zero case
ModularCurve.PlaceSpecialization.exists_isGoodDiv_mem_admissible_mk_eq_reduce_notMem_nodePairsOfPlaces_of_not_genusFF_pos1,713 below · depth 20
… and 22 more statements (search for the module name to find them).