Definitions/Def_QuaternionAlgebra_ClassSetHecke.lean
Adelic class sets, Hecke kernels and congruence levels for quaternion algebras
Fix rationals a,b and write \widehat{\mathbb H} = \mathbb H[\mathbb Q,a,b]\otimes_{\mathbb Q}\mathbb A^f, where \mathbb A^f is the finite adele ring of \mathbb Q. For a subgroup U\le\widehat{\mathbb H}^\times, ClassSet U is the double-coset quotient of \widehat{\mathbb H}^\times by the image of the diagonal map \mathbb H^\times\to\widehat{\mathbb H}^\times, \delta\mapsto\delta\otimes 1, on the left and by U on the right; ClassSet.mk is the (surjective) class map, ClassSet.map the projection ClassSet U → ClassSet U' induced by U\le U' (also surjective), and two lemmas record invariance of a class under right multiplication by U and left multiplication by a diagonal element. For S\subseteq\widehat{\mathbb H}^\times, x\in\widehat{\mathbb H}^\times and y\in ClassSet U, HeckeIncidence is the subtype of the coset space \widehat{\mathbb H}^\times/U consisting of those cosets c admitting a representative h\in S with class c and [xh]=y; heckeKernel U S x y is the cardinality of this set, for a chosen representative of the class x, viewed in \mathbb Z. Under the hypothesis US\subseteq S there is a bijection HeckeIncidence U S (x*u) y ≃ HeckeIncidence U S x y for u\in U, whence heckeKernel_mk: the kernel at [x] equals the cardinality of the incidence set at x itself, so the count is representative-independent.
Levels and Hecke sets are defined through the finite-adelic box \widehat\Lambda of a \mathbb Z-lattice \Lambda\subset\mathbb H. For \ell\in\mathbb N, primeHeckeSet is the set of units h with h\in\widehat\Lambda, \ell h^{-1}\in\widehat\Lambda, h^{-1}\notin\widehat\Lambda and \ell^{-1}h\notin\widehat\Lambda; levelHeckeSet intersects this with \{h: h-1\in\widehat P\} for a second lattice P. congruenceLevel Λ P is the subgroup of units stabilising the sets \widehat\Lambda and \widehat P and satisfying ux-x\in\widehat P for all x\in\widehat\Lambda; it is contained in the stabiliser of \widehat\Lambda. Finally normIdeal Λ q is the \mathbb Z-span of the products xyz with x,y,z\in\Lambda and \mathrm{nrd}(y)\in q\mathbb Z, with \mathrm{nrd} the reduced norm; when \Lambda satisfies IsOrder (unital, multiplicatively closed, \mathbb Q-spanning, finitely generated) this span is a two-sided \Lambda-submodule of \Lambda containing q\Lambda.
Relation to Mathlib
Mathlib supplies the quaternion algebra \mathbb H[\mathbb Q,a,b], the finite adele ring and the double-coset quotient; the adelic class set, the Hecke incidence sets and kernels, the prime and level Hecke sets, the congruence level subgroups and the norm ideal are the project's own notions, built on the project's finite-adelic box and reduced norm.
Where it is used
These are the carriers of the Brandt–Eichler Hecke module of a definite quaternion algebra in adelic form: functions on a class set \mathbb H^\times\backslash\widehat{\mathbb H}^\times/U with Hecke operators given by the incidence counts, used in the Jacquet–Langlands comparison with weight-two modular forms and in the argument at a ramified prime.
References
- J. Voight, Quaternion Algebras, Graduate Texts in Mathematics 288, Springer, 2021, §§27.6, 41.2–41.3
- A. Pizer, Theta series and modular forms of level p²M, Compositio Mathematica 40 (1980), 177–241, §2
- H. Carayol, Sur les représentations galoisiennes modulo ℓ attachées aux formes modulaires, Duke Mathematical Journal 59 (1989), 785–801
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 245 lines
- 27 declarations
- used in the statements of 39 theorems and imported by 72 proofs
- imports 3 definition modules
Source file: Definitions/Def_QuaternionAlgebra_ClassSetHecke.lean
Imported by
Declarations
- abbrev
QuaternionAlgebra.ClassSet - abbrev
QuaternionAlgebra.ClassSet.mk - theorem
QuaternionAlgebra.ClassSet.mk_surjective - def
QuaternionAlgebra.ClassSet.map - theorem
QuaternionAlgebra.ClassSet.map_mk - theorem
QuaternionAlgebra.ClassSet.map_surjective - theorem
QuaternionAlgebra.ClassSet.mk_mul_of_mem - theorem
QuaternionAlgebra.ClassSet.mk_diagonal_mul - def
QuaternionAlgebra.HeckeIncidence - def
QuaternionAlgebra.heckeKernel - def
QuaternionAlgebra.heckeIncidenceEquiv - theorem
QuaternionAlgebra.heckeKernel_mk - def
QuaternionAlgebra.primeHeckeSet - theorem
QuaternionAlgebra.mem_primeHeckeSet_iff - def
QuaternionAlgebra.levelHeckeSet - theorem
QuaternionAlgebra.mem_levelHeckeSet_iff - def
QuaternionAlgebra.congruenceLevel - theorem
QuaternionAlgebra.mem_congruenceLevel_iff - theorem
QuaternionAlgebra.congruenceLevel_le - def
QuaternionAlgebra.normIdeal - theorem
QuaternionAlgebra.mul_mul_mem_normIdeal - theorem
QuaternionAlgebra.IsOrder.normIdeal_le - theorem
QuaternionAlgebra.IsOrder.mul_mem_normIdeal - theorem
QuaternionAlgebra.IsOrder.mul_mem_normIdeal_right - theorem
QuaternionAlgebra.IsOrder.natCast_mem - theorem
QuaternionAlgebra.IsOrder.natCast_mul_mem_normIdeal - theorem
QuaternionAlgebra.IsOrder.natCast_smul_mem_normIdeal
Source
import Mathlib import Definitions.Def_Submodule_FiniteAdeleBox import Definitions.Def_QuaternionAlgebra_Order import Definitions.Def_QuaternionAlgebra_ReducedNorm set_option autoImplicit false open scoped TensorProduct Pointwise Quaternion open IsDedekindDomain NumberField noncomputable section namespace QuaternionAlgebra variable {a b : ℚ} abbrev ClassSet (U : Subgroup (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) : Type := DoubleCoset.Quotient (((Submodule.finiteIdeleDiagonal ℍ[ℚ, a, b]).range : Subgroup (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) : Set (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) (U : Set (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) namespace ClassSet variable {U U' : Subgroup (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ} variable (U) in abbrev mk (x : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) : ClassSet U := DoubleCoset.mk (Submodule.finiteIdeleDiagonal ℍ[ℚ, a, b]).range U x theorem mk_surjective : Function.Surjective (mk U) := Quotient.mk''_surjective def map (h : U ≤ U') : ClassSet U → ClassSet U' := Quotient.map' id fun x y hxy => by obtain ⟨c, hc, d, hd, rfl⟩ := DoubleCoset.rel_iff.mp hxy exact DoubleCoset.rel_iff.mpr ⟨c, hc, d, h hd, rfl⟩ @[simp] theorem map_mk (h : U ≤ U') (x : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) : map h (mk U x) = mk U' x := rfl theorem map_surjective (h : U ≤ U') : Function.Surjective (map h) := by rintro ⟨x⟩; exact ⟨mk U x, rfl⟩ theorem mk_mul_of_mem (x u : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) (hu : u ∈ U) : mk U (x * u) = mk U x := ((DoubleCoset.eq _ _ _ _).mpr ⟨1, one_mem _, u, hu, by rw [one_mul]⟩).symm theorem mk_diagonal_mul (δ : (ℍ[ℚ, a, b])ˣ) (x : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) : mk U (Submodule.finiteIdeleDiagonal ℍ[ℚ, a, b] δ * x) = mk U x := ((DoubleCoset.eq _ _ _ _).mpr ⟨Submodule.finiteIdeleDiagonal ℍ[ℚ, a, b] δ, MonoidHom.mem_range.mpr ⟨δ, rfl⟩, 1, one_mem _, by rw [mul_one]⟩).symm end ClassSet section HeckeKernel def HeckeIncidence (U : Subgroup (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) (S : Set (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) (x : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) (y : ClassSet U) : Type := {c : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ ⧸ U // ∃ h ∈ S, (h : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ ⧸ U) = c ∧ ClassSet.mk U (x * h) = y} def heckeKernel (U : Subgroup (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) (S : Set (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) (x y : ClassSet U) : ℤ := Nat.card (HeckeIncidence U S x.out y) def heckeIncidenceEquiv (U : Subgroup (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) (S : Set (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) (hS : ∀ u ∈ U, ∀ s ∈ S, u * s ∈ S) (x u : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) (hu : u ∈ U) (y : ClassSet U) : HeckeIncidence U S (x * u) y ≃ HeckeIncidence U S x y where toFun c := ⟨u • c.1, by obtain ⟨h, hh, hc, hy⟩ := c.2 refine ⟨u * h, hS u hu h hh, ?_, ?_⟩ · rw [← hc]; rfl · rwa [← mul_assoc]⟩ invFun c := ⟨u⁻¹ • c.1, by obtain ⟨h, hh, hc, hy⟩ := c.2 refine ⟨u⁻¹ * h, hS u⁻¹ (inv_mem hu) h hh, ?_, ?_⟩ · rw [← hc]; rfl · rwa [← mul_assoc, mul_inv_cancel_right]⟩ left_inv c := Subtype.ext (by simp) right_inv c := Subtype.ext (by simp) theorem heckeKernel_mk (U : Subgroup (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) (S : Set (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) (hS : ∀ u ∈ U, ∀ s ∈ S, u * s ∈ S) (x : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) (y : ClassSet U) : heckeKernel U S (ClassSet.mk U x) y = Nat.card (HeckeIncidence U S x y) := by obtain ⟨δ, u, hδ, hu, hout⟩ := DoubleCoset.mk_out_eq_mul (Submodule.finiteIdeleDiagonal ℍ[ℚ, a, b]).range U x unfold heckeKernel rw [show (ClassSet.mk U x).out = δ * x * u from hout] have e1 : HeckeIncidence U S (δ * x * u) y ≃ HeckeIncidence U S (δ * x) y := heckeIncidenceEquiv U S hS (δ * x) u hu y have e2 : HeckeIncidence U S (δ * x) y ≃ HeckeIncidence U S x y := by refine Equiv.subtypeEquivRight fun c => ?_ obtain ⟨δ', rfl⟩ := MonoidHom.mem_range.mp hδ simp only [mul_assoc, ClassSet.mk_diagonal_mul] rw [Nat.card_congr (e1.trans e2)] end HeckeKernel section Level def primeHeckeSet (Λ : Submodule ℤ ℍ[ℚ, a, b]) (ℓ : ℕ) : Set (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ := {h | (h : ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ) ∈ Submodule.finiteAdeleBox Λ ∧ (ℓ : ℚ) • ((h⁻¹ : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) : ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ) ∈ Submodule.finiteAdeleBox Λ ∧ ((h⁻¹ : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) : ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ) ∉ Submodule.finiteAdeleBox Λ ∧ (ℓ : ℚ)⁻¹ • (h : ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ) ∉ Submodule.finiteAdeleBox Λ} theorem mem_primeHeckeSet_iff (Λ : Submodule ℤ ℍ[ℚ, a, b]) (ℓ : ℕ) (h : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) : h ∈ primeHeckeSet Λ ℓ ↔ (h : ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ) ∈ Submodule.finiteAdeleBox Λ ∧ (ℓ : ℚ) • ((h⁻¹ : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) : ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ) ∈ Submodule.finiteAdeleBox Λ ∧ ((h⁻¹ : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) : ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ) ∉ Submodule.finiteAdeleBox Λ ∧ (ℓ : ℚ)⁻¹ • (h : ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ) ∉ Submodule.finiteAdeleBox Λ := Iff.rfl def levelHeckeSet (Λ P : Submodule ℤ ℍ[ℚ, a, b]) (ℓ : ℕ) : Set (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ := primeHeckeSet Λ ℓ ∩ {h | (h : ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ) - 1 ∈ Submodule.finiteAdeleBox P} theorem mem_levelHeckeSet_iff (Λ P : Submodule ℤ ℍ[ℚ, a, b]) (ℓ : ℕ) (h : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) : h ∈ levelHeckeSet Λ P ℓ ↔ h ∈ primeHeckeSet Λ ℓ ∧ (h : ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ) - 1 ∈ Submodule.finiteAdeleBox P := Iff.rfl def congruenceLevel (Λ P : Submodule ℤ ℍ[ℚ, a, b]) : Subgroup (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ where carrier := {u | u ∈ Submodule.finiteIdeleStabilizer Λ ∧ u ∈ Submodule.finiteIdeleStabilizer P ∧ ∀ x ∈ Submodule.finiteAdeleBox Λ, (u : ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ) * x - x ∈ Submodule.finiteAdeleBox P} one_mem' := ⟨one_mem _, one_mem _, fun x _ => by simp⟩ mul_mem' := by rintro u v ⟨huΛ, huP, hu⟩ ⟨hvΛ, hvP, hv⟩ refine ⟨mul_mem huΛ hvΛ, mul_mem huP hvP, fun x hx => ?_⟩ have h1 : (u : ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ) * ((v : _) * x - x) ∈ Submodule.finiteAdeleBox P := by have hmem : (u : ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ) * ((v : _) * x - x) ∈ u • ((Submodule.finiteAdeleBox P : AddSubgroup _) : Set (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)) := Set.smul_mem_smul_set (hv x hx) rwa [(Submodule.mem_finiteIdeleStabilizer_iff P u).mp huP] at hmem have h2 := hu x hx have : ((u * v : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) : ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ) * x - x = (u : _) * ((v : _) * x - x) + ((u : _) * x - x) := by rw [Units.val_mul, mul_sub, mul_assoc]; abel rw [this] exact add_mem h1 h2 inv_mem' := by rintro u ⟨huΛ, huP, hu⟩ refine ⟨inv_mem huΛ, inv_mem huP, fun x hx => ?_⟩ have hy : ((u⁻¹ : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) : _) * x ∈ Submodule.finiteAdeleBox Λ := by have hmem : ((u⁻¹ : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) : _) * x ∈ u⁻¹ • ((Submodule.finiteAdeleBox Λ : AddSubgroup _) : Set (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)) := Set.smul_mem_smul_set hx rwa [(Submodule.mem_finiteIdeleStabilizer_iff Λ u⁻¹).mp (inv_mem huΛ)] at hmem have h := hu _ hy rw [← mul_assoc, Units.mul_inv, one_mul] at h rw [← neg_sub] exact neg_mem h theorem mem_congruenceLevel_iff (Λ P : Submodule ℤ ℍ[ℚ, a, b]) (u : (ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ)ˣ) : u ∈ congruenceLevel Λ P ↔ u ∈ Submodule.finiteIdeleStabilizer Λ ∧ u ∈ Submodule.finiteIdeleStabilizer P ∧ ∀ x ∈ Submodule.finiteAdeleBox Λ, (u : ℍ[ℚ, a, b] ⊗[ℚ] FiniteAdeleRing (𝓞 ℚ) ℚ) * x - x ∈ Submodule.finiteAdeleBox P := Iff.rfl theorem congruenceLevel_le (Λ P : Submodule ℤ ℍ[ℚ, a, b]) : congruenceLevel Λ P ≤ Submodule.finiteIdeleStabilizer Λ := fun _ hu => hu.1 def normIdeal (Λ : Submodule ℤ ℍ[ℚ, a, b]) (q : ℕ) : Submodule ℤ ℍ[ℚ, a, b] := Submodule.span ℤ {w | ∃ x ∈ Λ, ∃ y ∈ Λ, ∃ z ∈ Λ, (∃ m : ℤ, nrd y = (q : ℚ) * m) ∧ w = x * y * z} theorem mul_mul_mem_normIdeal {Λ : Submodule ℤ ℍ[ℚ, a, b]} {q : ℕ} {x y z : ℍ[ℚ, a, b]} (hx : x ∈ Λ) (hy : y ∈ Λ) (hz : z ∈ Λ) (m : ℤ) (hm : nrd y = (q : ℚ) * m) : x * y * z ∈ normIdeal Λ q := Submodule.subset_span ⟨x, hx, y, hy, z, hz, ⟨m, hm⟩, rfl⟩ theorem IsOrder.normIdeal_le {Λ : Submodule ℤ ℍ[ℚ, a, b]} (hΛ : IsOrder Λ) (q : ℕ) : normIdeal Λ q ≤ Λ := by refine Submodule.span_le.mpr ?_ rintro _ ⟨x, hx, y, hy, z, hz, -, rfl⟩ exact hΛ.mul_mem (hΛ.mul_mem hx hy) hz theorem IsOrder.mul_mem_normIdeal {Λ : Submodule ℤ ℍ[ℚ, a, b]} (hΛ : IsOrder Λ) {q : ℕ} {x w : ℍ[ℚ, a, b]} (hx : x ∈ Λ) (hw : w ∈ normIdeal Λ q) : x * w ∈ normIdeal Λ q := by induction hw using Submodule.span_induction with | mem w hw => obtain ⟨x', hx', y, hy, z, hz, ⟨m, hm⟩, rfl⟩ := hw simpa only [mul_assoc] using mul_mul_mem_normIdeal (hΛ.mul_mem hx hx') hy hz m hm | zero => simp | add u v _ _ hu hv => rw [mul_add]; exact add_mem hu hv | smul n u _ hu => rw [mul_smul_comm]; exact Submodule.smul_mem _ n hu theorem IsOrder.mul_mem_normIdeal_right {Λ : Submodule ℤ ℍ[ℚ, a, b]} (hΛ : IsOrder Λ) {q : ℕ} {w z : ℍ[ℚ, a, b]} (hw : w ∈ normIdeal Λ q) (hz : z ∈ Λ) : w * z ∈ normIdeal Λ q := by induction hw using Submodule.span_induction with | mem w hw => obtain ⟨x, hx, y, hy, z', hz', ⟨m, hm⟩, rfl⟩ := hw simpa only [mul_assoc] using mul_mul_mem_normIdeal hx hy (hΛ.mul_mem hz' hz) m hm | zero => simp | add u v _ _ hu hv => rw [add_mul]; exact add_mem hu hv | smul n u _ hu => rw [smul_mul_assoc]; exact Submodule.smul_mem _ n hu theorem IsOrder.natCast_mem {Λ : Submodule ℤ ℍ[ℚ, a, b]} (hΛ : IsOrder Λ) (n : ℕ) : (n : ℍ[ℚ, a, b]) ∈ Λ := by simpa using Submodule.smul_mem Λ (n : ℤ) hΛ.one_mem theorem IsOrder.natCast_mul_mem_normIdeal {Λ : Submodule ℤ ℍ[ℚ, a, b]} (hΛ : IsOrder Λ) (q : ℕ) {x : ℍ[ℚ, a, b]} (hx : x ∈ Λ) : (q : ℍ[ℚ, a, b]) * x ∈ normIdeal Λ q := by have h := mul_mul_mem_normIdeal (q := q) hΛ.one_mem (hΛ.natCast_mem q) hx (q : ℤ) (by rw [show (q : ℍ[ℚ, a, b]) = ((q : ℚ) : ℍ[ℚ, a, b]) by norm_cast, nrd_coe]; push_cast; ring) simpa using h theorem IsOrder.natCast_smul_mem_normIdeal {Λ : Submodule ℤ ℍ[ℚ, a, b]} (hΛ : IsOrder Λ) (q : ℕ) {x : ℍ[ℚ, a, b]} (hx : x ∈ Λ) : ((q : ℕ) : ℤ) • x ∈ normIdeal Λ q := by have h := hΛ.natCast_mul_mem_normIdeal q hx rwa [show (q : ℍ[ℚ, a, b]) * x = ((q : ℕ) : ℤ) • x by rw [zsmul_eq_mul, Int.cast_natCast]] at h end Level end QuaternionAlgebra end
Statements phrased using this module (39)
- Finiteness of the adelic class set at a congruence level
QuaternionAlgebra.finite_classSet_congruenceLevel6 below · depth 15 - Two descriptions of the Uₛ-set on the meet order agree
CerednikDrinfeld.uHeckeSet_eq_levelHeckeUSet_meetOrder_of_mem_primeHeckeSet34 below · depth 16 - Hecke sets meet only finitely many stabiliser cosets
QuaternionAlgebra.IsOrder.finite_setOf_exists_mem_quotientMk_eq_of_subset_primeHeckeSet1 below · depth 16 - At a ramified prime the Hecke set is one coset
QuaternionAlgebra.IsEichlerOrder.exists_primeHeckeSet_eq_setOf_mul_of_isDefiniteRamifiedExactlyAt17 below · depth 17 - Adelic Brandt-matrix count for a left-stable Hecke set
QuaternionAlgebra.IsOrder.heckeKernel_mk_mk_eq_natCard_of_forall_mul_mem2 below · depth 17 - Brandt matrix entry as a count of lattices
QuaternionAlgebra.IsOrder.heckeKernel_primeHeckeSet_mk_mk_eq_natCard2 below · depth 17 - Local normal form of an idele in the Tₚ Hecke set
QuaternionAlgebra.exists_ringEquiv_localBox_iff_evalAt_eq_diagonal_mul_of_mem_primeHeckeSet14 below · depth 17 - Lattice non-inclusion forces membership in the U_ℓ-set
CerednikDrinfeld.LevelU.mem_levelHeckeUSet_of_not_le39 below · depth 18 - A U_ℓ-step lattice never contains the level lattice
CerednikDrinfeld.LevelU.not_le_of_mem_levelHeckeUSet33 below · depth 18 - Level-lattice intersection along a U_ℓ-step
CerednikDrinfeld.LevelU.ofFiniteIdele_mul_inf_ofFiniteIdele_mul_eq_of_mem_levelHeckeUSet39 below · depth 18 - Local type of a normalised connecting finite idele
QuaternionAlgebra.IsMaximalOrder.localBoxUnits_and_exists_eq_mul_diagonal_mul_of_relIndex_inf_conjByFiniteIdele_eq31 below · depth 18 - Lattice criterion for the prime Hecke set at ℓ
QuaternionAlgebra.IsOrder.exists_mem_primeHeckeSet_eq_ofFiniteIdele_mul_iff11 below · depth 18 - Divisibility of idelic lattices versus integrality of n⁻¹g
QuaternionAlgebra.IsOrder.ofFiniteIdele_mul_le_zsmul_ofFiniteIdele_iff_inv_smul_mem_finiteAdeleBox1 below · depth 18 - Index of xgΛ̂∩ H as product of local indices
QuaternionAlgebra.IsOrder.relIndex_ofFiniteIdele_mul_eq_finprod_relIndex_map_mulLeft_localBox10 below · depth 18 - Sub-lattices of type m are the primitive ones of index N²
QuaternionAlgebra.exists_ofFiniteIdele_mul_eq_ofFiniteIdele_mul_mul_iff_relIndex_eq_sq_and_forall_not_le_zsmul51 below · depth 18 - Prime Hecke factorisation of a level-N connecting idèle
QuaternionAlgebra.exists_primeHeckeSet_list_prod_mul_eq_of_mem_finiteAdeleBox_of_relIndex_inf_conjByFiniteIdele_eq37 below · depth 18 - Index of a left translate of M₂(ℤᵥ)
QuaternionAlgebra.relIndex_map_mulLeft_eq_pow_of_eq_mul_diagonal_pow_mul0 below · depth 18 - Integral Cartan decomposition at a place over ℓ
Matrix.GeneralLinearGroup.exists_eq_mul_diagonal_natCast_pow_mul_of_forall_mem_adicCompletionIntegers1 below · depth 19 - Local index of gΛᵥ in Λᵥ is a power of ℓ
QuaternionAlgebra.IsOrder.exists_relIndex_map_mulLeft_localBox_eq_pow4 below · depth 19 - One-place idele with local elementary divisors (1,ℓ) is a prime Hecke element
QuaternionAlgebra.IsOrder.mem_primeHeckeSet_of_finiteAdeleEvalAt_eq_conj_diagonal1 below · depth 19 - Local index ℓⁿ of an Eichler order in a maximal order
QuaternionAlgebra.relIndex_eq_pow_of_forall_mem_iff_conj_diagonal_integral0 below · depth 19 - Class-set dictionary for the Bruhat–Tits quotient at r
CerednikDrinfeld.CosetGraph.exists_quot_equiv_classSet_shift_forget_of_mumfordSideFrame3,794 below · depth 20 - Local shape at v of a normalising prime Hecke element
CerednikDrinfeld.CosetGraph.mul_self_mem_level_and_not_mem_level_and_mem_inf_conj_iff_of_mem_primeHeckeSet21 below · depth 20 - Global norm-ℓ element realising the U-Hecke idele at ℓ ∣ N
CerednikDrinfeld.exists_units_finiteIdele_levelHeckeUSet_meetOrder_eq_tmul_one_of_dvd75 below · depth 20 - Global quaternion of reduced norm ℓ away from q
CerednikDrinfeld.exists_units_finiteIdele_primeHeckeSet_meetOrder_eq_tmul_one_of_not_dvd45 below · depth 20 - Hecke set at the ramified prime is a single coset
QuaternionAlgebra.IsEichlerOrder.primeHeckeSet_eq_and_heckeKernel_eq_of_ramified18 below · depth 20 - Coset graph at a split prime versus Bruhat–Tits tree, equivariantly
CerednikDrinfeld.CosetGraph.exists_iso_tree_ratClosure_smul_eq_and_natCard_stabilizer_mapDart_eq23 below · depth 21 - Coset graph quotient at r is the class-set degeneracy datum
CerednikDrinfeld.CosetGraph.exists_quotVert_equiv_classSet_and_quotEdge_equiv_classSet_of_isEichlerOrder3,743 below · depth 21 - Coset graph modulo r-units versus class-set degeneracy datum
CerednikDrinfeld.CosetGraph.exists_quotVert_equiv_classSet_and_quotEdge_equiv_classSet_of_isEichlerOrder_of_level3,754 below · depth 21 - Dart stabiliser order is half the unit count of the conjugated meet order
CerednikDrinfeld.CosetGraph.natCard_stabilizer_dart_eq_natCard_isUnitOf_conjByFiniteIdele_meetOrder_div_two26 below · depth 21 - Reversing a dart realises the class-set shift by n
CerednikDrinfeld.CosetGraph.quotEdge_symm_eq_classSetShift_of_forall_eq_classSet_mk29 below · depth 21 - Class of ̄ w x equals the varpi'-shift of x
CerednikDrinfeld.classSet_mk_eq_classSetShift_mk_of_finiteAdeleEvalAt_eq_mul_of_nrd_eq41 below · depth 21 - Local box of R ∩ n̂ R n⁻¹ at a place where n is a local unit
CerednikDrinfeld.localBox_meetOrder_eq_of_map_finiteAdeleEvalAt_mem_localBoxUnits27 below · depth 21 - Atkin–Lehner idele at a ramified prime: involutive class-set shift
QuaternionAlgebra.IsEichlerOrder.exists_finiteIdele_primeHeckeSet_ramified_conjByFiniteIdele_eq_classSetShift_involutive23 below · depth 21 - Fixing every coset-graph vertex forces a rational scalar
CerednikDrinfeld.CosetGraph.exists_coe_eq_smul_one_of_forall_smul_vert_eq12 below · depth 22 - Coset graph at a split prime is the Bruhat–Tits tree
CerednikDrinfeld.CosetGraph.exists_iso_tree_apply_coe_eq_smul_stdVertex4 below · depth 22 - Shift by a normalising idele acts by right multiplication
CerednikDrinfeld.classSetShift_mk_of_conjByFiniteIdele_eq27 below · depth 22 - Truncated norm-p idele lies in the prime Hecke set
CerednikDrinfeld.mem_primeHeckeSet_of_nrd_eq_of_forall_finiteAdeleEvalAt_eq17 below · depth 22 - r-integrality of a quaternion with Hecke-integral finite idele
QuaternionAlgebra.exists_pow_smul_mem_of_finiteAdeleEvalAt_eq_tmul_of_mul_inv_mem_primeHeckeSet6 below · depth 30