Definitions/Def_LanglandsTunnell_CubicInduction_PrincipalSeries3.lean
Local GL(3) principal series, Whittaker functionals, and nonvanishing witness
Fix a finite place v of \mathbb{Q}, i.e. a height-one prime of \mathcal{O}_{\mathbb{Q}}, write \mathbb{Q}_v for the adic completion, and let LocalGL3 v be GL_3(\mathbb{Q}_v). For a triple a of units of \mathbb{Q}_v, diagonal3 is the diagonal element \mathrm{diag}(a_0,a_1,a_2) (multiplicative in a); halfModulus3 is the complex number \lVert a_0\rVert/\lVert a_2\rVert in the normalised absolute value at v, i.e. \delta_B^{1/2}, evaluated explicitly at the three elementary diagonal matrices built from a uniformiser; and torusChar3 \chi a=\prod_i\chi_i(a_i) for a triple \chi of homomorphisms \mathbb{Q}_v^{\times}\to\mathbb{C}^{\times}. The principal series principalSeries3 v χ is then defined as a \mathbb{C}-submodule of all functions f:GL_3(\mathbb{Q}_v)\to\mathbb{C}: those that are locally constant, satisfy f(ug)=f(g) for every upper-triangular unipotent u= upperUnipotent3 x\,y\,z, and satisfy f(\mathrm{diag}(a)g)=\chi(a)\,\delta^{1/2}(a)\,f(g). Membership is closed under right translation, so the space carries the right-translation action; coefficientFn sends a linear form L and a vector f to g\mapsto L(g\cdot f), and IsWhittakerFunctional3 \psi \Lambda asks that \Lambda transform by \psi(x+y) under right translation by upperUnipotent3 x\,y\,z; for such \Lambda the coefficient function satisfies the \psi-Whittaker law IsGL3PsiWhittakerFn.
The remainder constructs an explicit nonzero vector. With cornerEntry =g_{20}, lowerMinor =g_{10}g_{21}-g_{11}g_{20}, outerMinor =g_{10}g_{22}-g_{12}g_{20} and gl3Det, the triple cellRatio =(g_{21}/g_{20},\,g_{22}/g_{20},\,\mathrm{outerMinor}/\mathrm{lowerMinor}) cuts out cellCutoff: corner entry and lower minor nonzero and all three ratios of valuation \le 1. On it cellValue is \chi_0(\det/\mathrm{lowerMinor})\,\chi_1(\mathrm{lowerMinor}/\mathrm{corner})\,\chi_2(\mathrm{corner})\cdot\lVert\det/\mathrm{lowerMinor}\rVert/\lVert\mathrm{corner}\rVert, the characters being extended to \mathbb{Q}_v by charExt; cellSection is the indicator of cellCutoff times cellValue. All these data are invariant, resp. transform correctly, under left multiplication by unipotent and diagonal elements, and local constancy is proved by a valuation analysis near the loci where a denominator vanishes; hence cellVector lies in principalSeries3 v χ whenever each \chi_i is locally constant. Evaluation at the antidiagonal permutation matrix gives a linear form evalAntidiagonal3, and the corresponding coefficient function is shown nonzero at the identity.
Relation to Mathlib
Mathlib supplies GL_n, adic completions and their valuations and finite-place norms, and IsLocallyConstant; the principal series, its Whittaker functionals and the explicit big-cell section are the project's own notions.
Where it is used
These local objects belong to the cubic-induction package for the Langlands–Tunnell theorem, where the automorphic form on GL_3 induced from a character of a cubic extension is analysed place by place; its local Whittaker functions must live in such induced models, and the witness vector shows these models are nonzero.
References
- D. Bump, Automorphic Forms and Representations, Cambridge Studies in Advanced Mathematics 55, Cambridge University Press, 1997
- H. Jacquet, I. I. Piatetski-Shapiro and J. A. Shalika, Automorphic forms on GL(3), I, Annals of Mathematics 109 (1979), 169–212
- J. A. Shalika, The multiplicity one theorem for GL_n, Annals of Mathematics 100 (1974), 171–193
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 576 lines
- 86 declarations
- used in the statements of 102 theorems and imported by 130 proofs
- imports 1 definition modules
Source file: Definitions/Def_LanglandsTunnell_CubicInduction_PrincipalSeries3.lean
Declarations
- def
LanglandsTunnell.CubicInduction.diagonal3 - theorem
LanglandsTunnell.CubicInduction.diagonal3_mul - theorem
LanglandsTunnell.CubicInduction.diagonal3_coe - def
LanglandsTunnell.CubicInduction.halfModulus3 - theorem
LanglandsTunnell.CubicInduction.halfModulus3_mul - theorem
LanglandsTunnell.CubicInduction.halfModulus3_one - theorem
LanglandsTunnell.CubicInduction.toAdd_unzero_exp - theorem
LanglandsTunnell.CubicInduction.norm_uniformizerUnit - theorem
LanglandsTunnell.CubicInduction.halfModulus3_uniformizerUnit - theorem
LanglandsTunnell.CubicInduction.halfModulus3_one_uniformizerUnit_one - theorem
LanglandsTunnell.CubicInduction.halfModulus3_one_one_uniformizerUnit - def
LanglandsTunnell.CubicInduction.torusChar3 - theorem
LanglandsTunnell.CubicInduction.torusChar3_mul - theorem
LanglandsTunnell.CubicInduction.torusChar3_one - def
LanglandsTunnell.CubicInduction.principalSeries3 - theorem
LanglandsTunnell.CubicInduction.mem_principalSeries3_iff - theorem
LanglandsTunnell.CubicInduction.isLocallyConstant_of_mem_principalSeries3 - theorem
LanglandsTunnell.CubicInduction.apply_upperUnipotent3_mul_of_mem_principalSeries3 - theorem
LanglandsTunnell.CubicInduction.apply_diagonal3_mul_of_mem_principalSeries3 - theorem
LanglandsTunnell.CubicInduction.rightTranslate_mem_principalSeries3 - def
LanglandsTunnell.CubicInduction.coefficientFn - def
LanglandsTunnell.CubicInduction.IsWhittakerFunctional3 - theorem
LanglandsTunnell.CubicInduction.isWhittakerFunctional3_zero - theorem
LanglandsTunnell.CubicInduction.isGL3PsiWhittakerFn_coefficientFn - def
LanglandsTunnell.CubicInduction.gl3Entry - def
LanglandsTunnell.CubicInduction.cornerEntry - def
LanglandsTunnell.CubicInduction.lowerMinor - def
LanglandsTunnell.CubicInduction.outerMinor - def
LanglandsTunnell.CubicInduction.gl3Det - theorem
LanglandsTunnell.CubicInduction.gl3Det_ne_zero - theorem
LanglandsTunnell.CubicInduction.gl3Entry_upperUnipotent3_mul_two - theorem
LanglandsTunnell.CubicInduction.gl3Entry_upperUnipotent3_mul_one - theorem
LanglandsTunnell.CubicInduction.gl3Entry_diagonal3_mul - theorem
LanglandsTunnell.CubicInduction.cornerEntry_upperUnipotent3_mul - theorem
LanglandsTunnell.CubicInduction.lowerMinor_upperUnipotent3_mul - theorem
LanglandsTunnell.CubicInduction.outerMinor_upperUnipotent3_mul - theorem
LanglandsTunnell.CubicInduction.gl3Det_upperUnipotent3_mul - theorem
LanglandsTunnell.CubicInduction.cornerEntry_diagonal3_mul - theorem
LanglandsTunnell.CubicInduction.lowerMinor_diagonal3_mul - theorem
LanglandsTunnell.CubicInduction.outerMinor_diagonal3_mul - theorem
LanglandsTunnell.CubicInduction.gl3Det_diagonal3_mul - def
LanglandsTunnell.CubicInduction.cellRatio - theorem
LanglandsTunnell.CubicInduction.cellRatio_upperUnipotent3_mul - theorem
LanglandsTunnell.CubicInduction.cellRatio_diagonal3_mul - def
LanglandsTunnell.CubicInduction.cellCutoff - theorem
LanglandsTunnell.CubicInduction.upperUnipotent3_mul_mem_cellCutoff_iff - theorem
LanglandsTunnell.CubicInduction.diagonal3_mul_mem_cellCutoff_iff - def
LanglandsTunnell.CubicInduction.cellValue - def
LanglandsTunnell.CubicInduction.cellSection - theorem
LanglandsTunnell.CubicInduction.charExt_units_mul - theorem
LanglandsTunnell.CubicInduction.cellValue_upperUnipotent3_mul - theorem
LanglandsTunnell.CubicInduction.cellValue_diagonal3_mul - theorem
LanglandsTunnell.CubicInduction.cellSection_upperUnipotent3_mul - theorem
LanglandsTunnell.CubicInduction.cellSection_diagonal3_mul - def
LanglandsTunnell.CubicInduction.antidiagonal3 - theorem
LanglandsTunnell.CubicInduction.antidiagonal3_coe - theorem
LanglandsTunnell.CubicInduction.cornerEntry_antidiagonal3 - theorem
LanglandsTunnell.CubicInduction.lowerMinor_antidiagonal3 - theorem
LanglandsTunnell.CubicInduction.outerMinor_antidiagonal3 - theorem
LanglandsTunnell.CubicInduction.gl3Det_antidiagonal3 - theorem
LanglandsTunnell.CubicInduction.antidiagonal3_mem_cellCutoff - theorem
LanglandsTunnell.CubicInduction.cellValue_antidiagonal3 - theorem
LanglandsTunnell.CubicInduction.cellSection_antidiagonal3_ne_zero - theorem
LanglandsTunnell.CubicInduction.cellSection_ne_zero - theorem
LanglandsTunnell.CubicInduction.isClopen_valued_le_one - theorem
LanglandsTunnell.CubicInduction.eventually_valued_eq - theorem
LanglandsTunnell.CubicInduction.eventually_valued_lt - theorem
LanglandsTunnell.CubicInduction.eventually_norm_eq - theorem
LanglandsTunnell.CubicInduction.eventually_charExt_eq - theorem
LanglandsTunnell.CubicInduction.eventually_mem_iff_of_isClopen - theorem
LanglandsTunnell.CubicInduction.continuous_gl3Entry - theorem
LanglandsTunnell.CubicInduction.continuous_cornerEntry - theorem
LanglandsTunnell.CubicInduction.continuous_lowerMinor - theorem
LanglandsTunnell.CubicInduction.continuous_outerMinor - theorem
LanglandsTunnell.CubicInduction.continuous_gl3Det - theorem
LanglandsTunnell.CubicInduction.gl3Det_eq_bottom_expansion - theorem
LanglandsTunnell.CubicInduction.cornerEntry_mul_gl3Det - theorem
LanglandsTunnell.CubicInduction.exists_bottom_entry_ne_zero_of_cornerEntry_eq_zero - theorem
LanglandsTunnell.CubicInduction.outerMinor_ne_zero_of_lowerMinor_eq_zero - theorem
LanglandsTunnell.CubicInduction.eventually_one_lt_valued_div - theorem
LanglandsTunnell.CubicInduction.eventually_cellSection_eq_zero_of_den - theorem
LanglandsTunnell.CubicInduction.isLocallyConstant_cellSection - theorem
LanglandsTunnell.CubicInduction.cellSection_mem_principalSeries3 - def
LanglandsTunnell.CubicInduction.cellVector - def
LanglandsTunnell.CubicInduction.evalAntidiagonal3 - theorem
LanglandsTunnell.CubicInduction.coefficientFn_evalAntidiagonal3_cellVector_one
Source
import Definitions.Def_LanglandsTunnell_CubicInduction_Structure import Mathlib.NumberTheory.NumberField.Completion.FinitePlace ↗ set_option autoImplicit false open Matrix IsDedekindDomain NumberField NumberField.AdelicLevel LanglandsTunnell.TateLocal noncomputable section namespace LanglandsTunnell.CubicInduction section PrincipalSeries3 variable (v : HeightOneSpectrum (𝓞 ℚ)) def diagonal3 (a : Fin 3 → (v.adicCompletion ℚ)ˣ) : LocalGL3 v where val := diagonal fun i => (a i : v.adicCompletion ℚ) inv := diagonal fun i => ((a i)⁻¹ : (v.adicCompletion ℚ)ˣ) val_inv := by rw [diagonal_mul_diagonal] simp only [Units.mul_inv, diagonal_one] inv_val := by rw [diagonal_mul_diagonal] simp only [Units.inv_mul, diagonal_one] theorem diagonal3_mul (a b : Fin 3 → (v.adicCompletion ℚ)ˣ) : diagonal3 v (a * b) = diagonal3 v a * diagonal3 v b := by ext i j rcases eq_or_ne i j with rfl | hij · simp [diagonal3] · simp [diagonal3, Matrix.diagonal_apply_ne _ hij] @[simp] theorem diagonal3_coe (a : Fin 3 → (v.adicCompletion ℚ)ˣ) : (diagonal3 v a : Matrix (Fin 3) (Fin 3) (v.adicCompletion ℚ)) = diagonal fun i => (a i : v.adicCompletion ℚ) := rfl def halfModulus3 (a : Fin 3 → (v.adicCompletion ℚ)ˣ) : ℂ := ((‖(a 0 : v.adicCompletion ℚ)‖ / ‖(a 2 : v.adicCompletion ℚ)‖ : ℝ) : ℂ) theorem halfModulus3_mul (a b : Fin 3 → (v.adicCompletion ℚ)ˣ) : halfModulus3 v (a * b) = halfModulus3 v a * halfModulus3 v b := by simp only [halfModulus3, Pi.mul_apply, Units.val_mul, norm_mul] push_cast ring @[simp] theorem halfModulus3_one : halfModulus3 v 1 = 1 := by simp [halfModulus3] private theorem toAdd_unzero_exp (n : ℤ) (h : (WithZero.exp n : WithZero (Multiplicative ℤ)) ≠ 0) : Multiplicative.toAdd (WithZero.unzero h) = n := rfl private theorem norm_uniformizerUnit : ‖(uniformizerUnit ℚ v : v.adicCompletion ℚ)‖ = (((Ideal.absNorm v.asIdeal : ℕ) : ℝ))⁻¹ := by rw [NumberField.FinitePlace.norm_def, valued_uniformizerUnit, WithZeroMulInt.toNNReal_neg_apply _ WithZero.exp_ne_zero, toAdd_unzero_exp] simp theorem halfModulus3_uniformizerUnit : halfModulus3 v ![uniformizerUnit ℚ v, 1, 1] = (((Ideal.absNorm v.asIdeal : ℕ) : ℝ)⁻¹ : ℝ) := by simp [halfModulus3, norm_uniformizerUnit] theorem halfModulus3_one_uniformizerUnit_one : halfModulus3 v ![1, uniformizerUnit ℚ v, 1] = 1 := by simp [halfModulus3] theorem halfModulus3_one_one_uniformizerUnit : halfModulus3 v ![1, 1, uniformizerUnit ℚ v] = (((Ideal.absNorm v.asIdeal : ℕ) : ℝ) : ℝ) := by simp [halfModulus3, norm_uniformizerUnit] def torusChar3 (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) (a : Fin 3 → (v.adicCompletion ℚ)ˣ) : ℂ := ∏ i : Fin 3, ((χ i (a i) : ℂˣ) : ℂ) theorem torusChar3_mul (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) (a b : Fin 3 → (v.adicCompletion ℚ)ˣ) : torusChar3 v χ (a * b) = torusChar3 v χ a * torusChar3 v χ b := by simp only [torusChar3, Pi.mul_apply, map_mul, Units.val_mul, Finset.prod_mul_distrib] @[simp] theorem torusChar3_one (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) : torusChar3 v χ 1 = 1 := by simp [torusChar3] def principalSeries3 (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) : Submodule ℂ (LocalGL3 v → ℂ) where carrier := {f | IsLocallyConstant f ∧ (∀ (x y z : v.adicCompletion ℚ) (g : LocalGL3 v), f (upperUnipotent3 x y z * g) = f g) ∧ ∀ (a : Fin 3 → (v.adicCompletion ℚ)ˣ) (g : LocalGL3 v), f (diagonal3 v a * g) = torusChar3 v χ a * halfModulus3 v a * f g} zero_mem' := ⟨IsLocallyConstant.const 0, fun _ _ _ _ => rfl, fun _ _ => by simp⟩ add_mem' := by intro f₁ f₂ h₁ h₂ obtain ⟨h₁lc, h₁n, h₁t⟩ := h₁ obtain ⟨h₂lc, h₂n, h₂t⟩ := h₂ refine ⟨h₁lc.comp₂ h₂lc (· + ·), fun x y z g => ?_, fun a g => ?_⟩ · show f₁ _ + f₂ _ = f₁ g + f₂ g rw [h₁n, h₂n] · show f₁ _ + f₂ _ = _ * (f₁ g + f₂ g) rw [h₁t, h₂t] ring smul_mem' := by intro c f hf obtain ⟨hlc, hn, ht⟩ := hf refine ⟨hlc.comp (c * ·), fun x y z g => ?_, fun a g => ?_⟩ · show c * f _ = c * f g rw [hn] · show c * f _ = _ * (c * f g) rw [ht] ring variable {v} theorem mem_principalSeries3_iff {χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)} {f : LocalGL3 v → ℂ} : f ∈ principalSeries3 v χ ↔ IsLocallyConstant f ∧ (∀ (x y z : v.adicCompletion ℚ) (g : LocalGL3 v), f (upperUnipotent3 x y z * g) = f g) ∧ ∀ (a : Fin 3 → (v.adicCompletion ℚ)ˣ) (g : LocalGL3 v), f (diagonal3 v a * g) = torusChar3 v χ a * halfModulus3 v a * f g := Iff.rfl theorem isLocallyConstant_of_mem_principalSeries3 {χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)} {f : LocalGL3 v → ℂ} (hf : f ∈ principalSeries3 v χ) : IsLocallyConstant f := (mem_principalSeries3_iff.mp hf).1 theorem apply_upperUnipotent3_mul_of_mem_principalSeries3 {χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)} {f : LocalGL3 v → ℂ} (hf : f ∈ principalSeries3 v χ) (x y z : v.adicCompletion ℚ) (g : LocalGL3 v) : f (upperUnipotent3 x y z * g) = f g := (mem_principalSeries3_iff.mp hf).2.1 x y z g theorem apply_diagonal3_mul_of_mem_principalSeries3 {χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)} {f : LocalGL3 v → ℂ} (hf : f ∈ principalSeries3 v χ) (a : Fin 3 → (v.adicCompletion ℚ)ˣ) (g : LocalGL3 v) : f (diagonal3 v a * g) = torusChar3 v χ a * halfModulus3 v a * f g := (mem_principalSeries3_iff.mp hf).2.2 a g theorem rightTranslate_mem_principalSeries3 {χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)} {f : LocalGL3 v → ℂ} (hf : f ∈ principalSeries3 v χ) (g : LocalGL3 v) : gl3AmbientRightTranslate (R := ℂ) g f ∈ principalSeries3 v χ := by obtain ⟨hlc, hn, ht⟩ := mem_principalSeries3_iff.mp hf refine mem_principalSeries3_iff.mpr ⟨hlc.comp_continuous (continuous_id.mul continuous_const), fun x y z h => ?_, fun a h => ?_⟩ · show f (upperUnipotent3 x y z * h * g) = f (h * g) rw [mul_assoc, hn] · show f (diagonal3 v a * h * g) = _ * f (h * g) rw [mul_assoc, ht] def coefficientFn {χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)} (L : ↥(principalSeries3 v χ) →ₗ[ℂ] ℂ) (f : ↥(principalSeries3 v χ)) : LocalGL3 v → ℂ := fun g => L ⟨gl3AmbientRightTranslate (R := ℂ) g f, rightTranslate_mem_principalSeries3 f.2 g⟩ def IsWhittakerFunctional3 {χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)} (ψ : AddChar (v.adicCompletion ℚ) ℂ) (Λ : ↥(principalSeries3 v χ) →ₗ[ℂ] ℂ) : Prop := ∀ (x y z : v.adicCompletion ℚ) (F : ↥(principalSeries3 v χ)), Λ ⟨gl3AmbientRightTranslate (R := ℂ) (upperUnipotent3 x y z) F, rightTranslate_mem_principalSeries3 F.2 (upperUnipotent3 x y z)⟩ = ψ (x + y) * Λ F theorem isWhittakerFunctional3_zero {χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)} (ψ : AddChar (v.adicCompletion ℚ) ℂ) : IsWhittakerFunctional3 (χ := χ) ψ 0 := by intro x y z F simp theorem isGL3PsiWhittakerFn_coefficientFn {χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)} {ψ : AddChar (v.adicCompletion ℚ) ℂ} {Λ : ↥(principalSeries3 v χ) →ₗ[ℂ] ℂ} (hΛ : IsWhittakerFunctional3 ψ Λ) (f : ↥(principalSeries3 v χ)) : IsGL3PsiWhittakerFn ψ (coefficientFn Λ f) := by intro x y z g have hfun : gl3AmbientRightTranslate (R := ℂ) (upperUnipotent3 x y z * g) (f : LocalGL3 v → ℂ) = gl3AmbientRightTranslate (R := ℂ) (upperUnipotent3 x y z) (gl3AmbientRightTranslate (R := ℂ) g f) := by funext h simp [gl3AmbientRightTranslate, mul_assoc] have hsub : (⟨_, rightTranslate_mem_principalSeries3 f.2 (upperUnipotent3 x y z * g)⟩ : ↥(principalSeries3 v χ)) = ⟨_, rightTranslate_mem_principalSeries3 (rightTranslate_mem_principalSeries3 f.2 g) (upperUnipotent3 x y z)⟩ := Subtype.ext hfun show Λ _ = ψ (x + y) * Λ _ rw [hsub] exact hΛ x y z ⟨_, rightTranslate_mem_principalSeries3 f.2 g⟩ end PrincipalSeries3 section Witness variable (v : HeightOneSpectrum (𝓞 ℚ)) def gl3Entry (g : LocalGL3 v) (i j : Fin 3) : v.adicCompletion ℚ := (g : Matrix (Fin 3) (Fin 3) (v.adicCompletion ℚ)) i j def cornerEntry (g : LocalGL3 v) : v.adicCompletion ℚ := gl3Entry v g 2 0 def lowerMinor (g : LocalGL3 v) : v.adicCompletion ℚ := gl3Entry v g 1 0 * gl3Entry v g 2 1 - gl3Entry v g 1 1 * gl3Entry v g 2 0 def outerMinor (g : LocalGL3 v) : v.adicCompletion ℚ := gl3Entry v g 1 0 * gl3Entry v g 2 2 - gl3Entry v g 1 2 * gl3Entry v g 2 0 def gl3Det (g : LocalGL3 v) : v.adicCompletion ℚ := (g : Matrix (Fin 3) (Fin 3) (v.adicCompletion ℚ)).det theorem gl3Det_ne_zero (g : LocalGL3 v) : gl3Det v g ≠ 0 := by have h := (Matrix.GeneralLinearGroup.det g).ne_zero rwa [Matrix.GeneralLinearGroup.val_det_apply] at h theorem gl3Entry_upperUnipotent3_mul_two (x y z : v.adicCompletion ℚ) (g : LocalGL3 v) (j : Fin 3) : gl3Entry v (upperUnipotent3 x y z * g) 2 j = gl3Entry v g 2 j := by simp [gl3Entry, Matrix.mul_apply, Fin.sum_univ_three] theorem gl3Entry_upperUnipotent3_mul_one (x y z : v.adicCompletion ℚ) (g : LocalGL3 v) (j : Fin 3) : gl3Entry v (upperUnipotent3 x y z * g) 1 j = gl3Entry v g 1 j + y * gl3Entry v g 2 j := by simp [gl3Entry, Matrix.mul_apply, Fin.sum_univ_three] theorem gl3Entry_diagonal3_mul (a : Fin 3 → (v.adicCompletion ℚ)ˣ) (g : LocalGL3 v) (i j : Fin 3) : gl3Entry v (diagonal3 v a * g) i j = (a i : v.adicCompletion ℚ) * gl3Entry v g i j := by simp [gl3Entry, diagonal3_coe, Matrix.diagonal_mul] theorem cornerEntry_upperUnipotent3_mul (x y z : v.adicCompletion ℚ) (g : LocalGL3 v) : cornerEntry v (upperUnipotent3 x y z * g) = cornerEntry v g := gl3Entry_upperUnipotent3_mul_two v x y z g 0 theorem lowerMinor_upperUnipotent3_mul (x y z : v.adicCompletion ℚ) (g : LocalGL3 v) : lowerMinor v (upperUnipotent3 x y z * g) = lowerMinor v g := by simp only [lowerMinor, gl3Entry_upperUnipotent3_mul_one, gl3Entry_upperUnipotent3_mul_two] ring theorem outerMinor_upperUnipotent3_mul (x y z : v.adicCompletion ℚ) (g : LocalGL3 v) : outerMinor v (upperUnipotent3 x y z * g) = outerMinor v g := by simp only [outerMinor, gl3Entry_upperUnipotent3_mul_one, gl3Entry_upperUnipotent3_mul_two] ring theorem gl3Det_upperUnipotent3_mul (x y z : v.adicCompletion ℚ) (g : LocalGL3 v) : gl3Det v (upperUnipotent3 x y z * g) = gl3Det v g := by have h1 : Matrix.det !![(1 : v.adicCompletion ℚ), x, z; 0, 1, y; 0, 0, 1] = 1 := by simp [Matrix.det_fin_three] rw [gl3Det, gl3Det, Units.val_mul, Matrix.det_mul, upperUnipotent3_coe, h1, one_mul] theorem cornerEntry_diagonal3_mul (a : Fin 3 → (v.adicCompletion ℚ)ˣ) (g : LocalGL3 v) : cornerEntry v (diagonal3 v a * g) = (a 2 : v.adicCompletion ℚ) * cornerEntry v g := gl3Entry_diagonal3_mul v a g 2 0 theorem lowerMinor_diagonal3_mul (a : Fin 3 → (v.adicCompletion ℚ)ˣ) (g : LocalGL3 v) : lowerMinor v (diagonal3 v a * g) = ((a 1 : v.adicCompletion ℚ) * a 2) * lowerMinor v g := by simp only [lowerMinor, gl3Entry_diagonal3_mul] ring theorem outerMinor_diagonal3_mul (a : Fin 3 → (v.adicCompletion ℚ)ˣ) (g : LocalGL3 v) : outerMinor v (diagonal3 v a * g) = ((a 1 : v.adicCompletion ℚ) * a 2) * outerMinor v g := by simp only [outerMinor, gl3Entry_diagonal3_mul] ring theorem gl3Det_diagonal3_mul (a : Fin 3 → (v.adicCompletion ℚ)ˣ) (g : LocalGL3 v) : gl3Det v (diagonal3 v a * g) = ((a 0 : v.adicCompletion ℚ) * a 1 * a 2) * gl3Det v g := by rw [gl3Det, gl3Det, Units.val_mul, Matrix.det_mul, diagonal3_coe, Matrix.det_diagonal, Fin.prod_univ_three] def cellRatio (g : LocalGL3 v) : Fin 3 → v.adicCompletion ℚ := ![gl3Entry v g 2 1 / cornerEntry v g, gl3Entry v g 2 2 / cornerEntry v g, outerMinor v g / lowerMinor v g] theorem cellRatio_upperUnipotent3_mul (x y z : v.adicCompletion ℚ) (g : LocalGL3 v) : cellRatio v (upperUnipotent3 x y z * g) = cellRatio v g := by simp only [cellRatio, gl3Entry_upperUnipotent3_mul_two, cornerEntry_upperUnipotent3_mul, outerMinor_upperUnipotent3_mul, lowerMinor_upperUnipotent3_mul] theorem cellRatio_diagonal3_mul (a : Fin 3 → (v.adicCompletion ℚ)ˣ) (g : LocalGL3 v) : cellRatio v (diagonal3 v a * g) = cellRatio v g := by have h2 : (a 2 : v.adicCompletion ℚ) ≠ 0 := (a 2).ne_zero have h12 : (a 1 : v.adicCompletion ℚ) * a 2 ≠ 0 := mul_ne_zero (a 1).ne_zero h2 simp only [cellRatio, gl3Entry_diagonal3_mul, cornerEntry_diagonal3_mul, outerMinor_diagonal3_mul, lowerMinor_diagonal3_mul, mul_div_mul_left _ _ h2, mul_div_mul_left _ _ h12] def cellCutoff : Set (LocalGL3 v) := {g | cornerEntry v g ≠ 0 ∧ lowerMinor v g ≠ 0 ∧ ∀ i, Valued.v (cellRatio v g i) ≤ 1} theorem upperUnipotent3_mul_mem_cellCutoff_iff (x y z : v.adicCompletion ℚ) (g : LocalGL3 v) : upperUnipotent3 x y z * g ∈ cellCutoff v ↔ g ∈ cellCutoff v := by simp only [cellCutoff, Set.mem_setOf_eq, cornerEntry_upperUnipotent3_mul, lowerMinor_upperUnipotent3_mul, cellRatio_upperUnipotent3_mul] theorem diagonal3_mul_mem_cellCutoff_iff (a : Fin 3 → (v.adicCompletion ℚ)ˣ) (g : LocalGL3 v) : diagonal3 v a * g ∈ cellCutoff v ↔ g ∈ cellCutoff v := by simp only [cellCutoff, Set.mem_setOf_eq, cornerEntry_diagonal3_mul, lowerMinor_diagonal3_mul, cellRatio_diagonal3_mul, ne_eq, mul_eq_zero, Units.ne_zero, false_or] def cellValue (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) (g : LocalGL3 v) : ℂ := charExt (χ 0) (gl3Det v g / lowerMinor v g) * charExt (χ 1) (lowerMinor v g / cornerEntry v g) * charExt (χ 2) (cornerEntry v g) * ((‖gl3Det v g / lowerMinor v g‖ / ‖cornerEntry v g‖ : ℝ) : ℂ) def cellSection (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) : LocalGL3 v → ℂ := (cellCutoff v).indicator (cellValue v χ) theorem charExt_units_mul (χ : (v.adicCompletion ℚ)ˣ →* ℂˣ) (u : (v.adicCompletion ℚ)ˣ) (x : v.adicCompletion ℚ) : charExt χ ((u : v.adicCompletion ℚ) * x) = (χ u : ℂ) * charExt χ x := by by_cases hx : x = 0 · simp [hx] · rw [charExt_of_ne_zero χ (mul_ne_zero u.ne_zero hx), charExt_of_ne_zero χ hx, show Units.mk0 ((u : v.adicCompletion ℚ) * x) (mul_ne_zero u.ne_zero hx) = u * Units.mk0 x hx from Units.ext (by simp), map_mul, Units.val_mul] theorem cellValue_upperUnipotent3_mul (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) (x y z : v.adicCompletion ℚ) (g : LocalGL3 v) : cellValue v χ (upperUnipotent3 x y z * g) = cellValue v χ g := by simp only [cellValue, gl3Det_upperUnipotent3_mul, lowerMinor_upperUnipotent3_mul, cornerEntry_upperUnipotent3_mul] theorem cellValue_diagonal3_mul (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) (a : Fin 3 → (v.adicCompletion ℚ)ˣ) (g : LocalGL3 v) : cellValue v χ (diagonal3 v a * g) = torusChar3 v χ a * halfModulus3 v a * cellValue v χ g := by have h2 : (a 2 : v.adicCompletion ℚ) ≠ 0 := (a 2).ne_zero have h12 : (a 1 : v.adicCompletion ℚ) * a 2 ≠ 0 := mul_ne_zero (a 1).ne_zero h2 have hdet : gl3Det v (diagonal3 v a * g) / lowerMinor v (diagonal3 v a * g) = (a 0 : v.adicCompletion ℚ) * (gl3Det v g / lowerMinor v g) := by rw [gl3Det_diagonal3_mul, lowerMinor_diagonal3_mul, show (a 0 : v.adicCompletion ℚ) * a 1 * a 2 * gl3Det v g = ((a 1 : v.adicCompletion ℚ) * a 2) * (a 0 * gl3Det v g) by ring, mul_div_mul_left _ _ h12, mul_div_assoc] have hlow : lowerMinor v (diagonal3 v a * g) / cornerEntry v (diagonal3 v a * g) = (a 1 : v.adicCompletion ℚ) * (lowerMinor v g / cornerEntry v g) := by rw [lowerMinor_diagonal3_mul, cornerEntry_diagonal3_mul, show (a 1 : v.adicCompletion ℚ) * a 2 * lowerMinor v g = (a 2 : v.adicCompletion ℚ) * (a 1 * lowerMinor v g) by ring, mul_div_mul_left _ _ h2, mul_div_assoc] unfold cellValue rw [hdet, hlow, cornerEntry_diagonal3_mul] simp only [charExt_units_mul, norm_mul, halfModulus3, torusChar3, Fin.prod_univ_three] push_cast ring theorem cellSection_upperUnipotent3_mul (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) (x y z : v.adicCompletion ℚ) (g : LocalGL3 v) : cellSection v χ (upperUnipotent3 x y z * g) = cellSection v χ g := by by_cases hg : g ∈ cellCutoff v · rw [cellSection, Set.indicator_of_mem (by rwa [upperUnipotent3_mul_mem_cellCutoff_iff]), Set.indicator_of_mem hg, cellValue_upperUnipotent3_mul] · rw [cellSection, Set.indicator_of_notMem (by rwa [upperUnipotent3_mul_mem_cellCutoff_iff]), Set.indicator_of_notMem hg] theorem cellSection_diagonal3_mul (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) (a : Fin 3 → (v.adicCompletion ℚ)ˣ) (g : LocalGL3 v) : cellSection v χ (diagonal3 v a * g) = torusChar3 v χ a * halfModulus3 v a * cellSection v χ g := by by_cases hg : g ∈ cellCutoff v · rw [cellSection, Set.indicator_of_mem (by rwa [diagonal3_mul_mem_cellCutoff_iff]), Set.indicator_of_mem hg, cellValue_diagonal3_mul] · rw [cellSection, Set.indicator_of_notMem (by rwa [diagonal3_mul_mem_cellCutoff_iff]), Set.indicator_of_notMem hg, mul_zero] def antidiagonal3 : LocalGL3 v := Matrix.GeneralLinearGroup.mkOfDetNeZero !![(0 : v.adicCompletion ℚ), 0, 1; 0, 1, 0; 1, 0, 0] (by simp [Matrix.det_fin_three]) theorem antidiagonal3_coe : (antidiagonal3 v : Matrix (Fin 3) (Fin 3) (v.adicCompletion ℚ)) = !![(0 : v.adicCompletion ℚ), 0, 1; 0, 1, 0; 1, 0, 0] := rfl theorem cornerEntry_antidiagonal3 : cornerEntry v (antidiagonal3 v) = 1 := by simp [cornerEntry, gl3Entry, antidiagonal3_coe] theorem lowerMinor_antidiagonal3 : lowerMinor v (antidiagonal3 v) = -1 := by simp [lowerMinor, gl3Entry, antidiagonal3_coe] theorem outerMinor_antidiagonal3 : outerMinor v (antidiagonal3 v) = 0 := by simp [outerMinor, gl3Entry, antidiagonal3_coe] theorem gl3Det_antidiagonal3 : gl3Det v (antidiagonal3 v) = -1 := by simp [gl3Det, antidiagonal3_coe, Matrix.det_fin_three] theorem antidiagonal3_mem_cellCutoff : antidiagonal3 v ∈ cellCutoff v := by refine ⟨?_, ?_, ?_⟩ · rw [cornerEntry_antidiagonal3] exact one_ne_zero · rw [lowerMinor_antidiagonal3] exact neg_ne_zero.mpr one_ne_zero · intro i fin_cases i <;> simp [cellRatio, gl3Entry, antidiagonal3_coe, cornerEntry_antidiagonal3, outerMinor_antidiagonal3] theorem cellValue_antidiagonal3 (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) : cellValue v χ (antidiagonal3 v) = (χ 0 1 : ℂ) * (χ 1 (-1) : ℂ) * (χ 2 1 : ℂ) := by have h1 : charExt (χ 1) (-1 : v.adicCompletion ℚ) = (χ 1 (-1) : ℂ) := by simpa using charExt_coe_units (χ 1) (-1) have h0 : charExt (χ 0) (1 : v.adicCompletion ℚ) = (χ 0 1 : ℂ) := by simpa using charExt_coe_units (χ 0) 1 have h2 : charExt (χ 2) (1 : v.adicCompletion ℚ) = (χ 2 1 : ℂ) := by simpa using charExt_coe_units (χ 2) 1 simp [cellValue, gl3Det_antidiagonal3, lowerMinor_antidiagonal3, cornerEntry_antidiagonal3, h0, h1, h2] theorem cellSection_antidiagonal3_ne_zero (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) : cellSection v χ (antidiagonal3 v) ≠ 0 := by rw [cellSection, Set.indicator_of_mem (antidiagonal3_mem_cellCutoff v), cellValue_antidiagonal3] exact mul_ne_zero (mul_ne_zero (Units.ne_zero _) (Units.ne_zero _)) (Units.ne_zero _) theorem cellSection_ne_zero (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) : cellSection v χ ≠ 0 := fun h => cellSection_antidiagonal3_ne_zero v χ (by rw [h]; rfl) end Witness section WitnessTopology open Filter Topology variable (v : HeightOneSpectrum (𝓞 ℚ)) theorem isClopen_valued_le_one : IsClopen {y : v.adicCompletion ℚ | Valued.v y ≤ 1} := by exact Valued.isClopen_integer (v.adicCompletion ℚ) theorem eventually_valued_eq {x : v.adicCompletion ℚ} (hx : x ≠ 0) : ∀ᶠ y in 𝓝 x, Valued.v y = Valued.v x := by have hvx : Valued.v x ≠ (0 : WithZero (Multiplicative ℤ)) := (Valuation.ne_zero_iff _).mpr hx exact Valued.locally_const hvx theorem eventually_valued_lt {c : v.adicCompletion ℚ} (hc : c ≠ 0) : ∀ᶠ y in 𝓝 (0 : v.adicCompletion ℚ), Valued.v y < Valued.v c := by have hvc : Valued.v c ≠ 0 := (Valuation.ne_zero_iff _).mpr hc rw [Filter.Eventually, Valued.mem_nhds_zero] refine ⟨Units.mk0 (Valued.v.restrict c) ((Valuation.ne_zero_iff _).mpr hc), fun y hy => ?_⟩ exact (Valuation.restrict_lt_iff _).mp hy theorem eventually_norm_eq {x : v.adicCompletion ℚ} (hx : x ≠ 0) : ∀ᶠ y in 𝓝 x, ‖y‖ = ‖x‖ := by filter_upwards [eventually_valued_eq v hx] with y hy rw [NumberField.FinitePlace.norm_def, NumberField.FinitePlace.norm_def, hy] theorem eventually_charExt_eq (χ : (v.adicCompletion ℚ)ˣ →* ℂˣ) (hχ : IsLocallyConstant χ) {x : v.adicCompletion ℚ} (hx : x ≠ 0) : ∀ᶠ y in 𝓝 x, charExt χ y = charExt χ x := by obtain ⟨U, hU, hUF⟩ := Units.isEmbedding_val₀.toIsInducing.isOpen_iff.mp (hχ.isOpen_fiber (χ (Units.mk0 x hx))) have hxU : x ∈ U := by have : Units.mk0 x hx ∈ (Units.val ⁻¹' U : Set (v.adicCompletion ℚ)ˣ) := by rw [hUF] exact rfl simpa using this filter_upwards [hU.mem_nhds hxU, eventually_ne_nhds hx] with y hyU hy0 have hyF : Units.mk0 y hy0 ∈ (Units.val ⁻¹' U : Set (v.adicCompletion ℚ)ˣ) := by simpa using hyU rw [hUF] at hyF rw [charExt_of_ne_zero χ hy0, charExt_of_ne_zero χ hx] exact congrArg Units.val hyF theorem eventually_mem_iff_of_isClopen {s : Set (v.adicCompletion ℚ)} (hs : IsClopen s) (x : v.adicCompletion ℚ) : ∀ᶠ y in 𝓝 x, (y ∈ s ↔ x ∈ s) := by by_cases hx : x ∈ s · filter_upwards [hs.isOpen.mem_nhds hx] with y hy exact iff_of_true hy hx · filter_upwards [hs.isClosed.isOpen_compl.mem_nhds hx] with y hy exact iff_of_false hy hx theorem continuous_gl3Entry (i j : Fin 3) : Continuous fun g : LocalGL3 v => gl3Entry v g i j := Units.continuous_val.matrix_elem i j theorem continuous_cornerEntry : Continuous (cornerEntry v) := continuous_gl3Entry v 2 0 theorem continuous_lowerMinor : Continuous (lowerMinor v) := ((continuous_gl3Entry v 1 0).mul (continuous_gl3Entry v 2 1)).sub ((continuous_gl3Entry v 1 1).mul (continuous_gl3Entry v 2 0)) theorem continuous_outerMinor : Continuous (outerMinor v) := ((continuous_gl3Entry v 1 0).mul (continuous_gl3Entry v 2 2)).sub ((continuous_gl3Entry v 1 2).mul (continuous_gl3Entry v 2 0)) theorem continuous_gl3Det : Continuous (gl3Det v) := Units.continuous_val.matrix_det theorem gl3Det_eq_bottom_expansion (g : LocalGL3 v) : gl3Det v g = gl3Entry v g 2 0 * (gl3Entry v g 0 1 * gl3Entry v g 1 2 - gl3Entry v g 0 2 * gl3Entry v g 1 1) - gl3Entry v g 2 1 * (gl3Entry v g 0 0 * gl3Entry v g 1 2 - gl3Entry v g 0 2 * gl3Entry v g 1 0) + gl3Entry v g 2 2 * (gl3Entry v g 0 0 * gl3Entry v g 1 1 - gl3Entry v g 0 1 * gl3Entry v g 1 0) := by simp only [gl3Det, gl3Entry, Matrix.det_fin_three] ring theorem cornerEntry_mul_gl3Det (g : LocalGL3 v) : cornerEntry v g * gl3Det v g = (gl3Entry v g 0 0 * gl3Entry v g 2 1 - gl3Entry v g 0 1 * cornerEntry v g) * outerMinor v g + (gl3Entry v g 0 2 * cornerEntry v g - gl3Entry v g 0 0 * gl3Entry v g 2 2) * lowerMinor v g := by simp only [gl3Det, gl3Entry, cornerEntry, outerMinor, lowerMinor, Matrix.det_fin_three] ring theorem exists_bottom_entry_ne_zero_of_cornerEntry_eq_zero {g : LocalGL3 v} (hc : cornerEntry v g = 0) : gl3Entry v g 2 1 ≠ 0 ∨ gl3Entry v g 2 2 ≠ 0 := by by_contra h push Not at h apply gl3Det_ne_zero v g rw [gl3Det_eq_bottom_expansion, h.1, h.2] have hc' : gl3Entry v g 2 0 = 0 := hc rw [hc'] ring theorem outerMinor_ne_zero_of_lowerMinor_eq_zero {g : LocalGL3 v} (hc : cornerEntry v g ≠ 0) (hl : lowerMinor v g = 0) : outerMinor v g ≠ 0 := by intro ho apply gl3Det_ne_zero v g have h := cornerEntry_mul_gl3Det v g rw [ho, hl, mul_zero, mul_zero, add_zero] at h exact (mul_eq_zero.mp h).resolve_left hc theorem eventually_one_lt_valued_div {n d : LocalGL3 v → v.adicCompletion ℚ} {g : LocalGL3 v} (hn : Continuous n) (hd : Continuous d) (hng : n g ≠ 0) (hdg : d g = 0) : ∀ᶠ h in 𝓝 g, d h ≠ 0 → 1 < Valued.v (n h / d h) := by have h1 : ∀ᶠ h in 𝓝 g, Valued.v (n h) = Valued.v (n g) := (hn.tendsto g).eventually (eventually_valued_eq v hng) have h2 : ∀ᶠ h in 𝓝 g, Valued.v (d h) < Valued.v (n g) := by have ht : Filter.Tendsto d (nhds g) (nhds 0) := by simpa [hdg] using hd.tendsto g exact ht.eventually (eventually_valued_lt v hng) filter_upwards [h1, h2] with h hn' hd' hd0 have hvd : Valued.v (d h) ≠ 0 := (Valuation.ne_zero_iff _).mpr hd0 rw [map_div₀, hn', one_lt_div₀ (lt_of_le_of_ne zero_le' hvd.symm)] exact hd' theorem eventually_cellSection_eq_zero_of_den {χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)} {g : LocalGL3 v} {n d : LocalGL3 v → v.adicCompletion ℚ} (i : Fin 3) (hn : Continuous n) (hd : Continuous d) (hng : n g ≠ 0) (hdg : d g = 0) (hratio : ∀ h, cellRatio v h i = n h / d h) (hden : ∀ h, h ∈ cellCutoff v → d h ≠ 0) : ∀ᶠ h in 𝓝 g, cellSection v χ h = cellSection v χ g := by have hg : g ∉ cellCutoff v := fun hmem => hden g hmem hdg filter_upwards [eventually_one_lt_valued_div v hn hd hng hdg] with h hh have hh' : h ∉ cellCutoff v := by intro hmem have hi := hmem.2.2 i rw [hratio] at hi exact absurd hi (not_le.mpr (hh (hden h hmem))) simp only [cellSection, Set.indicator_of_notMem hh', Set.indicator_of_notMem hg] theorem isLocallyConstant_cellSection (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) (hχ : ∀ i, IsLocallyConstant (χ i)) : IsLocallyConstant (cellSection v χ) := by rw [IsLocallyConstant.iff_eventually_eq] intro g by_cases hc : cornerEntry v g = 0 · rcases exists_bottom_entry_ne_zero_of_cornerEntry_eq_zero v hc with h21 | h22 · exact eventually_cellSection_eq_zero_of_den v 0 (continuous_gl3Entry v 2 1) (continuous_cornerEntry v) h21 hc (fun h => rfl) (fun h hh => hh.1) · exact eventually_cellSection_eq_zero_of_den v 1 (continuous_gl3Entry v 2 2) (continuous_cornerEntry v) h22 hc (fun h => rfl) (fun h hh => hh.1) by_cases hl : lowerMinor v g = 0 · exact eventually_cellSection_eq_zero_of_den v 2 (continuous_outerMinor v) (continuous_lowerMinor v) (outerMinor_ne_zero_of_lowerMinor_eq_zero v hc hl) hl (fun h => rfl) (fun h hh => hh.2.1) have hcA : ContinuousAt (cornerEntry v) g := (continuous_cornerEntry v).continuousAt have hlA : ContinuousAt (lowerMinor v) g := (continuous_lowerMinor v).continuousAt have hdA : ContinuousAt (gl3Det v) g := (continuous_gl3Det v).continuousAt have hr : ∀ i, ContinuousAt (fun h => cellRatio v h i) g := by intro i fin_cases i · exact ((continuous_gl3Entry v 2 1).continuousAt).div hcA hc · exact ((continuous_gl3Entry v 2 2).continuousAt).div hcA hc · exact ((continuous_outerMinor v).continuousAt).div hlA hl have hmem : ∀ᶠ h in 𝓝 g, (h ∈ cellCutoff v ↔ g ∈ cellCutoff v) := by have hc' : ∀ᶠ h in 𝓝 g, cornerEntry v h ≠ 0 := hcA.eventually_ne hc have hl' : ∀ᶠ h in 𝓝 g, lowerMinor v h ≠ 0 := hlA.eventually_ne hl have hr' : ∀ᶠ h in 𝓝 g, ∀ i, (Valued.v (cellRatio v h i) ≤ 1 ↔ Valued.v (cellRatio v g i) ≤ 1) := eventually_all.mpr fun i => (hr i).eventually (eventually_mem_iff_of_isClopen v (isClopen_valued_le_one v) (cellRatio v g i)) filter_upwards [hc', hl', hr'] with h hch hlh hrh simp only [cellCutoff, Set.mem_setOf_eq, hch, hc, hlh, hl, ne_eq, not_false_eq_true, true_and] exact forall_congr' hrh have hval : ∀ᶠ h in 𝓝 g, cellValue v χ h = cellValue v χ g := by have hq0 : gl3Det v g / lowerMinor v g ≠ 0 := div_ne_zero (gl3Det_ne_zero v g) hl have hq1 : lowerMinor v g / cornerEntry v g ≠ 0 := div_ne_zero hl hc have e0 : ∀ᶠ h in nhds g, charExt (χ 0) (gl3Det v h / lowerMinor v h) = charExt (χ 0) (gl3Det v g / lowerMinor v g) := (hdA.div hlA hl).eventually (eventually_charExt_eq v (χ 0) (hχ 0) hq0) have e1 : ∀ᶠ h in nhds g, charExt (χ 1) (lowerMinor v h / cornerEntry v h) = charExt (χ 1) (lowerMinor v g / cornerEntry v g) := (hlA.div hcA hc).eventually (eventually_charExt_eq v (χ 1) (hχ 1) hq1) have e2 : ∀ᶠ h in nhds g, charExt (χ 2) (cornerEntry v h) = charExt (χ 2) (cornerEntry v g) := hcA.eventually (eventually_charExt_eq v (χ 2) (hχ 2) hc) have e3 : ∀ᶠ h in nhds g, ‖gl3Det v h / lowerMinor v h‖ = ‖gl3Det v g / lowerMinor v g‖ := (hdA.div hlA hl).eventually (eventually_norm_eq v hq0) have e4 : ∀ᶠ h in nhds g, ‖cornerEntry v h‖ = ‖cornerEntry v g‖ := hcA.eventually (eventually_norm_eq v hc) filter_upwards [e0, e1, e2, e3, e4] with h h0 h1 h2 h3 h4 simp only [cellValue, h0, h1, h2, h3, h4] filter_upwards [hmem, hval] with h h1 h2 by_cases hgS : g ∈ cellCutoff v · rw [cellSection, Set.indicator_of_mem (h1.mpr hgS), Set.indicator_of_mem hgS, h2] · rw [cellSection, Set.indicator_of_notMem (fun hh => hgS (h1.mp hh)), Set.indicator_of_notMem hgS] theorem cellSection_mem_principalSeries3 (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) (hχ : ∀ i, IsLocallyConstant (χ i)) : cellSection v χ ∈ principalSeries3 v χ := ⟨isLocallyConstant_cellSection v χ hχ, cellSection_upperUnipotent3_mul v χ, cellSection_diagonal3_mul v χ⟩ def cellVector (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) (hχ : ∀ i, IsLocallyConstant (χ i)) : ↥(principalSeries3 v χ) := ⟨cellSection v χ, cellSection_mem_principalSeries3 v χ hχ⟩ def evalAntidiagonal3 (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) : ↥(principalSeries3 v χ) →ₗ[ℂ] ℂ := (LinearMap.proj (antidiagonal3 v) : (LocalGL3 v → ℂ) →ₗ[ℂ] ℂ).comp (principalSeries3 v χ).subtype theorem coefficientFn_evalAntidiagonal3_cellVector_one (χ : Fin 3 → ((v.adicCompletion ℚ)ˣ →* ℂˣ)) (hχ : ∀ i, IsLocallyConstant (χ i)) : coefficientFn (evalAntidiagonal3 v χ) (cellVector v χ hχ) 1 ≠ 0 := by have : coefficientFn (evalAntidiagonal3 v χ) (cellVector v χ hχ) 1 = cellSection v χ (antidiagonal3 v) := by simp [coefficientFn, evalAntidiagonal3, cellVector, gl3AmbientRightTranslate] rw [this] exact cellSection_antidiagonal3_ne_zero v χ end WitnessTopology end LanglandsTunnell.CubicInduction end
Statements phrased using this module (102)
- Spherical Whittaker Hecke eigenfunctions on GL₃ come from principal series
LanglandsTunnell.CubicInduction.exists_eq_coefficientFn_principalSeries3_of_isCosetEigenfunction_of_norm_eq_one15 below · depth 19 - Finite-dimensionality of U-invariant matrix coefficients of I(χ)
LanglandsTunnell.CubicInduction.exists_finset_coefficientFn_mem_span_of_isOpen5 below · depth 19 - Finite support of the GL₃ Whittaker type integrals
LanglandsTunnell.CubicInduction.exists_finset_typeIntegral_eq_zero_of_eq_coefficientFn_of_le_conductorExponentAt23 below · depth 19 - Vanishing of type integrals outside finitely many torus shells
LanglandsTunnell.CubicInduction.exists_finset_typeIntegral_eq_zero_of_forall_exists_finset_eq_zero_betaFinCS0 below · depth 19 - Levi-central units act trivially on a deeply contracted Whittaker function
LanglandsTunnell.CubicInduction.exists_forall_apply_diagonal3_mul_diagonal3_mul_eq_of_isCompact_of_valued_le_fst1 below · depth 20 - Deep central units diag(t,t,s) act trivially on contracted Whittaker values
LanglandsTunnell.CubicInduction.exists_forall_apply_diagonal3_mul_diagonal3_mul_eq_of_isCompact_of_valued_le_snd1 below · depth 20 - Whittaker functions vanish deep in the GL₂-torus
LanglandsTunnell.CubicInduction.exists_forall_apply_iotaGL_mul_eq_zero_of_lt_neg4 below · depth 20 - Principal series vectors of p-adic GL₃ are smooth
LanglandsTunnell.CubicInduction.exists_forall_gl3AmbientRightTranslate_eq_of_mem_principalSeries32 below · depth 20 - Type integrals of deep GL₃ Whittaker coefficients vanish eventually
LanglandsTunnell.CubicInduction.exists_forall_typeIntegral_eq_zero_of_le_fst7 below · depth 20 - Vanishing of GL₃ type integrals for large n₂
LanglandsTunnell.CubicInduction.exists_forall_typeIntegral_eq_zero_of_le_snd11 below · depth 20 - Uniform smoothness of a GL₃ principal-series coefficient under right translation
LanglandsTunnell.CubicInduction.exists_isOpen_forall_apply_mul_iotaGL_mul_eq1 below · depth 20 - Non-zero Whittaker functional on a GL₃ principal series
LanglandsTunnell.CubicInduction.exists_isWhittakerFunctional3_ne_zero0 below · depth 20 - Spherical vector in an unramified principal series of GL₃
LanglandsTunnell.CubicInduction.exists_spherical_mem_principalSeries3_isCosetEigenfunction3 below · depth 20 - Finite-dimensional level-n fixed vectors in the GL₃ principal series
LanglandsTunnell.CubicInduction.finiteDimensional_fixedPoints_principalSeries31 below · depth 20 - Coefficients of unitary principal series of GL₃ generate irreducibly
LanglandsTunnell.CubicInduction.forall_mem_gl3CyclicSubspace_of_mem_gl3CyclicSubspace_coefficientFn17 below · depth 20 - Compactness of the integral maximal compact subgroup of GL₃(ℚᵥ)
LanglandsTunnell.CubicInduction.isCompact_localMaximalCompact30 below · depth 20 - Whittaker functionals do not vanish on the spherical vector
LanglandsTunnell.CubicInduction.whittakerFunctional3_spherical_ne_zero_of_norm_eq_one4 below · depth 20 - Stable complements in the unitary principal series of GL₃
LanglandsTunnell.CubicInduction.exists_compl_of_forall_le_comap_gl3AmbientRightTranslate7 below · depth 21 - Schur's lemma for the GL₃ principal series at equal characters
LanglandsTunnell.CubicInduction.exists_eq_smul_id_of_gl3AmbientRightTranslate_comm_of_apply_eq4 below · depth 21 - Scalarity of translation-equivariant endomorphisms of GL₃ principal series
LanglandsTunnell.CubicInduction.exists_eq_smul_id_of_gl3AmbientRightTranslate_comm_of_injective6 below · depth 21 - Schur's lemma for a GL₃ principal series with two equal characters
LanglandsTunnell.CubicInduction.exists_eq_smul_id_of_gl3AmbientRightTranslate_comm_of_not_injective5 below · depth 21 - Uniqueness of the ψ-Whittaker functional on GL₃ principal series
LanglandsTunnell.CubicInduction.exists_eq_smul_of_isWhittakerFunctional33 below · depth 21 - Level vectors killed by N_{(2,1)}-invariant functionals on I(χ)
LanglandsTunnell.CubicInduction.exists_forall_linearMap_apply_eq_zero_of_radicalP21_of_mem_principalSeries37 below · depth 21 - Vanishing along the opposite (2,1)-radical for ramified GL₃ principal series
LanglandsTunnell.CubicInduction.exists_forall_linearMap_apply_eq_zero_of_transposeInv3_radicalP21_of_mem_principalSeries38 below · depth 21 - Vanishing of a θ-isotypic vector in a (1,2) Jacquet module
LanglandsTunnell.CubicInduction.mem_span_rightTranslate_radicalP12_sub_of_forall_apply_mul_diagonal30 below · depth 21 - Vanishing along the (2,1) radical of a θ-isotypic principal series vector
LanglandsTunnell.CubicInduction.mem_span_rightTranslate_radicalP21_sub_of_forall_apply_mul_diagonal31 below · depth 21 - Level 3B bump vector in a twisted principal-series Whittaker model
LanglandsTunnell.RankinSelberg.exists_mem_gl3CyclicSubspace_twist_coefficientFn_principalSeries3_congruenceK1_invariant_iotaGL_bump_of_pos_of_level157 below · depth 21 - A principal-series GL₃ Whittaker model with prescribed central character
LanglandsTunnell.RankinSelberg.exists_principalSeries3_whittaker_deepTwist_centralChar_of_higherUnitsAt_unitary_shallow12 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 - Vanishing of a level-b principal series vector on the (2,1) parabolic
LanglandsTunnell.CubicInduction.apply_eq_zero_of_apply_two_eq_zero_of_mem_principalSeries3_of_level1 below · depth 22 - Multiplicity bound for torus-equivariant functionals on a GL₃ principal series
LanglandsTunnell.CubicInduction.card_le_ncard_of_linearIndependent_of_upperUnipotent3_of_diagonal35 below · depth 22 - At most one such functional on the trivial principal series of GL₃
LanglandsTunnell.CubicInduction.card_le_one_of_linearIndependent_of_upperUnipotent3_of_diagonal3_one3 below · depth 22 - Finite level-n transversals modulo level-m congruence in GL₃
LanglandsTunnell.CubicInduction.exists_finset_localMaximalCompact3_eq_mul_of_level_le1 below · depth 22 - Gauge majorant for cyclic translates of principal-series Whittaker coefficients
LanglandsTunnell.CubicInduction.exists_gauge_of_mem_gl3CyclicSubspace_coefficientFn_principalSeries323 below · depth 22 - Level-pᵈ Whittaker vector in a unitary principal series of GL₃
LanglandsTunnell.CubicInduction.exists_isWhittakerFunctional3_coefficientFn_ne_zero_forall_deepTwist_eq_of_forall_higherUnitsAt_of_pos11 below · depth 22 - Invariant positive Hermitian form on the unitary principal series of GL₃
LanglandsTunnell.CubicInduction.exists_sesqForm_gl3AmbientRightTranslate_invariant_of_norm_eq_one5 below · depth 22 - Haar scaling on the unipotent subgroup: dilating the integral ball
LanglandsTunnell.CubicInduction.measure_unipotentEntry_preimage_mul_eq0 below · depth 22 - Unipotent invariance of the dual Rankin–Selberg integrand
LanglandsTunnell.CubicInduction.mul_dual_eq_of_isGL3PsiWhittakerFn_inv_of_unipotent0 below · depth 22 - Vanishing of middle-cell sums for deeply ramified I(χ) vectors
LanglandsTunnell.CubicInduction.sum_apply_weylPrime3_mul_radicalP21_mul_iotaGL_eq_zero_of_level2 below · depth 22 - Open-cell sums vanish for level-fixed GL₃ principal series vectors
LanglandsTunnell.CubicInduction.sum_sum_apply_longWeyl3_mul_iotaGL_mul_radicalP21_eq_zero_of_level2 below · depth 22 - Local GL₃× GL₁ functional equation for deeply twisted principal series
LanglandsTunnell.RankinSelberg.exists_forall_localZeta31_fe_one_twist_coefficientFn_principalSeries3_of_exactConductor59 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 - Equivariant functionals on Bruhat steps of a GL₃ principal series
LanglandsTunnell.CubicInduction.eq_torusChar3_mul_halfModulus3_of_linearIndependent_domRestrict_of_le_card3 below · depth 23 - Vanishing on GL₂(𝒪) for level below both conductors
LanglandsTunnell.CubicInduction.eq_zero_of_valuation_le_one_of_diagUnits2_mul_of_mul_level0 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 - Invariant positive functional on the GL₃ principal series
LanglandsTunnell.CubicInduction.exists_invariant_pos_linearMap_of_torusChar3_eq_halfModulus34 below · depth 23 - At most one unipotent-invariant functional on each corner-filtration step
LanglandsTunnell.CubicInduction.le_one_of_linearIndependent_domRestrict_of_upperUnipotent33 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 - 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 - 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 - 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 - Contragredient involution maps I(μ₀,μ₁) to I(μ₁⁻¹,μ₀⁻¹)
LanglandsTunnell.CubicInduction.conj_transposeInvN_mem_principalSeries20 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 - 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 - 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 - 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 - 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 - Torus-shell expansion of a local Rankin–Selberg integral
LanglandsTunnell.RankinSelberg.hasSum_torusShells_rsLocalIntegral22_jacquetIntegral_schwartz_of_integrable9 below · depth 27 - 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 - 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 - Product integrability of the local Rankin–Selberg kernel in a chamber
LanglandsTunnell.RankinSelberg.exists_forall_integrable_prod_row_mul_row_mul_cpow_mul_whittaker_diagOne_mul_cpow_of_chamber35 below · depth 28 - Vanishing of deep torus shells against a Whittaker vector
LanglandsTunnell.RankinSelberg.exists_forall_le_setIntegral_localLevelOne_mul_diagZ_mul_eq_zero_of_sqrt_modulus_tail_of_forall_torusZeta_polynomial7 below · depth 28 - Constant η-twisted local torus zeta integrals for Whittaker models
LanglandsTunnell.RankinSelberg.exists_mem_span_forall_torusZeta_twist_eq_const_and_dual_of_irreducible_admissible6 below · depth 28 - Kirillov decomposition of cuspidal Whittaker vectors into shell–character vectors
LanglandsTunnell.RankinSelberg.exists_finset_eq_sum_smul_shell_character_kirillov_of_cuspidal15 below · depth 29 - Local integrability of the unfolded Rankin–Selberg integrand
LanglandsTunnell.RankinSelberg.exists_forall_integrable_whittaker_mul_principalSeries2_antidiagonal2_mul_row_mul_cpow_of_admissible_of_chamber28 below · depth 29 - Weyl element on shells: twisted local functional equation
LanglandsTunnell.RankinSelberg.exists_forall_setIntegral_units_apply_diagUnitGL2_mul_weylJ_eq_mul_setIntegral_of_cuspidal27 below · depth 29 - Local functional equation with vector-independent γ-factor
LanglandsTunnell.RankinSelberg.exists_rational_forall_torusZeta_fe_twist_of_irreducible_admissible26 below · depth 30 - Rationality of twisted torus zeta integrals over ℚₚ
LanglandsTunnell.RankinSelberg.forall_mem_span_exists_rational_torusZeta_twist_and_dual_of_irreducible_admissible9 below · depth 31