Definitions/Def_Compat_Mathlib430.lean
Compatibility copies of Mathlib v4.30.0 declarations
This module contains no new mathematics: it re-declares, under fresh names, a handful of Mathlib v4.30.0 items that Mathlib v4.33.0 altered, so that statements written against the older library keep their meaning. Seven blocks are vendored verbatim (each citing its source lines). Block A gives Representation.ofMulActionFinsupp k G H, the representation of a monoid G on the free module H \to_0 k coming from an action of G on H, sending g to the push-forward of finitely supported functions along h \mapsto g\cdot h (Finsupp.lmapDomain), with the special cases leftRegularFinsupp (H=G) and diagonalFinsupp n (H = \mathrm{Fin}\,n \to G), the computation rules on single-point functions and, for G a group, the formula (g\cdot f)(h)=f(g^{-1}h); Block B's ofMulActionFinsuppEquiv identifies this with Mathlib's ofMulAction through the coefficient equivalence of the monoid algebra. Block C lifts all of this to the category Rep k G, adding ofMulActionFinsuppIso and the morphism leftRegularHomFinsupp A x from the left regular representation determined by x \in A, with \mathrm{single}(g,r) \mapsto r\cdot \rho_A(g)x. Block D restores the group structure on AddAut A (composition as multiplication, AddEquiv.symm as inverse) with its thirteen computation lemmas under primed names, the monoid homomorphism G \to \mathrm{AddAut}\,A attached to a distributive action, the unit action AddAut.mulLeft' on a semiring, and the tautological faithful DistribMulAction (AddAut A) A. Block E copies the predicates on a sequence W:\mathbb{Z}\to R: IsEllSequence' is the three-variable identity W(m+n)W(m-n)W(r)^2 = W(m+r)W(m-r)W(n)^2 - W(n+r)W(n-r)W(m)^2, IsDivSequence' is divisibility W(m)\mid W(n) whenever m\mid n for naturals, IsEllDivSequence' their conjunction; the identity satisfies both, and each is stable under scaling by x \in R. Block F reinstates the notation α ^+ M for FixedPoints.addSubgroup M α. Block G restates, for a finite group G acting as a Galois group on R \subseteq S, the counting lemmas with a separability hypothesis on the residue extension (R/\mathfrak p) \subseteq (S/\mathfrak P) rather than perfectness: the stabiliser of \mathfrak P has order |\,\mathrm{inertia}\,| \cdot [S/\mathfrak P : R/\mathfrak p], the product of the number of primes over \mathfrak p, the inertia order and that degree is |G|, the inertia order equals e(\mathfrak p), and the stabiliser order equals e\cdot f.
Relation to Mathlib
Everything here is a copy of Mathlib material kept under new names (suffix Finsupp, trailing primes, or re-declared notation), taken from Mathlib v4.30.0 and used because Mathlib v4.33.0 renamed, redefined or removed the originals; the ramification lemmas of Block G are adapted, assuming separability of the residue field extension where the current Mathlib version assumes a perfect residue field.
Where it is used
The module is imported by many statement and proof modules across the tree, and by 52 statement modules directly, purely to keep their Lean statements textually and semantically unchanged after the library update; it contributes no mathematical content of its own to the argument.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 341 lines
- 45 declarations
- used in the statements of 52 theorems and imported by 125 proofs
- imports 0 definition modules
Source file: Definitions/Def_Compat_Mathlib430.lean
Imports
- only Mathlib
Imported by
Def_CerednikDrinfeld_EquivariantUniformizationDef_CerednikDrinfeld_JPrimeTorsionDatumDef_CerednikDrinfeld_MumfordUniformizationDef_CerednikDrinfeld_ShimuraCurveDef_CerednikDrinfeld_ToricUniformizationDef_CerednikDrinfeld_TwoPlaceTorsionDatumDef_CuspidalType_IsCuspidalOfTypeDef_GroupCohomology_CyclotomicQuotientH2RepDef_GroupCohomology_SplittingModuleDef_HopfAlgebra_RaynaudNormalFormDatumDef_MazurAdmissible_GaloisModuleDef_ModularCurve_JOnePOpsDef_ModularCurve_JOnePOpsV2Def_ModularCurve_JOnePOpsV3Def_ModularCurve_JZeroHeightFormDef_ModularCurve_JZeroHeightFormPositivityDef_ModularCurve_JZeroNaiveHeightDef_NumberField_LevelArithmeticModPDef_Rep_QuotientRightTranslationDef_WeierstrassCurve_EDSEngine
Declarations
- def
Representation.ofMulActionFinsupp - abbrev
Representation.leftRegularFinsupp - abbrev
Representation.diagonalFinsupp - theorem
Representation.ofMulActionFinsupp_def - theorem
Representation.ofMulActionFinsupp_single - theorem
Representation.ofMulActionFinsupp_apply - def
Representation.ofMulActionFinsuppEquiv - abbrev
Rep.ofMulActionFinsupp - abbrev
Rep.leftRegularFinsupp - abbrev
Rep.diagonalFinsupp - def
Rep.ofMulActionFinsuppIso - abbrev
Rep.leftRegularHomFinsupp - theorem
Rep.leftRegularHomFinsupp_hom_single - theorem
AddAut.coe_mul' - theorem
AddAut.coe_one' - theorem
AddAut.coe_inv' - theorem
AddAut.mul_def' - theorem
AddAut.one_def' - theorem
AddAut.inv_def' - theorem
AddAut.mul_apply' - theorem
AddAut.one_apply' - theorem
AddAut.inv_symm' - theorem
AddAut.symm_inv' - theorem
AddAut.inv_apply' - theorem
AddAut.inv_apply_self' - theorem
AddAut.apply_inv_self' - def
DistribMulAction.toAddAut' - def
AddAut.mulLeft' - instance
AddAut.applyDistribMulAction' - theorem
AddAut.smul_def' - instance
AddAut.apply_faithfulSMul' - def
IsEllSequence' - def
IsDivSequence' - def
IsEllDivSequence' - lemma
isEllSequence'_id - lemma
isDivSequence'_id - theorem
isEllDivSequence'_id - lemma
IsEllSequence'.smul - lemma
IsDivSequence'.smul - lemma
IsEllDivSequence'.smul - theorem
Ideal.card_stabilizer_eq_card_inertia_mul_finrank' - lemma
Ideal.ncard_primesOver_mul_card_inertia_mul_finrank' - lemma
Ideal.card_inertia_eq_ramificationIdxIn' - lemma
Ideal.card_stabilizer_eq'
Source
/- Copyright: the vendored blocks below are verbatim copies from Mathlib (Apache-2.0; see Mathlib's LICENSE), release v4.30.0 = leanprover-community/mathlib4 commit c5ea00351c28e24afc9f0f84379aa41082b1188f, with declarations RENAMED (suffix `Finsupp` / trailing prime) so they do not clash with Mathlib v4.33.0. Bodies are the Mathlib v4.30.0 text with its docstrings omitted, otherwise byte-identical unless a line is marked `-- [port]`. -/ import Mathlib.RepresentationTheory.Rep.Basic ↗ import Mathlib.Algebra.Group.End ↗ import Mathlib.Algebra.GroupWithZero.Action.Basic ↗ import Mathlib.Algebra.Ring.AddAut ↗ import Mathlib.Algebra.Ring.Action.Submonoid ↗ import Mathlib.NumberTheory.RamificationInertia.Galois ↗ import Mathlib.RingTheory.Invariant.Galois ↗ import Mathlib.FieldTheory.Galois.Basic ↗ import Mathlib.Tactic.LinearCombination ↗ import Mathlib.Tactic.Ring ↗ set_option autoImplicit false /-! ## Block A — Mathlib v4.30.0 Mathlib/RepresentationTheory/Basic.lean:391-419 (section MulAction), names suffixed `Finsupp` -/ namespace Representation section MulAction variable (k : Type*) [Semiring k] (G : Type*) [Monoid G] (H : Type*) [MulAction G H] noncomputable def ofMulActionFinsupp : Representation k G (H →₀ k) where toFun g := Finsupp.lmapDomain k k (g • ·) map_one' := by ext x y simp map_mul' x y := by ext z w simp [mul_smul] noncomputable abbrev leftRegularFinsupp := ofMulActionFinsupp k G G noncomputable abbrev diagonalFinsupp (n : ℕ) := ofMulActionFinsupp k G (Fin n → G) variable {k G H} theorem ofMulActionFinsupp_def (g : G) : ofMulActionFinsupp k G H g = Finsupp.lmapDomain k k (g • ·) := rfl @[simp] theorem ofMulActionFinsupp_single (g : G) (x : H) (r : k) : ofMulActionFinsupp k G H g (Finsupp.single x r) = Finsupp.single (g • x) r := Finsupp.mapDomain_single end MulAction /-! ## Block B — Mathlib v4.30.0 Mathlib/RepresentationTheory/Basic.lean:472-483 (section Group) -/ section Group variable {k G V : Type*} [Semiring k] [Group G] [AddCommMonoid V] [Module k V] (ρ : Representation k G V) @[simp] theorem ofMulActionFinsupp_apply {H : Type*} [MulAction G H] (g : G) (f : H →₀ k) (h : H) : ofMulActionFinsupp k G H g f h = f (g⁻¹ • h) := by conv_lhs => rw [← smul_inv_smul g h] let h' := g⁻¹ • h change ofMulActionFinsupp k G H g f (g • h') = f h' have hg : Function.Injective (g • · : H → H) := by intro h₁ h₂ simp simp only [ofMulActionFinsupp_def, Finsupp.lmapDomain_apply, Finsupp.mapDomain_apply, hg] end Group section Bridge variable (k : Type*) [Semiring k] (G : Type*) [Monoid G] (H : Type*) [MulAction G H] noncomputable def ofMulActionFinsuppEquiv : (ofMulActionFinsupp k G H).Equiv (ofMulAction k G H) := Equiv.mk (MonoidAlgebra.coeffLinearEquiv k).symm fun g => by rw [ofMulAction_def, ofMulActionFinsupp_def] ext simp end Bridge end Representation /-! ## Block C — Mathlib v4.30.0 Mathlib/RepresentationTheory/Rep/Basic.lean:336-346 and 404-412, names suffixed `Finsupp` -/ namespace Rep open CategoryTheory universe w' u v variable {k : Type u} {G : Type v} [Ring k] [Monoid G] section variable (k G) noncomputable abbrev ofMulActionFinsupp (H : Type w') [MulAction G H] : Rep k G := -- [port] `noncomputable` added (4.30 file had a noncomputable section) of <| Representation.ofMulActionFinsupp k G H noncomputable abbrev leftRegularFinsupp : Rep k G := -- [port] noncomputable ofMulActionFinsupp k G G noncomputable abbrev diagonalFinsupp (n : ℕ) : Rep k G := -- [port] noncomputable ofMulActionFinsupp k G (Fin n → G) noncomputable def ofMulActionFinsuppIso (H : Type w') [MulAction G H] : ofMulActionFinsupp k G H ≅ ofMulAction k G H := mkIso (Representation.ofMulActionFinsuppEquiv k G H) end noncomputable abbrev leftRegularHomFinsupp (A : Rep k G) (x : A) : leftRegularFinsupp k G ⟶ A := -- [port] noncomputable Rep.ofHom ⟨Finsupp.lift A k G fun g ↦ A.ρ g x, fun g ↦ by ext; simp⟩ theorem leftRegularHomFinsupp_hom_single {A : Rep k G} (g : G) (x : A) (r : k) : (leftRegularHomFinsupp A x).hom (.single g r) = r • A.ρ g x := by simp [leftRegularHomFinsupp] end Rep /-! ## Block D — AddAut: Mathlib v4.30.0 Mathlib/Algebra/Group/End.lean:746-801 (+ GroupWithZero/Action/Basic.lean:89-92 and :104-112, Ring/AddAut.lean:32), lemma names primed -/ namespace AddAut section Compat430 variable (A : Type*) [Add A] instance : Group (AddAut A) where mul g h := AddEquiv.trans h g one := AddEquiv.refl _ inv := AddEquiv.symm mul_assoc _ _ _ := rfl one_mul _ := rfl mul_one _ := rfl inv_mul_cancel := AddEquiv.self_trans_symm /- The following thirteen lemmas are Mathlib v4.30.0 `Mathlib/Algebra/Group/End.lean:758-801` verbatim except that each name carries a trailing prime. -/ @[simp] theorem coe_mul' (e₁ e₂ : AddAut A) : ⇑(e₁ * e₂) = e₁ ∘ e₂ := rfl @[simp] theorem coe_one' : ⇑(1 : AddAut A) = id := rfl @[simp] theorem coe_inv' (e : AddAut A) : ⇑e⁻¹ = e.symm := rfl theorem mul_def' (e₁ e₂ : AddAut A) : e₁ * e₂ = e₂.trans e₁ := rfl theorem one_def' : (1 : AddAut A) = AddEquiv.refl _ := rfl theorem inv_def' (e₁ : AddAut A) : e₁⁻¹ = e₁.symm := rfl @[simp] theorem mul_apply' (e₁ e₂ : AddAut A) (a : A) : (e₁ * e₂) a = e₁ (e₂ a) := rfl @[simp] theorem one_apply' (a : A) : (1 : AddAut A) a = a := rfl @[simp] theorem inv_symm' (e : AddAut A) : e⁻¹.symm = e := rfl @[simp] theorem symm_inv' (e : AddAut A) : e.symm⁻¹ = e := rfl @[simp] theorem inv_apply' (e : AddAut A) (a : A) : e⁻¹ a = e.symm a := rfl theorem inv_apply_self' (e : AddAut A) (a : A) : e⁻¹ (e a) = a := AddEquiv.apply_symm_apply _ _ theorem apply_inv_self' (e : AddAut A) (a : A) : e (e⁻¹ a) = a := AddEquiv.apply_symm_apply _ _ example (e₁ e₂ : AddAut A) : e₁ * e₂ = e₁ + e₂ := rfl example : (1 : AddAut A) = 0 := rfl example (e : AddAut A) : e⁻¹ = -e := rfl end Compat430 end AddAut @[simps] def DistribMulAction.toAddAut' (G A : Type*) [Group G] [AddMonoid A] [DistribMulAction G A] : G →* AddAut A where toFun := DistribMulAction.toAddEquiv A map_one' := AddEquiv.ext (one_smul _) map_mul' _ _ := AddEquiv.ext (mul_smul _ _) @[simps! +simpRhs] def AddAut.mulLeft' {R : Type*} [Semiring R] : Rˣ →* AddAut R := DistribMulAction.toAddAut' _ _ /-! ### Block D (continued) — Mathlib v4.30.0 Mathlib/Algebra/GroupWithZero/Action/Basic.lean:104-112: the tautological `DistribMulAction (AddAut A) A` (`AddAut.applyDistribMulAction`, its `smul_def` and `apply_faithfulSMul`), dropped in v4.33.0 together with the multiplicative structure; vendored with primed names on top of the Group instance above. -/ namespace AddAut instance applyDistribMulAction' {A : Type*} [AddMonoid A] : DistribMulAction (AddAut A) A where smul := (· <| ·) one_smul _ := rfl mul_smul _ _ _ := rfl smul_zero := AddEquiv.map_zero smul_add := AddEquiv.map_add @[simp] protected theorem smul_def' {A : Type*} [AddMonoid A] (f : AddAut A) (a : A) : f • a = f a := rfl instance apply_faithfulSMul' {A : Type*} [AddMonoid A] : FaithfulSMul (AddAut A) A := ⟨fun h => AddEquiv.ext h⟩ end AddAut /-! ## Block E — elliptic (divisibility) sequence predicates: Mathlib v4.30.0 Mathlib/NumberTheory/EllipticDivisibilitySequence.lean:78-110 (verbatim; names primed). Vendored because Mathlib v4.33.0 (db584cd6, same file :286-295) RENAMED AND REDEFINED them (`IsEllipticSequence W := ∀ p q r, IsEllipticNet.rel W p q r 0 = 0`, `IsDvdSequence` over ℤ instead of ℕ) and kept the 4.30 names only as deprecated aliases of the NEW predicates. -/ section IsEllDivSequence430 universe u variable {R : Type u} [CommRing R] variable (W : ℤ → R) def IsEllSequence' : Prop := ∀ m n r : ℤ, W (m + n) * W (m - n) * W r ^ 2 = W (m + r) * W (m - r) * W n ^ 2 - W (n + r) * W (n - r) * W m ^ 2 def IsDivSequence' : Prop := ∀ m n : ℕ, m ∣ n → W m ∣ W n def IsEllDivSequence' : Prop := IsEllSequence' W ∧ IsDivSequence' W lemma isEllSequence'_id : IsEllSequence' id := fun _ _ _ => by simp_rw [id_eq]; ring1 lemma isDivSequence'_id : IsDivSequence' id := fun _ _ => Int.ofNat_dvd.mpr theorem isEllDivSequence'_id : IsEllDivSequence' id := ⟨isEllSequence'_id, isDivSequence'_id⟩ variable {W} lemma IsEllSequence'.smul (h : IsEllSequence' W) (x : R) : IsEllSequence' (x • W) := fun m n r => by linear_combination (norm := (simp_rw [Pi.smul_apply, smul_eq_mul]; ring1)) x ^ 4 * h m n r lemma IsDivSequence'.smul (h : IsDivSequence' W) (x : R) : IsDivSequence' (x • W) := fun m n r => mul_dvd_mul_left x <| h m n r lemma IsEllDivSequence'.smul (h : IsEllDivSequence' W) (x : R) : IsEllDivSequence' (x • W) := ⟨h.left.smul x, h.right.smul x⟩ end IsEllDivSequence430 /-! ## Block F — notation `α ^+ M` for `FixedPoints.addSubgroup M α`: Mathlib v4.30.0 Mathlib/Algebra/Ring/Action/Submonoid.lean:43 (verbatim). Mathlib v4.33.0 removed the notation line; the definition itself is unchanged, so re-declaring the notation keeps every tree statement that uses it textually and semantically identical. -/ notation α "^+" M:51 => FixedPoints.addSubgroup M α /-! ## Block G — ramification/inertia cardinality lemmas under the separability hypothesis (adapted from Mathlib v4.30.0, Mathlib/NumberTheory/RamificationInertia/Galois.lean; v4.33.0 restates them assuming PerfectField of the residue field). Theorems only, primed names; no definitions involved. -/ namespace Ideal section inertia430 variable {R S G : Type*} [CommRing R] [CommRing S] [Algebra R S] [Group G] [MulSemiringAction G S] [IsGaloisGroup G R S] [Finite G] open scoped Pointwise attribute [local instance] Ideal.Quotient.field in theorem card_stabilizer_eq_card_inertia_mul_finrank' (p : Ideal R) [p.IsMaximal] (P : Ideal S) [P.LiesOver p] [P.IsMaximal] [Algebra.IsSeparable (R ⧸ p) (S ⧸ P)] : Nat.card (MulAction.stabilizer G P) = Nat.card (inertia G P) * Module.finrank (R ⧸ p) (S ⧸ P) := by have : IsGalois (R ⧸ p) (S ⧸ P) := { __ := Ideal.Quotient.normal (A := R) G p P } have := Ideal.Quotient.finite_of_isInvariant G p P have : Subgroup.index _ = _ := Nat.card_congr (Quotient.stabilizerQuotientInertiaEquiv G p P).toEquiv rw [← IsGalois.card_aut_eq_finrank, ← this, ← ((inertia G P).subgroupOf (MulAction.stabilizer G P)).card_mul_index, Nat.card_congr (Subgroup.subgroupOfEquivOfLe (inertia_le_stabilizer (M := G) P)).toEquiv, AddSubgroup.subgroupOf_inertia] lemma ncard_primesOver_mul_card_inertia_mul_finrank' (p : Ideal R) [p.IsMaximal] (P : Ideal S) [P.LiesOver p] [P.IsMaximal] [Algebra.IsSeparable (R ⧸ p) (S ⧸ P)] : (p.primesOver S).ncard * Nat.card (P.inertia G) * Module.finrank (R ⧸ p) (S ⧸ P) = Nat.card G := by rw [mul_assoc, ← card_stabilizer_eq_card_inertia_mul_finrank', ← Algebra.IsInvariant.orbit_eq_primesOver R S G p P] simpa using Nat.card_congr (MulAction.orbitProdStabilizerEquivGroup G P) attribute [local instance] Ideal.Quotient.field in lemma card_inertia_eq_ramificationIdxIn' [IsDedekindDomain R] [IsDedekindDomain S] [Module.Finite R S] [Module.IsTorsionFree R S] (p : Ideal R) (hp : p ≠ ⊥) (P : Ideal S) [P.LiesOver p] [P.IsMaximal] [Algebra.IsSeparable (R ⧸ p) (S ⧸ P)] : Nat.card (P.inertia G) = Ideal.ramificationIdxIn p S := by have := (show p.IsPrime from P.over_def p ▸ inferInstance).isMaximal hp have H := ncard_primesOver_mul_card_inertia_mul_finrank' (G := G) p P refine mul_right_injective₀ (IsDedekindDomain.primesOver_ncard_ne_zero p S) ?_ refine mul_left_injective₀ (b := Module.finrank (R ⧸ p) (S ⧸ P)) ?_ ?_ · intro e; simp [e, eq_comm, Nat.card_eq_zero, ‹Finite G›.not_infinite] at H dsimp only rw [H, mul_assoc, ← inertiaDeg_eq_of_isMaximal p P, ← inertiaDegIn_eq_inertiaDeg p P G, ncard_primesOver_mul_ramificationIdxIn_mul_inertiaDegIn p S G] attribute [local instance] Ideal.Quotient.field in lemma card_stabilizer_eq' [IsDedekindDomain R] [IsDedekindDomain S] [Module.Finite R S] [Module.IsTorsionFree R S] (p : Ideal R) (hp : p ≠ ⊥) (P : Ideal S) [P.LiesOver p] [P.IsMaximal] [Algebra.IsSeparable (R ⧸ p) (S ⧸ P)] : Nat.card (MulAction.stabilizer G P) = p.ramificationIdxIn S * p.inertiaDegIn S := by have := (show p.IsPrime from P.over_def p ▸ inferInstance).isMaximal hp rw [card_stabilizer_eq_card_inertia_mul_finrank' p P, card_inertia_eq_ramificationIdxIn' p hp, inertiaDegIn_eq_inertiaDeg p P G, inertiaDeg_eq_of_isMaximal p P] end inertia430 end Ideal
Statements phrased using this module (52)
- Mordell–Weil for J₀(N), prime level N≥ 5
ModularCurve.JZero.addGroup_fg_invariants_of_prime_of_five_le2,178 below · depth 9 - Descent height data on J₀(N)(K) for prime N ≥ 5
ModularCurve.JZero.exists_descent_height_two_invariants_of_prime_of_five_le2,177 below · depth 10 - 2-torsion of J₀(N) is fixed by a finite extension
ModularCurve.JZero.exists_finiteDimensional_torsion_two_le_invariants715 below · depth 10 - Weak Mordell–Weil at 2 for J₀(N)
ModularCurve.JZero.finiteIndex_range_nsmul_two_invariants1,003 below · depth 10 - Monotonicity of J₀(N)-invariants in the base field
ModularCurve.JZero.invariants_le_invariants_of_le0 below · depth 10 - Descent inequalities for the naive height on J₀(N)
ModularCurve.JZero.naiveHeight_descent_of_prime_of_five_le1,969 below · depth 11 - Admissible filtration with steps of prime order q
AddSubgroup.exists_chain_card_quotient_eq_forall_sub_mem_or_sub_smul_mem3 below · depth 12 - Galois-stable effective representative of a fixed class on J₀(N)
ModularCurve.JZero.exists_galoisStable_rep182 below · depth 12 - Subadditivity of the naive height on J₀(N)
ModularCurve.JZero.naiveHeight_add_le209 below · depth 12 - Height growth under 2^k on J₀(N), prime level ≥ 5
ModularCurve.JZero.naiveHeight_growth_of_prime_of_five_le1,961 below · depth 12 - Degree reduction for the naive height on J₀(N)
ModularCurve.JZero.naiveHeight_reduce225 below · depth 12 - Height form bounded above by naive height of representatives
ModularCurve.JZero.heightForm_le215 below · depth 13 - Lower bound for the height form on near-minimal representatives
ModularCurve.JZero.heightForm_lower_of_prime_of_five_le1,956 below · depth 13 - Quasi-invariance of the J₀(N) height form under linear equivalence
ModularCurve.JZero.heightForm_quasiInvariant_of_prime_of_five_le1,829 below · depth 13 - Height form bounds the naive height from below
ModularCurve.JZero.exists_isRepOf_heightForm_lower1,040 below · depth 14 - Quasi-invariance of the height form along a class, prime level ≥ 5
ModularCurve.JZero.heightForm_quasiInvariant_eps_of_prime_of_five_le1,829 below · depth 14 - Point heights of a representative bounded by its naive height
ModularCurve.JZero.ptsum_pointHt_le_divNaiveHeight214 below · depth 14 - Naive height of a representative bounded by base mass
ModularCurve.JZero.divNaiveHeight_le_baseMass_of_isRepOf299 below · depth 15 - Height form dominates base mass on suitable representatives
ModularCurve.JZero.exists_isRepOf_baseMass_le_heightForm1,032 below · depth 15 - Two toric uniformisations give a two-place p-torsion datum
CerednikDrinfeld.TwoPlaceTorsionDatum.exists_laws_of_toricUniformization0 below · depth 16 - Realising ρ' mod I in p-power torsion of J_{H_Q}
CuspForm.TWLevel.HeckeRing.exists_finiteLevel_surjective_pi_torsion_jH_levelQuotient_of_not_dvd_level1,391 below · depth 16 - Existence of a cusp-maximal representative of a class in J₀(N)
ModularCurve.JZero.exists_isRepOf_forall_apply_cuspInftyBar_le221 below · depth 16 - Period uniformisation yields a toric uniformisation at each p ≠ r
CerednikDrinfeld.Mumford.nonempty_toricUniformization_of_periodUniformization29 below · depth 17 - Faithful Hecke lattice with Eichler–Shimura relation inside J_H[pⁿ]
CuspForm.TWLevel.HeckeRing.exists_finiteLevel_faithful_galoisHeckeLattice_frobenius_torsionEmbedding_jH_of_not_dvd_level1,271 below · depth 17 - Two representatives of a class of J₀(N) differ by a principal divisor
ModularCurve.JZero.isPrincipal_sub_of_isRepOf0 below · depth 17 - Restriction of an equivariant Mumford uniformisation to the torsion
CerednikDrinfeld.Mumford.EquivariantUniformization.eFull_restrict_U_torsion_and_equiv0 below · depth 18 - p-torsion character and tame Kummer law for a Mumford period uniformisation
CerednikDrinfeld.Mumford.PeriodUniformization.exists_torsionEquiv_tameCharacter_kummerLaw18 below · depth 18 - Frobenius on p-torsion of a Mumford period uniformisation
CerednikDrinfeld.Mumford.PeriodUniformization.frobenius_toric_and_frobenius_quot_of_torsionEquiv1 below · depth 18 - Čerednik–Drinfeld equivariant uniformisation at both ramified primes
CerednikDrinfeld.exists_shimuraCurveModel_goodReduction_and_equivariantUniformization_pair_of_six_mul_dvd_of_neZero10,401 below · depth 18 - Additivity of ψ over disjoint unions of finite G-sets
Rep.additive_tensor_ofMulAction_sigma0 below · depth 18 - Projection formula: Ind_D^GRes_D^G M ≅ M ⊗ k[G/D]
Rep.nonempty_ind_res_iso_tensor_ofMulAction_quotient0 below · depth 18 - Equivariant bijection transports restricted permutation-twisted modules
Rep.nonempty_res_tensor_ofMulAction_iso_of_equiv0 below · depth 18 - Natural equivariant uniformisation of Jacobians of Mumford quotients
AlgebraicCurve.Pic0.exists_equivariantUniformization_family_natural_of_mumfordQuotient_of_v_card_stabilizer_eq_one296 below · depth 19 - Conorm from the Shimura Jacobian into Pic⁰ over a completed algebraic closure
CerednikDrinfeld.ShimuraCurveModel.exists_equivariant_conorm_pic0_constantFieldExtension260 below · depth 19 - Fixed ranks of S-units, finite places and infinite places
M4aHerbrand.sUnitQuot_fixedRank_eq0 below · depth 19 - Push-forward square for pinned Mumford uniformisations along φ
AlgebraicCurve.Pic0.eFull_comp_pullback_eq_mk_pushforwardAlong_of_mumfordQuotient_theta65 below · depth 20 - Pullback compatibility of pinned Mumford uniformisations of Pic⁰
AlgebraicCurve.Pic0.eFull_comp_pushforward_eq_mk_pullbackAlong_of_mumfordQuotient_theta_of_v_card_stabilizer_eq_one138 below · depth 20 - Equivariant Manin–Drinfeld uniformisation of Jacobians of Mumford quotients
AlgebraicCurve.Pic0.exists_equivariantUniformization_of_mumfordQuotient_theta_of_mem_valuationSubring_iff_of_v_card_stabilizer_eq_one247 below · depth 20 - Adjointness of pullback and pushforward for Mumford period pairings
AlgebraicCurve.Pic0.periodPairing_pullback_eq_periodPairing_pushforward_of_mumfordQuotient_theta50 below · depth 20 - Equivariant mod-p S-unit rank identity with coefficients
NumberField.SUnits.finrank_invariants_repModP_sUnitsRep_tensor_add28 below · depth 20 - Theta torus point lifting a two-point divisor and its push-forward
AlgebraicCurve.Pic0.exists_eFull_eq_mk_single_sub_single_and_eFull_comp_pullback_eq_mk_pushforwardAlong_of_mumfordQuotient_theta62 below · depth 21 - A theta torus point compatible with degeneracy push-forward
AlgebraicCurve.Pic0.exists_eFull_eq_mk_single_sub_single_and_eFull_comp_pushforward_eq_mk_pullbackAlong_of_mumfordQuotient_theta_of_v_card_stabilizer_eq_one135 below · depth 21 - Equivariance of the period pairing and the theta-pinned uniformisation
AlgebraicCurve.Pic0.periodDatum_equivariant_of_theta_pinned_uniformization_of_mumfordQuotient125 below · depth 21 - Inertia-invariant points lift to inertia-invariant torus points
CerednikDrinfeld.Mumford.EquivariantUniformization.exists_coeffMap_eq_and_eFull_eq_of_forall_inertia_gal_eq2 below · depth 21 - Rank of H⁰(G,ℤ[X]) is the number of orbits
Rep.finrank_groupCohomology_zero_ofMulAction0 below · depth 21 - Inertia fixes every torus lift of an inertia-invariant point
CerednikDrinfeld.Mumford.EquivariantUniformization.coeffMap_eq_of_mem_inertiaSubgroupIn_of_gal_eFull_eq1 below · depth 22 - Igusa's transitivity lemma on elements of order M
AddAut.exists_mem_apply_eq_of_addOrderOf_eq_of_transvection_mem0 below · depth 23 - Coefficientwise invariance of torus points with invariant image
CerednikDrinfeld.Mumford.EquivariantUniformization.coeffMap_eq_of_actZ_eq_one_of_gal_eFull_eq0 below · depth 23 - Invariance of h_N under passage to a finite-index Δ-stable subgroup
Representation.finrank_invariants_linHom_modP_add_torsion_eq_of_finiteIndex0 below · depth 23 - Mod p Hom-invariants unchanged by a finite-index Δ-stable subgroup
Representation.finrank_invariants_linHom_eq_of_finiteIndex_of_torsionFree1 below · depth 24 - Dimension-shift kernel of the trivial module is the augmentation ideal
Rep.exists_hom_dimShiftDownObj_trivial_leftRegular1 below · depth 29 - Normalised elliptic divisibility sequences satisfy the elliptic relation
isEllSequence_normEDS0 below · depth 34