Definitions/Def_NumberField_StandardGlobalAddCharRat.lean
Standard additive character of the adele ring of
For a prime p the module first records that every x \in \mathbb{Q}_p admits an approximant of the form a/p^k with a \in \mathbb{Z}, k \in \mathbb{N} and \|x - a/p^k\| \le 1, and that any two such approximants differ by a rational integer (the auxiliary divisibility statement being that \|a/p^k\| \le 1 forces p^k \mid a). psiPadicFun is then x \mapsto \exp(-2\pi i\,(a/p^k)) for a chosen approximant, and psiPadicFun_eq shows the value is the same for every approximant, so psiPadic is a well-defined element of AddChar ℚ_[p] ℂ. It equals 1 on \|x\| \le 1, is constant on closed unit balls (hence continuous), and takes the value \exp(-2\pi i/p) \neq 1 at p^{-1}. For a height-one prime v of \mathbb{Z}, psiV v is psiPadic composed with Mathlib's identification of \mathbb{Q}_v with \mathbb{Q}_{p}, p = primesEquiv v; it is continuous, trivial on the valuation ring, and nontrivial on the image of the inverse of the natural generator of v. psiFin is the character of the finite adeles given by the multipliable product \prod_v \psi_v(x_v), the support being finite because an adele is integral outside a finite set; it is trivial on the integral adeles, continuous, and satisfies \psi_f(q) = \exp(-2\pi i q) for q \in \mathbb{Q}, proved from the fact that a rational of p-adic norm at most 1 for all p is an integer. At the unique infinite place psiArchPlace is x \mapsto \exp(+2\pi i x) through the real embedding of the completion, and psiArch their product over infinite places, with \psi_\infty(q) = \exp(2\pi i q). Finally psiQ is x \mapsto \psi_\infty(x_\infty)\psi_f(x_f) on \mathbb{A}_{\mathbb{Q}}; isGlobalAddChar_psiQ supplies the three fields of IsGlobalAddChar ℚ: triviality on the image of \mathbb{Q} (the two reciprocity formulas cancel), continuity, and \psi_{\mathbb{Q}} \neq 1, witnessed at the archimedean component 1/2, where the value is -1. A helper singlePlaceAdele v r is the finite adele with entry r at v and 0 elsewhere, used to record nontriviality of \psi_{\mathbb{Q}} at each finite place. With these signs (e^{-2\pi i} at the finite places, e^{+2\pi i} at the real place) the character is the complex conjugate of Tate's normalisation.
Relation to Mathlib
Mathlib supplies AddChar, the adele ring of a number field, and the identification of the v-adic completion of \mathbb{Q} with \mathbb{Q}_p; it has no standard additive character of an adele ring, which is what is constructed here for \mathbb{Q}.
Where it is used
The character \psi_{\mathbb{Q}} together with its IsGlobalAddChar certificate is the additive character entering the Whittaker coefficients of adelic automorphic forms on \mathrm{GL}_2 over \mathbb{Q}, and hence the Fourier expansions used on the automorphic side of the argument.
References
- J. T. Tate, Fourier analysis in number fields and Hecke's zeta-functions, in: Algebraic Number Theory (J. W. S. Cassels and A. Fröhlich, eds.), Academic Press, 1967, 305–347
- A. Weil, Basic Number Theory, Grundlehren der mathematischen Wissenschaften 144, Springer, 1974
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 725 lines
- 44 declarations
- used in the statements of 377 theorems and imported by 382 proofs
- imports 1 definition modules
Source file: Definitions/Def_NumberField_StandardGlobalAddCharRat.lean
Imported by
Declarations
- theorem
NumberField.StandardAddChar.pPow_dvd_of_norm_le_one - theorem
NumberField.StandardAddChar.exists_pPow_approx - theorem
NumberField.StandardAddChar.pPow_approx_sub_int - def
NumberField.StandardAddChar.psiPadicFun - theorem
NumberField.StandardAddChar.psiPadicFun_eq - theorem
NumberField.StandardAddChar.psiPadicFun_zero - theorem
NumberField.StandardAddChar.psiPadicFun_add - def
NumberField.StandardAddChar.psiPadic - theorem
NumberField.StandardAddChar.psiPadic_apply - theorem
NumberField.StandardAddChar.psiPadic_eq_one_of_norm_le_one - theorem
NumberField.StandardAddChar.psiPadicFun_eq_of_norm_sub_le_one - theorem
NumberField.StandardAddChar.continuous_psiPadic - theorem
NumberField.StandardAddChar.psiPadic_inv_p - theorem
NumberField.StandardAddChar.psiPadic_inv_p_ne_one - def
NumberField.StandardAddChar.psiV - theorem
NumberField.StandardAddChar.psiV_apply - theorem
NumberField.StandardAddChar.continuous_psiV - theorem
NumberField.StandardAddChar.psiV_eq_one_of_mem_integers - theorem
NumberField.StandardAddChar.psiV_algebraMap_inv_ne_one - theorem
NumberField.StandardAddChar.exists_int_of_forall_norm_le_one - theorem
NumberField.StandardAddChar.mulSupport_psiV_finite - def
NumberField.StandardAddChar.psiFin - theorem
NumberField.StandardAddChar.psiFin_apply - theorem
NumberField.StandardAddChar.psiFin_eq_one_of_forall_mem - theorem
NumberField.StandardAddChar.isOpen_forall_mem_integers - theorem
NumberField.StandardAddChar.continuous_psiFin - theorem
NumberField.StandardAddChar.norm_pPow_ratCast_le_one - theorem
NumberField.StandardAddChar.psiFin_algebraMap - def
NumberField.StandardAddChar.psiArchPlace - theorem
NumberField.StandardAddChar.psiArchPlace_apply - def
NumberField.StandardAddChar.psiArch - theorem
NumberField.StandardAddChar.psiArch_apply - theorem
NumberField.StandardAddChar.continuous_psiArch - theorem
NumberField.StandardAddChar.psiArch_algebraMap - def
NumberField.StandardAddChar.psiQ - theorem
NumberField.StandardAddChar.psiQ_apply - theorem
NumberField.StandardAddChar.continuous_psiQ - theorem
NumberField.StandardAddChar.psiQ_algebraMap - theorem
NumberField.StandardAddChar.psiQ_ne_one - def
NumberField.StandardAddChar.singlePlaceAdele - theorem
NumberField.StandardAddChar.singlePlaceAdele_apply - theorem
NumberField.StandardAddChar.psiFin_singlePlaceAdele - theorem
NumberField.StandardAddChar.psiQ_singlePlaceAdele_ne_one - theorem
NumberField.StandardAddChar.isGlobalAddChar_psiQ
Source
import Mathlib.NumberTheory.Padics.PadicNumbers ↗ import Mathlib.NumberTheory.Padics.RingHoms ↗ import Mathlib.NumberTheory.Padics.HeightOneSpectrum ↗ import Mathlib.NumberTheory.NumberField.AdeleRing ↗ import Mathlib.RingTheory.DedekindDomain.FiniteAdeleRing ↗ import Mathlib.NumberTheory.NumberField.Completion.InfinitePlace ↗ import Mathlib.NumberTheory.NumberField.InfinitePlace.TotallyRealComplex ↗ import Mathlib.Topology.Algebra.RestrictedProduct.TopologicalSpace ↗ import Mathlib.Algebra.BigOperators.Finprod ↗ import Mathlib.Analysis.SpecialFunctions.Complex.Log ↗ import Mathlib.Analysis.Normed.Group.Ultra ↗ import Mathlib.Analysis.Normed.Ring.Ultra ↗ import Definitions.Def_AutomorphicForm_WhittakerCoefficient set_option autoImplicit false noncomputable section namespace NumberField.StandardAddChar open scoped Real variable {p : ℕ} [Fact p.Prime] theorem pPow_dvd_of_norm_le_one (a : ℤ) (k : ℕ) (h : ‖((a : ℚ_[p]) / (p : ℚ_[p]) ^ k)‖ ≤ 1) : (p : ℤ) ^ k ∣ a := by have hppos : (0 : ℝ) < (p : ℝ) := by exact_mod_cast (Fact.out : p.Prime).pos rw [norm_div, norm_pow, Padic.norm_p, div_le_one (by positivity)] at h have h' : ‖(a : ℚ_[p])‖ ≤ (p : ℝ) ^ (-k : ℤ) := by rwa [inv_pow, ← zpow_natCast ((p : ℝ)), ← zpow_neg] at h have := (Padic.norm_int_le_pow_iff_dvd a k).mp h' exact_mod_cast this theorem exists_pPow_approx (x : ℚ_[p]) : ∃ (a : ℤ) (k : ℕ), ‖x - ((a : ℚ_[p]) / (p : ℚ_[p]) ^ k)‖ ≤ 1 := by have hp0 : ((p : ℝ)) ≠ 0 := by exact_mod_cast (Fact.out : p.Prime).ne_zero by_cases hx : ‖x‖ ≤ 1 · exact ⟨0, 0, by simpa using hx⟩ · push Not at hx have hx0 : x ≠ 0 := by intro h; rw [h, norm_zero] at hx; linarith have hvneg : x.valuation < 0 := by by_contra hge push Not at hge have h1 : ‖x‖ ≤ 1 := by rw [Padic.norm_eq_zpow_neg_valuation hx0] have hp1 : (1 : ℝ) < (p : ℝ) := by exact_mod_cast (Fact.out : p.Prime).one_lt exact zpow_le_one_of_nonpos₀ (le_of_lt hp1) (by omega) linarith set k : ℕ := (-x.valuation).toNat with hk have hkval : (k : ℤ) = -x.valuation := by rw [hk]; exact Int.toNat_of_nonneg (by omega) have hykmem : ‖x * (p : ℚ_[p]) ^ k‖ ≤ 1 := by rw [norm_mul, norm_pow, Padic.norm_p, inv_pow, ← zpow_natCast ((p : ℝ)), ← zpow_neg, Padic.norm_eq_zpow_neg_valuation hx0, ← zpow_add₀ hp0, hkval] simp set y : ℤ_[p] := ⟨x * (p : ℚ_[p]) ^ k, hykmem⟩ with hy set a : ℤ := (PadicInt.appr y k : ℤ) with ha have hspec := PadicInt.appr_spec k y rw [Ideal.mem_span_singleton] at hspec obtain ⟨c, hc⟩ := hspec refine ⟨a, k, ?_⟩ have hppos : (0 : ℝ) < (p : ℝ) := by exact_mod_cast (Fact.out : p.Prime).pos have hpk : ((p : ℚ_[p]) ^ k) ≠ 0 := pow_ne_zero _ (Nat.cast_ne_zero.mpr (Fact.out : p.Prime).ne_zero) have hcoe : ((y - ((PadicInt.appr y k : ℕ) : ℤ_[p])) : ℚ_[p]) = x * (p : ℚ_[p]) ^ k - ((a : ℚ_[p])) := by push_cast [hy, ha] ring have hxa : x - ((a : ℚ_[p]) / (p : ℚ_[p]) ^ k) = ((y - ((PadicInt.appr y k : ℕ) : ℤ_[p])) : ℚ_[p]) / (p : ℚ_[p]) ^ k := by rw [hcoe] field_simp rw [hxa, norm_div, norm_pow, Padic.norm_p, div_le_one (by positivity)] have hnormZ : ‖y - ((PadicInt.appr y k : ℕ) : ℤ_[p])‖ ≤ ((p : ℝ))⁻¹ ^ k := by rw [hc] calc ‖(p : ℤ_[p]) ^ k * c‖ = ‖(p : ℤ_[p]) ^ k‖ * ‖c‖ := norm_mul _ _ _ ≤ ‖(p : ℤ_[p]) ^ k‖ * 1 := mul_le_mul_of_nonneg_left c.norm_le_one (norm_nonneg _) _ = ((p : ℝ))⁻¹ ^ k := by rw [mul_one, norm_pow, PadicInt.norm_p] calc ‖((y - ((PadicInt.appr y k : ℕ) : ℤ_[p])) : ℚ_[p])‖ = ‖y - ((PadicInt.appr y k : ℕ) : ℤ_[p])‖ := PadicInt.padic_norm_e_of_padicInt (y - ((PadicInt.appr y k : ℕ) : ℤ_[p])) _ ≤ ((p : ℝ))⁻¹ ^ k := hnormZ theorem pPow_approx_sub_int (a b : ℤ) (k j : ℕ) (x : ℚ_[p]) (ha : ‖x - ((a : ℚ_[p]) / (p : ℚ_[p]) ^ k)‖ ≤ 1) (hb : ‖x - ((b : ℚ_[p]) / (p : ℚ_[p]) ^ j)‖ ≤ 1) : ∃ m : ℤ, (a : ℚ) / (p : ℚ) ^ k - (b : ℚ) / (p : ℚ) ^ j = m := by have hpQ : ((p : ℚ_[p])) ≠ 0 := Nat.cast_ne_zero.mpr (Fact.out : p.Prime).ne_zero have hpQQ : ((p : ℚ)) ≠ 0 := Nat.cast_ne_zero.mpr (Fact.out : p.Prime).ne_zero have hd : ‖(((a * p ^ j - b * p ^ k : ℤ) : ℚ_[p]) / (p : ℚ_[p]) ^ (k + j))‖ ≤ 1 := by have heq : (((a * p ^ j - b * p ^ k : ℤ) : ℚ_[p]) / (p : ℚ_[p]) ^ (k + j)) = (x - ((b : ℚ_[p]) / (p : ℚ_[p]) ^ j)) - (x - ((a : ℚ_[p]) / (p : ℚ_[p]) ^ k)) := by push_cast field_simp ring rw [heq, sub_eq_add_neg] refine le_trans (Padic.nonarchimedean _ _) (max_le hb ?_) rw [norm_neg] exact ha obtain ⟨m, hm⟩ := pPow_dvd_of_norm_le_one (a * p ^ j - b * p ^ k) (k + j) hd refine ⟨m, ?_⟩ have hmQ : (a : ℚ) * (p : ℚ) ^ j - (b : ℚ) * (p : ℚ) ^ k = (p : ℚ) ^ (k + j) * (m : ℚ) := by exact_mod_cast congrArg (Int.cast : ℤ → ℚ) hm field_simp linear_combination hmQ def psiPadicFun (x : ℚ_[p]) : ℂ := Complex.exp (-(2 * Real.pi * Complex.I) * (((exists_pPow_approx x).choose : ℂ) / (p : ℂ) ^ ((exists_pPow_approx x).choose_spec.choose))) theorem psiPadicFun_eq {x : ℚ_[p]} {a : ℤ} {k : ℕ} (h : ‖x - ((a : ℚ_[p]) / (p : ℚ_[p]) ^ k)‖ ≤ 1) : psiPadicFun x = Complex.exp (-(2 * Real.pi * Complex.I) * ((a : ℂ) / (p : ℂ) ^ k)) := by have hpC : ((p : ℂ)) ≠ 0 := Nat.cast_ne_zero.mpr (Fact.out : p.Prime).ne_zero obtain ⟨m, hm⟩ := pPow_approx_sub_int ((exists_pPow_approx x).choose) a ((exists_pPow_approx x).choose_spec.choose) k x ((exists_pPow_approx x).choose_spec.choose_spec) h unfold psiPadicFun have hC : (((exists_pPow_approx x).choose : ℂ) / (p : ℂ) ^ ((exists_pPow_approx x).choose_spec.choose)) = (a : ℂ) / (p : ℂ) ^ k + (m : ℂ) := by have hQ := congrArg (Rat.cast (K := ℂ)) hm push_cast at hQ linear_combination hQ rw [hC, mul_add, Complex.exp_add] have hone : Complex.exp (-(2 * Real.pi * Complex.I) * (m : ℂ)) = 1 := by rw [show -(2 * Real.pi * Complex.I) * (m : ℂ) = ((-m : ℤ) : ℂ) * (2 * Real.pi * Complex.I) by push_cast; ring] exact Complex.exp_int_mul_two_pi_mul_I (-m) rw [hone, mul_one] theorem psiPadicFun_zero : psiPadicFun (0 : ℚ_[p]) = 1 := by rw [psiPadicFun_eq (a := 0) (k := 0) (by simp)] simp theorem psiPadicFun_add (x y : ℚ_[p]) : psiPadicFun (x + y) = psiPadicFun x * psiPadicFun y := by have hpC : ((p : ℂ)) ≠ 0 := Nat.cast_ne_zero.mpr (Fact.out : p.Prime).ne_zero have hpQ : ((p : ℚ_[p])) ≠ 0 := Nat.cast_ne_zero.mpr (Fact.out : p.Prime).ne_zero obtain ⟨a, k, ha⟩ := exists_pPow_approx x obtain ⟨b, j, hb⟩ := exists_pPow_approx y have hsum : ‖(x + y) - (((a * p ^ j + b * p ^ k : ℤ) : ℚ_[p]) / (p : ℚ_[p]) ^ (k + j))‖ ≤ 1 := by have heq : (((a * p ^ j + b * p ^ k : ℤ) : ℚ_[p]) / (p : ℚ_[p]) ^ (k + j)) = ((a : ℚ_[p]) / (p : ℚ_[p]) ^ k) + ((b : ℚ_[p]) / (p : ℚ_[p]) ^ j) := by push_cast field_simp ring rw [heq, show (x + y) - (((a : ℚ_[p]) / (p : ℚ_[p]) ^ k) + ((b : ℚ_[p]) / (p : ℚ_[p]) ^ j)) = (x - ((a : ℚ_[p]) / (p : ℚ_[p]) ^ k)) + (y - ((b : ℚ_[p]) / (p : ℚ_[p]) ^ j)) by ring] exact le_trans (Padic.nonarchimedean _ _) (max_le ha hb) rw [psiPadicFun_eq hsum, psiPadicFun_eq ha, psiPadicFun_eq hb, ← Complex.exp_add] congr 1 push_cast field_simp ring def psiPadic : AddChar ℚ_[p] ℂ where toFun := psiPadicFun map_zero_eq_one' := psiPadicFun_zero map_add_eq_mul' := psiPadicFun_add theorem psiPadic_apply (x : ℚ_[p]) : psiPadic x = psiPadicFun x := rfl theorem psiPadic_eq_one_of_norm_le_one {x : ℚ_[p]} (hx : ‖x‖ ≤ 1) : psiPadic x = 1 := by rw [psiPadic_apply, psiPadicFun_eq (a := 0) (k := 0) (by simpa using hx)] simp theorem psiPadicFun_eq_of_norm_sub_le_one {x y : ℚ_[p]} (h : ‖y - x‖ ≤ 1) : psiPadicFun y = psiPadicFun x := by obtain ⟨a, k, ha⟩ := exists_pPow_approx x have hy : ‖y - ((a : ℚ_[p]) / (p : ℚ_[p]) ^ k)‖ ≤ 1 := by rw [show y - ((a : ℚ_[p]) / (p : ℚ_[p]) ^ k) = (y - x) + (x - ((a : ℚ_[p]) / (p : ℚ_[p]) ^ k)) by ring] exact le_trans (Padic.nonarchimedean _ _) (max_le h ha) rw [psiPadicFun_eq hy, psiPadicFun_eq ha] theorem continuous_psiPadic : Continuous (psiPadic (p := p)) := by rw [continuous_iff_continuousAt] intro x have hconst : (fun y : ℚ_[p] => psiPadicFun y) =ᶠ[nhds x] (fun _ => psiPadicFun x) := by filter_upwards [Metric.closedBall_mem_nhds x one_pos] with y hy exact psiPadicFun_eq_of_norm_sub_le_one (by simpa [dist_eq_norm] using hy) exact ContinuousAt.congr continuousAt_const hconst.symm theorem psiPadic_inv_p : psiPadic ((p : ℚ_[p]))⁻¹ = Complex.exp (-(2 * Real.pi * Complex.I) / p) := by have hpQ : ((p : ℚ_[p])) ≠ 0 := Nat.cast_ne_zero.mpr (Fact.out : p.Prime).ne_zero rw [psiPadic_apply, psiPadicFun_eq (a := 1) (k := 1) (by simp [pow_one, one_div])] push_cast ring_nf theorem psiPadic_inv_p_ne_one : psiPadic ((p : ℚ_[p]))⁻¹ ≠ 1 := by rw [psiPadic_inv_p] intro h rw [Complex.exp_eq_one_iff] at h obtain ⟨n, hn⟩ := h have hpC : ((p : ℂ)) ≠ 0 := Nat.cast_ne_zero.mpr (Fact.out : p.Prime).ne_zero field_simp at hn have hZ : (-1 : ℤ) = (p : ℤ) * n := by exact_mod_cast hn have hdvd : (p : ℤ) ∣ 1 := ⟨-n, by linear_combination -hZ⟩ have hp2 : 2 ≤ p := (Fact.out : p.Prime).two_le have hle : (p : ℤ) ≤ 1 := Int.le_of_dvd one_pos hdvd omega section PlaceChar open IsDedekindDomain NumberField Rat.HeightOneSpectrum local instance (q : Nat.Primes) : Fact q.1.Prime := ⟨q.2⟩ variable (v : IsDedekindDomain.HeightOneSpectrum (𝓞 ℚ)) set_option synthInstance.maxHeartbeats 400000 in def psiV : AddChar (v.adicCompletion ℚ) ℂ where toFun x := psiPadic (adicCompletion.padicEquiv v x) map_zero_eq_one' := by rw [map_zero] exact psiPadicFun_zero map_add_eq_mul' a b := by rw [map_add] exact psiPadicFun_add _ _ theorem psiV_apply (x : v.adicCompletion ℚ) : psiV v x = psiPadic (adicCompletion.padicEquiv v x) := rfl theorem continuous_psiV : Continuous (psiV v) := continuous_psiPadic.comp (adicCompletion.padicEquiv v).continuous theorem psiV_eq_one_of_mem_integers {x : v.adicCompletion ℚ} (hx : x ∈ v.adicCompletionIntegers ℚ) : psiV v x = 1 := by rw [psiV_apply] have hco : adicCompletion.padicEquiv v x = ((adicCompletionIntegers.padicIntEquiv v ⟨x, hx⟩ : ℤ_[primesEquiv v]) : ℚ_[primesEquiv v]) := by rw [adicCompletionIntegers.coe_padicIntEquiv_apply] rw [hco] refine psiPadic_eq_one_of_norm_le_one ?_ rw [PadicInt.padic_norm_e_of_padicInt] exact PadicInt.norm_le_one _ theorem psiV_algebraMap_inv_ne_one : psiV v (algebraMap ℚ (v.adicCompletion ℚ) ((natGenerator v : ℚ))⁻¹) ≠ 1 := by rw [psiV_apply] have hcomm : adicCompletion.padicEquiv v (algebraMap ℚ (v.adicCompletion ℚ) ((natGenerator v : ℚ))⁻¹) = algebraMap ℚ (ℚ_[primesEquiv v]) ((natGenerator v : ℚ))⁻¹ := (adicCompletion.padicEquiv v).commutes _ rw [hcomm] have hval : algebraMap ℚ (ℚ_[primesEquiv v]) ((natGenerator v : ℚ))⁻¹ = ((primesEquiv v : ℕ) : ℚ_[primesEquiv v])⁻¹ := by rw [map_inv₀, eq_ratCast (algebraMap ℚ (ℚ_[primesEquiv v])) ((natGenerator v : ℚ)), Rat.cast_natCast] rfl rw [hval] exact psiPadic_inv_p_ne_one end PlaceChar section GlobalInt theorem exists_int_of_forall_norm_le_one (D : ℚ) (h : ∀ (ℓ : ℕ) [Fact ℓ.Prime], ‖(D : ℚ_[ℓ])‖ ≤ 1) : ∃ m : ℤ, D = (m : ℚ) := by refine ⟨D.num, ?_⟩ have hden : D.den = 1 := by rw [Nat.eq_one_iff_not_exists_prime_dvd] intro ℓ hℓ hdvd haveI : Fact ℓ.Prime := ⟨hℓ⟩ have hD0 : D ≠ 0 := by rintro rfl exact hℓ.one_lt.ne' (Nat.dvd_one.mp (by simpa using hdvd)) have hnum : ¬ (ℓ : ℤ) ∣ D.num := by intro hc have hd1 : ℓ ∣ D.num.natAbs := by have := Int.natAbs_dvd_natAbs.mpr hc simpa using this have hgcd : ℓ ∣ 1 := D.reduced ▸ Nat.dvd_gcd hd1 hdvd exact hℓ.one_lt.ne' (Nat.dvd_one.mp hgcd) have hvalInt : padicValInt ℓ D.num = 0 := padicValInt.eq_zero_of_not_dvd hnum have hvalNat : 1 ≤ padicValNat ℓ D.den := one_le_padicValNat_of_dvd D.den_nz hdvd have hvr : padicValRat ℓ D ≤ -1 := by rw [padicValRat_def, hvalInt] omega have hgt : (1 : ℚ) < padicNorm ℓ D := by rw [show padicNorm ℓ D = (ℓ : ℚ) ^ (-padicValRat ℓ D) from by simp [padicNorm, hD0]] refine one_lt_zpow₀ ?_ (by omega) exact_mod_cast hℓ.one_lt have hle : ((padicNorm ℓ D : ℚ) : ℝ) ≤ 1 := by rw [← Padic.eq_padicNorm] exact h ℓ have : ((padicNorm ℓ D : ℚ) : ℝ) > 1 := by exact_mod_cast hgt linarith rw [← Rat.num_div_den D, hden] simp end GlobalInt section FiniteChar open IsDedekindDomain NumberField theorem mulSupport_psiV_finite (x : FiniteAdeleRing (𝓞 ℚ) ℚ) : (Function.mulSupport fun v => psiV v (x v)).Finite := by refine Set.Finite.subset (Filter.eventually_cofinite.mp x.eventually) ?_ intro v hv simp only [Function.mem_mulSupport] at hv by_contra hmem simp only [Set.mem_setOf_eq, not_not] at hmem exact hv (psiV_eq_one_of_mem_integers v hmem) def psiFin : AddChar (FiniteAdeleRing (𝓞 ℚ) ℚ) ℂ where toFun x := ∏ᶠ v, psiV v (x v) map_zero_eq_one' := by have h : ∀ v : IsDedekindDomain.HeightOneSpectrum (𝓞 ℚ), psiV v ((0 : FiniteAdeleRing (𝓞 ℚ) ℚ) v) = (1 : ℂ) := fun v => by rw [show ((0 : FiniteAdeleRing (𝓞 ℚ) ℚ) v) = 0 from rfl] exact AddChar.map_zero_eq_one _ rw [finprod_congr h] exact finprod_one map_add_eq_mul' a b := by have h : ∀ v : IsDedekindDomain.HeightOneSpectrum (𝓞 ℚ), psiV v ((a + b) v) = psiV v (a v) * psiV v (b v) := fun v => by rw [show ((a + b) v) = a v + b v from rfl] exact AddChar.map_add_eq_mul _ _ _ rw [finprod_congr h] exact finprod_mul_distrib (mulSupport_psiV_finite a) (mulSupport_psiV_finite b) theorem psiFin_apply (x : FiniteAdeleRing (𝓞 ℚ) ℚ) : psiFin x = ∏ᶠ v, psiV v (x v) := rfl theorem psiFin_eq_one_of_forall_mem (x : FiniteAdeleRing (𝓞 ℚ) ℚ) (hx : ∀ v, x v ∈ v.adicCompletionIntegers ℚ) : psiFin x = 1 := by rw [psiFin_apply, finprod_congr (fun v => psiV_eq_one_of_mem_integers v (hx v))] exact finprod_one theorem isOpen_forall_mem_integers : IsOpen {y : FiniteAdeleRing (𝓞 ℚ) ℚ | ∀ v, y v ∈ v.adicCompletionIntegers ℚ} := by have h := RestrictedProduct.isOpen_forall_imp_mem (A := fun v : HeightOneSpectrum (𝓞 ℚ) => (v.adicCompletionIntegers ℚ : Set (v.adicCompletion ℚ))) (fun v => Valued.isOpen_valuationSubring _) (p := fun _ => True) simp at h exact h theorem continuous_psiFin : Continuous psiFin := by rw [continuous_iff_continuousAt] intro x have hsub : Continuous fun y : FiniteAdeleRing (𝓞 ℚ) ℚ => y - x := continuous_id.sub continuous_const have hmem : x ∈ (fun y : FiniteAdeleRing (𝓞 ℚ) ℚ => y - x) ⁻¹' {y | ∀ v, y v ∈ v.adicCompletionIntegers ℚ} := by simp only [Set.mem_preimage, sub_self, Set.mem_setOf_eq] intro v rw [show ((0 : FiniteAdeleRing (𝓞 ℚ) ℚ) v) = 0 from rfl] exact zero_mem _ have hnhds : (fun y : FiniteAdeleRing (𝓞 ℚ) ℚ => y - x) ⁻¹' {y | ∀ v, y v ∈ v.adicCompletionIntegers ℚ} ∈ nhds x := (isOpen_forall_mem_integers.preimage hsub).mem_nhds hmem have hconst : (fun y => psiFin y) =ᶠ[nhds x] (fun _ => psiFin x) := by filter_upwards [hnhds] with y hy rw [show y = x + (y - x) by ring, AddChar.map_add_eq_mul, psiFin_eq_one_of_forall_mem _ hy, mul_one] exact ContinuousAt.congr continuousAt_const hconst.symm end FiniteChar section Reciprocity open IsDedekindDomain NumberField Rat.HeightOneSpectrum local instance (q : Nat.Primes) : Fact q.1.Prime := ⟨q.2⟩ theorem norm_pPow_ratCast_le_one {ℓ ℓ' : ℕ} [Fact ℓ.Prime] [Fact ℓ'.Prime] (hne : ℓ ≠ ℓ') (a : ℤ) (k : ℕ) : ‖((((a : ℚ) / (ℓ : ℚ) ^ k : ℚ)) : ℚ_[ℓ'])‖ ≤ 1 := by have hcast : ((((a : ℚ) / (ℓ : ℚ) ^ k : ℚ)) : ℚ_[ℓ']) = (a : ℚ_[ℓ']) / (ℓ : ℚ_[ℓ']) ^ k := by push_cast ring rw [hcast, norm_div, norm_pow] have hone : ‖((ℓ : ℚ_[ℓ']))‖ = 1 := by have hcop : Nat.Coprime ℓ' ℓ := (Nat.coprime_primes (Fact.out : ℓ'.Prime) (Fact.out : ℓ.Prime)).mpr (Ne.symm hne) have h1 : ‖((ℓ : ℤ_[ℓ']))‖ = 1 := PadicInt.norm_natCast_eq_one_iff.mpr hcop calc ‖((ℓ : ℚ_[ℓ']))‖ = ‖(((ℓ : ℤ_[ℓ']) : ℚ_[ℓ']))‖ := by norm_cast _ = ‖((ℓ : ℤ_[ℓ']))‖ := PadicInt.padic_norm_e_of_padicInt _ _ = 1 := h1 rw [hone, one_pow, div_one] exact IsUltrametricDist.norm_intCast_le_one ℚ_[ℓ'] a set_option maxHeartbeats 800000 in theorem psiFin_algebraMap (q : ℚ) : psiFin (algebraMap ℚ (FiniteAdeleRing (𝓞 ℚ) ℚ) q) = Complex.exp (-(2 * Real.pi * Complex.I) * (q : ℂ)) := by classical have hstep1 : psiFin (algebraMap ℚ (FiniteAdeleRing (𝓞 ℚ) ℚ) q) = ∏ᶠ ℓ : Nat.Primes, psiPadic ((q : ℚ_[ℓ.1])) := by rw [psiFin_apply] have hcong : ∀ v : IsDedekindDomain.HeightOneSpectrum (𝓞 ℚ), psiV v ((algebraMap ℚ (FiniteAdeleRing (𝓞 ℚ) ℚ) q) v) = psiPadic ((q : ℚ_[(primesEquiv v).1])) := by intro v have hdiag : ((algebraMap ℚ (FiniteAdeleRing (𝓞 ℚ) ℚ) q) v) = algebraMap ℚ (v.adicCompletion ℚ) q := by rw [FiniteAdeleRing.algebraMap_apply] rfl have hcomm : (adicCompletion.padicEquiv v) (algebraMap ℚ (v.adicCompletion ℚ) q) = algebraMap ℚ (ℚ_[primesEquiv v]) q := (adicCompletion.padicEquiv v).commutes q rw [hdiag, psiV_apply, hcomm, eq_ratCast] rw [finprod_congr hcong] exact finprod_comp_equiv primesEquiv (f := fun ℓ : Nat.Primes => psiPadic ((q : ℚ_[ℓ.1]))) rw [hstep1] set F : Nat.Primes → ℂ := fun ℓ => psiPadic ((q : ℚ_[ℓ.1])) with hF set S : Finset Nat.Primes := q.den.primeFactors.subtype Nat.Prime with hS have hSmem : ∀ ℓ' : ℕ, ∀ h : ℓ'.Prime, ((⟨ℓ', h⟩ : Nat.Primes) ∈ S ↔ ℓ' ∣ q.den) := by intro ℓ' h exact (Finset.mem_subtype).trans ⟨fun hm => (Nat.mem_primeFactors.mp hm).2.1, fun hd => Nat.mem_primeFactors.mpr ⟨h, hd, q.den_nz⟩⟩ have hsupp : Function.mulSupport F ⊆ ↑S := by intro ℓ hℓ simp only [Function.mem_mulSupport, hF] at hℓ by_contra hmem apply hℓ apply psiPadic_eq_one_of_norm_le_one apply Padic.norm_rat_le_one intro hdvd exact hmem (by obtain ⟨ℓ1, h1⟩ := ℓ exact Finset.mem_coe.mpr ((hSmem ℓ1 h1).mpr hdvd)) obtain ⟨c, hc_val, hc_near, hc_far⟩ : ∃ c : Nat.Primes → ℚ, (∀ ℓ : Nat.Primes, F ℓ = Complex.exp (-(2 * Real.pi * Complex.I) * ((c ℓ : ℚ) : ℂ))) ∧ (∀ ℓ : Nat.Primes, ‖((q : ℚ_[ℓ.1])) - (((c ℓ : ℚ)) : ℚ_[ℓ.1])‖ ≤ 1) ∧ (∀ (ℓ : Nat.Primes) (ℓ' : ℕ) [Fact ℓ'.Prime], ℓ.1 ≠ ℓ' → ‖(((c ℓ : ℚ)) : ℚ_[ℓ'])‖ ≤ 1) := by refine ⟨fun ℓ => ((exists_pPow_approx ((q : ℚ_[ℓ.1]))).choose : ℚ) / (ℓ.1 : ℚ) ^ ((exists_pPow_approx ((q : ℚ_[ℓ.1]))).choose_spec.choose), ?_, ?_, ?_⟩ · intro ℓ show psiPadicFun ((q : ℚ_[ℓ.1])) = _ rw [psiPadicFun_eq ((exists_pPow_approx ((q : ℚ_[ℓ.1]))).choose_spec.choose_spec)] congr 1 push_cast ring · intro ℓ have h := (exists_pPow_approx ((q : ℚ_[ℓ.1]))).choose_spec.choose_spec have hcast : ((((exists_pPow_approx ((q : ℚ_[ℓ.1]))).choose : ℚ) / (ℓ.1 : ℚ) ^ ((exists_pPow_approx ((q : ℚ_[ℓ.1]))).choose_spec.choose) : ℚ) : ℚ_[ℓ.1]) = ((exists_pPow_approx ((q : ℚ_[ℓ.1]))).choose : ℚ_[ℓ.1]) / (ℓ.1 : ℚ_[ℓ.1]) ^ ((exists_pPow_approx ((q : ℚ_[ℓ.1]))).choose_spec.choose) := by push_cast ring rw [hcast] exact h · intro ℓ ℓ' hinst hne exact norm_pPow_ratCast_le_one hne _ _ calc ∏ᶠ ℓ : Nat.Primes, F ℓ = ∏ ℓ ∈ S, F ℓ := finprod_eq_prod_of_mulSupport_subset F hsupp _ = ∏ ℓ ∈ S, Complex.exp (-(2 * Real.pi * Complex.I) * ((c ℓ : ℚ) : ℂ)) := Finset.prod_congr rfl (fun ℓ _ => hc_val ℓ) _ = Complex.exp (∑ ℓ ∈ S, -(2 * Real.pi * Complex.I) * ((c ℓ : ℚ) : ℂ)) := (Complex.exp_sum S _).symm _ = Complex.exp (-(2 * Real.pi * Complex.I) * (((∑ ℓ ∈ S, c ℓ : ℚ)) : ℂ)) := by rw [← Finset.mul_sum] congr 2 push_cast rfl _ = Complex.exp (-(2 * Real.pi * Complex.I) * (q : ℂ)) := by have hnorm : ∀ (ℓ' : ℕ) [Fact ℓ'.Prime], ‖((q - ∑ ℓ ∈ S, c ℓ : ℚ) : ℚ_[ℓ'])‖ ≤ 1 := by intro ℓ' hinst have hcast : ((q - ∑ ℓ ∈ S, c ℓ : ℚ) : ℚ_[ℓ']) = ((q : ℚ_[ℓ'])) - ∑ ℓ ∈ S, (((c ℓ : ℚ)) : ℚ_[ℓ']) := by push_cast ring rw [hcast] have hsumbound : ∀ (T : Finset Nat.Primes), (∀ i ∈ T, (i : Nat.Primes).1 ≠ ℓ') → ‖∑ ℓ ∈ T, (((c ℓ : ℚ)) : ℚ_[ℓ'])‖ ≤ 1 := by intro T hT rcases Finset.eq_empty_or_nonempty T with he | hne · simp [he] · obtain ⟨i, hi, hle⟩ := IsUltrametricDist.exists_norm_finsetSum_le_of_nonempty hne (fun ℓ => (((c ℓ : ℚ)) : ℚ_[ℓ'])) exact le_trans hle (hc_far i ℓ' (hT i hi)) by_cases hmem : (⟨ℓ', (Fact.out : ℓ'.Prime)⟩ : Nat.Primes) ∈ S · rw [← Finset.add_sum_erase S (fun ℓ => (((c ℓ : ℚ)) : ℚ_[ℓ'])) hmem] rw [show ((q : ℚ_[ℓ'])) - ((((c ⟨ℓ', (Fact.out : ℓ'.Prime)⟩ : ℚ)) : ℚ_[ℓ']) + ∑ ℓ ∈ S.erase ⟨ℓ', (Fact.out : ℓ'.Prime)⟩, (((c ℓ : ℚ)) : ℚ_[ℓ'])) = (((q : ℚ_[ℓ'])) - (((c ⟨ℓ', (Fact.out : ℓ'.Prime)⟩ : ℚ)) : ℚ_[ℓ'])) + -(∑ ℓ ∈ S.erase ⟨ℓ', (Fact.out : ℓ'.Prime)⟩, (((c ℓ : ℚ)) : ℚ_[ℓ'])) by ring] refine le_trans (Padic.nonarchimedean _ _) (max_le ?_ ?_) · exact hc_near ⟨ℓ', (Fact.out : ℓ'.Prime)⟩ · rw [norm_neg] refine hsumbound _ ?_ intro i hi hcontra exact (Finset.mem_erase.mp hi).1 (Subtype.ext hcontra) · rw [sub_eq_add_neg] refine le_trans (Padic.nonarchimedean _ _) (max_le ?_ ?_) · apply Padic.norm_rat_le_one intro hdvd exact hmem ((hSmem ℓ' (Fact.out : ℓ'.Prime)).mpr hdvd) · rw [norm_neg] refine hsumbound _ ?_ intro i hi hcontra have hieq : i = (⟨ℓ', (Fact.out : ℓ'.Prime)⟩ : Nat.Primes) := Subtype.ext hcontra exact hmem (hieq ▸ hi) obtain ⟨m, hm⟩ := exists_int_of_forall_norm_le_one (q - ∑ ℓ ∈ S, c ℓ) hnorm have hsumQ : (∑ ℓ ∈ S, c ℓ : ℚ) = q - (m : ℚ) := by linarith [hm] have hsum : (((∑ ℓ ∈ S, c ℓ : ℚ)) : ℂ) = (q : ℂ) - (m : ℂ) := by rw [hsumQ] push_cast ring rw [hsum, mul_sub, Complex.exp_sub] rw [show -(2 * Real.pi * Complex.I) * (m : ℂ) = ((-m : ℤ) : ℂ) * (2 * Real.pi * Complex.I) by push_cast; ring] rw [Complex.exp_int_mul_two_pi_mul_I] rw [div_one] end Reciprocity section ArchChar open NumberField def psiArchPlace (v : InfinitePlace ℚ) : AddChar v.Completion ℂ where toFun x := Complex.exp ((2 * Real.pi * Complex.I) * ((InfinitePlace.Completion.extensionEmbeddingOfIsReal (IsTotallyReal.isReal v) x : ℝ) : ℂ)) map_zero_eq_one' := by rw [map_zero] push_cast rw [mul_zero, Complex.exp_zero] map_add_eq_mul' a b := by rw [map_add] push_cast rw [mul_add, Complex.exp_add] theorem psiArchPlace_apply (v : InfinitePlace ℚ) (x : v.Completion) : psiArchPlace v x = Complex.exp ((2 * Real.pi * Complex.I) * ((InfinitePlace.Completion.extensionEmbeddingOfIsReal (IsTotallyReal.isReal v) x : ℝ) : ℂ)) := rfl def psiArch : AddChar (InfiniteAdeleRing ℚ) ℂ where toFun x := ∏ᶠ v, psiArchPlace v (x v) map_zero_eq_one' := by have h : ∀ v : InfinitePlace ℚ, psiArchPlace v ((0 : InfiniteAdeleRing ℚ) v) = 1 := fun v => by rw [show ((0 : InfiniteAdeleRing ℚ) v) = 0 from rfl] exact AddChar.map_zero_eq_one _ rw [finprod_congr h] exact finprod_one map_add_eq_mul' a b := by have h : ∀ v : InfinitePlace ℚ, psiArchPlace v ((a + b) v) = psiArchPlace v (a v) * psiArchPlace v (b v) := fun v => by rw [show ((a + b) v) = a v + b v from rfl] exact AddChar.map_add_eq_mul _ _ _ rw [finprod_congr h] exact finprod_mul_distrib (Set.toFinite _) (Set.toFinite _) theorem psiArch_apply (x : InfiniteAdeleRing ℚ) : psiArch x = ∏ᶠ v, psiArchPlace v (x v) := rfl theorem continuous_psiArch : Continuous psiArch := by show Continuous fun x : InfiniteAdeleRing ℚ => ∏ᶠ v, psiArchPlace v (x v) have heq : (fun x : InfiniteAdeleRing ℚ => ∏ᶠ v, psiArchPlace v (x v)) = fun x => ∏ v : InfinitePlace ℚ, psiArchPlace v (x v) := by funext x exact finprod_eq_prod_of_fintype _ rw [heq] refine continuous_finsetProd _ (fun v _ => ?_) have hemb : Continuous (InfinitePlace.Completion.extensionEmbeddingOfIsReal (IsTotallyReal.isReal v)) := (InfinitePlace.Completion.isometry_extensionEmbeddingOfIsReal _).continuous exact Complex.continuous_exp.comp (continuous_const.mul (Complex.continuous_ofReal.comp (hemb.comp (continuous_apply v)))) theorem psiArch_algebraMap (q : ℚ) : psiArch (algebraMap ℚ (InfiniteAdeleRing ℚ) q) = Complex.exp ((2 * Real.pi * Complex.I) * (q : ℂ)) := by have h1 : psiArch (algebraMap ℚ (InfiniteAdeleRing ℚ) q) = psiArchPlace default ((algebraMap ℚ (InfiniteAdeleRing ℚ) q) default) := by rw [psiArch_apply] exact finprod_unique _ have h2 : ((algebraMap ℚ (InfiniteAdeleRing ℚ) q) default) = algebraMap ℚ ((default : InfinitePlace ℚ).Completion) q := rfl rw [h1, h2, psiArchPlace_apply] have h3 : InfinitePlace.Completion.extensionEmbeddingOfIsReal (IsTotallyReal.isReal (default : InfinitePlace ℚ)) (algebraMap ℚ ((default : InfinitePlace ℚ).Completion) q) = (q : ℝ) := by simp rw [h3] push_cast ring_nf end ArchChar section FullChar open IsDedekindDomain NumberField Rat.HeightOneSpectrum local instance (q : Nat.Primes) : Fact q.1.Prime := ⟨q.2⟩ def psiQ : AddChar (AdeleRing (𝓞 ℚ) ℚ) ℂ where toFun x := psiArch x.1 * psiFin x.2 map_zero_eq_one' := by rw [show ((0 : AdeleRing (𝓞 ℚ) ℚ).1) = 0 from rfl, show ((0 : AdeleRing (𝓞 ℚ) ℚ).2) = 0 from rfl, AddChar.map_zero_eq_one, AddChar.map_zero_eq_one, mul_one] map_add_eq_mul' a b := by rw [show ((a + b).1) = a.1 + b.1 from rfl, show ((a + b).2) = a.2 + b.2 from rfl, AddChar.map_add_eq_mul, AddChar.map_add_eq_mul] ring theorem psiQ_apply (x : AdeleRing (𝓞 ℚ) ℚ) : psiQ x = psiArch x.1 * psiFin x.2 := rfl theorem continuous_psiQ : Continuous psiQ := by show Continuous fun x : AdeleRing (𝓞 ℚ) ℚ => psiArch x.1 * psiFin x.2 exact (continuous_psiArch.comp continuous_fst).mul (continuous_psiFin.comp continuous_snd) theorem psiQ_algebraMap (q : ℚ) : psiQ (algebraMap ℚ (AdeleRing (𝓞 ℚ) ℚ) q) = 1 := by have h1 : ((algebraMap ℚ (AdeleRing (𝓞 ℚ) ℚ) q).1) = algebraMap ℚ (InfiniteAdeleRing ℚ) q := rfl have h2 : ((algebraMap ℚ (AdeleRing (𝓞 ℚ) ℚ) q).2) = algebraMap ℚ (FiniteAdeleRing (𝓞 ℚ) ℚ) q := rfl rw [psiQ_apply, h1, h2, psiArch_algebraMap, psiFin_algebraMap, ← Complex.exp_add] rw [show (2 * Real.pi * Complex.I) * (q : ℂ) + -(2 * Real.pi * Complex.I) * (q : ℂ) = 0 by ring] exact Complex.exp_zero theorem psiQ_ne_one : psiQ ≠ 1 := by intro hcontra have h := congrArg (fun ψ : AddChar (AdeleRing (𝓞 ℚ) ℚ) ℂ => ψ ((algebraMap ℚ (InfiniteAdeleRing ℚ) ((1 : ℚ)/2), 0))) hcontra simp only [AddChar.one_apply] at h rw [psiQ_apply] at h rw [show ((algebraMap ℚ (InfiniteAdeleRing ℚ) ((1 : ℚ)/2), (0 : FiniteAdeleRing (𝓞 ℚ) ℚ)) : AdeleRing (𝓞 ℚ) ℚ).1 = algebraMap ℚ (InfiniteAdeleRing ℚ) ((1 : ℚ)/2) from rfl] at h rw [show ((algebraMap ℚ (InfiniteAdeleRing ℚ) ((1 : ℚ)/2), (0 : FiniteAdeleRing (𝓞 ℚ) ℚ)) : AdeleRing (𝓞 ℚ) ℚ).2 = (0 : FiniteAdeleRing (𝓞 ℚ) ℚ) from rfl] at h rw [psiArch_algebraMap, AddChar.map_zero_eq_one, mul_one] at h rw [show (2 * Real.pi * Complex.I) * (((1 : ℚ)/2 : ℚ) : ℂ) = Real.pi * Complex.I by push_cast; ring] at h rw [Complex.exp_pi_mul_I] at h norm_num at h open Classical in def singlePlaceAdele (v : IsDedekindDomain.HeightOneSpectrum (𝓞 ℚ)) (r : ℚ) : FiniteAdeleRing (𝓞 ℚ) ℚ := ⟨fun w => if w = v then algebraMap ℚ (w.adicCompletion ℚ) r else 0, by rw [Filter.eventually_cofinite] refine Set.Finite.subset (Set.finite_singleton v) ?_ intro w hw simp only [Set.mem_setOf_eq] at hw by_contra hne simp only [Set.mem_singleton_iff] at hne apply hw rw [if_neg hne] exact zero_mem _⟩ open Classical in theorem singlePlaceAdele_apply (v : IsDedekindDomain.HeightOneSpectrum (𝓞 ℚ)) (r : ℚ) (w : IsDedekindDomain.HeightOneSpectrum (𝓞 ℚ)) : (singlePlaceAdele v r) w = if w = v then algebraMap ℚ (w.adicCompletion ℚ) r else 0 := rfl open Classical in theorem psiFin_singlePlaceAdele (v : IsDedekindDomain.HeightOneSpectrum (𝓞 ℚ)) (r : ℚ) : psiFin (singlePlaceAdele v r) = psiV v (algebraMap ℚ (v.adicCompletion ℚ) r) := by rw [psiFin_apply] have hsingle := finprod_eq_single (fun w => psiV w ((singlePlaceAdele v r) w)) v (fun w hw => by show psiV w ((singlePlaceAdele v r) w) = 1 rw [singlePlaceAdele_apply, if_neg hw] exact AddChar.map_zero_eq_one _) rw [hsingle] show psiV v ((singlePlaceAdele v r) v) = _ rw [singlePlaceAdele_apply, if_pos rfl] theorem psiQ_singlePlaceAdele_ne_one (v : IsDedekindDomain.HeightOneSpectrum (𝓞 ℚ)) : psiQ ((0 : InfiniteAdeleRing ℚ), singlePlaceAdele v ((natGenerator v : ℚ))⁻¹) ≠ 1 := by rw [psiQ_apply] rw [show (((0 : InfiniteAdeleRing ℚ), singlePlaceAdele v ((natGenerator v : ℚ))⁻¹) : AdeleRing (𝓞 ℚ) ℚ).1 = (0 : InfiniteAdeleRing ℚ) from rfl] rw [show (((0 : InfiniteAdeleRing ℚ), singlePlaceAdele v ((natGenerator v : ℚ))⁻¹) : AdeleRing (𝓞 ℚ) ℚ).2 = singlePlaceAdele v ((natGenerator v : ℚ))⁻¹ from rfl] rw [AddChar.map_zero_eq_one, one_mul, psiFin_singlePlaceAdele] exact psiV_algebraMap_inv_ne_one v end FullChar section InstanceLine open AutomorphicForm theorem isGlobalAddChar_psiQ : IsGlobalAddChar ℚ psiQ where principalInvariant := psiQ_algebraMap continuous := continuous_psiQ nontrivial := psiQ_ne_one end InstanceLine end NumberField.StandardAddChar end
Statements phrased using this module (377)
- Niceness of the pinned Rankin–Selberg datum of a cubic twist
LanglandsTunnell.RankinSelberg.isNicePinned_rsDatum_of_centralInduced_of_localWhittaker_of_not_exists_eq_pow_inertiaDeg_of_normPin_archTrivial2,488 below · depth 16 - Archimedean parameters and Whittaker factorisation of a cusp realisation over ℚ
LanglandsTunnell.exists_realArchParam_whittaker_factorization_apply_one_ne_zero_localSpaceAt_of_continuous_realization450 below · depth 16 - Local Whittaker space at p: irreducible, admissible, smooth
AutomorphicForm.CuspidalConstituent.IsCuspConstituent.localSpaceAt_cyclic_finite_fixed_smooth_of_hasMultiplicityOneAt182 below · depth 17 - Entire pair for the cubic Rankin–Selberg datum
LanglandsTunnell.RankinSelberg.exists_entire_boundedOnStrips_eq_archFactor_mul_lFun_rsDatum_of_le_conductorExponentAt_of_centralInduced_of_localSpaceAt_of_normPin_archTrivial2,487 below · depth 17 - Well-formedness, convergence and positive conductor for a twisted Rankin–Selberg datum
LanglandsTunnell.RankinSelberg.wellFormed_and_converges_rsDatum_and_finiteConductor_pos_of_le_conductorExponentAt_of_not_exists_eq_pow_inertiaDeg30 below · depth 17 - Minimal-weight Casimir eigenvector inside one cuspidal constituent
LanglandsTunnell.exists_archCasimir_eigenvector_minimalWeight_mem_isCuspConstituent_whittaker_diagOne_ne_zero_of_continuous_realization408 below · depth 17 - Weight family and Whittaker factorisation with C(1,1)≠ 0
LanglandsTunnell.exists_whittaker_factorization_apply_one_ne_zero_localSpaceAt_of_archCasimir_eigenvector_minimalWeight373 below · depth 17 - Whittaker factorisation at an odd principal archimedean parameter over ℚ
LanglandsTunnell.exists_whittaker_factorization_apply_one_ne_zero_localSpaceAt_of_archCasimir_eigenvector_weightOne_of_ne370 below · depth 17 - Vanishing at 1 forces membership in the twisted unipotent span
AutomorphicForm.LocalFunctionSpace.mem_span_sub_of_apply_one_eq_zero_of_irreducible_of_admissible7 below · depth 18 - Non-vanishing of the first Whittaker coefficient over ℚ
AutomorphicForm.whittakerCoefficient_one_ne_zero_of_isIsotypicCuspFormAt_of_ne_zero10 below · depth 18 - Local functional equation at one deeply twisted prime
LanglandsTunnell.CubicInduction.exists_forall_mem_gl3CyclicSubspace_localZeta31_fe_one_of_cubicInductionForm_twist_deepAt593 below · depth 18 - Local constants of twisted cubic induction on the cyclic span
LanglandsTunnell.CubicInduction.exists_forall_mem_gl3CyclicSubspace_localZetaDual31_eq_mul_of_cubicInductionForm_twisted_badPlaces_noFE32_adm598 below · depth 18 - Explicit K₁(p^{3B+Δ})-invariant bump vector for twisted cubic induction
LanglandsTunnell.CubicInduction.exists_mem_gl3CyclicSubspace_twist_whittakerLoc_congruenceK1_invariant_iotaGL_bump_of_conductor_le_ed3111 below · depth 18 - Finiteness of torus coefficients in the twisted local cyclic space
LanglandsTunnell.CubicInduction.forall_mem_gl3CyclicSubspace_torusFinite_of_cubicInductionForm_twisted_noFE32_level19 below · depth 18 - Cubic automorphic induction: existence of a cubic induction form
LanglandsTunnell.CubicInduction.hasCubicInductionForm_arch_torusValues_localPackage_bad1,687 below · depth 18 - Dual-side family identity in the GL₂timesGL₃ entire-pair assembly
LanglandsTunnell.RankinSelberg.EntirePairAssembly.dual_identity_family24 below · depth 18 - Archimedean holomorphy and non-vanishing from a torus Γ-factor identity
LanglandsTunnell.RankinSelberg.differentiableOn_and_rsArchIntegral_ne_zero_of_torusPair_eq_gammaFactor5 below · depth 18 - Local relations at p for the dual translate of W_f
LanglandsTunnell.RankinSelberg.dualTranslate_finWhittaker_local_relations3 below · depth 18 - Half-plane integrability of archimedean GL₂timesGL₃ Rankin–Selberg integrands
LanglandsTunnell.RankinSelberg.exists_forall_integrable_archWhittaker_torusPair_rpow_det7 below · depth 18 - Rankin–Selberg integral as archimedean times finite integral times partial L-function
LanglandsTunnell.RankinSelberg.exists_forall_rsGlobalIntegral_eq_mul_rsArchIntegral_mul_rsFinIntegral_mul_lFun24 below · depth 18 - Finite GL₃-translate family: constant integral and dual root number
LanglandsTunnell.RankinSelberg.exists_gl3Translates_sum_rsFinIntegral_cells_eq_const_and_dual_eq_rootNumberMonomial_of_finWhittaker_one_ne_zero_of_localSpaceAt_of_member_of_fe32_normPin_twisted_offSQ_archPsi_bump_levelShift_global982 below · depth 18 - Whittaker non-vanishing on the torus, with J-rigidity transfer
LanglandsTunnell.exists_mem_isCuspConstituent_isIsotypicCuspFormAt_whittakerCoefficient_diagOne_ne_zero_J_rigid_of_hasArchCharacterAt224 below · depth 18 - Pure-tensor factorisation of a Whittaker function over ℚ
LanglandsTunnell.exists_whittakerCoefficient_eq_archWhittaker_mul_finWhittaker_of_isIsotypicCuspFormAt3 below · depth 18 - Local Whittaker relations at a good place over ℚ
LanglandsTunnell.finWhittaker_unipotent_levelOne_hecke_centre_of_isIsotypicCuspFormAt1 below · depth 18 - Every vector of a cuspidal constituent lies in an archimedean cut
AutomorphicForm.CuspidalConstituent.exists_archTypeFamily_mem_archCutSubmodule_of_mem_isCuspConstituent0 below · depth 19 - Factorizable test function reproducing a cuspidal vector
AutomorphicForm.CuspidalConstituent.exists_isFactorizableTestFn_rightConv_eq_self_of_mem_inf_levelInvariantSubmodule_inf_archCutSubmodule165 below · depth 19 - Finite-adelic translates preserve a cuspidal constituent and its archimedean data
AutomorphicForm.CuspidalConstituent.sum_mul_apply_mul_mem_and_arch_transfer_of_mem_isCuspConstituent_of_mem_finiteAdelicGL2Subgroup0 below · depth 19 - Vanishing of a Whittaker function with trivial Kirillov image
AutomorphicForm.LocalFunctionSpace.eq_zero_of_forall_diagonal_mul_mem_span_sub2 below · depth 19 - Cutting off a GL₂ function by a ball indicator modulo twisted defects
AutomorphicForm.LocalFunctionSpace.exists_mem_forall_diagonal_mul_sub_mem_span_and_mem_span0 below · depth 19 - Admissible unitary untwist of a cuspidal central character
AutomorphicForm.SmoothCuspRealizationAt.exists_isAdmissibleTwist_eq_centralChar_mul_ideleNorm_inv11 below · depth 19 - Kirillov-model majorant for Whittaker functions on the torus
AutomorphicForm.WhittakerModel.exists_norm_diagOne_mul_le_of_irreducible_admissible2 below · depth 19 - Local Whittaker vectors at p inherit the central character
AutomorphicForm.WhittakerModel.forall_mem_localSpaceAt_scalar_mul_eq_localChar_mul0 below · depth 19 - Simultaneous splitting of the finite Whittaker factor over T
AutomorphicForm.exists_finWhittaker_eq_sum_prod_mul_of_isIsotypicCuspFormAt_placeEmbed_invariant_of_localSpaceAt14 below · depth 19 - Nonvanishing Whittaker coefficient at a diagonal point over ℚ
AutomorphicForm.exists_whittakerCoefficient_one_diagOne_ne_zero_of_glFin_eq_one_rat2 below · depth 19 - Archimedean root sizes of a GL₂ block image and its dual
LanglandsTunnell.CubicInduction.archRoot_iota_archRealGLAt_and_dual0 below · depth 19 - Local GL₃timesGL₁ constants of a cubic induction at one bad place
LanglandsTunnell.CubicInduction.exists_forall_mem_gl3CyclicSubspace_localZetaDual31_eq_mul_of_isCubicInductionDataOn_deepAt539 below · depth 19 - Span-wide local constants for deep cubic induction data
LanglandsTunnell.CubicInduction.exists_forall_mem_gl3CyclicSubspace_localZetaDual31_eq_mul_of_isCubicInductionDataOn_deep_badPlaces550 below · depth 19 - Existence of a cubic-induction datum: archimedean and bad-place package
LanglandsTunnell.CubicInduction.exists_isCubicInductionDataOn_arch_torusValues_localPackage_bad1,686 below · depth 19 - Archimedean zeta package for an explicit GL₃ Whittaker vector
LanglandsTunnell.CubicInduction.jacquetVector3_archZeta_package32 below · depth 19 - Half-plane integrability of pure-tensor Rankin–Selberg cell integrands
LanglandsTunnell.RankinSelberg.exists_forall_integrable_rsFinCellIntegrand_pureTensorTerm_dual_and_hybrid_of_depth_twisted_torusFinite_central_growth_of_principalLevel_of_gammaHyp136 below · depth 19 - Integrability of the twisted Rankin–Selberg finite-cell integrands
LanglandsTunnell.RankinSelberg.exists_forall_integrable_rsFinCellIntegrand_translate_and_dual_twisted116 below · depth 19 - Half-plane integrability of an archimedean torus profile
LanglandsTunnell.RankinSelberg.exists_forall_lintegral_norm_torusProfile_mul_rpow_lt_top0 below · depth 19 - Normalised K₁(p^ℓ)-invariant vector with mirabolic bump support
LanglandsTunnell.RankinSelberg.exists_mem_gl3CyclicSubspace_congruenceK1_invariant_iotaGL_eq_bump_of_localZeta31_fe_one107 below · depth 19 - Rational local γ at a level prime, archimedean nonvanishing edition
LanglandsTunnell.RankinSelberg.exists_rational_gamma_rsLocalIntegral_member_twisted_of_finiteFamily_arch_deep_archPsi489 below · depth 19 - Torus finiteness for the cyclic space of a deep twist
LanglandsTunnell.RankinSelberg.forall_mem_gl3CyclicSubspace_twist_det_torusFinite_of_principalLevel_of_admissible_of_deepTwist12 below · depth 19 - Value form of the local GL₂timesGL₃ functional equation at p
LanglandsTunnell.RankinSelberg.forall_mem_span_rsLocalIntegral_dual_eq_stdRootNumber_mul_of_localZeta31_identified_of_torusFinite_of_centralChar_of_gauge_of_admissible_of_principalNormPin_adm_gamma_bump_levelShift_global514 below · depth 19 - Determinant twists cancel in the local GL₃× GL₂ Rankin–Selberg data
LanglandsTunnell.RankinSelberg.gl3CyclicSubspace_detTwist_and_rsIntegrand_detTwist_eq0 below · depth 19 - Modulus of a real Whittaker function on torus times O(2)
LanglandsTunnell.RankinSelberg.norm_archWhittaker_upperUnit_mul_rowIsometry0 below · depth 19 - General-pins Whittaker link from a Casimir-eigen minimal-weight datum
LanglandsTunnell.exists_agreesAwayFromFinite_isArithGenuineCuspRealizable_twist_whittaker_link_localSpaceAt_of_whittakerCoefficient_fibre_eq_archW_of_isCasimirEigen550 below · depth 19 - Pinned niceness of twisted base-change L-data over cubic fields
LanglandsTunnell.exists_isNicePinned_twistedDatum_formalBaseChange_archOfParam_superset_generic_of_whittaker_factorization_of_norm_eq_one_of_summable_of_localSpaceAt2,507 below · depth 19 - Vanishing of unipotent-invariant local Whittaker functions
AutomorphicForm.LocalFunctionSpace.eq_zero_of_forall_mul_unipotent_eq0 below · depth 20 - Deep-twist product law for priced local root numbers above p
LanglandsTunnell.Converse.finprod_stdRootNumberAt_twist_mul_twist_eq_sq_of_le_floor22 below · depth 20 - Pinned conductor exponent unchanged by a shallow norm twist
LanglandsTunnell.Converse.pinnedExp_comp_idelicNorm_mul_eq_pinnedExp_of_hasConductorExponentAt_le_of_depth_floor3 below · depth 20 - Archimedean functional equation for the induced GL₃ zeta integrals
LanglandsTunnell.CubicInduction.archZetaDual31_jacquetVector3_mul_archFactor_eq12 below · depth 20 - 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 - Conductor bound for the local central character at unramified v
LanglandsTunnell.CubicInduction.exists_hasConductorExponentAt_localChar_centralChar_le_inducedLevelAt_of_isCubicInductionDataOn278 below · depth 20 - Odd admissible twist with non-vanishing archimedean GL₃ × GL₁ zeta
LanglandsTunnell.CubicInduction.exists_isAdmissibleTwist_archZeta30_ne_zero_odd_of_isCubicInductionDataOn6 below · depth 20 - Archimedean zeta non-vanishing far right for a suitable translate
LanglandsTunnell.CubicInduction.exists_isAdmissibleTwist_archZeta30_ne_zero_of_isCubicInductionDataOn1 below · depth 20 - Local newvector of level K₁(ℓᵥ) at twist-ramified primes
LanglandsTunnell.CubicInduction.exists_mem_gl3CyclicSubspace_congruenceK1_torusValues_of_isCubicInductionDataOn615 below · depth 20 - Congruence-invariant vector in the local cyclic space at a ramified bad place
LanglandsTunnell.CubicInduction.exists_mem_gl3CyclicSubspace_principalLevel_le_of_isRamifiedIn_of_isCubicInductionDataOn_of_conductorBound615 below · depth 20 - A twist-independent constant in the deep-place GL₃× GL₁ functional equation
LanglandsTunnell.CubicInduction.exists_ne_zero_forall_eval_mul_eq_mul_rootNumber_mul_eval_of_forall_localZeta31_fe_twist_of_isCubicInductionDataOn_of_deep_of_archPackage_of_inv_eq_psiQ_of_whittakerLoc_one502 below · depth 20 - Converse-theorem input for the cubic induction from an archimedean Whittaker vector
LanglandsTunnell.CubicInduction.exists_whittaker_zeta_fe_of_forall_not_mem_isInducedSphericalAt_of_arch145 below · depth 20 - Product formula (prodᵥλᵥ²) λ_∞²=1 for a cubic induction
LanglandsTunnell.CubicInduction.finprod_sq_mul_lamSqArch_eq_one_of_forall_ne_zero_localZeta31_fe_rootNumber_of_isCubicInductionDataOn_of_archPackage_of_inv_eq_psiQ538 below · depth 20 - Whittaker law for the GL₃ Jacquet vector
LanglandsTunnell.CubicInduction.isGL3PsiWhittakerFn_jacquetVector30 below · depth 20 - Identified local functional equation passes to the cyclic span
LanglandsTunnell.CubicInduction.localZeta31_identified_of_mem_gl3CyclicSubspace1 below · depth 20 - S-part integrability of the GL₃ zeta and dual integrands
LanglandsTunnell.CubicInduction.sPart_integrable_and_dual_of_isCubicInductionDataOn_of_isGaugeMajorised353 below · depth 20 - Central character law for the archimedean Whittaker function
LanglandsTunnell.CubicInduction.whittakerArch_scalar_mul_eq_centralChar_mul_of_isCubicInductionDataOn0 below · depth 20 - Global realisation of local Rankin–Selberg pairs at p
LanglandsTunnell.RankinSelberg.exists_factor_fundamentalDomain_forall_rsGlobalIntegral_realisation_member_twisted_of_finiteFamily_arch_of_archNonvanishing467 below · depth 20 - Cut-off remainder integrands of the dual finite cell are integrable
LanglandsTunnell.RankinSelberg.exists_forall_integrable_cutoff_remainder_mul_finprod_away113 below · depth 20 - Half-plane integrability of primal and dual finite cell integrands
LanglandsTunnell.RankinSelberg.exists_forall_integrable_rsFinCellIntegrand_translate_and_dual104 below · depth 20 - Local GL₃× GL₂ gamma factor from a global realisation
LanglandsTunnell.RankinSelberg.exists_forall_mem_span_rsLocalIntegral_dual_mul_eq_mul_of_rsGlobalIntegral_realisation6 below · depth 20 - Pinned Rankin–Selberg niceness for a cubic base change
LanglandsTunnell.RankinSelberg.exists_isNicePinned_rsDatum_archOfParam_isArchCompAt_of_whittaker_link_of_isArithGenuineCuspRealizable_of_localWhittaker2,501 below · depth 20 - A non-vanishing rational local Rankin–Selberg pair at a level prime
LanglandsTunnell.RankinSelberg.exists_mem_rsLocalIntegral_ne_zero_and_rational_member_twisted_of_finiteFamily_arch_deep58 below · depth 20 - Finiteness, continuity and unit phase of dual Whittaker products
LanglandsTunnell.RankinSelberg.finite_mulSupport_and_continuous_and_exists_phase_finprod_dualWhittakerFn3_away1 below · depth 20 - Pair stability of the GL₃timesGL₂ local functional equation
LanglandsTunnell.RankinSelberg.forall_mem_span_rsLocalIntegral_dual_eq_mul_of_forall_localZeta31_fe_of_deepTwist_of_principalLevel_of_admissible_of_gammaFactor_of_forall_localZeta31_fe_of_bump_levelShift_global489 below · depth 20 - Swapping the S_Q-slots: dual and hybrid pure-tensor integrability
LanglandsTunnell.RankinSelberg.integrable_pureTensorTerm_dual_and_hybrid_of_integrable_cutoff_of_forall_lintegral_lt_top15 below · depth 20 - Reflection J acts by (-1)^{a₁} on the weight-zero class
LanglandsTunnell.archOccursInClassOf_archWeightChar_zero_archCasimirAt_apply_mul_J_eq_neg_one_pow_of_whittakerCoefficient_fibre_eq_archW_of_isCasimirEigen386 below · depth 20 - Selection of a minimal-weight cuspidal constituent with nonvanishing Whittaker vector
LanglandsTunnell.exists_agreesAwayFromFinite_twist_archCasimir_eigenvector_minimalWeight_mem_isCuspConstituent_whittaker_diagOne_ne_zero_of_whittakerCoefficient_fibre_eq_archW_of_isCasimirEigen484 below · depth 20 - Selecting a weight-one cusp form: odd principal case
LanglandsTunnell.exists_agreesAwayFromFinite_twist_archCasimir_eigenvector_weightOne_whittakerCoefficient_torus_eq_archW_mem_isCuspConstituent_whittaker_diagOne_ne_zero_of_whittakerCoefficient_fibre_eq_archW_of_ne_of_ne535 below · depth 20 - Weight-one Whittaker factorisation over the torus fibre
LanglandsTunnell.exists_whittaker_factorization_apply_one_ne_zero_localSpaceAt_of_archCasimir_eigenvector_weightOne_of_ne_of_torus_profile_eigen370 below · depth 20 - Stability of weight-one isotypic vectors under reflected lowering
AutomorphicForm.CuspidalConstituent.add_smul_reflect_lower_mem_and_isIsotypicCuspFormAt_of_mem_isCuspConstituent269 below · depth 21 - Square of the J-reflected lowering operator in weight one
AutomorphicForm.archReflectLower_archReflectLower_eq_smul_of_hasArchCharacterAt_one_of_archCasimirAt_eq_smul1 below · depth 21 - Level-zero global additive characters of A_ℚ are locally ψᵥ^{± 1}
AutomorphicForm.psiLoc_eq_psiLocal_or_eq_inv_of_isGlobalAddChar_of_addCharLevel_eq_zero19 below · depth 21 - Integrable majorant and measurability for the GL₃ Jacquet integrand
LanglandsTunnell.CubicInduction.exists_integrable_majorant_jacquetIntegrand3_and_aestronglyMeasurable_prod1 below · depth 21 - Local zeta functional equation at a ramified place
LanglandsTunnell.CubicInduction.exists_localZeta31_fe_one_inducedEulerPoly_rational_of_isCubicInductionDataOn_of_isRamifiedIn527 below · depth 21 - Local functional equation at a bad place unramified in K
LanglandsTunnell.CubicInduction.exists_localZeta31_fe_one_inducedEulerPoly_rational_of_isCubicInductionDataOn_of_not_isRamifiedIn527 below · depth 21 - Essential Whittaker vector at p with non-vanishing value at 1
LanglandsTunnell.CubicInduction.exists_whittaker_localLevelOne_centralChar_admissible_principalSeries2_apply_one_ne_zero_of_norm_eq_one_of_higherUnitsAt50 below · depth 21 - Integrability of the dual S-part zeta integrand on GL₃
LanglandsTunnell.CubicInduction.sPartDual_integrable_of_isCubicInductionDataOn_of_isGaugeMajorised329 below · depth 21 - Convergence of the S-part zeta integral for cubic induction data
LanglandsTunnell.CubicInduction.sPart_integrable_of_isCubicInductionDataOn_of_isGaugeMajorised325 below · depth 21 - Integrability of the translated split dual finite cell integrand
LanglandsTunnell.RankinSelberg.exists_forall_integrable_translate_rsFinCellIntegrand_dual_split_of_dualFactor_phase109 below · depth 21 - Purified p-slot splitting of Whittaker coefficients of p-adic translates
LanglandsTunnell.RankinSelberg.exists_frozen_forall_sum_translate_purified_whittakerCoefficient_eq_mul_pSlot_of_finiteFamily_arch351 below · depth 21 - p-slot factorisation of GL₃ Whittaker functions along ι
LanglandsTunnell.RankinSelberg.exists_frozen_forall_sum_translate_whittaker_iota_eq_mul_pSlot_of_finiteFamily_arch42 below · depth 21 - Local Rankin–Selberg integrals evaluating a finite Whittaker family
LanglandsTunnell.RankinSelberg.exists_mem_gl3CyclicSubspace_forall_rsLocalIntegral_eq_mul_apply_of_finite11 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 - Non-degenerate test pair for the local GL₃× GL₂ integral
LanglandsTunnell.RankinSelberg.exists_mem_span_forall_rsLocalIntegral_eq_const_ne_zero_of_isGL3PsiWhittakerFn13 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 - Non-vanishing far right of a reference Rankin–Selberg integral
LanglandsTunnell.RankinSelberg.exists_pureTranslates_combination_forall_rsGlobalIntegral_ne_zero_member_twisted_of_finiteFamily_arch_of_archNonvanishing463 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 - Unisolvence points, reference points and cut-off subgroups at S_Q
LanglandsTunnell.RankinSelberg.exists_unisolvence_refPoint_cutoff_of_linearIndependent_slots1 below · depth 21 - Multiplicativity of the GL₃timesGL₂ local γ-factor in principal series
LanglandsTunnell.RankinSelberg.forall_mem_span_rsLocalIntegral_dual_eq_mul_of_forall_localZeta31_fe_of_principalSeries273 below · depth 21 - Deep twist: GL₃timesGL₂ local integrals are Laurent polynomials
LanglandsTunnell.RankinSelberg.forall_mem_span_rsLocalIntegral_eq_laurent_of_deepTwist_of_principalLevel_of_admissible20 below · depth 21 - Pair stability at (3,2): transfer of the cleared functional equation
LanglandsTunnell.RankinSelberg.forall_rsLocalIntegral_clearedFE_of_forall_rsLocalIntegral_clearedFE_of_centralChar_eq_of_deepTwist_pairStability32_of_bump59 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 - Measurability and isolation identity for pure-tensor remainders
LanglandsTunnell.RankinSelberg.measurable_remainder_and_dualFactor_translate_mul_prod_eq_of_pureTensor_expansion2 below · depth 21 - Descent to a cuspidal constituent keeping a Whittaker non-vanishing
LanglandsTunnell.exists_isCuspConstituent_mem_isIsotypicCuspFormAt_of_isIsotypicCuspFormAt_of_rightConv_eq_whittakerCoefficient_add_smul_reflect_lower_ne_zero340 below · depth 21 - Whittaker fibre of a weight-one cusp form is a multiple of W_∞
LanglandsTunnell.exists_whittakerCoefficient_fibre_eq_archW_mul_of_apply_mul_archRealGLAt_J_eq_mul_lower_of_mem_isCuspConstituent_weightOne_of_ne_bot424 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 - Measurability of the dual S-part zeta integrands
LanglandsTunnell.CubicInduction.aestronglyMeasurable_sPartDual_integrand_of_isCubicInductionDataOn2 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 - Convergence of the dual archimedean GL₃ zeta integral at the trivial twist
LanglandsTunnell.CubicInduction.exists_isArchZeta31ConvergentAbove_dualWhittakerFn3_whittakerArch_of_isCubicInductionDataOn0 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 - Whittaker model of a unitary principal series of GL₂(ℚₚ)
LanglandsTunnell.CubicInduction.exists_whittaker_localLevelOne_centralChar_admissible_principalSeries2_of_norm_eq_one_of_higherUnitsAt39 below · depth 22 - Unramified twist shifts the local (3,1) functional equation
LanglandsTunnell.CubicInduction.forall_localZeta31_fe_of_twist_modulus_cpow0 below · depth 22 - Uncountable non-vanishing of the cut finite Rankin–Selberg factor
LanglandsTunnell.RankinSelberg.exists_finTranslate_not_countable_rsFinIntegral_indicator_ne_zero_of_purifier_of_finiteFamily_arch93 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 - Frozen complements: explicit p-slot splitting of GL₃ Whittaker functions
LanglandsTunnell.RankinSelberg.exists_frozen_forall_sum_translate_whittaker_iota_eq_mul_pSlot_of_finiteFamily_arch_explicit42 below · depth 22 - Bump test vector for the local GL₃× GL₂ Rankin–Selberg integral
LanglandsTunnell.RankinSelberg.exists_mem_gl3CyclicSubspace_forall_rsLocalIntegral_eq_mul_setIntegral_translate9 below · depth 22 - Factorisation of the purified reference Rankin–Selberg integral
LanglandsTunnell.RankinSelberg.exists_ne_zero_forall_rsGlobalIntegral_reference_eq_mul_rsArchIntegral_mul_rsFinIntegral_indicator_mul_of_finiteFamily_arch410 below · depth 22 - A p-adic purifier with pure-tensor Whittaker coefficient
LanglandsTunnell.RankinSelberg.exists_purifier_whittakerCoefficient_eq_mul_pSlot_of_finiteFamily_arch25 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 - Non-degenerate local datum realising pair 2's cleared functional equation
LanglandsTunnell.RankinSelberg.exists_rsLocalIntegral_clearedFE_datum_of_centralChar_eq_of_deepTwist_pairStability32_of_bump56 below · depth 22 - Local GL₃timesGL₂ functional equation for a Jacquet-integral section
LanglandsTunnell.RankinSelberg.exists_rsLocalIntegral_jacquetIntegral_dual_eq_mul_of_forall_localZeta31_fe_of_integrable_setIntegral_localLevelOne_of_torusShell49 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 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 - Independent tensor splitting of the finite Whittaker factor
AutomorphicForm.exists_finWhittaker_eq_sum_prod_mul_linearIndependent_levelOne_invariant_of_isIsotypicCuspFormAt_of_localSpaceAt15 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 - Admissibility of the principal series of GL₂(ℚₚ)
LanglandsTunnell.CubicInduction.exists_finset_forall_mem_principalSeries2_invariant_mem_span1 below · depth 23 - A K₁(N)-fixed vector in the principal series I(θ₀,θ₁)
LanglandsTunnell.CubicInduction.exists_mem_principalSeries2_ne_zero_forall_localLevelOne_mul_eq_of_higherUnitsAt1 below · depth 23 - Moderate growth of the Jacquet integral along torus shells
LanglandsTunnell.CubicInduction.exists_norm_apply_diagZ_mul_le_of_stabilised_jacquetIntegral_of_norm_eq_one1 below · depth 23 - Unitary principal series for GL₂(ℚₚ): every non-zero vector is cyclic
LanglandsTunnell.CubicInduction.mem_span_range_translate_of_mem_principalSeries2_of_ne_zero_of_norm_eq_one31 below · depth 23 - Local integrability of the Rankin–Selberg integrand at p
LanglandsTunnell.RankinSelberg.exists_forall_integrable_iotaGL_mul_of_mem_span_localSpaceAt_of_mem_gl3CyclicSubspace_twist_of_finiteFamily_arch40 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 - Non-vanishing of a local GL₃× GL₂ Rankin–Selberg integral
LanglandsTunnell.RankinSelberg.exists_mem_gl3CyclicSubspace_forall_rsLocalIntegral_ne_zero_of_ne_zero13 below · depth 23 - Euler factorisation of the cut finite Rankin–Selberg integral
LanglandsTunnell.RankinSelberg.exists_ne_zero_forall_rsFinIntegral_indicator_purified_eq_mul_sum_prod_rsLocalIntegral36 below · depth 23 - Test vectors with equal local integrals, one constant
LanglandsTunnell.RankinSelberg.exists_testVectors_rsLocalIntegral_eq_and_eq_const_of_centralChar_eq_of_deepTwist_of_bump55 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 - Rankin–Selberg test data over ℚ for a cusp-realizable eigensystem
AutomorphicForm.exists_rankinSelberg_testData_of_isArithGenuineCuspRealizable_rat554 below · depth 24 - Cleared local Rankin–Selberg functional equation at the family centre
LanglandsTunnell.RankinSelberg.exists_cleared_rsLocalIntegral_fe_of_forall_lt_cleared_fe_finsum_cpow_of_isGL3PsiWhittakerFn14 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 - Rankin–Selberg side conditions for GL₂timesGL₂ over ℚ
LanglandsTunnell.RankinSelberg.exists_forall_summable_integrable_rs22_sideConditions_of_measurable_rat129 below · depth 24 - Jacquet–Shalika test vectors with non-vanishing unit-shell pairing
LanglandsTunnell.RankinSelberg.exists_mem_span_schwartzBruhat_fourier_unitShell_pairing_ne_zero_of_deepTwist_of_conductor_le40 below · depth 24 - Euler factorisation of the cut finite Rankin–Selberg integral
LanglandsTunnell.RankinSelberg.exists_ne_zero_forall_integrable_and_rsFinIntegral_indicator_eq_mul_finprod_rsLocalIntegral_of_pure_of_measurable19 below · depth 24 - Dual Rankin–Selberg integral of a smoothed GL₃ bump vector
LanglandsTunnell.RankinSelberg.exists_pos_forall_rsLocalIntegral_dual_longWeyl3_smoothedBump_eq_mul_setIntegral_unitShell12 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 - Equal smoothed Whittaker integrals along ι(GL₂)w₃ at level K₁(p^f)
LanglandsTunnell.RankinSelberg.integral_integral_iotaGL_mul_longWeyl3_mul_upperUnipotent3_eq_of_congruenceK1_of_centralChar_of_iotaGL_bump1 below · depth 24 - Unipotent smoothing of a K₁(p^f)-invariant function on GL₃
LanglandsTunnell.RankinSelberg.integral_integral_upperUnipotent3_translate_mem_gl3CyclicSubspace_of_congruenceK1_invariant0 below · depth 24 - Shaped unitary cusp vector over ℚ with factorised Whittaker function
AutomorphicForm.exists_unitaryShapedVector_whittakerFactorization_torusProfile_of_isArithGenuineCuspRealizable_rat544 below · depth 25 - Non-orthogonal right translates of two cuspidal GL₃ forms
LanglandsTunnell.CubicInduction.exists_inner_toL2_translateRight_ne_zero_of_forall_whittakerBlock_one_mul_eq60 below · depth 25 - Full Whittaker integral as a factor Λ(σ)≥ 1 times its block
LanglandsTunnell.CubicInduction.exists_one_le_and_lintegral_quotientMeasure_eq_mul_whittakerBlock9 below · depth 25
… and 227 more statements (search for the module name to find them).