Definitions/Def_NumberField_AdelicLevel.lean
Adelic GL(2) level subgroups, component maps and Hecke elements
Throughout, R is a Dedekind domain with fraction field K. For an ideal N \subseteq R and a height-one prime v, idealBound R N v is the element of \mathbb{Z}^{m0} = WithZero (Multiplicative ℤ) equal to 0 if N = \bot and to \exp(-\operatorname{ord}_v N) otherwise, \operatorname{ord}_v N being the multiplicity of v in the factorisation of N; it is \le 1, equals 1 exactly off the (finitely many) primes dividing N, and is 1 for N = \top. Inside the finite adele ring (Mathlib's restricted product over height-one primes with respect to the \mathcal{O}_v), integralFiniteAdeles is the set of x with x_v \in \mathcal{O}_v for all v, and idealBall R K N the set of x with v(x_v) \le idealBound R N v for all v (for N \ne \bot this is \prod_v N\mathcal{O}_v; for N = \bot it is \{0\}). The structures IsLevelZeroMatrix/IsLevelOneMatrix are predicates on a 2\times 2 matrix over the finite adeles: all entries integral and the (1,0) entry in the N-ball, plus, for level one, the (1,1) entry congruent to 1 modulo the N-ball. The subgroups finiteLevelZero R K N, finiteLevelOne R K N of \mathrm{GL}_2(\mathbb{A}_K^f) are defined by imposing the corresponding predicate on g and on g^{-1} simultaneously (so inversion-closure is a symmetry of the definition); finiteIntegralGL2 R K abbreviates finiteLevelZero R K ⊤, and mem_finiteIntegralGL2_iff identifies it with integrality of g and g^{-1}. Their preimages under the finite-part projection give levelZero, levelOne in \mathrm{GL}_2(\mathbb{A}_K), with no condition at the infinite places. Accompanying lemmas prove these sets closed, open when N \ne \bot, and compact when R is a finite free \mathbb{Z}-module, with levelOne \le levelZero. The module also supplies the component-reading ring homomorphisms adeleArch, adeleFin, archEval, finAdeleEval and their \mathrm{GL}_2 analogues glArch, glFin, archComponent, finComponent, each with a definitional _apply lemma and a continuity statement; and Hecke elements: localUnit places a unit of K_v at the single coordinate v, diagOne sends a unit a to \mathrm{diag}(a,1), and heckeGenAt R K v t is the resulting element of \mathrm{GL}_2(\mathbb{A}_K), trivial at all other places. A chosen uniformizer uniformizer v \in R (with intValuation =\exp(-1), via choice) yields uniformizerUnit and heckeGen; heckeGenAt_inv_mul_heckeGenAt_mem_levelOne shows that equal valuations of t,t' force h_v(t)^{-1}h_v(t') \in levelOne R K N for every N, so the relevant cosets are independent of the choice.
Relation to Mathlib
Mathlib supplies the adele ring \mathbb{A}_K = \mathbb{A}_{K,\infty} \times \mathbb{A}_K^f, the finite adeles as a restricted product, the local completions adicCompletion with their valuation subrings adicCompletionIntegers, and Matrix.GeneralLinearGroup.map; the valuation bound attached to an ideal, the level predicates and the level subgroups of adelic \mathrm{GL}_2, the component homomorphisms as bundled ring/group maps, and the Hecke elements are the project's own definitions built on those.
Where it is used
These open compact subgroups are the level structures at which the project's adelic automorphic forms for \mathrm{GL}_2 are defined, levelOne being the one needed to accommodate a nontrivial nebentypus; the Hecke elements and the coset-independence statement are what the Hecke action at a finite place is built from. The construction is applied with R = \mathbb{Z} and with rings of integers of number fields, where the compactness hypotheses hold.
References
- H. Darmon, F. Diamond and R. Taylor, Fermat's Last Theorem, in: Current Developments in Mathematics 1995, International Press, 1995, 1–154
- P. Deligne and J.-P. Serre, Formes modulaires de poids 1, Annales scientifiques de l'École Normale Supérieure (4) 7 (1974), 507–530
- D. Bump, Automorphic Forms and Representations, Cambridge Studies in Advanced Mathematics 55, Cambridge University Press, 1997
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 814 lines
- 122 declarations
- used in the statements of 360 theorems and imported by 498 proofs
- imports 1 definition modules
Source file: Definitions/Def_NumberField_AdelicLevel.lean
Imports
Imported by
Def_AdelicDock_LocalEmbeddingDef_AutomorphicForm_AdelicMaximalCompactDef_AutomorphicForm_FactorizableTestFnDef_AutomorphicForm_GaussTwistDef_AutomorphicForm_HeckeEigenfunctionDef_AutomorphicForm_IwasawaShellIndexDef_AutomorphicForm_RationalTorusUnipotentQuotientDef_AutomorphicForm_SmoothAutomorphicFnAtDef_AutomorphicForm_WindowedSiegelSetDef_LanglandsTunnell_CubicInduction_AdelicEpsteinDef_LanglandsTunnell_CubicInduction_CarrierDef_LanglandsTunnell_TateLocalConstantsAtDef_NumberField_PrincipalLevelDef_RatIdele_Normalizer
Declarations
- def
NumberField.AdelicLevel.idealBound - theorem
NumberField.AdelicLevel.idealBound_bot - theorem
NumberField.AdelicLevel.idealBound_of_ne_bot - theorem
NumberField.AdelicLevel.idealBound_ne_zero - theorem
NumberField.AdelicLevel.idealBound_le_one - theorem
NumberField.AdelicLevel.idealBound_eq_one_of_not_dvd - theorem
NumberField.AdelicLevel.idealBound_top - theorem
NumberField.AdelicLevel.finite_setOf_idealBound_ne_one - theorem
NumberField.AdelicLevel.algebraMap_mem_adicCompletionIntegers - theorem
NumberField.AdelicLevel.valued_algebraMap - theorem
NumberField.AdelicLevel.setOf_valued_le_eq_preimage - theorem
NumberField.AdelicLevel.isOpen_setOf_valued_le - theorem
NumberField.AdelicLevel.isClosed_adicCompletionIntegers - theorem
NumberField.AdelicLevel.isClosed_setOf_valued_le - theorem
NumberField.AdelicLevel.exists_valued_eq_exp_neg - theorem
NumberField.AdelicLevel.isOpen_setOf_valued_le_idealBound - theorem
NumberField.AdelicLevel.isClosed_setOf_valued_le_idealBound - def
NumberField.AdelicLevel.archEval - def
NumberField.AdelicLevel.finAdeleEval - def
NumberField.AdelicLevel.adeleArch - def
NumberField.AdelicLevel.adeleFin - theorem
NumberField.AdelicLevel.archEval_apply - theorem
NumberField.AdelicLevel.finAdeleEval_apply - theorem
NumberField.AdelicLevel.adeleArch_apply - theorem
NumberField.AdelicLevel.adeleFin_apply - theorem
NumberField.AdelicLevel.continuous_archEval - theorem
NumberField.AdelicLevel.continuous_finAdeleEval - theorem
NumberField.AdelicLevel.continuous_adeleArch - theorem
NumberField.AdelicLevel.continuous_adeleFin - def
NumberField.AdelicLevel.archComponent - def
NumberField.AdelicLevel.finComponent - def
NumberField.AdelicLevel.glArch - def
NumberField.AdelicLevel.glFin - theorem
NumberField.AdelicLevel.archComponent_apply - theorem
NumberField.AdelicLevel.finComponent_apply - theorem
NumberField.AdelicLevel.glArch_apply - theorem
NumberField.AdelicLevel.glFin_apply - theorem
NumberField.AdelicLevel.continuous_glMap - theorem
NumberField.AdelicLevel.continuous_archComponent - theorem
NumberField.AdelicLevel.continuous_finComponent - theorem
NumberField.AdelicLevel.continuous_glArch - theorem
NumberField.AdelicLevel.continuous_glFin - def
NumberField.AdelicLevel.integralFiniteAdeles - def
NumberField.AdelicLevel.idealBall - theorem
NumberField.AdelicLevel.coe_zero_apply - theorem
NumberField.AdelicLevel.coe_one_apply - theorem
NumberField.AdelicLevel.coe_add_apply - theorem
NumberField.AdelicLevel.coe_mul_apply - theorem
NumberField.AdelicLevel.coe_sub_apply - theorem
NumberField.AdelicLevel.coe_neg_apply - theorem
NumberField.AdelicLevel.idealBall_subset_integralFiniteAdeles - theorem
NumberField.AdelicLevel.zero_mem_idealBall - theorem
NumberField.AdelicLevel.isOpen_integralFiniteAdeles - theorem
NumberField.AdelicLevel.isClosed_integralFiniteAdeles - theorem
NumberField.AdelicLevel.isClosed_idealBall - theorem
NumberField.AdelicLevel.isOpen_idealBall - theorem
NumberField.AdelicLevel.isCompact_integralFiniteAdeles - structure
NumberField.AdelicLevel.IsLevelZeroMatrix - field
NumberField.AdelicLevel.IsLevelZeroMatrix.integral - field
NumberField.AdelicLevel.IsLevelZeroMatrix.lowerLeft - structure
NumberField.AdelicLevel.IsLevelOneMatrix - field
NumberField.AdelicLevel.IsLevelOneMatrix.lowerRight - theorem
NumberField.AdelicLevel.one_mem_integralFiniteAdeles - theorem
NumberField.AdelicLevel.zero_mem_integralFiniteAdeles - theorem
NumberField.AdelicLevel.add_mem_integralFiniteAdeles - theorem
NumberField.AdelicLevel.mul_mem_integralFiniteAdeles - theorem
NumberField.AdelicLevel.sub_mem_integralFiniteAdeles - theorem
NumberField.AdelicLevel.valued_apply_le_one - theorem
NumberField.AdelicLevel.add_mem_idealBall - theorem
NumberField.AdelicLevel.mul_mem_idealBall_left - theorem
NumberField.AdelicLevel.mul_mem_idealBall_right - theorem
NumberField.AdelicLevel.IsLevelZeroMatrix.one - theorem
NumberField.AdelicLevel.IsLevelZeroMatrix.mul - theorem
NumberField.AdelicLevel.IsLevelOneMatrix.one - theorem
NumberField.AdelicLevel.IsLevelOneMatrix.mul - def
NumberField.AdelicLevel.finiteLevelZero - def
NumberField.AdelicLevel.finiteLevelOne - theorem
NumberField.AdelicLevel.mem_finiteLevelZero_iff - theorem
NumberField.AdelicLevel.mem_finiteLevelOne_iff - theorem
NumberField.AdelicLevel.finiteLevelOne_le_finiteLevelZero - abbrev
NumberField.AdelicLevel.finiteIntegralGL2 - theorem
NumberField.AdelicLevel.mem_finiteIntegralGL2_iff - theorem
NumberField.AdelicLevel.isClosed_setOf_isLevelZeroMatrix - theorem
NumberField.AdelicLevel.isClosed_setOf_isLevelOneMatrix - theorem
NumberField.AdelicLevel.isOpen_setOf_isLevelZeroMatrix - theorem
NumberField.AdelicLevel.isOpen_setOf_isLevelOneMatrix - theorem
NumberField.AdelicLevel.isOpen_finiteLevelZero - theorem
NumberField.AdelicLevel.isOpen_finiteLevelOne - theorem
NumberField.AdelicLevel.isClosed_finiteLevelZero - theorem
NumberField.AdelicLevel.isClosed_finiteLevelOne - theorem
NumberField.AdelicLevel.isCompact_setOf_integral - theorem
NumberField.AdelicLevel.isCompact_finiteLevelZero - theorem
NumberField.AdelicLevel.isCompact_finiteLevelOne - def
NumberField.AdelicLevel.levelZero - def
NumberField.AdelicLevel.levelOne - theorem
NumberField.AdelicLevel.mem_levelZero_iff - theorem
NumberField.AdelicLevel.mem_levelOne_iff - theorem
NumberField.AdelicLevel.levelOne_le_levelZero - theorem
NumberField.AdelicLevel.isOpen_levelZero - theorem
NumberField.AdelicLevel.isOpen_levelOne - theorem
NumberField.AdelicLevel.isClosed_levelZero - theorem
NumberField.AdelicLevel.isClosed_levelOne - def
NumberField.AdelicLevel.diagOne - theorem
NumberField.AdelicLevel.diagOne_coe_apply - def
NumberField.AdelicLevel.finIncl - theorem
NumberField.AdelicLevel.finIncl_apply_fst - theorem
NumberField.AdelicLevel.finIncl_apply_snd - def
NumberField.AdelicLevel.localUnit - theorem
NumberField.AdelicLevel.localUnit_apply_self - theorem
NumberField.AdelicLevel.localUnit_apply_of_ne - def
NumberField.AdelicLevel.heckeGenAt - theorem
NumberField.AdelicLevel.heckeGenAt_fst - theorem
NumberField.AdelicLevel.heckeGenAt_snd_apply_of_ne - theorem
NumberField.AdelicLevel.heckeGenAt_snd_apply_self - theorem
NumberField.AdelicLevel.heckeGenAt_inv_mul_heckeGenAt_mem_levelOne - def
NumberField.AdelicLevel.uniformizer - theorem
NumberField.AdelicLevel.intValuation_uniformizer - theorem
NumberField.AdelicLevel.valued_uniformizer - def
NumberField.AdelicLevel.uniformizerUnit - theorem
NumberField.AdelicLevel.valued_uniformizerUnit - def
NumberField.AdelicLevel.heckeGen - theorem
NumberField.AdelicLevel.heckeGen_inv_mul_heckeGenAt_mem_levelOne
Source
import Definitions.Def_NumberField_AdelicHaar open IsDedekindDomain IsDedekindDomain.HeightOneSpectrum NumberField RestrictedProduct open scoped Topology noncomputable section namespace NumberField.AdelicLevel variable (R K : Type*) [CommRing R] [IsDedekindDomain R] [Field K] [Algebra R K] [IsFractionRing R K] open scoped Classical in def idealBound (N : Ideal R) (v : HeightOneSpectrum R) : WithZero (Multiplicative ℤ) := if N = ⊥ then 0 else WithZero.exp (-((Associates.mk v.asIdeal).count (Associates.mk N).factors : ℤ)) section IdealBound variable {R} theorem idealBound_bot (v : HeightOneSpectrum R) : idealBound R ⊥ v = 0 := if_pos rfl theorem idealBound_of_ne_bot {N : Ideal R} (hN : N ≠ ⊥) (v : HeightOneSpectrum R) : idealBound R N v = WithZero.exp (-((Associates.mk v.asIdeal).count (Associates.mk N).factors : ℤ)) := by classical exact if_neg hN theorem idealBound_ne_zero {N : Ideal R} (hN : N ≠ ⊥) (v : HeightOneSpectrum R) : idealBound R N v ≠ 0 := by rw [idealBound_of_ne_bot hN]; exact WithZero.exp_ne_zero theorem idealBound_le_one (N : Ideal R) (v : HeightOneSpectrum R) : idealBound R N v ≤ 1 := by by_cases hN : N = ⊥ · rw [hN, idealBound_bot]; exact zero_le' · rw [idealBound_of_ne_bot hN, ← WithZero.exp_zero, WithZero.exp_le_exp] omega theorem idealBound_eq_one_of_not_dvd {N : Ideal R} (hN : N ≠ ⊥) {v : HeightOneSpectrum R} (hv : ¬ v.asIdeal ∣ N) : idealBound R N v = 1 := by classical rw [idealBound_of_ne_bot hN] have h0 : (Associates.mk v.asIdeal).count (Associates.mk N).factors = 0 := by by_contra h exact hv ((Associates.count_ne_zero_iff_dvd (show N ≠ 0 from hN) v.irreducible).mp h) rw [h0]; simp theorem idealBound_top (v : HeightOneSpectrum R) : idealBound R (⊤ : Ideal R) v = 1 := idealBound_eq_one_of_not_dvd top_ne_bot fun h => v.isPrime.ne_top ((Ideal.dvd_iff_le.mp h).antisymm le_top |>.symm ▸ rfl) theorem finite_setOf_idealBound_ne_one {N : Ideal R} (hN : N ≠ ⊥) : {v : HeightOneSpectrum R | idealBound R N v ≠ 1}.Finite := (Ideal.finite_factors hN).subset fun _ hv => by by_contra h exact hv (idealBound_eq_one_of_not_dvd hN h) end IdealBound section Local variable {R K} (v : HeightOneSpectrum R) theorem algebraMap_mem_adicCompletionIntegers (r : R) : algebraMap K (v.adicCompletion K) (algebraMap R K r) ∈ v.adicCompletionIntegers K := by rw [HeightOneSpectrum.mem_adicCompletionIntegers, show algebraMap K (v.adicCompletion K) (algebraMap R K r) = ((algebraMap R K r : K) : v.adicCompletion K) from rfl, HeightOneSpectrum.valuedAdicCompletion_eq_valuation'] exact v.valuation_le_one r theorem valued_algebraMap (r : R) : Valued.v (algebraMap K (v.adicCompletion K) (algebraMap R K r)) = v.intValuation r := by rw [show algebraMap K (v.adicCompletion K) (algebraMap R K r) = ((algebraMap R K r : K) : v.adicCompletion K) from rfl, HeightOneSpectrum.valuedAdicCompletion_eq_valuation', HeightOneSpectrum.valuation_of_algebraMap] theorem setOf_valued_le_eq_preimage (t : v.adicCompletion K) (ht : t ≠ 0) : {y : v.adicCompletion K | Valued.v y ≤ Valued.v t} = (fun y => y * t⁻¹) ⁻¹' (v.adicCompletionIntegers K : Set (v.adicCompletion K)) := by ext y simp only [Set.mem_setOf_eq, Set.mem_preimage, SetLike.mem_coe, HeightOneSpectrum.mem_adicCompletionIntegers, map_mul, map_inv₀] rw [mul_inv_le_iff₀ (zero_lt_iff.mpr ((Valuation.ne_zero_iff _).mpr ht)), one_mul] theorem isOpen_setOf_valued_le (t : v.adicCompletion K) (ht : t ≠ 0) : IsOpen {y : v.adicCompletion K | Valued.v y ≤ Valued.v t} := by rw [setOf_valued_le_eq_preimage v t ht] exact (continuous_id.mul continuous_const).isOpen_preimage _ (Valued.isOpen_valuationSubring _) theorem isClosed_adicCompletionIntegers : IsClosed (v.adicCompletionIntegers K : Set (v.adicCompletion K)) := Valued.isClosed_valuationSubring _ theorem isClosed_setOf_valued_le (t : v.adicCompletion K) (ht : t ≠ 0) : IsClosed {y : v.adicCompletion K | Valued.v y ≤ Valued.v t} := by rw [setOf_valued_le_eq_preimage v t ht] exact (isClosed_adicCompletionIntegers v).preimage (continuous_id.mul continuous_const) theorem exists_valued_eq_exp_neg (n : ℕ) : ∃ t : v.adicCompletion K, t ≠ 0 ∧ Valued.v t = WithZero.exp (-(n : ℤ)) := by obtain ⟨π, hπ⟩ := v.intValuation_exists_uniformizer refine ⟨(algebraMap K (v.adicCompletion K) (algebraMap R K π)) ^ n, ?_, ?_⟩ · refine pow_ne_zero _ fun h => ?_ have := valued_algebraMap (K := K) v π rw [h, map_zero, hπ] at this exact WithZero.exp_ne_zero this.symm · rw [map_pow, valued_algebraMap, hπ] induction n with | zero => simp | succ n ih => rw [pow_succ, ih, ← WithZero.exp_add]; congr 1; push_cast; ring theorem isOpen_setOf_valued_le_idealBound {N : Ideal R} (hN : N ≠ ⊥) : IsOpen {y : v.adicCompletion K | Valued.v y ≤ idealBound R N v} := by obtain ⟨t, ht, hvt⟩ := exists_valued_eq_exp_neg (K := K) v ((Associates.mk v.asIdeal).count (Associates.mk N).factors) rw [idealBound_of_ne_bot hN, ← hvt] exact isOpen_setOf_valued_le v t ht theorem isClosed_setOf_valued_le_idealBound (N : Ideal R) : IsClosed {y : v.adicCompletion K | Valued.v y ≤ idealBound R N v} := by by_cases hN : N = ⊥ · have : {y : v.adicCompletion K | Valued.v y ≤ idealBound R N v} = {0} := by ext y; simp [hN, idealBound_bot] rw [this]; exact isClosed_singleton · obtain ⟨t, ht, hvt⟩ := exists_valued_eq_exp_neg (K := K) v ((Associates.mk v.asIdeal).count (Associates.mk N).factors) rw [idealBound_of_ne_bot hN, ← hvt] exact isClosed_setOf_valued_le v t ht end Local section Projections def archEval (w : InfinitePlace K) : InfiniteAdeleRing K →+* w.Completion where toFun a := a w map_one' := rfl map_mul' _ _ := rfl map_zero' := rfl map_add' _ _ := rfl def finAdeleEval (v : HeightOneSpectrum R) : FiniteAdeleRing R K →+* v.adicCompletion K where toFun a := a v map_one' := rfl map_mul' _ _ := rfl map_zero' := rfl map_add' _ _ := rfl def adeleArch : AdeleRing R K →+* InfiniteAdeleRing K where toFun a := a.1 map_one' := rfl map_mul' _ _ := rfl map_zero' := rfl map_add' _ _ := rfl def adeleFin : AdeleRing R K →+* FiniteAdeleRing R K where toFun a := a.2 map_one' := rfl map_mul' _ _ := rfl map_zero' := rfl map_add' _ _ := rfl theorem archEval_apply (w : InfinitePlace K) (a : InfiniteAdeleRing K) : archEval K w a = a w := rfl theorem finAdeleEval_apply (v : HeightOneSpectrum R) (a : FiniteAdeleRing R K) : finAdeleEval R K v a = a v := rfl theorem adeleArch_apply (a : AdeleRing R K) : adeleArch R K a = a.1 := rfl theorem adeleFin_apply (a : AdeleRing R K) : adeleFin R K a = a.2 := rfl theorem continuous_archEval (w : InfinitePlace K) : Continuous (archEval K w) := (continuous_apply w : Continuous fun a : (∀ w : InfinitePlace K, w.Completion) => a w) theorem continuous_finAdeleEval (v : HeightOneSpectrum R) : Continuous (finAdeleEval R K v) := (RestrictedProduct.continuous_eval v : Continuous fun x : Πʳ w : HeightOneSpectrum R, [w.adicCompletion K, w.adicCompletionIntegers K] => x v) theorem continuous_adeleArch : Continuous (adeleArch R K) := (continuous_fst : Continuous fun x : AdeleRing R K => x.1) theorem continuous_adeleFin : Continuous (adeleFin R K) := (continuous_snd : Continuous fun x : AdeleRing R K => x.2) def archComponent (w : InfinitePlace K) : GL (Fin 2) (InfiniteAdeleRing K) →* GL (Fin 2) w.Completion := Matrix.GeneralLinearGroup.map (archEval K w) def finComponent (v : HeightOneSpectrum R) : GL (Fin 2) (FiniteAdeleRing R K) →* GL (Fin 2) (v.adicCompletion K) := Matrix.GeneralLinearGroup.map (finAdeleEval R K v) def glArch : GL (Fin 2) (AdeleRing R K) →* GL (Fin 2) (InfiniteAdeleRing K) := Matrix.GeneralLinearGroup.map (adeleArch R K) def glFin : GL (Fin 2) (AdeleRing R K) →* GL (Fin 2) (FiniteAdeleRing R K) := Matrix.GeneralLinearGroup.map (adeleFin R K) theorem archComponent_apply (w : InfinitePlace K) (g : GL (Fin 2) (InfiniteAdeleRing K)) (i j : Fin 2) : (archComponent K w g : Matrix (Fin 2) (Fin 2) w.Completion) i j = (g : Matrix (Fin 2) (Fin 2) (InfiniteAdeleRing K)) i j w := rfl theorem finComponent_apply (v : HeightOneSpectrum R) (g : GL (Fin 2) (FiniteAdeleRing R K)) (i j : Fin 2) : (finComponent R K v g : Matrix (Fin 2) (Fin 2) (v.adicCompletion K)) i j = (g : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K)) i j v := rfl theorem glArch_apply (g : GL (Fin 2) (AdeleRing R K)) (i j : Fin 2) : (glArch R K g : Matrix (Fin 2) (Fin 2) (InfiniteAdeleRing K)) i j = ((g : Matrix (Fin 2) (Fin 2) (AdeleRing R K)) i j).1 := rfl theorem glFin_apply (g : GL (Fin 2) (AdeleRing R K)) (i j : Fin 2) : (glFin R K g : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K)) i j = ((g : Matrix (Fin 2) (Fin 2) (AdeleRing R K)) i j).2 := rfl private theorem continuous_glMap {A B : Type*} [CommRing A] [CommRing B] [TopologicalSpace A] [TopologicalSpace B] [IsTopologicalRing A] [IsTopologicalRing B] (f : A →+* B) (hf : Continuous f) : Continuous (Matrix.GeneralLinearGroup.map (n := Fin 2) f) := Continuous.units_map _ ((continuous_id.matrix_map hf) : Continuous fun m : Matrix (Fin 2) (Fin 2) A => m.map f) theorem continuous_archComponent (w : InfinitePlace K) : Continuous (archComponent K w) := continuous_glMap _ (continuous_archEval K w) theorem continuous_finComponent (v : HeightOneSpectrum R) : Continuous (finComponent R K v) := continuous_glMap _ (continuous_finAdeleEval R K v) theorem continuous_glArch : Continuous (glArch R K) := continuous_glMap _ (continuous_adeleArch R K) theorem continuous_glFin : Continuous (glFin R K) := continuous_glMap _ (continuous_adeleFin R K) end Projections section FiniteAdelic def integralFiniteAdeles : Set (FiniteAdeleRing R K) := {x | ∀ v : HeightOneSpectrum R, x v ∈ v.adicCompletionIntegers K} def idealBall (N : Ideal R) : Set (FiniteAdeleRing R K) := {x | ∀ v : HeightOneSpectrum R, Valued.v (x v) ≤ idealBound R N v} variable {R K} section Coe variable (x y : FiniteAdeleRing R K) (v : HeightOneSpectrum R) theorem coe_zero_apply : (0 : FiniteAdeleRing R K) v = 0 := rfl theorem coe_one_apply : (1 : FiniteAdeleRing R K) v = 1 := rfl theorem coe_add_apply : (x + y) v = x v + y v := rfl theorem coe_mul_apply : (x * y) v = x v * y v := rfl theorem coe_sub_apply : (x - y) v = x v - y v := rfl theorem coe_neg_apply : (-x) v = -x v := rfl end Coe theorem idealBall_subset_integralFiniteAdeles (N : Ideal R) : idealBall R K N ⊆ integralFiniteAdeles R K := fun _ hx v => (HeightOneSpectrum.mem_adicCompletionIntegers _ _ _).mpr ((hx v).trans (idealBound_le_one N v)) theorem zero_mem_idealBall (N : Ideal R) : (0 : FiniteAdeleRing R K) ∈ idealBall R K N := fun v => by rw [coe_zero_apply, map_zero]; exact zero_le' variable (R K) theorem isOpen_integralFiniteAdeles : IsOpen (integralFiniteAdeles R K) := RestrictedProduct.isOpen_forall_mem (R := fun v : HeightOneSpectrum R => v.adicCompletion K) (A := fun v : HeightOneSpectrum R => (v.adicCompletionIntegers K : Set (v.adicCompletion K))) Fact.out theorem isClosed_integralFiniteAdeles : IsClosed (integralFiniteAdeles R K) := by have : integralFiniteAdeles R K = ⋂ v : HeightOneSpectrum R, (fun x : FiniteAdeleRing R K => x v) ⁻¹' (v.adicCompletionIntegers K : Set (v.adicCompletion K)) := by ext x; simp [integralFiniteAdeles] rw [this] exact isClosed_iInter fun v => (isClosed_adicCompletionIntegers v).preimage (continuous_finAdeleEval R K v) theorem isClosed_idealBall (N : Ideal R) : IsClosed (idealBall R K N) := by have : idealBall R K N = ⋂ v : HeightOneSpectrum R, (fun x : FiniteAdeleRing R K => x v) ⁻¹' {y | Valued.v y ≤ idealBound R N v} := by ext x; simp [idealBall] rw [this] exact isClosed_iInter fun v => (isClosed_setOf_valued_le_idealBound v N).preimage (continuous_finAdeleEval R K v) theorem isOpen_idealBall {N : Ideal R} (hN : N ≠ ⊥) : IsOpen (idealBall R K N) := by have hfin := finite_setOf_idealBound_ne_one hN have : idealBall R K N = integralFiniteAdeles R K ∩ ⋂ v ∈ {v : HeightOneSpectrum R | idealBound R N v ≠ 1}, (fun x : FiniteAdeleRing R K => x v) ⁻¹' {y | Valued.v y ≤ idealBound R N v} := by ext x simp only [Set.mem_inter_iff, Set.mem_iInter, Set.mem_preimage, Set.mem_setOf_eq] refine ⟨fun hx => ⟨idealBall_subset_integralFiniteAdeles N hx, fun v _ => hx v⟩, fun ⟨hint, hT⟩ v => ?_⟩ by_cases hv : idealBound R N v = 1 · rw [hv]; exact (HeightOneSpectrum.mem_adicCompletionIntegers _ _ _).mp (hint v) · exact hT v hv rw [this] exact (isOpen_integralFiniteAdeles R K).inter (hfin.isOpen_biInter fun v _ => (isOpen_setOf_valued_le_idealBound v hN).preimage (continuous_finAdeleEval R K v)) variable [Module.Free ℤ R] [Module.Finite ℤ R] theorem isCompact_integralFiniteAdeles : IsCompact (integralFiniteAdeles R K) := by haveI : ∀ v : HeightOneSpectrum R, CompactSpace ((v.adicCompletionIntegers K : Set (v.adicCompletion K))) := fun v => inferInstanceAs (CompactSpace (v.adicCompletionIntegers K)) have h := isCompact_range (RestrictedProduct.isOpenEmbedding_structureMap (R := fun v : HeightOneSpectrum R => v.adicCompletion K) (A := fun v : HeightOneSpectrum R => (v.adicCompletionIntegers K : Set (v.adicCompletion K))) Fact.out).continuous rw [RestrictedProduct.range_structureMap] at h exact h end FiniteAdelic section FiniteLevel structure IsLevelZeroMatrix (N : Ideal R) (m : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K)) : Prop where integral : ∀ i j, m i j ∈ integralFiniteAdeles R K lowerLeft : m 1 0 ∈ idealBall R K N structure IsLevelOneMatrix (N : Ideal R) (m : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K)) : Prop extends IsLevelZeroMatrix R K N m where lowerRight : m 1 1 - 1 ∈ idealBall R K N variable {R K} variable {N : Ideal R} theorem one_mem_integralFiniteAdeles : (1 : FiniteAdeleRing R K) ∈ integralFiniteAdeles R K := fun _ => one_mem _ theorem zero_mem_integralFiniteAdeles : (0 : FiniteAdeleRing R K) ∈ integralFiniteAdeles R K := fun _ => zero_mem _ theorem add_mem_integralFiniteAdeles {x y : FiniteAdeleRing R K} (hx : x ∈ integralFiniteAdeles R K) (hy : y ∈ integralFiniteAdeles R K) : x + y ∈ integralFiniteAdeles R K := fun v => add_mem (hx v) (hy v) theorem mul_mem_integralFiniteAdeles {x y : FiniteAdeleRing R K} (hx : x ∈ integralFiniteAdeles R K) (hy : y ∈ integralFiniteAdeles R K) : x * y ∈ integralFiniteAdeles R K := fun v => mul_mem (hx v) (hy v) theorem sub_mem_integralFiniteAdeles {x y : FiniteAdeleRing R K} (hx : x ∈ integralFiniteAdeles R K) (hy : y ∈ integralFiniteAdeles R K) : x - y ∈ integralFiniteAdeles R K := fun v => sub_mem (hx v) (hy v) theorem valued_apply_le_one {x : FiniteAdeleRing R K} (hx : x ∈ integralFiniteAdeles R K) (v : HeightOneSpectrum R) : Valued.v (x v) ≤ 1 := (HeightOneSpectrum.mem_adicCompletionIntegers _ _ _).mp (hx v) theorem add_mem_idealBall {x y : FiniteAdeleRing R K} (hx : x ∈ idealBall R K N) (hy : y ∈ idealBall R K N) : x + y ∈ idealBall R K N := fun v => (Valuation.map_add _ _ _).trans (max_le (hx v) (hy v)) theorem mul_mem_idealBall_left {x y : FiniteAdeleRing R K} (hx : x ∈ integralFiniteAdeles R K) (hy : y ∈ idealBall R K N) : x * y ∈ idealBall R K N := fun v => by rw [coe_mul_apply, map_mul] calc Valued.v (x v) * Valued.v (y v) ≤ 1 * idealBound R N v := mul_le_mul' (valued_apply_le_one hx v) (hy v) _ = idealBound R N v := one_mul _ theorem mul_mem_idealBall_right {x y : FiniteAdeleRing R K} (hx : x ∈ idealBall R K N) (hy : y ∈ integralFiniteAdeles R K) : x * y ∈ idealBall R K N := by rw [mul_comm]; exact mul_mem_idealBall_left hy hx namespace IsLevelZeroMatrix protected theorem one : IsLevelZeroMatrix R K N 1 where integral i j := by rw [Matrix.one_apply] split_ifs · exact one_mem_integralFiniteAdeles · exact zero_mem_integralFiniteAdeles lowerLeft := by rw [Matrix.one_apply_ne (by decide)] exact zero_mem_idealBall N variable {m m' : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K)} protected theorem mul (hm : IsLevelZeroMatrix R K N m) (hm' : IsLevelZeroMatrix R K N m') : IsLevelZeroMatrix R K N (m * m') where integral i j := by rw [Matrix.mul_apply, Fin.sum_univ_two] exact add_mem_integralFiniteAdeles (mul_mem_integralFiniteAdeles (hm.integral i 0) (hm'.integral 0 j)) (mul_mem_integralFiniteAdeles (hm.integral i 1) (hm'.integral 1 j)) lowerLeft := by rw [Matrix.mul_apply, Fin.sum_univ_two] exact add_mem_idealBall (mul_mem_idealBall_right hm.lowerLeft (hm'.integral 0 0)) (mul_mem_idealBall_left (hm.integral 1 1) hm'.lowerLeft) end IsLevelZeroMatrix namespace IsLevelOneMatrix protected theorem one : IsLevelOneMatrix R K N 1 where toIsLevelZeroMatrix := .one lowerRight := by rw [Matrix.one_apply_eq, sub_self] exact zero_mem_idealBall N variable {m m' : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K)} protected theorem mul (hm : IsLevelOneMatrix R K N m) (hm' : IsLevelOneMatrix R K N m') : IsLevelOneMatrix R K N (m * m') where toIsLevelZeroMatrix := hm.toIsLevelZeroMatrix.mul hm'.toIsLevelZeroMatrix lowerRight := by have h : (m * m') 1 1 - 1 = m 1 0 * m' 0 1 + ((m 1 1 - 1) * m' 1 1 + (m' 1 1 - 1)) := by rw [Matrix.mul_apply, Fin.sum_univ_two]; ring rw [h] exact add_mem_idealBall (mul_mem_idealBall_right hm.lowerLeft (hm'.integral 0 1)) (add_mem_idealBall (mul_mem_idealBall_right hm.lowerRight (hm'.integral 1 1)) hm'.lowerRight) end IsLevelOneMatrix variable (R K) (N) def finiteLevelZero : Subgroup (GL (Fin 2) (FiniteAdeleRing R K)) where carrier := {g | IsLevelZeroMatrix R K N (g : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K)) ∧ IsLevelZeroMatrix R K N ((g⁻¹ : GL (Fin 2) (FiniteAdeleRing R K)) : Matrix _ _ _)} one_mem' := ⟨by rw [Units.val_one]; exact .one, by rw [inv_one, Units.val_one]; exact .one⟩ mul_mem' ha hb := ⟨by rw [Units.val_mul]; exact ha.1.mul hb.1, by rw [mul_inv_rev, Units.val_mul]; exact hb.2.mul ha.2⟩ inv_mem' ha := ⟨ha.2, by rw [inv_inv]; exact ha.1⟩ def finiteLevelOne : Subgroup (GL (Fin 2) (FiniteAdeleRing R K)) where carrier := {g | IsLevelOneMatrix R K N (g : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K)) ∧ IsLevelOneMatrix R K N ((g⁻¹ : GL (Fin 2) (FiniteAdeleRing R K)) : Matrix _ _ _)} one_mem' := ⟨by rw [Units.val_one]; exact .one, by rw [inv_one, Units.val_one]; exact .one⟩ mul_mem' ha hb := ⟨by rw [Units.val_mul]; exact ha.1.mul hb.1, by rw [mul_inv_rev, Units.val_mul]; exact hb.2.mul ha.2⟩ inv_mem' ha := ⟨ha.2, by rw [inv_inv]; exact ha.1⟩ variable {R K N} theorem mem_finiteLevelZero_iff {g : GL (Fin 2) (FiniteAdeleRing R K)} : g ∈ finiteLevelZero R K N ↔ IsLevelZeroMatrix R K N (g : Matrix _ _ _) ∧ IsLevelZeroMatrix R K N ((g⁻¹ : GL (Fin 2) (FiniteAdeleRing R K)) : Matrix _ _ _) := Iff.rfl theorem mem_finiteLevelOne_iff {g : GL (Fin 2) (FiniteAdeleRing R K)} : g ∈ finiteLevelOne R K N ↔ IsLevelOneMatrix R K N (g : Matrix _ _ _) ∧ IsLevelOneMatrix R K N ((g⁻¹ : GL (Fin 2) (FiniteAdeleRing R K)) : Matrix _ _ _) := Iff.rfl variable (R K N) theorem finiteLevelOne_le_finiteLevelZero : finiteLevelOne R K N ≤ finiteLevelZero R K N := fun _ hg => ⟨hg.1.toIsLevelZeroMatrix, hg.2.toIsLevelZeroMatrix⟩ abbrev finiteIntegralGL2 : Subgroup (GL (Fin 2) (FiniteAdeleRing R K)) := finiteLevelZero R K ⊤ variable {R K} in theorem mem_finiteIntegralGL2_iff {g : GL (Fin 2) (FiniteAdeleRing R K)} : g ∈ finiteIntegralGL2 R K ↔ (∀ i j, (g : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K)) i j ∈ integralFiniteAdeles R K) ∧ ∀ i j, ((g⁻¹ : GL (Fin 2) (FiniteAdeleRing R K)) : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K)) i j ∈ integralFiniteAdeles R K := ⟨fun h => ⟨h.1.integral, h.2.integral⟩, fun h => ⟨⟨h.1, fun v => (idealBound_top v).symm ▸ valued_apply_le_one (h.1 1 0) v⟩, ⟨h.2, fun v => (idealBound_top v).symm ▸ valued_apply_le_one (h.2 1 0) v⟩⟩⟩ theorem isClosed_setOf_isLevelZeroMatrix : IsClosed {m : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K) | IsLevelZeroMatrix R K N m} := by have : {m : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K) | IsLevelZeroMatrix R K N m} = (⋂ i, ⋂ j, (fun m => m i j) ⁻¹' integralFiniteAdeles R K) ∩ (fun m => m 1 0) ⁻¹' idealBall R K N := by ext m simp only [Set.mem_setOf_eq, Set.mem_inter_iff, Set.mem_iInter, Set.mem_preimage] exact ⟨fun h => ⟨h.integral, h.lowerLeft⟩, fun h => ⟨h.1, h.2⟩⟩ rw [this] exact (isClosed_iInter fun i => isClosed_iInter fun j => (isClosed_integralFiniteAdeles R K).preimage (continuous_id.matrix_elem i j)).inter ((isClosed_idealBall R K N).preimage (continuous_id.matrix_elem 1 0)) theorem isClosed_setOf_isLevelOneMatrix : IsClosed {m : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K) | IsLevelOneMatrix R K N m} := by have : {m : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K) | IsLevelOneMatrix R K N m} = {m | IsLevelZeroMatrix R K N m} ∩ (fun m => m 1 1 - 1) ⁻¹' idealBall R K N := by ext m simp only [Set.mem_setOf_eq, Set.mem_inter_iff, Set.mem_preimage] exact ⟨fun h => ⟨h.toIsLevelZeroMatrix, h.lowerRight⟩, fun h => ⟨h.1, h.2⟩⟩ rw [this] exact (isClosed_setOf_isLevelZeroMatrix R K N).inter ((isClosed_idealBall R K N).preimage ((continuous_id.matrix_elem 1 1).sub continuous_const)) variable {N} in theorem isOpen_setOf_isLevelZeroMatrix (hN : N ≠ ⊥) : IsOpen {m : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K) | IsLevelZeroMatrix R K N m} := by have : {m : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K) | IsLevelZeroMatrix R K N m} = (⋂ i, ⋂ j, (fun m => m i j) ⁻¹' integralFiniteAdeles R K) ∩ (fun m => m 1 0) ⁻¹' idealBall R K N := by ext m simp only [Set.mem_setOf_eq, Set.mem_inter_iff, Set.mem_iInter, Set.mem_preimage] exact ⟨fun h => ⟨h.integral, h.lowerLeft⟩, fun h => ⟨h.1, h.2⟩⟩ rw [this] exact (isOpen_iInter_of_finite fun i => isOpen_iInter_of_finite fun j => (isOpen_integralFiniteAdeles R K).preimage (continuous_id.matrix_elem i j)).inter ((isOpen_idealBall R K hN).preimage (continuous_id.matrix_elem 1 0)) variable {N} in theorem isOpen_setOf_isLevelOneMatrix (hN : N ≠ ⊥) : IsOpen {m : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K) | IsLevelOneMatrix R K N m} := by have : {m : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K) | IsLevelOneMatrix R K N m} = {m | IsLevelZeroMatrix R K N m} ∩ (fun m => m 1 1 - 1) ⁻¹' idealBall R K N := by ext m simp only [Set.mem_setOf_eq, Set.mem_inter_iff, Set.mem_preimage] exact ⟨fun h => ⟨h.toIsLevelZeroMatrix, h.lowerRight⟩, fun h => ⟨h.1, h.2⟩⟩ rw [this] exact (isOpen_setOf_isLevelZeroMatrix R K hN).inter ((isOpen_idealBall R K hN).preimage ((continuous_id.matrix_elem 1 1).sub continuous_const)) variable {N} in theorem isOpen_finiteLevelZero (hN : N ≠ ⊥) : IsOpen (finiteLevelZero R K N : Set (GL (Fin 2) (FiniteAdeleRing R K))) := ((isOpen_setOf_isLevelZeroMatrix R K hN).preimage Units.continuous_val).inter ((isOpen_setOf_isLevelZeroMatrix R K hN).preimage Units.continuous_coe_inv) variable {N} in theorem isOpen_finiteLevelOne (hN : N ≠ ⊥) : IsOpen (finiteLevelOne R K N : Set (GL (Fin 2) (FiniteAdeleRing R K))) := ((isOpen_setOf_isLevelOneMatrix R K hN).preimage Units.continuous_val).inter ((isOpen_setOf_isLevelOneMatrix R K hN).preimage Units.continuous_coe_inv) theorem isClosed_finiteLevelZero : IsClosed (finiteLevelZero R K N : Set (GL (Fin 2) (FiniteAdeleRing R K))) := ((isClosed_setOf_isLevelZeroMatrix R K N).preimage Units.continuous_val).inter ((isClosed_setOf_isLevelZeroMatrix R K N).preimage Units.continuous_coe_inv) theorem isClosed_finiteLevelOne : IsClosed (finiteLevelOne R K N : Set (GL (Fin 2) (FiniteAdeleRing R K))) := ((isClosed_setOf_isLevelOneMatrix R K N).preimage Units.continuous_val).inter ((isClosed_setOf_isLevelOneMatrix R K N).preimage Units.continuous_coe_inv) section Compact variable [Module.Free ℤ R] [Module.Finite ℤ R] theorem isCompact_setOf_integral : IsCompact {g : GL (Fin 2) (FiniteAdeleRing R K) | (∀ i j, (g : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K)) i j ∈ integralFiniteAdeles R K) ∧ ∀ i j, ((g⁻¹ : GL (Fin 2) (FiniteAdeleRing R K)) : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K)) i j ∈ integralFiniteAdeles R K} := by set C : Set (Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K)) := {m | ∀ i j, m i j ∈ integralFiniteAdeles R K} with hC_def have hC : IsCompact C := by have hpi : C = Set.pi Set.univ fun _ : Fin 2 => Set.pi Set.univ fun _ : Fin 2 => integralFiniteAdeles R K := by ext m exact ⟨fun h i _ j _ => h i j, fun h i j => h i (Set.mem_univ _) j (Set.mem_univ _)⟩ rw [hpi] exact isCompact_univ_pi fun _ => isCompact_univ_pi fun _ => isCompact_integralFiniteAdeles R K have hK : IsCompact ((Units.embedProduct (Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K))) ⁻¹' (C ×ˢ (MulOpposite.op '' C))) := Units.isClosedEmbedding_embedProduct.isCompact_preimage (hC.prod (hC.image MulOpposite.continuous_op)) have heq : {g : GL (Fin 2) (FiniteAdeleRing R K) | (∀ i j, (g : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K)) i j ∈ integralFiniteAdeles R K) ∧ ∀ i j, ((g⁻¹ : GL (Fin 2) (FiniteAdeleRing R K)) : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K)) i j ∈ integralFiniteAdeles R K} = (Units.embedProduct (Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K))) ⁻¹' (C ×ˢ (MulOpposite.op '' C)) := by ext g simp only [Set.mem_setOf_eq, Set.mem_preimage, Units.embedProduct_apply, Set.mem_prod, Set.mem_image, hC_def] constructor · rintro ⟨h1, h2⟩; exact ⟨h1, _, h2, rfl⟩ · rintro ⟨h1, m, hm, hm'⟩ refine ⟨h1, ?_⟩ have : m = ((g⁻¹ : GL (Fin 2) (FiniteAdeleRing R K)) : Matrix (Fin 2) (Fin 2) (FiniteAdeleRing R K)) := MulOpposite.op_injective hm' rw [← this]; exact hm rw [heq]; exact hK theorem isCompact_finiteLevelZero : IsCompact (finiteLevelZero R K N : Set (GL (Fin 2) (FiniteAdeleRing R K))) := (isCompact_setOf_integral R K).of_isClosed_subset (isClosed_finiteLevelZero R K N) fun _ hg => ⟨hg.1.integral, hg.2.integral⟩ theorem isCompact_finiteLevelOne : IsCompact (finiteLevelOne R K N : Set (GL (Fin 2) (FiniteAdeleRing R K))) := (isCompact_finiteLevelZero R K N).of_isClosed_subset (isClosed_finiteLevelOne R K N) (finiteLevelOne_le_finiteLevelZero R K N) end Compact end FiniteLevel section Adelic variable (N : Ideal R) def levelZero : Subgroup (GL (Fin 2) (AdeleRing R K)) := (finiteLevelZero R K N).comap (glFin R K) def levelOne : Subgroup (GL (Fin 2) (AdeleRing R K)) := (finiteLevelOne R K N).comap (glFin R K) variable {R K N} theorem mem_levelZero_iff {g : GL (Fin 2) (AdeleRing R K)} : g ∈ levelZero R K N ↔ glFin R K g ∈ finiteLevelZero R K N := Iff.rfl theorem mem_levelOne_iff {g : GL (Fin 2) (AdeleRing R K)} : g ∈ levelOne R K N ↔ glFin R K g ∈ finiteLevelOne R K N := Iff.rfl variable (R K N) theorem levelOne_le_levelZero : levelOne R K N ≤ levelZero R K N := Subgroup.comap_mono (finiteLevelOne_le_finiteLevelZero R K N) variable {N} in theorem isOpen_levelZero (hN : N ≠ ⊥) : IsOpen (levelZero R K N : Set (GL (Fin 2) (AdeleRing R K))) := (isOpen_finiteLevelZero R K hN).preimage (continuous_glFin R K) variable {N} in theorem isOpen_levelOne (hN : N ≠ ⊥) : IsOpen (levelOne R K N : Set (GL (Fin 2) (AdeleRing R K))) := (isOpen_finiteLevelOne R K hN).preimage (continuous_glFin R K) theorem isClosed_levelZero : IsClosed (levelZero R K N : Set (GL (Fin 2) (AdeleRing R K))) := (isClosed_finiteLevelZero R K N).preimage (continuous_glFin R K) theorem isClosed_levelOne : IsClosed (levelOne R K N : Set (GL (Fin 2) (AdeleRing R K))) := (isClosed_finiteLevelOne R K N).preimage (continuous_glFin R K) end Adelic section Gen def diagOne {A : Type*} [CommRing A] : Aˣ →* GL (Fin 2) A where toFun a := { val := Matrix.diagonal ![(a : A), 1] inv := Matrix.diagonal ![((a⁻¹ : Aˣ) : A), 1] val_inv := by ext i j; fin_cases i <;> fin_cases j <;> simp inv_val := by ext i j; fin_cases i <;> fin_cases j <;> simp } map_one' := by ext i j; fin_cases i <;> fin_cases j <;> simp map_mul' a b := by ext i j; fin_cases i <;> fin_cases j <;> simp theorem diagOne_coe_apply {A : Type*} [CommRing A] (a : Aˣ) (i j : Fin 2) : (diagOne a : Matrix (Fin 2) (Fin 2) A) i j = Matrix.diagonal ![(a : A), 1] i j := rfl def finIncl : FiniteAdeleRing R K →* AdeleRing R K where toFun x := ((1 : InfiniteAdeleRing K), x) map_one' := rfl map_mul' _ _ := Prod.ext (one_mul _).symm rfl theorem finIncl_apply_fst (x : FiniteAdeleRing R K) : (finIncl R K x).1 = 1 := rfl theorem finIncl_apply_snd (x : FiniteAdeleRing R K) : (finIncl R K x).2 = x := rfl variable (v : HeightOneSpectrum R) open scoped Classical in def localUnit : (v.adicCompletion K)ˣ →* (FiniteAdeleRing R K)ˣ where toFun t := { val := ⟨Function.update 1 v (t : v.adicCompletion K), Filter.eventually_cofinite.mpr ((Set.finite_singleton v).subset fun w hw => by by_contra hwv exact hw (by rw [Function.update_of_ne hwv]; exact one_mem _))⟩ inv := ⟨Function.update 1 v ((t⁻¹ : (v.adicCompletion K)ˣ) : v.adicCompletion K), Filter.eventually_cofinite.mpr ((Set.finite_singleton v).subset fun w hw => by by_contra hwv exact hw (by rw [Function.update_of_ne hwv]; exact one_mem _))⟩ val_inv := by refine Subtype.ext (funext fun w => ?_) show Function.update (1 : ∀ w : HeightOneSpectrum R, w.adicCompletion K) v (t : v.adicCompletion K) w * Function.update (1 : ∀ w : HeightOneSpectrum R, w.adicCompletion K) v ((t⁻¹ : (v.adicCompletion K)ˣ) : v.adicCompletion K) w = 1 by_cases hw : w = v · subst hw; simp · simp [Function.update_of_ne hw] inv_val := by refine Subtype.ext (funext fun w => ?_) show Function.update (1 : ∀ w : HeightOneSpectrum R, w.adicCompletion K) v ((t⁻¹ : (v.adicCompletion K)ˣ) : v.adicCompletion K) w * Function.update (1 : ∀ w : HeightOneSpectrum R, w.adicCompletion K) v (t : v.adicCompletion K) w = 1 by_cases hw : w = v · subst hw; simp · simp [Function.update_of_ne hw] } map_one' := by refine Units.ext (Subtype.ext (funext fun w => ?_)) show Function.update (1 : ∀ w : HeightOneSpectrum R, w.adicCompletion K) v 1 w = 1 by_cases hw : w = v · subst hw; simp · simp [Function.update_of_ne hw] map_mul' t t' := by refine Units.ext (Subtype.ext (funext fun w => ?_)) show Function.update (1 : ∀ w : HeightOneSpectrum R, w.adicCompletion K) v ((t * t' : (v.adicCompletion K)ˣ) : v.adicCompletion K) w = Function.update (1 : ∀ w : HeightOneSpectrum R, w.adicCompletion K) v (t : v.adicCompletion K) w * Function.update (1 : ∀ w : HeightOneSpectrum R, w.adicCompletion K) v (t' : v.adicCompletion K) w by_cases hw : w = v · subst hw; simp · simp [Function.update_of_ne hw] open scoped Classical in theorem localUnit_apply_self (t : (v.adicCompletion K)ˣ) : ((localUnit R K v t : (FiniteAdeleRing R K)ˣ) : FiniteAdeleRing R K) v = t := by show Function.update (1 : ∀ w : HeightOneSpectrum R, w.adicCompletion K) v (t : v.adicCompletion K) v = t simp open scoped Classical in theorem localUnit_apply_of_ne (t : (v.adicCompletion K)ˣ) {w : HeightOneSpectrum R} (hw : w ≠ v) : ((localUnit R K v t : (FiniteAdeleRing R K)ˣ) : FiniteAdeleRing R K) w = 1 := by show Function.update (1 : ∀ w : HeightOneSpectrum R, w.adicCompletion K) v (t : v.adicCompletion K) w = 1 simp [Function.update_of_ne hw] def heckeGenAt : (v.adicCompletion K)ˣ →* GL (Fin 2) (AdeleRing R K) := diagOne.comp ((Units.map (finIncl R K)).comp (localUnit R K v)) variable {R K v} theorem heckeGenAt_fst (t : (v.adicCompletion K)ˣ) (i j : Fin 2) : ((heckeGenAt R K v t : Matrix (Fin 2) (Fin 2) (AdeleRing R K)) i j).1 = (1 : Matrix (Fin 2) (Fin 2) (InfiniteAdeleRing K)) i j := by fin_cases i <;> fin_cases j <;> rfl theorem heckeGenAt_snd_apply_of_ne (t : (v.adicCompletion K)ˣ) {w : HeightOneSpectrum R} (hw : w ≠ v) (i j : Fin 2) : ((heckeGenAt R K v t : Matrix (Fin 2) (Fin 2) (AdeleRing R K)) i j).2 w = (1 : Matrix (Fin 2) (Fin 2) (w.adicCompletion K)) i j := by fin_cases i <;> fin_cases j · show ((localUnit R K v t : (FiniteAdeleRing R K)ˣ) : FiniteAdeleRing R K) w = 1 exact localUnit_apply_of_ne R K v t hw · rfl · rfl · rfl theorem heckeGenAt_snd_apply_self (t : (v.adicCompletion K)ˣ) (i j : Fin 2) : ((heckeGenAt R K v t : Matrix (Fin 2) (Fin 2) (AdeleRing R K)) i j).2 v = Matrix.diagonal ![(t : v.adicCompletion K), 1] i j := by fin_cases i <;> fin_cases j · show ((localUnit R K v t : (FiniteAdeleRing R K)ˣ) : FiniteAdeleRing R K) v = t exact localUnit_apply_self R K v t · rfl · rfl · rfl theorem heckeGenAt_inv_mul_heckeGenAt_mem_levelOne (t t' : (v.adicCompletion K)ˣ) (h : Valued.v (t : v.adicCompletion K) = Valued.v (t' : v.adicCompletion K)) (N : Ideal R) : (heckeGenAt R K v t)⁻¹ * heckeGenAt R K v t' ∈ levelOne R K N := by rw [← map_inv, ← map_mul] set u : (v.adicCompletion K)ˣ := t⁻¹ * t' with hu have ht0 : Valued.v (t : v.adicCompletion K) ≠ 0 := (Valuation.ne_zero_iff _).mpr t.ne_zero have hu1 : Valued.v (u : v.adicCompletion K) = 1 := by rw [hu, Units.val_mul, Units.val_inv_eq_inv_val, map_mul, map_inv₀, h, ← h, inv_mul_cancel₀ ht0] have hui : Valued.v ((u⁻¹ : (v.adicCompletion K)ˣ) : v.adicCompletion K) = 1 := by rw [Units.val_inv_eq_inv_val, map_inv₀, hu1, inv_one] have hint : ∀ s : (v.adicCompletion K)ˣ, Valued.v (s : v.adicCompletion K) = 1 → ((localUnit R K v s : (FiniteAdeleRing R K)ˣ) : FiniteAdeleRing R K) ∈ integralFiniteAdeles R K := by intro s hs w classical by_cases hw : w = v · subst hw rw [localUnit_apply_self, HeightOneSpectrum.mem_adicCompletionIntegers, hs] · rw [localUnit_apply_of_ne R K v s hw]; exact one_mem _ have key : ∀ s : (v.adicCompletion K)ˣ, Valued.v (s : v.adicCompletion K) = 1 → IsLevelOneMatrix R K N (glFin R K (heckeGenAt R K v s) : Matrix _ _ _) := by intro s hs refine ⟨⟨fun i j => ?_, ?_⟩, ?_⟩ · fin_cases i <;> fin_cases j · exact hint s hs · exact zero_mem_integralFiniteAdeles · exact zero_mem_integralFiniteAdeles · exact one_mem_integralFiniteAdeles · exact zero_mem_idealBall N · show (1 : FiniteAdeleRing R K) - 1 ∈ idealBall R K N rw [sub_self]; exact zero_mem_idealBall N refine ⟨key u hu1, ?_⟩ rw [← map_inv, ← map_inv] exact key u⁻¹ hui variable (K v) def uniformizer : R := Classical.choose v.intValuation_exists_uniformizer theorem intValuation_uniformizer : v.intValuation (uniformizer v) = WithZero.exp (-1 : ℤ) := Classical.choose_spec v.intValuation_exists_uniformizer theorem valued_uniformizer : Valued.v (algebraMap K (v.adicCompletion K) (algebraMap R K (uniformizer v))) = WithZero.exp (-1 : ℤ) := by rw [valued_algebraMap, intValuation_uniformizer] def uniformizerUnit : (v.adicCompletion K)ˣ := Units.mk0 (algebraMap K (v.adicCompletion K) (algebraMap R K (uniformizer v))) fun h => by have := valued_uniformizer K v rw [h, map_zero] at this exact WithZero.exp_ne_zero this.symm theorem valued_uniformizerUnit : Valued.v (uniformizerUnit K v : v.adicCompletion K) = WithZero.exp (-1 : ℤ) := valued_uniformizer K v variable (R) def heckeGen : GL (Fin 2) (AdeleRing R K) := heckeGenAt R K v (uniformizerUnit K v) variable {R K v} theorem heckeGen_inv_mul_heckeGenAt_mem_levelOne (t : (v.adicCompletion K)ˣ) (ht : Valued.v (t : v.adicCompletion K) = WithZero.exp (-1 : ℤ)) (N : Ideal R) : (heckeGen R K v)⁻¹ * heckeGenAt R K v t ∈ levelOne R K N := heckeGenAt_inv_mul_heckeGenAt_mem_levelOne _ _ ((valued_uniformizerUnit K v).trans ht.symm) N end Gen end NumberField.AdelicLevel end
Statements phrased using this module (360)
- Strong approximation for GL₂/ℚ at level N with positivity
NumberField.AdelicLevel.exists_globalPoints_mul_mem_levelOne_rat4 below · depth 11 - Strong approximation for GL₂/ℚ at finite level K₁(N)
NumberField.AdelicLevel.exists_glFin_globalPoints_mul_mem_finiteLevelOne_rat3 below · depth 12 - Every finite adelic GL₂ matrix over ℚ is globally integralisable
NumberField.AdelicLevel.exists_globalPoints_mul_mem_finiteIntegralGL2_rat0 below · depth 13 - Determinant eigenvalues come from a finite-order Hecke character
LanglandsTunnell.exists_isFiniteOrderHeckeChar_det_heckeGen_eq_b_of_isArithGenuineCuspRealizable2 below · depth 14 - Class number one of ℚ in idelic form
NumberField.AdelicLevel.finiteIdeleClassNumberOne_rat0 below · depth 15 - Whittaker coefficients: W_α(g)=W₁(diag(α,1)g)
AutomorphicForm.whittakerCoefficient_eq_whittakerCoefficient_one_globalPoints_diagOne_mul3 below · depth 16 - Holomorphy at real places of half-determinant twisted translate sums
LanglandsTunnell.Converse.CuspSynthesis.isArchHolomorphicAt_translateSum_halfDet27 below · depth 16 - Norm-one unit idèle nontrivial at a prescribed place above p₀
LanglandsTunnell.RankinSelberg.exists_unitIdele_over_idelicNorm_eq_one_and_apply_ne_one_of_ne2 below · depth 16 - Adelic Iwasawa decomposition for GL₂ over a number field
AutomorphicForm.exists_mem_adelicBorel_mul_eq1 below · depth 17 - Automorphy transports from a Siegel window to a fundamental domain
AutomorphicForm.isAutomorphicFnAt_of_isFundamentalDomain_of_isAutomorphicFnAt_of_coversModCentre11 below · depth 17 - Idele class characters determined by almost all uniformizer values
HeckeCharacter.eq_of_forall_apply_localUnit_uniformizerUnit_eq2 below · depth 17 - Growth of class sums of Hecke recursion values
AutomorphicForm.ClassSumGrowth.exists_forall_classBlock_le_and_classSum_le135 below · depth 18 - Linear lower bound for class-restricted mean-square Hecke sums
AutomorphicForm.ClassSumGrowth.exists_forall_le_classSum_of_classCarriesMass487 below · depth 18 - Ramified place yields local unit outside the reciprocity kernel
LanglandsTunnell.P2.Artin.exists_localUnit_notMem_principalIdeles_sup_range_idelicNorm_of_inertia_ne_bot253 below · depth 18 - Twist-stability of arithmetic genuine cusp-realizability on a covering window
LanglandsTunnell.exists_isArithGenuineCuspRealizable_twist_of_coversModCentre_centreCut94 below · depth 18 - Kirillov-model majorant for Whittaker functions on the torus
AutomorphicForm.WhittakerModel.exists_norm_diagOne_mul_le_of_irreducible_admissible2 below · depth 19 - C² regularity along the unipotent archimedean direction over ℚ
AutomorphicForm.contDiff_apply_unipotentGL2_mixedSpace_mul_of_isArchSmoothAt_rat0 below · depth 19 - Non-vanishing Whittaker coefficient at a principal idele
AutomorphicForm.exists_mem_principalIdeles_whittakerCoefficient_one_diagOne_mul_ne_zero24 below · depth 19 - Support of the first Whittaker coefficient on the torus diag(b,1)
AutomorphicForm.exists_whittakerCoefficient_one_diagOne_eq_zero_of_exp_lt_valuation24 below · depth 19 - Component at u of a k-translate is F∣₂γ⁻¹
CuspForm.IsAdelicLiftOf.apply_mul_padicToAdelic_diagOne_mul_eq_slash_inv_slash_of_component0 below · depth 19 - Vanishing of a K(q)-fixed vector in the span of an adelic lift
CuspForm.IsAdelicLiftOf.eq_zero_of_forall_apply_mul_padicToAdelic_diagOne_eq_zero_of_mem_span_of_mem_fixedSubmodule6 below · depth 19 - Classical components at full level q of adelic span vectors
CuspForm.IsAdelicLiftOf.exists_cuspForm_gamma_inf_gamma0_apply_mul_padicToAdelic_diagOne_eq_slash_of_mem_span_of_mem_fixedSubmodule6 below · depth 19 - Hecke action on full-level components of an adelic newform
CuspForm.IsAdelicLiftOf.heckeTLinH_eq_qCoeff_smul_of_components_of_isNewform19 below · depth 19 - Splitting of adelic GL₂ integrals of pure tensors
NumberField.AdelicHaar.exists_integral_glArch_mul_glFin_eq_mul_integral_mul_integral2 below · depth 19 - Unique diag(a,1) representative for B(K) modulo Z(K)N(K)
AutomorphicForm.existsUnique_diagOne_inv_mul_mem_scalar_sup_unipotent_of_mem_borelSubgroup0 below · depth 20 - Depth of lower unipotent invariance for translated level-N vectors
AutomorphicForm.exists_depth_forall_apply_mul_lowerUnipotentGL2_eq_of_sum_translate0 below · depth 20 - Archimedean derivative of a unipotent average's first Whittaker coefficient
AutomorphicForm.exists_mem_schwartzBruhat_whittakerCoefficient_unipotentAverage_diagOne_eq_trace_mul8 below · depth 20 - Whittaker expansion over principal ideles of a cuspidal function
AutomorphicForm.hasSum_whittakerCoefficient_one_diagOne_principalIdeles_mul23 below · depth 20 - Parseval step of Rankin–Selberg unfolding over the rational torus
AutomorphicForm.integral_mul_conj_unipotent_eq_tsum_units_whittakerCoefficient_one_diagOne_and_tsum_norm_le12 below · depth 20 - Explicit induced section on adelic GL₂ with prescribed level
AutomorphicForm.isInducedSection_indicator_bottomRow_mul_adelicHeight_cpow4 below · depth 20 - Conjugation by the Hecke element scales the Z(K)N measure by Nv
AutomorphicForm.lintegral_rationalCentreUnipotentHaar_comp_heckeGen_mul_centralScalar_conj3 below · depth 20 - Conjugation by diag(varpiᵥ,1)z(u) preserves Z(K)N(A)
AutomorphicForm.mem_rationalCentreUnipotent_iff_heckeGen_mul_centralScalar_conj_mem0 below · depth 20 - Components of K(q)-fixed vectors as linear families of cusp forms
CuspForm.IsAdelicLiftOf.exists_linearMap_components_of_fixedSubmodule_of_range_eq_span10 below · depth 20 - Adelic Hecke sum at a good prime equals a_ℓ(g)
CuspForm.IsAdelicLiftOf.sum_toFn_mul_eq_qCoeff_mul_of_mem_span_of_isHeckeCosetSystem10 below · depth 20 - Adelic Haar measure on GLₙ splits as archimedean times finite
NumberField.AdelicHaar.exists_map_adelicGLHaar_eq_smul_prod1 below · depth 20 - Right invariance of Haar measure on GL₂ of the archimedean adeles
NumberField.AdelicHaar.isMulRightInvariant_of_isHaarMeasure_generalLinearGroup_infiniteAdeleRing4 below · depth 20 - Deep twist functional equation for GL₂ Whittaker torus integrals
AutomorphicForm.WhittakerModel.exists_torusZeta_dual_eq_stdRootNumberAt_mul_stdRootNumberAt_mul_of_admissible_of_le_of_norm_eq_one29 below · depth 21 - Continuity of Borel-induced sections from the maximal compact
AutomorphicForm.continuousOn_of_isInducedSection_of_continuousOn_maximalCompact2 below · depth 21 - Existence of a nonzero level-one invariant vector at v
AutomorphicForm.exists_ne_zero_forall_mem_localLevelOne_smul_eq_of_smooth_of_det_one_invariant_eq_zero0 below · depth 21 - Vanishing of the isotypic cusp space when v∣ N
AutomorphicForm.isotypicCuspSubmodule_productionPinsOf_principal_eq_bot_of_dvd1 below · depth 21 - Whittaker coefficients of unipotent right translates at torus points
AutomorphicForm.whittakerCoefficient_finset_sum_mul_unipotentGL2_diagOne_mul1 below · depth 21 - Unramified characters of ℚᵥ^× are powers of the modulus
LanglandsTunnell.CubicInduction.exists_forall_apply_eq_modulus_cpow1 below · depth 21 - Sign-flip transport of the local GL₃ package, gauge edition
LanglandsTunnell.CubicInduction.localPackage_psiLocal_inv_comp_mul_diagonal_of_localPackage_psiLocal_of_gauge2 below · depth 21 - Conjugation by diag(1,-1,1) of local GL₃ zeta integrals
LanglandsTunnell.CubicInduction.localZeta_conj_diagonal_signFlip2 below · depth 21 - Rationality of local Rankin–Selberg integrals for GL₃ principal series
LanglandsTunnell.RankinSelberg.exists_rational_rsLocalIntegral_and_dual_of_principalSeries363 below · depth 21 - Multiplicativity of the local GL₃× GL₂ functional equation
LanglandsTunnell.RankinSelberg.forall_rsLocalIntegral_clearedFE_prod_of_principalSeries3_of_forall_torusZeta_fe_multiplicativity3_ed3305 below · depth 21 - Injectivity of the Kirillov map on a Whittaker space
AutomorphicForm.LocalFunctionSpace.eq_zero_of_forall_apply_diagOne_eq_zero_of_irreducible_of_admissible8 below · depth 22 - Shell form of the local functional equation for deep twists
AutomorphicForm.WhittakerModel.exists_torusShell_eq_zero_and_torusShell_dual_eq_stdRootNumberAt_mul_of_mem_span25 below · depth 22 - Deep congruence elements preserve U₁(N)-invariant functions on GL₂(A_K)
AutomorphicForm.apply_mul_eq_of_forall_mem_levelOne_of_valued_sub_one_le0 below · depth 22 - Invariance of a translated level-one function under deep congruence elements
AutomorphicForm.apply_mul_mul_eq_of_forall_mem_levelOne_of_valued_sub_one_le_of_valued_apply_le0 below · depth 22 - Continuity of a family from its Iwasawa factorisation
AutomorphicForm.continuousOn_of_forall_apply_borel_mul_eq_of_continuousOn2 below · depth 22 - Continuous Iwasawa decomposition of w⁻¹n(x) over the adeles
AutomorphicForm.exists_continuous_iwasawa_weyl_unipotent2 below · depth 22 - Adelic GL₂ induced sections with prescribed K-type and support
AutomorphicForm.exists_isInducedSection_one_etaSnd_eq_on_maximalCompact_of_equivariant10 below · depth 22 - Adelic Weyl intertwining integral has a simple pole at σ=1/2
AutomorphicForm.exists_pos_eventually_le_sub_one_half_mul_setIntegral_adelicHeight_weyl_unipotent_rpow10 below · depth 22 - Vanishing of level-one isotypic cusp spaces at primes dividing the level
AutomorphicForm.isotypicCuspSubmodule_productionPinsOf_levelOne_eq_bot_of_dvd1 below · depth 22 - Rationality of principal-series Rankin–Selberg local integrals at p
LanglandsTunnell.RankinSelberg.exists_rational_rsLocalIntegral_and_dual_of_jacquetWhittaker3_ed257 below · depth 22 - Cleared Rankin–Selberg functional equation for one Jacquet–Whittaker vector
LanglandsTunnell.RankinSelberg.forall_rsLocalIntegral_clearedFE_prod_of_jacquetWhittaker3_of_forall_torusZeta_fe301 below · depth 22 - Shell calculus for the multiplicative Haar measure on ℚₚ^×
LanglandsTunnell.TateLocal.hasSum_setIntegral_shell_comap_val_mulMeasure_and_modulus_eq_of_valued_eq2 below · depth 22 - Finite-place entry bounds for an adelic alignment element
NumberField.AdelicLevel.valued_apply_mul_diagOne_inv_mul_diagOne_mul_le_of_valued_eq0 below · depth 22 - Shell vanishing and recurrence for admissible Whittaker spaces
AutomorphicForm.WhittakerModel.exists_polynomial_forall_diagZ_mul_eq_zero_and_sum_coeff_mul_eq_zero_of_admissible1 below · depth 23 - Torus-shell vanishing and shell functional equation, deep twist
AutomorphicForm.WhittakerModel.exists_torusShell_eq_zero_and_torusShell_dual_eq_stdRootNumberAt_mul_of_mem_localLevelOne_top24 below · depth 23 - Properties of the cyclic span of a local Whittaker function
AutomorphicForm.WhittakerModel.span_translates_stable_and_law_and_smooth_and_irreducible_and_central1 below · depth 23 - Archimedean induced section at (1,ν) with prescribed K_∞-type
AutomorphicForm.exists_continuous_isArchKFinite_eq_of_borel_arch_of_equivariant5 below · depth 23 - A compact carrier for Satake boxes and their formal base change
AutomorphicForm.exists_isCompact_carrier_box_union_formalBaseChange0 below · depth 23 - A K_f-smooth induced section with prescribed level and support
AutomorphicForm.exists_isKfSmooth_eq_prod_localChar_of_borel_fin_of_level5 below · depth 23 - Galois action permutes local factors and Hecke generators
AutomorphicForm.sigmaAdelicAct_localEmbed_range_and_heckeGen_of_asIdeal_eq_smul0 below · depth 23 - Euler-product shape of Whittaker coefficients of a flat Eisenstein family
AutomorphicForm.whittakerCoefficient_bruhatEisenstein_diagOne_eq_cpowChar_mul_sum_eulerProduct_of_flat_family57 below · depth 23 - Twisted translated Jacquet–Whittaker function: admissible, unitary central, gauged
LanglandsTunnell.CubicInduction.exists_detTwist_jacquetWhittaker3_translate_whittaker_smooth_central_admissible_gauge23 below · depth 23 - Non-vanishing of a Hecke-local Whittaker function at a point trivial outside S_Q
LanglandsTunnell.RankinSelberg.exists_forall_localAt_eq_one_and_ne_zero_of_heckeLocal_of_levelOne_invariant9 below · depth 23 - Local GL₃× GL₂ cleared functional equation from torus equations
LanglandsTunnell.RankinSelberg.forall_rsLocalIntegral_clearedFE_prod_of_jacquetWhittaker3_of_forall_torusZeta_fe_core287 below · depth 23 - Averaging a bottom-row valuation condition over the adelic maximal compact
AutomorphicForm.exists_lintegral_ite_bottomRow_maximalCompactHaar_eq_mul_lintegral_maximalCompactAtHaar_empty0 below · depth 24 - Cleared local GL₃× GL₂ integrals along a flat twist family
LanglandsTunnell.RankinSelberg.exists_forall_lt_rsLocalIntegral_jacquetWhittaker3_twistFamily_mul_centralTate_eq_cpow_mul_eval144 below · depth 24 - Cleared GL₃× GL₂ functional equation in the positive chamber
LanglandsTunnell.RankinSelberg.forall_rsLocalIntegral_clearedFE_prod_of_jacquetWhittaker3_of_forall_torusZeta_fe_core_of_chamber270 below · depth 24 - Inverse of the Hecke generator in its level-N double coset
NumberField.AdelicLevel.exists_heckeGen_inv_eq_centralScalar_mul_mul_heckeGen_mul_levelOne_and_mul_det_eq_one0 below · depth 24 - Whittaker coefficients of a flat unitary Eisenstein family along the torus
AutomorphicForm.whittakerCoefficient_bruhatEisenstein_diagOne_eq_cpowChar_mul_sum_eulerProduct_of_flat_family_of_unitary58 below · depth 25 - Rationality of the dual GL₂× GL₂ Rankin–Selberg integral
LanglandsTunnell.RankinSelberg.exists_rsLocalIntegral22_dual_mul_one_sub_eq_cpow_mul_eval_of_principalSeries2_of_forall_torusZeta_polynomial40 below · depth 25 - Rationality of the local GL₂timesGL₂ Rankin–Selberg integral
LanglandsTunnell.RankinSelberg.exists_rsLocalIntegral22_mul_one_sub_eq_cpow_mul_eval_of_principalSeries2_of_forall_torusZeta_polynomial39 below · depth 25 - Unfolded GL₃× GL₂ Rankin–Selberg integrals, primal and dual
LanglandsTunnell.RankinSelberg.exists_rsLocalIntegral_jacquetWhittaker3_iotaGL_eq_sum_and_dual_eq_mul_sum_of_chamber_ed2111 below · depth 25 - Cleared local GL₃× GL₂ Rankin–Selberg integrals in a chamber
LanglandsTunnell.RankinSelberg.exists_rsLocalIntegral_jacquetWhittaker3_mul_centralTate_eq_cpow_mul_eval_and_dual_of_chamber141 below · depth 25 - Godement–Jacquet zeta integrals for GL₂: cleared functional equation
LanglandsTunnell.RankinSelberg.forall_godementZeta2_clearedFE_of_forall_torusZeta_fe167 below · depth 25 - Cleared GL₂× GL₂ local functional equation: principal series case
LanglandsTunnell.RankinSelberg.forall_rsLocalIntegral22_schwartz_clearedFE_of_principalSeries2_of_forall_torusZeta_fe_ed2219 below · depth 25 - Two-parameter torus law for the product W W'F
UnramifiedWhittaker.mul_mul_apply_mul_placeEmbed_diagZ_mul_scalarPi_zpow_eq_of_torus_data_rat1 below · depth 25 - Gauge bound for an admissible local Whittaker function on the torus
AutomorphicForm.WhittakerModel.exists_norm_diagUnits2_mul_le_and_eq_zero_of_admissible_of_centralChar4 below · depth 26 - Translates of a Whittaker vector: smoothness, growth, shell recurrence
AutomorphicForm.WhittakerModel.forall_mem_span_smooth_and_law_and_central_and_growth_and_shellRecurrence4 below · depth 26 - Unit shell at the Weyl element for a deep twist
AutomorphicForm.WhittakerModel.setIntegral_unitShell_diagOne_weyl_eq_stdRootNumberAt_mul_setIntegral_shell_of_admissible_of_le_of_norm_eq_one26 below · depth 26 - Contragredient involution maps I(μ₀,μ₁) to I(μ₁⁻¹,μ₀⁻¹)
LanglandsTunnell.CubicInduction.conj_transposeInvN_mem_principalSeries20 below · depth 26 - Flip by diag(1,-1) in the local Godement integral
LanglandsTunnell.CubicInduction.godementDock_diagFlip_eq4 below · depth 26 - Godement–Whittaker function of a pure tensor at ι(g)
LanglandsTunnell.CubicInduction.godementWhittaker3_iotaGL_eq_of_pureTensor0 below · depth 26 - Dual Jacquet integral of a principal-series vector
LanglandsTunnell.CubicInduction.integral_psiLocal_mul_transposeInvN_eq_mul_integral_psiLocal_mul_dual0 below · depth 26 - Godement-section realisation of the GL₃ Jacquet–Whittaker function
LanglandsTunnell.CubicInduction.jacquetWhittaker3_diagonal3_mul_eq_mul_godementWhittaker3_of_chamber27 below · depth 26 - Fourier transform of a pure tensor on M_{2× 3}
LanglandsTunnell.CubicInduction.matFourier23_leftBlock_mul_lastCol_mul_const0 below · depth 26 - Twisted contragredient of a Whittaker vector is again Whittaker
LanglandsTunnell.RankinSelberg.dualPartner_block_of_admissible2 below · depth 26 - Uniform radial profile of a Schwartz–Bruhat function on bottom rows
LanglandsTunnell.RankinSelberg.exists_forall_apply_row_localLevelOne_eq_zero_and_eq_apply_zero_of_isLocallyConstant_of_hasCompactSupport0 below · depth 26 - Convergence of the dual GL₂× GL₂ Rankin–Selberg integrand
LanglandsTunnell.RankinSelberg.exists_forall_integrable_dual_rsIntegrand22_withDensity_of_admissible_of_chamber33 below · depth 26 - Absolute convergence of the unfolded local Godement integrand
LanglandsTunnell.RankinSelberg.exists_forall_integrable_godementUnfold_of_principalSeries2_of_admissible_ed236 below · depth 26 - Integrability of the folded local Rankin–Selberg integrand in the chamber
LanglandsTunnell.RankinSelberg.exists_forall_integrable_jacquetIntegral_mul_whittaker_mul_row_mul_cpow_withDensity_of_principalSeries2_of_chamber28 below · depth 26 - Vanishing of deep dual torus shells over K₀
LanglandsTunnell.RankinSelberg.exists_forall_le_setIntegral_localLevelOne_dualJacquet_mul_partner_mul_eq_zero_of_dualTorusZeta_polynomial12 below · depth 26 - Rationality of the local (2,2) Rankin–Selberg integral
LanglandsTunnell.RankinSelberg.exists_rsLocalIntegral22_mul_one_sub_eq_cpow_mul_eval_of_principalSeries2_of_forall_torusZeta_polynomial_core38 below · depth 26 - Open compact subgroup adapted to φ₁ and χ
LanglandsTunnell.RankinSelberg.exists_subgroup_isOpen_isCompact_forall_apply_mul_eq_and_det_eq_one_and_transposeInv_mem0 below · depth 26 - Half-plane integrability of local Godement–Jacquet integrals on GL₂
LanglandsTunnell.RankinSelberg.forall_exists_integrable_godementZeta2_coefficient36 below · depth 26 - Godement–Jacquet zeta integrals of GL₂ matrix coefficients
LanglandsTunnell.RankinSelberg.forall_exists_laurent_godementZeta2_coefficient_of_forall_torusZeta_fe47 below · depth 26 - Rationality of Whittaker Godement–Jacquet zeta integrals on GL₂
LanglandsTunnell.RankinSelberg.forall_exists_rational_godementZeta2_whittaker_of_forall_torusZeta_fe48 below · depth 26 - Cleared local Godement–Jacquet functional equation for Whittaker coefficients
LanglandsTunnell.RankinSelberg.forall_godementZeta2_whittaker_clearedFE_of_forall_torusZeta_fe166 below · depth 26 - Local GL₂× GL₂ functional equation for Laurent numerators
LanglandsTunnell.RankinSelberg.forall_rsLocalIntegral22_schwartz_centralCleared_laurentFE_of_principalSeries2_of_forall_torusZeta_fe206 below · depth 26 - Integrability of the local Rankin–Selberg integrand from its unfolding
LanglandsTunnell.RankinSelberg.integrable_rsIntegrand_godementSlot_of_integrable_unfold9 below · depth 26 - Unfolding of a Godement-section Rankin–Selberg local integral
LanglandsTunnell.RankinSelberg.rsLocalIntegral_godementWhittaker_iotaGL_eq_sum_rsLocalIntegral_mul_godementZeta9 below · depth 26 - Twisted contragredient transport of a separated family
LanglandsTunnell.RankinSelberg.setIntegral_translate_transposeTwist_eq_mul_sum_of_forall_setIntegral_translate_eq2 below · depth 26 - Gauge bound for torus values of admissible Whittaker functions
AutomorphicForm.WhittakerModel.exists_forall_diagZ_mul_eq_zero_and_norm_le_mul_zpow_of_admissible3 below · depth 27 - σ-invariant idele characters agree at Hecke generators above v
AutomorphicForm.apply_det_heckeGen_eq_of_asIdeal_eq_smul_of_sigmaInvariant_unram6 below · depth 27 - Pushing a torus functional to the table space along Hecke words
AutomorphicForm.exists_clm_cylinder_noAtomicMass_and_apply_monomial_eq_sum_laurentCoeff_mul_of_box_noAtomicMass4 below · depth 27 - Finiteness of |det|^t over norm balls in GL₂(ℚₚ)
AutomorphicForm.lintegral_indicator_norm_le_mul_norm_det_rpow_lt_top22 below · depth 27 - Big-cell GL₃ section as a GL₂ Godement integral
LanglandsTunnell.CubicInduction.cellSectionOf_antidiagonal3_mul_mul_eq_integral_godementDatum4 below · depth 27 - Finite pure-tensor decomposition of the local Godement datum
LanglandsTunnell.CubicInduction.exists_finset_pureTensor_godementDatum4 below · depth 27 - Godement slot vectors: principal series membership and support
LanglandsTunnell.CubicInduction.godementDatum_mem_principalSeries2_and_support2 below · depth 27 - Jacquet unfolding of a Godement section on GL₃
LanglandsTunnell.CubicInduction.integral_godementSection_upperUnipotent3_eq_godementWhittaker3_of_continuous4 below · depth 27 - Jacquet–Whittaker function at diag(1,-1,1)Y as a ψ-integral
LanglandsTunnell.CubicInduction.jacquetWhittaker3_diagonal3_mul_eq_mul_integral_psiLocal_cellSectionOf15 below · depth 27 - Measurability of the unfolded Godement double integrand
LanglandsTunnell.RankinSelberg.aestronglyMeasurable_godementUnfold_integrand3 below · depth 27 - Half-plane integrability of the local GL₂timesGL₂ integrand
LanglandsTunnell.RankinSelberg.exists_forall_integrable_jacquetIntegral_mul_whittaker_mul_row_withDensity_of_admissible_of_chamber25 below · depth 27 - Two-exponent asymptotics of chamber Jacquet integrals on small torus
LanglandsTunnell.RankinSelberg.exists_forall_jacquetIntegral_diagOne_mul_eq_sqrt_modulus_mul_add_of_mem_principalSeries2_of_chamber6 below · depth 27 - Inner bound for the local Rankin–Selberg N₂backslash GL₂ integral
LanglandsTunnell.RankinSelberg.exists_forall_lintegral_enorm_jacquetIntegral_mul_whittaker_mul_translate_mul_row_le_of_admissible_of_chamber23 below · depth 27 - Gauge bound and far-out vanishing for a GL₂ Jacquet integral
LanglandsTunnell.RankinSelberg.exists_forall_norm_jacquetIntegral_principalSeries2_diagUnits2_mul_le_and_eq_zero_of_chamber8 below · depth 27 - Torus-shell series of Jacquet and Whittaker integrals sums to q^{ms}P(q^{-s})
LanglandsTunnell.RankinSelberg.exists_hasSum_torusShells_jacquetIntegral_mul_whittaker_mul_row_eq_cpow_mul_eval_of_forall_torusZeta_polynomial_ed217 below · depth 27 - Iwasawa integration formula for Haar measure on GL₂(ℚₚ)
LanglandsTunnell.RankinSelberg.exists_pos_forall_lintegral_eq_mul_lintegral_prod_lintegral_unipotent_diagUnits220 below · depth 27 - Local integrability of a shifted Godement–Jacquet zeta integrand
LanglandsTunnell.RankinSelberg.forall_exists_integrable_godementZeta2_whittaker_shift29 below · depth 27 - Laurent Godement–Jacquet integrals of GL₂ Whittaker vectors
LanglandsTunnell.RankinSelberg.forall_exists_laurent_godementZeta2_whittaker_of_forall_torusZeta_fe42 below · depth 27 - Rationality in q^{-s} of local Godement zeta integrals
LanglandsTunnell.RankinSelberg.forall_exists_rational_godementZeta2_whittaker_shift44 below · depth 27 - Cleared Godement–Jacquet functional equation for a Whittaker coefficient
LanglandsTunnell.RankinSelberg.forall_godementZeta2_whittaker_clearedFE_of_forall_torusZeta_fe_of_borelEigenfunctional92 below · depth 27 - Godement–Jacquet functional equation for cuspidal Whittaker coefficients
LanglandsTunnell.RankinSelberg.forall_godementZeta2_whittaker_clearedFE_of_forall_torusZeta_fe_of_cuspidal121 below · depth 27 - Centre-cleared local GL₂× GL₂ functional equation, principal-series branch
LanglandsTunnell.RankinSelberg.forall_rsLocalIntegral22_schwartz_centralCleared_laurentFE_of_principalSeries2_of_forall_torusZeta_fe_of_borelEigenfunctional187 below · depth 27 - Centre-cleared local functional equation for GL₂× GL₂: cuspidal branch
LanglandsTunnell.RankinSelberg.forall_rsLocalIntegral22_schwartz_centralCleared_laurentFE_of_principalSeries2_of_forall_torusZeta_fe_of_cuspidal196 below · depth 27 - Transpose-inverse symmetry of the local GL₂ Godement zeta integral
LanglandsTunnell.RankinSelberg.godementZeta2_comp_transposeInvN_eq_godementZeta2_conj_of_central0 below · depth 27 - Torus-shell expansion of a local Rankin–Selberg integral
LanglandsTunnell.RankinSelberg.hasSum_torusShells_rsLocalIntegral22_jacquetIntegral_schwartz_of_integrable9 below · depth 27 - Kirillov vanishing or Borel eigenfunctional dichotomy for GL₂(ℚₚ)
LanglandsTunnell.RankinSelberg.kirillov_vanish_near_zero_or_exists_borelEigenfunctional_of_irreducible_admissible4 below · depth 27 - Torus profile of a Whittaker function twisted by |det|^{-e}
LanglandsTunnell.RankinSelberg.mul_conj_mul_abs_det_rpow_upperUnit_eq_abs_rpow_mul_norm_sq_of_diagOne_eq0 below · depth 27 - Vanishing of deep shell integrals from a Laurent-polynomial Mellin transform
LanglandsTunnell.TateLocal.exists_forall_le_setIntegral_units_mul_zpow_eq_zero_of_mellin_eq_cpow_mul_eval_of_re_lt4 below · depth 27 - Right GL₃ translation scales finite-adelic integrals by inverse idele norm
RationalLattice.integral_comp_vecMul_eq_inv_ideleNorm_mul8 below · depth 27 - Kirillov model contains the compactly supported locally constant functions
AutomorphicForm.WhittakerModel.exists_mem_span_forall_diagOne_eq_of_shell_window_of_irreducible2 below · depth 28 - Shell-window functions in the Whittaker translate span, ideal level
AutomorphicForm.WhittakerModel.exists_mem_span_forall_diagOne_eq_of_shell_window_of_localLevelOne3 below · depth 28 - Cuspidal Whittaker space equals V(N)
AutomorphicForm.WhittakerModel.forall_mem_span_sub_unipotent_of_forall_diagOne_eq_zero_of_irreducible_of_admissible18 below · depth 28 - Propagating a Whittaker gauge from the level-one subgroup to GL₂
AutomorphicForm.WhittakerModel.norm_diagUnits2_mul_le_of_forall_mem_localLevelOne_norm_diagUnits2_mul_le0 below · depth 28 - Span of right translates of a local Whittaker function
AutomorphicForm.WhittakerModel.span_translates_stable_and_law_and_smooth_and_central1 below · depth 28 - Base change of idele characters at Hecke generators
AutomorphicForm.apply_det_heckeGen_pow_inertiaDeg_eq_apply_det_heckeGen_of_comp_idelicNorm_of_unramified4 below · depth 28 - Right convolution preserves Casimir eigenvalues at a complex place
AutomorphicForm.archCasimirAtComplex_rightConv_eq_smul_of_archCasimirAtComplex_eq_smul_of_isArchSmoothAtComplex_of_isFactorizableTestFn9 below · depth 28 - Complex-place Casimir operators pass onto the test function
AutomorphicForm.exists_isFactorizableTestFn_isBiInvariantUnder_forall_archCasimirAtComplex_convOp_eq_convOp_of_isComplex4 below · depth 28 - Casimir at a real place passes onto the test function
AutomorphicForm.exists_isFactorizableTestFn_isBiInvariantUnder_forall_archCasimirAt_convOp_eq_convOp_of_isReal4 below · depth 28 - Compact (t,t⁻¹)-torus and its table map into X
AutomorphicForm.isCompact_and_exists_torusEmb_and_exists_tableMap_apply_eq_of_sq_eq0 below · depth 28 - Slot-family assembly of the explicit unipotent moments
AutomorphicForm.sum_slotFamilyCoeff_mul_unipotentMoments_eq_mul_sum_laurentCoeff_add_sum_laurentCoeff_edge2 below · depth 28 - Symplectic Fourier swap for Godement–Whittaker integrals on GL₂(ℚₚ)
LanglandsTunnell.CubicInduction.godementWhittaker2_symplecticFourier_swap_eq_godementWhittaker2_of_weight17 below · depth 28 - Jacquet integral of a Godement section on GL₂(ℚₚ)
LanglandsTunnell.CubicInduction.integral_godementSection_antidiagonal_mul_unipotentGL2_mul_psiLocal_eq_godementWhittaker2_of_chamber3 below · depth 28 - Product integrability of a local Rankin–Selberg kernel in the chamber
LanglandsTunnell.RankinSelberg.exists_forall_integrable_prod_row_mul_row_mul_cpow_mul_whittaker_diagOne_mul_cpow_of_admissible_of_chamber35 below · depth 28
… and 210 more statements (search for the module name to find them).