Definitions/Def_NumberField_IdeleProductMeasure.lean
Idele orders, truncations, and Haar product-measure data
Throughout, F is a number field with ring of integers \mathcal{O}_F, and the group in play is the idele group (\mathbb{A}_F)^\times, the unit group of the adele ring. For a finite place v (a height-one prime of \mathcal{O}_F), ord F v a is minus the logarithm, in the value group written multiplicatively, of the valuation of the v-component of the finite part of a; equivalently the valuation of that component is \exp(-\mathrm{ord}_v(a)). Accompanying lemmas record that the component is non-zero, that \mathrm{ord}_v is additive with \mathrm{ord}_v(1)=0, \mathrm{ord}_v(a^{-1})=-\mathrm{ord}_v(a), \mathrm{ord}_v(a^n)=n\,\mathrm{ord}_v(a), that \mathrm{ord}_v of AutomorphicForm.uniformizerIdele F v is 1 and vanishes at other places, and that \mathrm{ord}_v(a)=0 exactly when the v-component and its inverse are both integral. unitComponent F v a is a_v\varpi_v^{-\mathrm{ord}_v(a)}, of valuation 1.
For a finite set S of finite places, truncFin F S is the multiplicative map on finite adeles keeping the components in S and replacing the others by 1; partAtAdele applies it to the finite part while fixing the infinite part, and partAt F S is the induced endomorphism of the idele group. Dually unitFin/unitPart F S a is the idele with infinite component 1, component 1 on S, and component unitComponent F v a off S. The factorisation theorem states that for a duplicate-free list L of places outside S and a in unitIdelesOutside of S\cup L (valuation 1 at every finite place off S\cup L) one has a=\mathrm{pr}_S(a)\cdot\prod_{v\in L}\pi_v^{\mathrm{ord}_v(a)}\cdot u_S(a), with a version transported through diagOne; two further lemmas show diagOne a commutes with the image of GL_2(F_v) under AdelicDock.localEmbed followed by AdelicDock.finEmbed whenever a_v=1.
The measure-theoretic half fixes ideleBorel (the Borel \sigma-algebra of the idele topology) and idelicHaar (Mathlib's Measure.haar for it), proves each unitIdelesOutside T open, hence of non-zero measure, proves partAt F S continuous and measurable, and defines sPartMeasure F S as the pushforward under partAt F S of idelicHaar restricted to unitIdelesOutside S. A Fubini-type theorem gives, for f integrable against sPartMeasure F S and \varphi_v with absolutely summable values, integrability of a\mapsto f(\mathrm{pr}_S a)\prod_{v\in L}\varphi_v(\mathrm{ord}_v a) on unitIdelesOutside (S\cup L) and the identity \int f(\mathrm{pr}_S a)\prod_v\varphi_v(\mathrm{ord}_v a)=\bigl(\int f\,d\nu_S\bigr)\prod_v\sum_{m\in\mathbb{Z}}\varphi_v(m). Finally productMeasureData F S assembles all of this into a term of UnramifiedWhittaker.ProductMeasureData for S and idelicHaar F, with constant c=1, \nu_S= sPartMeasure F S, projection partAt F S, order function ord F, and the decomposition, Tonelli and measurability fields as above.
Relation to Mathlib
Mathlib supplies the adele ring, the finite adele ring as a restricted product, the adic completions and their valuations, and Measure.haar; the order of an idele at a finite place, the truncation and unit-part endomorphisms of the idele group, and the measure sPartMeasure are the project's own. The \sigma-algebra on the idele group is introduced here as the Borel one, as a local instance, not globally.
Where it is used
The data packaged by productMeasureData is what the computation of the global zeta integral of an unramified Whittaker function consumes: it converts an integral over ideles integral away from a finite set of places into the product of an integral over the part at S and of local Euler factors indexed by the orders at the remaining places. This sits on the automorphic side of the argument, where Hecke eigensystems attached to automorphic forms are related to L-functions.
References
- J. Tate, Fourier analysis in number fields and Hecke's zeta-functions, in: J. W. S. Cassels and A. Fröhlich (eds.), Algebraic Number Theory, 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.
- 695 lines
- 64 declarations
- used in the statements of 236 theorems and imported by 274 proofs
- imports 1 definition modules
Source file: Definitions/Def_NumberField_IdeleProductMeasure.lean
Declarations
- def
NumberField.Idele.ord - theorem
NumberField.Idele.valued_snd_ne_zero - theorem
NumberField.Idele.valued_snd_eq_exp_neg_ord - theorem
NumberField.Idele.ord_mul - theorem
NumberField.Idele.ord_one - theorem
NumberField.Idele.ord_inv - def
NumberField.Idele.unitComponent - theorem
NumberField.Idele.valued_unitComponent - theorem
NumberField.Idele.unitComponent_mul_unitComponent_inv - def
NumberField.Idele.truncFin - def
NumberField.Idele.partAtAdele - def
NumberField.Idele.partAt - def
NumberField.Idele.unitFin - def
NumberField.Idele.unitPart - theorem
NumberField.Idele.ord_uniformizerIdele_self - theorem
NumberField.Idele.ord_uniformizerIdele_of_ne - theorem
NumberField.Idele.ord_eq_zero_iff - theorem
NumberField.Idele.partAt_fst - theorem
NumberField.Idele.partAt_snd_of_mem - theorem
NumberField.Idele.partAt_snd_of_not_mem - theorem
NumberField.Idele.unitPart_fst - theorem
NumberField.Idele.unitPart_snd_of_mem - theorem
NumberField.Idele.unitPart_snd_of_not_mem - theorem
NumberField.Idele.unitFin_val_mem - theorem
NumberField.Idele.unitFin_inv_mem - theorem
NumberField.Idele.finitePartUnits_unitPart_mem_unitIdeles - theorem
NumberField.Idele.unitPart_mul - theorem
NumberField.Idele.idele_ext - theorem
NumberField.Idele.iUC_partAt - theorem
NumberField.Idele.iUC_unitPart - theorem
NumberField.Idele.iUC_uniformizerIdele - theorem
NumberField.Idele.fUC_partAt_of_mem - theorem
NumberField.Idele.fUC_partAt_of_not_mem - theorem
NumberField.Idele.fUC_unitPart_of_mem - theorem
NumberField.Idele.val_fUC_unitPart_of_not_mem - theorem
NumberField.Idele.fUC_uniformizerIdele_self - theorem
NumberField.Idele.fUC_uniformizerIdele_of_ne - theorem
NumberField.Idele.eq_partAt_mul_prod_mul_unitPart - theorem
NumberField.Idele.diagOne_eq_diagOne_partAt_mul_prod_mul - theorem
NumberField.Idele.diagOne_mul_finEmbed_localEmbed_of_snd_eq_one - theorem
NumberField.Idele.diagOne_partAt_mul_finEmbed_localEmbed - def
NumberField.Idele.ideleBorel - theorem
NumberField.Idele.borelSpace_ideleBorel - def
NumberField.Idele.idelicHaar - theorem
NumberField.Idele.isHaarMeasure_idelicHaar - theorem
NumberField.Idele.isOpen_unitIdelesOutside - theorem
NumberField.Idele.idelicHaar_unitIdelesOutside_ne_zero - theorem
NumberField.Idele.truncFin_eq_mapAlong - theorem
NumberField.Idele.continuous_truncFin - theorem
NumberField.Idele.continuous_partAtAdele - theorem
NumberField.Idele.continuous_partAt - theorem
NumberField.Idele.measurable_partAt - def
NumberField.Idele.sPartMeasure - theorem
NumberField.Idele.sPartMeasure_ne_zero - def
NumberField.Idele.ordHom - theorem
NumberField.Idele.ord_zpow - theorem
NumberField.Idele.fUC_partAt_uniformizerIdele - theorem
NumberField.Idele.partAt_uniformizerIdele_of_not_mem - theorem
NumberField.Idele.mem_unitIdelesOutside_iff_ord - theorem
NumberField.Idele.mem_image_uniformizerIdele_zpow_mul_iff - theorem
NumberField.Idele.iUnion_image_uniformizerIdele_zpow_mul - theorem
NumberField.Idele.pairwise_disjoint_image_uniformizerIdele_zpow_mul - theorem
NumberField.Idele.integrableOn_and_integral_eq - def
NumberField.Idele.productMeasureData
Source
import Definitions.Def_UnramifiedWhittaker_ZetaIntegrand set_option autoImplicit false open IsDedekindDomain NumberField NumberField.AdelicLevel NumberField.AdeleRing noncomputable section namespace NumberField.Idele variable (F : Type) [Field F] [NumberField F] def ord (v : HeightOneSpectrum (𝓞 F)) (a : (AdeleRing (𝓞 F) F)ˣ) : ℤ := -WithZero.log (Valued.v ((a : AdeleRing (𝓞 F) F).2 v)) theorem valued_snd_ne_zero (v : HeightOneSpectrum (𝓞 F)) (a : (AdeleRing (𝓞 F) F)ˣ) : Valued.v ((a : AdeleRing (𝓞 F) F).2 v) ≠ 0 := by rw [← val_finiteUnitsComponent] exact (Valuation.ne_zero_iff Valued.v).mpr (Units.ne_zero _) theorem valued_snd_eq_exp_neg_ord (v : HeightOneSpectrum (𝓞 F)) (a : (AdeleRing (𝓞 F) F)ˣ) : Valued.v ((a : AdeleRing (𝓞 F) F).2 v) = WithZero.exp (-(ord F v a)) := by rw [ord, neg_neg, WithZero.exp_log (valued_snd_ne_zero F v a)] theorem ord_mul (v : HeightOneSpectrum (𝓞 F)) (a b : (AdeleRing (𝓞 F) F)ˣ) : ord F v (a * b) = ord F v a + ord F v b := by have hab : ((a * b : (AdeleRing (𝓞 F) F)ˣ) : AdeleRing (𝓞 F) F).2 v = (a : AdeleRing (𝓞 F) F).2 v * (b : AdeleRing (𝓞 F) F).2 v := rfl simp only [ord] rw [hab, map_mul, WithZero.log_mul (valued_snd_ne_zero F v a) (valued_snd_ne_zero F v b), neg_add] theorem ord_one (v : HeightOneSpectrum (𝓞 F)) : ord F v 1 = 0 := by rw [ord] show -WithZero.log (Valued.v (1 : v.adicCompletion F)) = 0 rw [map_one, WithZero.log_one, neg_zero] theorem ord_inv (v : HeightOneSpectrum (𝓞 F)) (a : (AdeleRing (𝓞 F) F)ˣ) : ord F v a⁻¹ = -ord F v a := by have h := ord_mul F v a a⁻¹ rw [mul_inv_cancel, ord_one] at h omega def unitComponent (v : HeightOneSpectrum (𝓞 F)) (a : (AdeleRing (𝓞 F) F)ˣ) : v.adicCompletion F := (a : AdeleRing (𝓞 F) F).2 v * ((uniformizerUnit F v : (v.adicCompletion F)ˣ) : v.adicCompletion F) ^ (-(ord F v a)) theorem valued_unitComponent (v : HeightOneSpectrum (𝓞 F)) (a : (AdeleRing (𝓞 F) F)ˣ) : Valued.v (unitComponent F v a) = 1 := by rw [unitComponent, map_mul, map_zpow₀, valued_uniformizerUnit, valued_snd_eq_exp_neg_ord, ← WithZero.exp_zsmul, ← WithZero.exp_add, ← WithZero.exp_zero] congr 1 simp only [zsmul_eq_mul, Int.cast_id, Int.cast_neg, mul_neg, mul_one, neg_neg, neg_add_cancel] theorem unitComponent_mul_unitComponent_inv (v : HeightOneSpectrum (𝓞 F)) (a : (AdeleRing (𝓞 F) F)ˣ) : unitComponent F v a * unitComponent F v a⁻¹ = 1 := by have h1 : (a : AdeleRing (𝓞 F) F).2 v * ((a⁻¹ : (AdeleRing (𝓞 F) F)ˣ) : AdeleRing (𝓞 F) F).2 v = 1 := by have h : ((a * a⁻¹ : (AdeleRing (𝓞 F) F)ˣ) : AdeleRing (𝓞 F) F).2 v = 1 := by rw [mul_inv_cancel]; rfl exact h simp only [unitComponent] rw [ord_inv, neg_neg, mul_mul_mul_comm, h1, one_mul, ← zpow_add₀ (uniformizerUnit F v).ne_zero, neg_add_cancel, zpow_zero] open scoped Classical in def truncFin (S : Finset (HeightOneSpectrum (𝓞 F))) : FiniteAdeleRing (𝓞 F) F →* FiniteAdeleRing (𝓞 F) F where toFun x := ⟨fun v => if v ∈ S then x v else 1, x.2.mono fun v hv => by show (if v ∈ S then x v else 1) ∈ v.adicCompletionIntegers F split_ifs · exact hv · exact one_mem _⟩ map_one' := by refine Subtype.ext (funext fun v => ?_) show (if v ∈ S then (1 : FiniteAdeleRing (𝓞 F) F) v else 1) = (1 : FiniteAdeleRing (𝓞 F) F) v split_ifs <;> rfl map_mul' x y := by refine Subtype.ext (funext fun v => ?_) show (if v ∈ S then (x * y) v else 1) = (if v ∈ S then x v else 1) * (if v ∈ S then y v else 1) split_ifs · rfl · exact (one_mul (1 : v.adicCompletion F)).symm def partAtAdele (S : Finset (HeightOneSpectrum (𝓞 F))) : AdeleRing (𝓞 F) F →* AdeleRing (𝓞 F) F where toFun a := (a.1, truncFin F S a.2) map_one' := Prod.ext rfl (map_one (truncFin F S)) map_mul' a b := Prod.ext rfl (map_mul (truncFin F S) a.2 b.2) def partAt (S : Finset (HeightOneSpectrum (𝓞 F))) : (AdeleRing (𝓞 F) F)ˣ →* (AdeleRing (𝓞 F) F)ˣ := Units.map (partAtAdele F S) open scoped Classical in def unitFin (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) : (FiniteAdeleRing (𝓞 F) F)ˣ where val := ⟨fun v => if v ∈ S then 1 else unitComponent F v a, Filter.Eventually.of_forall fun v => by show (if v ∈ S then (1 : v.adicCompletion F) else unitComponent F v a) ∈ v.adicCompletionIntegers F split_ifs · exact one_mem _ · rw [HeightOneSpectrum.mem_adicCompletionIntegers] exact (valued_unitComponent F v a).le⟩ inv := ⟨fun v => if v ∈ S then 1 else unitComponent F v a⁻¹, Filter.Eventually.of_forall fun v => by show (if v ∈ S then (1 : v.adicCompletion F) else unitComponent F v a⁻¹) ∈ v.adicCompletionIntegers F split_ifs · exact one_mem _ · rw [HeightOneSpectrum.mem_adicCompletionIntegers] exact (valued_unitComponent F v a⁻¹).le⟩ val_inv := by refine Subtype.ext (funext fun v => ?_) show (if v ∈ S then (1 : v.adicCompletion F) else unitComponent F v a) * (if v ∈ S then (1 : v.adicCompletion F) else unitComponent F v a⁻¹) = 1 split_ifs · exact one_mul 1 · exact unitComponent_mul_unitComponent_inv F v a inv_val := by refine Subtype.ext (funext fun v => ?_) show (if v ∈ S then (1 : v.adicCompletion F) else unitComponent F v a⁻¹) * (if v ∈ S then (1 : v.adicCompletion F) else unitComponent F v a) = 1 split_ifs · exact one_mul 1 · rw [mul_comm] exact unitComponent_mul_unitComponent_inv F v a def unitPart (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) : (AdeleRing (𝓞 F) F)ˣ := Units.map (finIncl (𝓞 F) F) (unitFin F S a) theorem ord_uniformizerIdele_self (v : HeightOneSpectrum (𝓞 F)) : ord F v (AutomorphicForm.uniformizerIdele F v) = 1 := by rw [ord] show -WithZero.log (Valued.v (((localUnit (𝓞 F) F v (uniformizerUnit F v) : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v)) = 1 rw [localUnit_apply_self, valued_uniformizerUnit, WithZero.log_exp, neg_neg] theorem ord_uniformizerIdele_of_ne {v w : HeightOneSpectrum (𝓞 F)} (h : w ≠ v) : ord F w (AutomorphicForm.uniformizerIdele F v) = 0 := by rw [ord] show -WithZero.log (Valued.v (((localUnit (𝓞 F) F v (uniformizerUnit F v) : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) w)) = 0 rw [localUnit_apply_of_ne (𝓞 F) F v (uniformizerUnit F v) h, map_one, WithZero.log_one, neg_zero] theorem ord_eq_zero_iff (v : HeightOneSpectrum (𝓞 F)) (a : (AdeleRing (𝓞 F) F)ˣ) : ord F v a = 0 ↔ ((finitePartUnits (𝓞 F) F a : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v ∈ v.adicCompletionIntegers F ∧ (((finitePartUnits (𝓞 F) F a)⁻¹ : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v ∈ v.adicCompletionIntegers F := by rw [IsDedekindDomain.FiniteAdeleRing.integer_and_inv_integer_iff_valuation_eq_one] show ord F v a = 0 ↔ Valued.v ((a : AdeleRing (𝓞 F) F).2 v) = 1 constructor · intro h have h' : WithZero.log (Valued.v ((a : AdeleRing (𝓞 F) F).2 v)) = 0 := by rw [ord] at h; exact neg_eq_zero.mp h rw [← WithZero.exp_log (valued_snd_ne_zero F v a), h', WithZero.exp_zero] · intro h rw [ord, h, WithZero.log_one, neg_zero] theorem partAt_fst (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) : ((partAt F S a : (AdeleRing (𝓞 F) F)ˣ) : AdeleRing (𝓞 F) F).1 = (a : AdeleRing (𝓞 F) F).1 := by rfl theorem partAt_snd_of_mem (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) {v : HeightOneSpectrum (𝓞 F)} (hv : v ∈ S) : ((partAt F S a : (AdeleRing (𝓞 F) F)ˣ) : AdeleRing (𝓞 F) F).2 v = (a : AdeleRing (𝓞 F) F).2 v := by exact if_pos hv theorem partAt_snd_of_not_mem (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) {v : HeightOneSpectrum (𝓞 F)} (hv : v ∉ S) : ((partAt F S a : (AdeleRing (𝓞 F) F)ˣ) : AdeleRing (𝓞 F) F).2 v = 1 := by exact if_neg hv theorem unitPart_fst (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) : ((unitPart F S a : (AdeleRing (𝓞 F) F)ˣ) : AdeleRing (𝓞 F) F).1 = 1 := by rfl theorem unitPart_snd_of_mem (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) : ∀ v ∈ S, ((unitPart F S a : (AdeleRing (𝓞 F) F)ˣ) : AdeleRing (𝓞 F) F).2 v = 1 := by intro v hv exact if_pos hv theorem unitPart_snd_of_not_mem (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) {v : HeightOneSpectrum (𝓞 F)} (hv : v ∉ S) : ((unitPart F S a : (AdeleRing (𝓞 F) F)ˣ) : AdeleRing (𝓞 F) F).2 v = (a : AdeleRing (𝓞 F) F).2 v * ((uniformizerUnit F v : (v.adicCompletion F)ˣ) : v.adicCompletion F) ^ (-(ord F v a)) := by exact if_neg hv private theorem unitFin_val_mem (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) (v : HeightOneSpectrum (𝓞 F)) : ((unitFin F S a : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v ∈ v.adicCompletionIntegers F := by by_cases hv : v ∈ S · have h : ((unitFin F S a : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v = 1 := if_pos hv rw [h]; exact one_mem _ · have h : ((unitFin F S a : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v = unitComponent F v a := if_neg hv rw [h, HeightOneSpectrum.mem_adicCompletionIntegers]; exact (valued_unitComponent F v a).le private theorem unitFin_inv_mem (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) (v : HeightOneSpectrum (𝓞 F)) : (((unitFin F S a)⁻¹ : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v ∈ v.adicCompletionIntegers F := by by_cases hv : v ∈ S · have h : (((unitFin F S a)⁻¹ : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v = 1 := if_pos hv rw [h]; exact one_mem _ · have h : (((unitFin F S a)⁻¹ : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v = unitComponent F v a⁻¹ := if_neg hv rw [h, HeightOneSpectrum.mem_adicCompletionIntegers]; exact (valued_unitComponent F v a⁻¹).le theorem finitePartUnits_unitPart_mem_unitIdeles (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) : finitePartUnits (𝓞 F) F (unitPart F S a) ∈ IsDedekindDomain.FiniteAdeleRing.unitIdeles (𝓞 F) F := by exact ⟨fun v => unitFin_val_mem F S a v, fun v => unitFin_inv_mem F S a v⟩ theorem unitPart_mul (S : Finset (HeightOneSpectrum (𝓞 F))) (a b : (AdeleRing (𝓞 F) F)ˣ) : unitPart F S (a * b) = unitPart F S a * unitPart F S b := by refine Units.ext ?_ show AdelicLevel.finIncl (𝓞 F) F ((unitFin F S (a * b) : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) = AdelicLevel.finIncl (𝓞 F) F ((unitFin F S a : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) * AdelicLevel.finIncl (𝓞 F) F ((unitFin F S b : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) rw [← map_mul] refine congrArg _ (Subtype.ext (funext fun v => ?_)) show ((unitFin F S (a * b) : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v = ((unitFin F S a : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v * ((unitFin F S b : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v by_cases hv : v ∈ S · have h1 : ((unitFin F S (a * b) : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v = 1 := if_pos hv have h2 : ((unitFin F S a : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v = 1 := if_pos hv have h3 : ((unitFin F S b : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v = 1 := if_pos hv rw [h1, h2, h3, one_mul] · have h1 : ((unitFin F S (a * b) : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v = unitComponent F v (a * b) := if_neg hv have h2 : ((unitFin F S a : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v = unitComponent F v a := if_neg hv have h3 : ((unitFin F S b : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) v = unitComponent F v b := if_neg hv have hab : ((a * b : (AdeleRing (𝓞 F) F)ˣ) : AdeleRing (𝓞 F) F).2 v = (a : AdeleRing (𝓞 F) F).2 v * (b : AdeleRing (𝓞 F) F).2 v := rfl rw [h1, h2, h3] simp only [unitComponent] rw [hab, ord_mul, neg_add, zpow_add₀ (uniformizerUnit F v).ne_zero, mul_mul_mul_comm] private theorem idele_ext {a b : (AdeleRing (𝓞 F) F)ˣ} (h₁ : ∀ w : InfinitePlace F, infiniteUnitsComponent (𝓞 F) F w a = infiniteUnitsComponent (𝓞 F) F w b) (h₂ : ∀ w : HeightOneSpectrum (𝓞 F), finiteUnitsComponent (𝓞 F) F w a = finiteUnitsComponent (𝓞 F) F w b) : a = b := Units.ext (Prod.ext (funext fun w => congrArg Units.val (h₁ w)) (Subtype.ext (funext fun w => congrArg Units.val (h₂ w)))) private theorem iUC_partAt (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) (w : InfinitePlace F) : infiniteUnitsComponent (𝓞 F) F w (partAt F S a) = infiniteUnitsComponent (𝓞 F) F w a := Units.ext rfl private theorem iUC_unitPart (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) (w : InfinitePlace F) : infiniteUnitsComponent (𝓞 F) F w (unitPart F S a) = 1 := Units.ext rfl private theorem iUC_uniformizerIdele (v : HeightOneSpectrum (𝓞 F)) (w : InfinitePlace F) : infiniteUnitsComponent (𝓞 F) F w (AutomorphicForm.uniformizerIdele F v) = 1 := Units.ext rfl private theorem fUC_partAt_of_mem (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) {w : HeightOneSpectrum (𝓞 F)} (hw : w ∈ S) : finiteUnitsComponent (𝓞 F) F w (partAt F S a) = finiteUnitsComponent (𝓞 F) F w a := Units.ext (if_pos hw) private theorem fUC_partAt_of_not_mem (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) {w : HeightOneSpectrum (𝓞 F)} (hw : w ∉ S) : finiteUnitsComponent (𝓞 F) F w (partAt F S a) = 1 := Units.ext (if_neg hw) private theorem fUC_unitPart_of_mem (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) {w : HeightOneSpectrum (𝓞 F)} (hw : w ∈ S) : finiteUnitsComponent (𝓞 F) F w (unitPart F S a) = 1 := Units.ext (if_pos hw) private theorem val_fUC_unitPart_of_not_mem (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) {w : HeightOneSpectrum (𝓞 F)} (hw : w ∉ S) : ((finiteUnitsComponent (𝓞 F) F w (unitPart F S a) : (w.adicCompletion F)ˣ) : w.adicCompletion F) = (a : AdeleRing (𝓞 F) F).2 w * (uniformizerUnit F w : w.adicCompletion F) ^ (-(ord F w a)) := if_neg hw private theorem fUC_uniformizerIdele_self (w : HeightOneSpectrum (𝓞 F)) : finiteUnitsComponent (𝓞 F) F w (AutomorphicForm.uniformizerIdele F w) = uniformizerUnit F w := Units.ext (by show ((localUnit (𝓞 F) F w (uniformizerUnit F w) : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) w = _ rw [localUnit_apply_self]) private theorem fUC_uniformizerIdele_of_ne {v w : HeightOneSpectrum (𝓞 F)} (h : w ≠ v) : finiteUnitsComponent (𝓞 F) F w (AutomorphicForm.uniformizerIdele F v) = 1 := Units.ext (by show ((localUnit (𝓞 F) F v (uniformizerUnit F v) : (FiniteAdeleRing (𝓞 F) F)ˣ) : FiniteAdeleRing (𝓞 F) F) w = 1 rw [localUnit_apply_of_ne (𝓞 F) F v (uniformizerUnit F v) h]) theorem eq_partAt_mul_prod_mul_unitPart (S : Finset (HeightOneSpectrum (𝓞 F))) (L : List (HeightOneSpectrum (𝓞 F))) (hLS : ∀ v ∈ L, v ∉ S) (hL : L.Nodup) (a : (AdeleRing (𝓞 F) F)ˣ) (ha : a ∈ NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (↑S ∪ {v | v ∈ L})) : a = partAt F S a * (L.map fun v => AutomorphicForm.uniformizerIdele F v ^ ord F v a).prod * unitPart F S a := by classical rw [NumberField.AdeleRing.mem_unitIdelesOutside_iff] at ha refine idele_ext F (fun w => ?_) (fun w => ?_) · have hMw : infiniteUnitsComponent (𝓞 F) F w (L.map fun v => AutomorphicForm.uniformizerIdele F v ^ ord F v a).prod = 1 := by rw [map_list_prod, List.map_map] refine List.prod_eq_one fun x hx => ?_ obtain ⟨v, -, rfl⟩ := List.mem_map.mp hx rw [Function.comp_apply, map_zpow, iUC_uniformizerIdele, one_zpow] rw [map_mul, map_mul, iUC_partAt, hMw, iUC_unitPart, mul_one, mul_one] · have hMw : finiteUnitsComponent (𝓞 F) F w (L.map fun v => AutomorphicForm.uniformizerIdele F v ^ ord F v a).prod = (finiteUnitsComponent (𝓞 F) F w (AutomorphicForm.uniformizerIdele F w) ^ ord F w a) ^ L.count w := by rw [map_list_prod, List.map_map, List.prod_map_eq_pow_single w] · rw [Function.comp_apply, map_zpow] · intro v hvw _ rw [Function.comp_apply, map_zpow, fUC_uniformizerIdele_of_ne F hvw.symm, one_zpow] rw [map_mul, map_mul, hMw] by_cases hwS : w ∈ S · have hwL : w ∉ L := fun h => hLS w h hwS rw [fUC_partAt_of_mem F S a hwS, fUC_unitPart_of_mem F S a hwS, List.count_eq_zero.mpr hwL, pow_zero, mul_one, mul_one] · rw [fUC_partAt_of_not_mem F S a hwS, one_mul] refine Units.ext ?_ rw [Units.val_mul, val_fUC_unitPart_of_not_mem F S a hwS, Units.val_pow_eq_pow_val, Units.val_zpow_eq_zpow_val, fUC_uniformizerIdele_self] by_cases hwL : w ∈ L · rw [List.count_eq_one_of_mem hL hwL, pow_one, mul_left_comm, ← zpow_add₀ (uniformizerUnit F w).ne_zero, add_neg_cancel, zpow_zero, mul_one] rfl · have hw' : w ∉ (↑S ∪ {v | v ∈ L} : Set (HeightOneSpectrum (𝓞 F))) := by rintro (h | h) · exact hwS h · exact hwL h have h0 : ord F w a = 0 := (ord_eq_zero_iff F w a).mpr (ha w hw') rw [List.count_eq_zero.mpr hwL, pow_zero, one_mul, h0, neg_zero, zpow_zero, mul_one] rfl theorem diagOne_eq_diagOne_partAt_mul_prod_mul (S : Finset (HeightOneSpectrum (𝓞 F))) (L : List (HeightOneSpectrum (𝓞 F))) (hLS : ∀ v ∈ L, v ∉ S) (hL : L.Nodup) (a : (AdeleRing (𝓞 F) F)ˣ) (ha : a ∈ NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (↑S ∪ {v | v ∈ L})) : diagOne a = diagOne (partAt F S a) * (L.map fun v => diagOne (AutomorphicForm.uniformizerIdele F v) ^ ord F v a).prod * diagOne (unitPart F S a) := by conv_lhs => rw [eq_partAt_mul_prod_mul_unitPart F S L hLS hL a ha] simp only [map_mul, map_list_prod, List.map_map, Function.comp_def, map_zpow] theorem diagOne_mul_finEmbed_localEmbed_of_snd_eq_one {v : HeightOneSpectrum (𝓞 F)} (a : (AdeleRing (𝓞 F) F)ˣ) (hav : (a : AdeleRing (𝓞 F) F).2 v = 1) (x : GL (Fin 2) (v.adicCompletion F)) : diagOne a * AdelicDock.finEmbed (𝓞 F) F (AdelicDock.localEmbed (𝓞 F) F v x) = AdelicDock.finEmbed (𝓞 F) F (AdelicDock.localEmbed (𝓞 F) F v x) * diagOne a := by refine Units.ext ?_ rw [Units.val_mul, Units.val_mul, AdelicDock.coe_finEmbed, AdelicDock.coe_localEmbed] refine AdelicDock.matrix_eq_of_mapMatrix_arch_fin_eq (𝓞 F) F ?_ ?_ · rw [map_mul, map_mul, AdelicDock.mapMatrix_arch_finMat, mul_one, one_mul] · rw [map_mul, map_mul, AdelicDock.mapMatrix_fin_finMat] refine AdelicDock.matrix_eq_of_forall_mapMatrix_finAdeleEval_eq (𝓞 F) F fun w => ?_ rw [map_mul, map_mul] by_cases hw : w = v · have h00 : finAdeleEval (𝓞 F) F v (adeleFin (𝓞 F) F (a : AdeleRing (𝓞 F) F)) = 1 := hav have hdiag : (finAdeleEval (𝓞 F) F v).mapMatrix ((adeleFin (𝓞 F) F).mapMatrix ((diagOne a : GL (Fin 2) (AdeleRing (𝓞 F) F)) : Matrix (Fin 2) (Fin 2) (AdeleRing (𝓞 F) F))) = 1 := by ext i j fin_cases i <;> fin_cases j <;> simp [RingHom.mapMatrix_apply, Matrix.map_apply, diagOne_coe_apply, h00] rw [hw, hdiag, AdelicDock.mapMatrix_localMat_self, one_mul, mul_one] · rw [AdelicDock.mapMatrix_localMat_of_ne (𝓞 F) F v _ hw, mul_one, one_mul] theorem diagOne_partAt_mul_finEmbed_localEmbed (S : Finset (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) {v : HeightOneSpectrum (𝓞 F)} (hv : v ∉ S) (x : GL (Fin 2) (v.adicCompletion F)) : diagOne (partAt F S a) * AdelicDock.finEmbed (𝓞 F) F (AdelicDock.localEmbed (𝓞 F) F v x) = AdelicDock.finEmbed (𝓞 F) F (AdelicDock.localEmbed (𝓞 F) F v x) * diagOne (partAt F S a) := by exact diagOne_mul_finEmbed_localEmbed_of_snd_eq_one F (partAt F S a) (partAt_snd_of_not_mem F S a hv) x end NumberField.Idele namespace NumberField.Idele open MeasureTheory variable (F : Type) [Field F] [NumberField F] @[reducible] def ideleBorel : MeasurableSpace (AdeleRing (𝓞 F) F)ˣ := borel _ theorem borelSpace_ideleBorel : @BorelSpace (AdeleRing (𝓞 F) F)ˣ _ (ideleBorel F) := @BorelSpace.mk _ _ (ideleBorel F) rfl attribute [local instance] ideleBorel borelSpace_ideleBorel def idelicHaar : Measure (AdeleRing (𝓞 F) F)ˣ := Measure.haar theorem isHaarMeasure_idelicHaar : (idelicHaar F).IsHaarMeasure := by rw [idelicHaar]; infer_instance attribute [local instance] isHaarMeasure_idelicHaar theorem isOpen_unitIdelesOutside (T : Set (HeightOneSpectrum (𝓞 F))) : IsOpen (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F T : Set (AdeleRing (𝓞 F) F)ˣ) := by have hO : IsOpen {x : FiniteAdeleRing (𝓞 F) F | ∀ v, v ∉ T → x.1 v ∈ v.adicCompletionIntegers F} := RestrictedProduct.isOpen_forall_imp_mem fun v => Valued.isOpen_valuationSubring _ have h1 : Continuous fun a : (AdeleRing (𝓞 F) F)ˣ => (a : AdeleRing (𝓞 F) F).2 := continuous_snd.comp Units.continuous_val have h2 : Continuous fun a : (AdeleRing (𝓞 F) F)ˣ => ((a⁻¹ : (AdeleRing (𝓞 F) F)ˣ) : AdeleRing (𝓞 F) F).2 := continuous_snd.comp Units.continuous_coe_inv have hset : (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F T : Set (AdeleRing (𝓞 F) F)ˣ) = (fun a : (AdeleRing (𝓞 F) F)ˣ => (a : AdeleRing (𝓞 F) F).2) ⁻¹' {x : FiniteAdeleRing (𝓞 F) F | ∀ v, v ∉ T → x.1 v ∈ v.adicCompletionIntegers F} ∩ (fun a : (AdeleRing (𝓞 F) F)ˣ => ((a⁻¹ : (AdeleRing (𝓞 F) F)ˣ) : AdeleRing (𝓞 F) F).2) ⁻¹' {x : FiniteAdeleRing (𝓞 F) F | ∀ v, v ∉ T → x.1 v ∈ v.adicCompletionIntegers F} := by ext a rw [SetLike.mem_coe, NumberField.AdeleRing.mem_unitIdelesOutside_iff, IsDedekindDomain.FiniteAdeleRing.mem_unitIdelesOutside_iff] exact ⟨fun h => Set.mem_inter (fun v hv => (h v hv).1) (fun v hv => (h v hv).2), fun h v hv => ⟨h.1 v hv, h.2 v hv⟩⟩ rw [hset] exact (hO.preimage h1).inter (hO.preimage h2) theorem idelicHaar_unitIdelesOutside_ne_zero (T : Set (HeightOneSpectrum (𝓞 F))) : idelicHaar F (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F T : Set (AdeleRing (𝓞 F) F)ˣ) ≠ 0 := (isOpen_unitIdelesOutside F T).measure_ne_zero _ ⟨1, Subgroup.one_mem _⟩ open scoped Classical in theorem truncFin_eq_mapAlong (S : Finset (HeightOneSpectrum (𝓞 F))) : (truncFin F S : FiniteAdeleRing (𝓞 F) F → FiniteAdeleRing (𝓞 F) F) = RestrictedProduct.mapAlong (fun v : HeightOneSpectrum (𝓞 F) => v.adicCompletion F) (fun v : HeightOneSpectrum (𝓞 F) => v.adicCompletion F) id Filter.tendsto_id (fun v x => if v ∈ S then x else 1) (Filter.Eventually.of_forall fun v => by intro x hx show (if v ∈ S then x else 1) ∈ (v.adicCompletionIntegers F : Set (v.adicCompletion F)) by_cases h : v ∈ S · rw [if_pos h]; exact hx · rw [if_neg h]; exact one_mem _) := by funext x exact RestrictedProduct.ext _ _ fun v => rfl open scoped Classical in theorem continuous_truncFin (S : Finset (HeightOneSpectrum (𝓞 F))) : Continuous (truncFin F S) := by rw [truncFin_eq_mapAlong] refine RestrictedProduct.mapAlong_continuous _ _ _ _ _ _ fun v => ?_ show Continuous fun x : v.adicCompletion F => if v ∈ S then x else 1 by_cases h : v ∈ S · simp only [if_pos h]; exact continuous_id · simp only [if_neg h]; exact continuous_const theorem continuous_partAtAdele (S : Finset (HeightOneSpectrum (𝓞 F))) : Continuous (partAtAdele F S) := Continuous.prodMk continuous_fst ((continuous_truncFin F S).comp continuous_snd) theorem continuous_partAt (S : Finset (HeightOneSpectrum (𝓞 F))) : Continuous (partAt F S) := Continuous.units_map _ (continuous_partAtAdele F S) theorem measurable_partAt (S : Finset (HeightOneSpectrum (𝓞 F))) : Measurable (partAt F S) := (continuous_partAt F S).measurable def sPartMeasure (S : Finset (HeightOneSpectrum (𝓞 F))) : Measure (AdeleRing (𝓞 F) F)ˣ := Measure.map (partAt F S) ((idelicHaar F).restrict (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (↑S) : Set (AdeleRing (𝓞 F) F)ˣ)) theorem sPartMeasure_ne_zero (S : Finset (HeightOneSpectrum (𝓞 F))) : sPartMeasure F S ≠ 0 := by intro h have h1 := congrArg (fun μ : Measure (AdeleRing (𝓞 F) F)ˣ => μ Set.univ) h simp only [sPartMeasure, Measure.map_apply (measurable_partAt F S) MeasurableSet.univ, Set.preimage_univ, Measure.restrict_apply_univ, Measure.coe_zero, Pi.zero_apply] at h1 exact idelicHaar_unitIdelesOutside_ne_zero F _ h1 private def ordHom (v : HeightOneSpectrum (𝓞 F)) : (AdeleRing (𝓞 F) F)ˣ →* Multiplicative ℤ where toFun a := Multiplicative.ofAdd (ord F v a) map_one' := by rw [ord_one]; rfl map_mul' a b := by rw [ord_mul]; rfl private theorem ord_zpow (v : HeightOneSpectrum (𝓞 F)) (a : (AdeleRing (𝓞 F) F)ˣ) (n : ℤ) : ord F v (a ^ n) = n * ord F v a := by have h : Multiplicative.ofAdd (ord F v (a ^ n)) = Multiplicative.ofAdd (ord F v a) ^ n := map_zpow (ordHom F v) a n rw [← ofAdd_zsmul] at h rw [Multiplicative.ofAdd.injective h, smul_eq_mul] private theorem fUC_partAt_uniformizerIdele (S : Finset (HeightOneSpectrum (𝓞 F))) {v : HeightOneSpectrum (𝓞 F)} (hv : v ∉ S) (w : HeightOneSpectrum (𝓞 F)) : finiteUnitsComponent (𝓞 F) F w (partAt F S (AutomorphicForm.uniformizerIdele F v)) = 1 := by by_cases hw : w ∈ S · rw [fUC_partAt_of_mem F S _ hw] exact fUC_uniformizerIdele_of_ne F fun h => hv (h ▸ hw) · exact fUC_partAt_of_not_mem F S _ hw private theorem partAt_uniformizerIdele_of_not_mem (S : Finset (HeightOneSpectrum (𝓞 F))) {v : HeightOneSpectrum (𝓞 F)} (hv : v ∉ S) : partAt F S (AutomorphicForm.uniformizerIdele F v) = 1 := by refine idele_ext F (fun w => ?_) (fun w => ?_) · rw [iUC_partAt, iUC_uniformizerIdele, map_one] · rw [fUC_partAt_uniformizerIdele F S hv, map_one] private theorem mem_unitIdelesOutside_iff_ord (T : Set (HeightOneSpectrum (𝓞 F))) (a : (AdeleRing (𝓞 F) F)ˣ) : a ∈ NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F T ↔ ∀ w, w ∉ T → ord F w a = 0 := by rw [NumberField.AdeleRing.mem_unitIdelesOutside_iff, IsDedekindDomain.FiniteAdeleRing.mem_unitIdelesOutside_iff] refine forall_congr' fun w => imp_congr_right fun _ => ?_ rw [ord_eq_zero_iff] rfl private theorem mem_image_uniformizerIdele_zpow_mul_iff (T' : Set (HeightOneSpectrum (𝓞 F))) {v : HeightOneSpectrum (𝓞 F)} (hv : v ∉ T') (n : ℤ) (a : (AdeleRing (𝓞 F) F)ˣ) : a ∈ (fun b : (AdeleRing (𝓞 F) F)ˣ => AutomorphicForm.uniformizerIdele F v ^ n * b) '' (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F T' : Set (AdeleRing (𝓞 F) F)ˣ) ↔ a ∈ (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (insert v T') : Set (AdeleRing (𝓞 F) F)ˣ) ∧ ord F v a = n := by constructor · rintro ⟨b, hb, rfl⟩ rw [SetLike.mem_coe, mem_unitIdelesOutside_iff_ord] at hb refine ⟨?_, ?_⟩ · rw [SetLike.mem_coe, mem_unitIdelesOutside_iff_ord] intro w hw rw [Set.mem_insert_iff, not_or] at hw rw [ord_mul, ord_zpow, ord_uniformizerIdele_of_ne F hw.1, mul_zero, zero_add, hb w hw.2] · rw [ord_mul, ord_zpow, ord_uniformizerIdele_self, mul_one, hb v hv, add_zero] · rintro ⟨ha, hn⟩ rw [SetLike.mem_coe, mem_unitIdelesOutside_iff_ord] at ha refine ⟨AutomorphicForm.uniformizerIdele F v ^ (-n) * a, ?_, ?_⟩ · rw [SetLike.mem_coe, mem_unitIdelesOutside_iff_ord] intro w hw by_cases hwv : w = v · rw [hwv, ord_mul, ord_zpow, ord_uniformizerIdele_self, mul_one, hn, neg_add_cancel] · rw [ord_mul, ord_zpow, ord_uniformizerIdele_of_ne F hwv, mul_zero, zero_add] exact ha w fun h => (Set.mem_insert_iff.mp h).elim hwv hw · show AutomorphicForm.uniformizerIdele F v ^ n * (AutomorphicForm.uniformizerIdele F v ^ (-n) * a) = a rw [← mul_assoc, ← zpow_add, add_neg_cancel, zpow_zero, one_mul] private theorem iUnion_image_uniformizerIdele_zpow_mul (T' : Set (HeightOneSpectrum (𝓞 F))) {v : HeightOneSpectrum (𝓞 F)} (hv : v ∉ T') : (⋃ n : ℤ, (fun b : (AdeleRing (𝓞 F) F)ˣ => AutomorphicForm.uniformizerIdele F v ^ n * b) '' (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F T' : Set (AdeleRing (𝓞 F) F)ˣ)) = (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (insert v T') : Set (AdeleRing (𝓞 F) F)ˣ) := by ext a rw [Set.mem_iUnion] constructor · rintro ⟨n, h⟩ exact ((mem_image_uniformizerIdele_zpow_mul_iff F T' hv n a).mp h).1 · intro h exact ⟨ord F v a, (mem_image_uniformizerIdele_zpow_mul_iff F T' hv _ a).mpr ⟨h, rfl⟩⟩ private theorem pairwise_disjoint_image_uniformizerIdele_zpow_mul (T' : Set (HeightOneSpectrum (𝓞 F))) {v : HeightOneSpectrum (𝓞 F)} (hv : v ∉ T') : Pairwise (Function.onFun Disjoint fun n : ℤ => (fun b : (AdeleRing (𝓞 F) F)ˣ => AutomorphicForm.uniformizerIdele F v ^ n * b) '' (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F T' : Set (AdeleRing (𝓞 F) F)ˣ)) := by intro m n hmn refine Set.disjoint_left.mpr fun a ham han => hmn ?_ exact ((mem_image_uniformizerIdele_zpow_mul_iff F T' hv m a).mp ham).2.symm.trans ((mem_image_uniformizerIdele_zpow_mul_iff F T' hv n a).mp han).2 private theorem integrableOn_and_integral_eq (S : Finset (HeightOneSpectrum (𝓞 F))) (f : (AdeleRing (𝓞 F) F)ˣ → ℂ) (φ : HeightOneSpectrum (𝓞 F) → ℤ → ℂ) (hf : Integrable f (sPartMeasure F S)) : ∀ (L : List (HeightOneSpectrum (𝓞 F))), (∀ v ∈ L, v ∉ S) → L.Nodup → (∀ v ∈ L, Summable fun m : ℤ => ‖φ v m‖) → IntegrableOn (fun a => f (partAt F S a) * (L.map fun v => φ v (ord F v a)).prod) (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (↑S ∪ {v | v ∈ L}) : Set (AdeleRing (𝓞 F) F)ˣ) (idelicHaar F) ∧ (∫ a in (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (↑S ∪ {v | v ∈ L}) : Set (AdeleRing (𝓞 F) F)ˣ), f (partAt F S a) * (L.map fun v => φ v (ord F v a)).prod ∂(idelicHaar F)) = (∫ a, f a ∂(sPartMeasure F S)) * (L.map fun v => ∑' m : ℤ, φ v m).prod := by intro L induction L with | nil => intro _ _ _ have hT : (↑S ∪ {v | v ∈ ([] : List (HeightOneSpectrum (𝓞 F)))} : Set (HeightOneSpectrum (𝓞 F))) = ↑S := by ext w simp only [Set.mem_union, Set.mem_setOf_eq, List.not_mem_nil, or_false] simp only [List.map_nil, List.prod_nil, mul_one, hT] have hφm : AEMeasurable (partAt F S) ((idelicHaar F).restrict (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (↑S) : Set (AdeleRing (𝓞 F) F)ˣ)) := (measurable_partAt F S).aemeasurable rw [sPartMeasure] at hf ⊢ exact ⟨(integrable_map_measure hf.aestronglyMeasurable hφm).mp hf, (integral_map hφm hf.aestronglyMeasurable).symm⟩ | cons v L' IH => intro hLS hL hφ have hvS : v ∉ S := hLS v (List.mem_cons.mpr (Or.inl rfl)) have hLS' : ∀ w ∈ L', w ∉ S := fun w hw => hLS w (List.mem_cons.mpr (Or.inr hw)) have hvL' : v ∉ L' := (List.nodup_cons.mp hL).1 have hL' : L'.Nodup := (List.nodup_cons.mp hL).2 have hφv : Summable fun m : ℤ => ‖φ v m‖ := hφ v (List.mem_cons.mpr (Or.inl rfl)) have hφ' : ∀ w ∈ L', Summable fun m : ℤ => ‖φ w m‖ := fun w hw => hφ w (List.mem_cons.mpr (Or.inr hw)) obtain ⟨IHi, IHe⟩ := IH hLS' hL' hφ' have hv' : v ∉ (↑S ∪ {w | w ∈ L'} : Set (HeightOneSpectrum (𝓞 F))) := by rintro (h | h) · exact hvS (Finset.mem_coe.mp h) · exact hvL' h have hT : (↑S ∪ {w | w ∈ v :: L'} : Set (HeightOneSpectrum (𝓞 F))) = insert v (↑S ∪ {w | w ∈ L'}) := by ext w simp only [Set.mem_union, Set.mem_setOf_eq, List.mem_cons, Set.mem_insert_iff, Finset.mem_coe] tauto rw [hT, ← iUnion_image_uniformizerIdele_zpow_mul F _ hv'] have hkey : ∀ (n : ℤ) (b : (AdeleRing (𝓞 F) F)ˣ), b ∈ (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (↑S ∪ {w | w ∈ L'}) : Set (AdeleRing (𝓞 F) F)ˣ) → f (partAt F S (AutomorphicForm.uniformizerIdele F v ^ n * b)) * ((v :: L').map fun w => φ w (ord F w (AutomorphicForm.uniformizerIdele F v ^ n * b))).prod = φ v n * (f (partAt F S b) * (L'.map fun w => φ w (ord F w b)).prod) := by intro n b hb rw [SetLike.mem_coe, mem_unitIdelesOutside_iff_ord] at hb have h1 : partAt F S (AutomorphicForm.uniformizerIdele F v ^ n * b) = partAt F S b := by rw [map_mul, map_zpow, partAt_uniformizerIdele_of_not_mem F S hvS, one_zpow, one_mul] have h2 : ord F v (AutomorphicForm.uniformizerIdele F v ^ n * b) = n := by rw [ord_mul, ord_zpow, ord_uniformizerIdele_self, mul_one, hb v hv', add_zero] have h3 : ((L'.map fun w => φ w (ord F w (AutomorphicForm.uniformizerIdele F v ^ n * b))) : List ℂ) = L'.map fun w => φ w (ord F w b) := by refine List.map_congr_left fun w hw => ?_ have hwv : w ≠ v := fun h => hvL' (h ▸ hw) rw [ord_mul, ord_zpow, ord_uniformizerIdele_of_ne F hwv, mul_zero, zero_add] rw [List.map_cons, List.prod_cons, h1, h2, h3] ring have hmp : ∀ n : ℤ, MeasurePreserving (fun b : (AdeleRing (𝓞 F) F)ˣ => AutomorphicForm.uniformizerIdele F v ^ n * b) (idelicHaar F) (idelicHaar F) := fun n => measurePreserving_mul_left (idelicHaar F) _ have hme : ∀ n : ℤ, MeasurableEmbedding fun b : (AdeleRing (𝓞 F) F)ˣ => AutomorphicForm.uniformizerIdele F v ^ n * b := fun n => (MeasurableEquiv.mulLeft (AutomorphicForm.uniformizerIdele F v ^ n)).measurableEmbedding have hU' : MeasurableSet (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (↑S ∪ {w | w ∈ L'}) : Set (AdeleRing (𝓞 F) F)ˣ) := (isOpen_unitIdelesOutside F _).measurableSet have hmeas : ∀ n : ℤ, MeasurableSet ((fun b : (AdeleRing (𝓞 F) F)ˣ => AutomorphicForm.uniformizerIdele F v ^ n * b) '' (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (↑S ∪ {w | w ∈ L'}) : Set (AdeleRing (𝓞 F) F)ˣ)) := fun n => (hme n).measurableSet_image.mpr hU' have hpi : ∀ n : ℤ, IntegrableOn (fun a => f (partAt F S a) * ((v :: L').map fun w => φ w (ord F w a)).prod) ((fun b : (AdeleRing (𝓞 F) F)ˣ => AutomorphicForm.uniformizerIdele F v ^ n * b) '' (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (↑S ∪ {w | w ∈ L'}) : Set (AdeleRing (𝓞 F) F)ˣ)) (idelicHaar F) := by intro n have hc0 : IntegrableOn (fun b => φ v n * (f (partAt F S b) * (L'.map fun w => φ w (ord F w b)).prod)) (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (↑S ∪ {w | w ∈ L'}) : Set (AdeleRing (𝓞 F) F)ˣ) (idelicHaar F) := Integrable.const_mul IHi (φ v n) have hc : IntegrableOn (fun b => f (partAt F S (AutomorphicForm.uniformizerIdele F v ^ n * b)) * ((v :: L').map fun w => φ w (ord F w (AutomorphicForm.uniformizerIdele F v ^ n * b))).prod) (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (↑S ∪ {w | w ∈ L'}) : Set (AdeleRing (𝓞 F) F)ˣ) (idelicHaar F) := hc0.congr_fun (fun b hb => (hkey n b hb).symm) hU' exact (((hmp n).restrict_image_emb (hme n) _).integrable_comp_emb (hme n) (g := fun a => f (partAt F S a) * ((v :: L').map fun w => φ w (ord F w a)).prod)).mp hc have hnorm : ∀ n : ℤ, (∫ a in (fun b : (AdeleRing (𝓞 F) F)ˣ => AutomorphicForm.uniformizerIdele F v ^ n * b) '' (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (↑S ∪ {w | w ∈ L'}) : Set (AdeleRing (𝓞 F) F)ˣ), ‖f (partAt F S a) * ((v :: L').map fun w => φ w (ord F w a)).prod‖ ∂(idelicHaar F)) = ‖φ v n‖ * ∫ b in (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (↑S ∪ {w | w ∈ L'}) : Set (AdeleRing (𝓞 F) F)ˣ), ‖f (partAt F S b) * (L'.map fun w => φ w (ord F w b)).prod‖ ∂(idelicHaar F) := by intro n rw [(hmp n).setIntegral_image_emb (hme n), ← integral_const_mul] refine setIntegral_congr_fun hU' fun b hb => ?_ show ‖f (partAt F S (AutomorphicForm.uniformizerIdele F v ^ n * b)) * ((v :: L').map fun w => φ w (ord F w (AutomorphicForm.uniformizerIdele F v ^ n * b))).prod‖ = ‖φ v n‖ * ‖f (partAt F S b) * (L'.map fun w => φ w (ord F w b)).prod‖ rw [hkey n b hb, norm_mul] have hsum : Summable fun n : ℤ => ∫ a in (fun b : (AdeleRing (𝓞 F) F)ˣ => AutomorphicForm.uniformizerIdele F v ^ n * b) '' (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (↑S ∪ {w | w ∈ L'}) : Set (AdeleRing (𝓞 F) F)ˣ), ‖f (partAt F S a) * ((v :: L').map fun w => φ w (ord F w a)).prod‖ ∂(idelicHaar F) := by simp_rw [hnorm] exact hφv.mul_right _ have hint := integrableOn_iUnion_of_summable_integral_norm hpi hsum refine ⟨hint, ?_⟩ rw [integral_iUnion hmeas (pairwise_disjoint_image_uniformizerIdele_zpow_mul F _ hv') hint] have hval : ∀ n : ℤ, (∫ a in (fun b : (AdeleRing (𝓞 F) F)ˣ => AutomorphicForm.uniformizerIdele F v ^ n * b) '' (NumberField.AdeleRing.unitIdelesOutside (𝓞 F) F (↑S ∪ {w | w ∈ L'}) : Set (AdeleRing (𝓞 F) F)ˣ), f (partAt F S a) * ((v :: L').map fun w => φ w (ord F w a)).prod ∂(idelicHaar F)) = φ v n * ((∫ a, f a ∂(sPartMeasure F S)) * (L'.map fun w => ∑' m : ℤ, φ w m).prod) := by intro n rw [(hmp n).setIntegral_image_emb (hme n), ← IHe, ← integral_const_mul] exact setIntegral_congr_fun hU' fun b hb => hkey n b hb simp_rw [hval] rw [tsum_mul_right, List.map_cons, List.prod_cons] ring def productMeasureData (S : Finset (HeightOneSpectrum (𝓞 F))) : @UnramifiedWhittaker.ProductMeasureData F _ _ (ideleBorel F) S (idelicHaar F) where c := 1 c_pos := one_pos νS := sPartMeasure F S projS := partAt F S ord := ord F projS_off a _ hv := partAt_snd_of_not_mem F S a hv decomp L hLS hL a ha := ⟨unitPart F S a, unitPart_fst F S a, unitPart_snd_of_mem F S a, finitePartUnits_unitPart_mem_unitIdeles F S a, eq_partAt_mul_prod_mul_unitPart F S L hLS hL a ha⟩ tonelli L hLS hL f φ hf hφ := by obtain ⟨h1, h2⟩ := integrableOn_and_integral_eq F S f φ hf L hLS hL hφ exact ⟨h1, by rw [h2, Complex.ofReal_one, one_mul]⟩ measurableSet L _ _ := (isOpen_unitIdelesOutside F _).measurableSet end NumberField.Idele
Statements phrased using this module (236)
- Positive finite volume of norm slabs in a fundamental domain
NumberField.Idele.idelicHaar_inter_setOf_ideleNorm_mem_Icc_pos_and_lt_top15 below · depth 16 - An entire, non-vanishing S-part torus zeta integral
AutomorphicForm.exists_unipotentAverage_rightConv_sPart_zetaIntegrand_entire_ne_zero118 below · depth 17 - Iwasawa formula for the T(K)N(A)-quotient measure
AutomorphicForm.exists_lintegral_rationalTorusUnipotentQuotientMeasure_eq_mul_setLIntegral_iwasawa18 below · depth 18 - A finite-measure neighbourhood where the zeta integrand stays nonzero
AutomorphicForm.exists_nhd_whittakerCoefficient_diagOne_sPartMeasure_lt_top2 below · depth 18 - Unipotent Schwartz averaging multiplies the zeta integrand by int Bψ
AutomorphicForm.zetaIntegrand_whittakerCoefficient_unipotentAverage_eq_mul6 below · depth 18 - Schwartz–Bruhat function standard outside S with non-negative Fourier multiplier
NumberField.AdelicFourier.exists_mem_schwartzBruhat_isFactorizableStandardOutside_integral_eq_nonneg52 below · depth 18 - Archimedean idelic measure as Lebesgue measure with Haar density
NumberField.Idele.exists_map_ringEquiv_mixedSpace_sPartMeasure_empty_eq_smul_withDensity0 below · depth 18 - Entirety of a bounded, pinched S-part zeta integral
UnramifiedWhittaker.integrable_and_differentiable_integral_mul_zetaIntegrand_sPartMeasure_of_bounded1 below · depth 18 - Non-vanishing of a weighted S-part zeta integral
UnramifiedWhittaker.integral_mul_zetaIntegrand_sPartMeasure_ne_zero_of_nonneg_of_le_re0 below · depth 18 - Unipotent zeta integral: passage from T to S with local factors
UnramifiedWhittaker.integral_zetaIntegrand_unipotent_partMeasure_eq_mul_prod_tsum_torusFactor_mul_setIntegral11 below · depth 18 - Haar measure on GL₂(A_K) in Iwasawa coordinates
NumberField.AdelicHaar.exists_lintegral_adelicGLHaar_eq_mul_lintegral_iwasawa8 below · depth 19 - Holomorphy and positivity of the S-part Rankin–Selberg integral
AutomorphicForm.RankinSelberg.analyticOnNhd_sPartIntegral_and_pos_of_shell_surgery32 below · depth 20 - Left Haar measure of the adelic Borel subgroup in coordinates
AutomorphicForm.exists_lintegral_adelicBorel_eq_mul_lintegral_coord_of_isMulLeftInvariant3 below · depth 20 - Iwasawa disintegration of the Z(K)N(A)-quotient measure on GL₂
AutomorphicForm.exists_lintegral_rationalCentreUnipotentQuotientMeasure_eq_mul_setLIntegral_iwasawa14 below · depth 20 - Explicit root number in the GL₃ functional equation at v
LanglandsTunnell.CubicInduction.eval_mul_eq_finprod_rootNumber_mul_eval_of_forall_localZeta31_fe_one_of_isCubicInductionDataOn_of_addCharLevel493 below · depth 20 - Local rationality and functional equation at a bad place
LanglandsTunnell.CubicInduction.exists_forall_exists_mul_eval_eq_of_isCubicInductionDataOn_of_forall_mem_bad_of_addCharLevel514 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 - 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 - S-part integrability of the GL₃ zeta and dual integrands
LanglandsTunnell.CubicInduction.sPart_integrable_and_dual_of_isCubicInductionDataOn_of_isGaugeMajorised353 below · depth 20 - Polar coordinates for the empty-part idelic Haar measure
NumberField.Idele.exists_lintegral_prod_norm_sPartMeasure_empty_eq_mul_prod_lintegral0 below · depth 20 - Norm slabs in a fundamental domain have r-independent idelic volume
NumberField.Idele.exists_setLIntegral_indicator_ideleNorm_sq_mul_mem_Icc_eq_const16 below · depth 20 - Factoring an idelic integral over the places outside S
NumberField.Idele.lintegral_mul_finprod_eq_lintegral_sPartMeasure_mul_iSup0 below · depth 20 - Section law, shell majorant and base value after shell surgery
AutomorphicForm.RankinSelberg.exists_finset_norm_whittakerCoefficient_sq_mul_norm_section_le_shell_indicator_of_shell_surgery10 below · depth 21 - Unfolded Rankin–Selberg S-part as a torus integral
AutomorphicForm.RankinSelberg.lintegral_sPart_quotientIntegrand_eq_mul_lintegral_torus_and_sPartIntegral_eq19 below · depth 21 - Mellin uniqueness on the ideles of ℚ
LanglandsTunnell.Converse.MellinUniqueness.eq_smul_of_forall_isAdmissibleTwist_mellin_eq8 below · depth 21 - Non-vanishing of the local GL₃× GL₁ zeta integral
LanglandsTunnell.CubicInduction.exists_isLocalZeta30ConvergentAbove_and_forall_exists_localZeta30_ne_zero_of_admissible_of_ne_zero13 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 - Integrability of an idelic product forces factorwise integrability or vanishing
LanglandsTunnell.CubicInduction.integrable_factors_or_eq_zero_of_integrable_sPart3 below · depth 21 - Place separation for local zeta quotients at a bad place
LanglandsTunnell.CubicInduction.mul_eq_mul_localZeta30_localZetaDual31_polynomial_of_isCubicInductionDataOn_of_forall_mem_bad512 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 - Splitting of the S-part idelic measure over ℤ^S
NumberField.Idele.lintegral_mul_prod_ord_sPartMeasure_eq_lintegral_sPartMeasure_empty_mul_prod_tsum0 below · depth 21 - Positivity of the S-part measure at an idele trivial outside S
NumberField.Idele.sPartMeasure_pos_of_isOpen_of_partAt_eq0 below · depth 21 - S-part Rankin–Selberg integral: continuation past 1/2 and non-vanishing
AutomorphicForm.RankinSelberg.analyticOnNhd_sPartIntegral_pair_and_ne_zero_of_ball_surgery35 below · depth 22 - Non-vanishing of an archimedean Rankin–Selberg torus pairing
AutomorphicForm.RankinSelberg.exists_archTranslate_isArchKFinite_equivariant_integral_mul_torusIntegral_whittakerCoefficient_ne_zero30 below · depth 22 - Non-vanishing Rankin–Selberg torus pairing against a non-negative K-finite datum
AutomorphicForm.RankinSelberg.exists_archTranslate_isArchKFinite_equivariant_nonneg_integral_mul_torusIntegral_whittakerCoefficient_ne_zero_of_eq_one31 below · depth 22 - Shell majorant for a surgered Whittaker–section integrand
AutomorphicForm.RankinSelberg.exists_finset_norm_whittakerCoefficient_sq_mul_norm_section_le_shell_indicator_of_shell_surgery_of_section_law7 below · depth 22 - Induced sections on the torus: φₛ(diag(t,1)k)=‖t‖^{s+1/2}φₛ(k)
AutomorphicForm.RankinSelberg.section_diagOne_mul_eq_ideleNorm_cpow_mul_of_isInducedSection_etaFst_etaSnd0 below · depth 22 - Shell surgery preserves the Whittaker coefficient at diag(t₀,1)k₀
AutomorphicForm.RankinSelberg.whittakerCoefficient_diagOne_mul_mul_inv_finEmbed_eq_of_shell_surgery0 below · depth 22 - Export package for translates of a smoothed cuspidal realisation
AutomorphicForm.SmoothCuspRealizationAt.exports_rightConv_sum_translate_of_isCuspConstituent109 below · depth 22 - Fibre-sum spectral comparison for twisted GL₂ at prime degree
AutomorphicForm.fibreSum_twistedCutTrace_eq_const_mul_fibreSum_cutTrace_of_docks_ed23,000 below · depth 22 - Zeroth shells outside S and the S-part torus measure
AutomorphicForm.setLIntegral_rationalCentreUnipotentQuotientMeasure_shellZeroOutside_eq_mul_lintegral_sPartMeasure8 below · depth 22 - Measurability of the dual S-part zeta integrands
LanglandsTunnell.CubicInduction.aestronglyMeasurable_sPartDual_integrand_of_isCubicInductionDataOn2 below · depth 22 - Local functional equation at v matches induced Euler polynomials
LanglandsTunnell.CubicInduction.exists_eval_mul_eq_mul_eval_of_forall_localZeta31_fe_one_of_isCubicInductionDataOn_of_addCharLevel493 below · depth 22 - Ramified place: local functional-equation datum matches induced Euler polynomials
LanglandsTunnell.CubicInduction.exists_eval_mul_eq_mul_eval_of_forall_localZeta31_fe_one_of_isCubicInductionDataOn_of_isRamifiedIn493 below · depth 22 - Two-point global-to-local zeta factorisation at a bad place
LanglandsTunnell.CubicInduction.exists_globalZeta30_eq_mul_localZeta30_and_globalZetaDual31_eq_mul_of_isCubicInductionDataOn508 below · depth 22 - Admissible idele class character of ℚ with prescribed component at v and parity
LanglandsTunnell.CubicInduction.exists_isAdmissibleTwist_isUnramifiedCharAt_localChar_eq_isArchCompAt_of_hasConductorExponentAt8 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 - Splitting of integrals for the S-part of idelic Haar measure
NumberField.Idele.exists_integral_sPartMeasure_eq_mul_integral_mul_prod_integral0 below · depth 22 - Norm disintegration of idelic Haar measure on a fundamental domain
NumberField.Idele.exists_setLIntegral_comp_ideleNorm_eq_mul_lintegral_Ioi17 below · depth 22 - Integrability criterion for the S-part measure via a product majorant
NumberField.Idele.integrable_sPartMeasure_of_norm_le_mul_prod0 below · depth 22 - Right translation invariance of the S-part idelic measure
NumberField.Idele.measurePreserving_mul_right_sPartMeasure0 below · depth 22 - Analyticity of an archimedean torus Rankin–Selberg pairing
AutomorphicForm.RankinSelberg.analyticOnNhd_integral_archTorus_pair11 below · depth 23 - Ball-surgered torus integral evaluated past the centre
AutomorphicForm.RankinSelberg.exists_integral_torus_pair_eq_mul_integral_archTorus_of_ball_surgery22 below · depth 23 - Absolute convergence of the ball-surgered torus S-part integral
AutomorphicForm.RankinSelberg.lintegral_torus_pair_lt_top_of_ball_surgery15 below · depth 23 - Hecke word comparison of twisted and untwisted cut traces
AutomorphicForm.exists_atoms_forall_exists_noAtomicMass_heckeWordSum_twistedCutTrace_sub_finrank_mul_const_mul_heckeWordSum_cutTrace_eq2,972 below · depth 23 - Formal base change of an Eisenstein Hecke table is Eisenstein
AutomorphicForm.exists_eisensteinTableOf_eq_formalBaseChange_eisensteinTableOf6 below · depth 23 - Rankin–Selberg package for Theta×̃Theta over ℚ
AutomorphicForm.exists_rs22GlobalIntegral_godementEisenstein_self_eq_add_div_and_mul_hasProd_rsEulerPoly_self_rat662 below · depth 23 - Fibre-sum vanishing from monomial identities at places of record
AutomorphicForm.forall_finset_fibreSum_sub_const_mul_fibreSum_add_eq_zero_of_forall_places_exists_noAtomicMass_wordSum_eq1 below · depth 23 - Satake data constant on fibres over K, given word-shift
AutomorphicForm.satakeData_eq_of_under_eq_of_twistedCutTrace_ne_zero_of_heckeWordShift0 below · depth 23 - Absolute summability of Siegel-pinned cut traces on GL₂
AutomorphicForm.summable_norm_cutTrace_of_isUnitFactorizableOfTypeAt_of_coversModCentre96 below · depth 23 - Satake table of a principal-level cuspidal class lies in a box
AutomorphicForm.table_mem_box_of_mem_cuspClasses_siegel119 below · depth 23 - Hecke tables of cuspidal slab classes lie in the box
AutomorphicForm.table_mem_box_of_mem_cuspClasses_slab18 below · depth 23 - Hecke generator inverse double-coset relation at level U₁(N)
NumberField.AdelicLevel.exists_heckeGen_inv_eq_centralScalar_mul_mul_heckeGen_mul_levelOne1 below · depth 23 - Double-coset inversion relation for Hecke generators at principal level
NumberField.AdelicLevel.exists_heckeGen_inv_eq_centralScalar_mul_mul_heckeGen_mul_principalLevel1 below · depth 23 - An archimedean twist makes a non-trivial idele integral non-zero
NumberField.Idele.exists_integral_stdAddChar_mul_ne_zero_of_continuous_of_integrable_sPartMeasure_empty9 below · depth 23 - Two-sided archimedean decay implies integrability for ν_∅
NumberField.Idele.integrable_sPartMeasure_empty_of_norm_le_ideleNorm_rpow_mul_prod_min_one_rpow_of_norm_le_rpow_neg6 below · depth 23 - Pointwise torus evaluation of a ball-surgered Rankin–Selberg integrand
AutomorphicForm.RankinSelberg.whittakerCoefficient_mul_conj_mul_section_diagOne_mul_eq_of_ball_surgery7 below · depth 24 - Per-word twisted spectral comparison from the remainder rows
AutomorphicForm.heckeWordSum_twistedCutTrace_sub_const_mul_heckeWordSum_cutTrace_add_atoms_eq_of_remainder_rows_of_comparison194 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 - Hecke generator inverse in a central-times-level double coset
NumberField.AdelicLevel.exists_heckeGen_inv_eq_centralScalar_mul_mul_heckeGen_mul_of_forall_finEmbed_localEmbed_mem0 below · depth 24 - A ball indicator at S integrates out of the S-part measure
NumberField.Idele.exists_lintegral_ite_ball_comp_partAt_sPartMeasure_eq_mul_lintegral_sPartMeasure_empty2 below · depth 24 - Absolute summability of cut traces over Siegel-pinned cusp classes
AutomorphicForm.summable_norm_cutTrace_of_isUnitFactorizableOfTypeAt_of_coversModCentre_of_subset96 below · depth 25 - Integrability of the folded Rankin–Selberg integrand over ℚ
LanglandsTunnell.RankinSelberg.exists_forall_integrableOn_norm_mul_godementSection_majorant_rat78 below · depth 25 - Integrability of the archimedean Rankin–Selberg integrand over ℚ
LanglandsTunnell.RankinSelberg.exists_forall_integrable_archWhittaker_gaussian_rpow_det_rat4 below · depth 25 - Integrability of the finite Rankin–Selberg integrand over ℚ
LanglandsTunnell.RankinSelberg.exists_forall_integrable_finWhittaker_rpow_ideleNorm_det_rat29 below · depth 25 - Integrability of the Rankin–Selberg integrand on NbackslashGL₂(A_ℚ)
LanglandsTunnell.RankinSelberg.exists_forall_integrable_norm_whittakerCoefficient_mul_rs22Kernel_unipotentQuotient_rat40 below · depth 25 - Integrability of the split Rankin–Selberg integrand over ℚ
LanglandsTunnell.RankinSelberg.exists_forall_integrable_prod_archWhittaker_finWhittaker_rpow_rat34 below · depth 25 - Absolute convergence of the Bruhat series of a Godement section
LanglandsTunnell.RankinSelberg.exists_forall_summable_norm_godementSection_bruhat_one_one_rat85 below · depth 25 - Measurability of the unfolded Rankin–Selberg integrand over ℚ
LanglandsTunnell.RankinSelberg.forall_measurable_whittakerCoefficient_mul_rs22Kernel_rat2 below · depth 25 - Unipotent invariance of a product of two Whittaker coefficients
LanglandsTunnell.RankinSelberg.whittakerCoefficient_mul_whittakerCoefficient_inv_unipotent_mul_rat0 below · depth 25 - Bruhat-series majorant for Godement sections on rational Siegel sets
LanglandsTunnell.RankinSelberg.exists_forall_norm_godementSection_add_tsum_le_mul_archHeight_pow_of_mem_integralWindowedSiegelSet_rat76 below · depth 26 - Torus–compact coordinates for the zeroth shell of GL₃(A_ℚ)
LanglandsTunnell.CubicInduction.WhittakerBlock.setLIntegral_zerothShell_eq_mul_lintegral_torus12 below · depth 27 - Iwasawa unfolding of flat induced matrix coefficients
AutomorphicForm.exists_forall_integral_rightConv_axis_mul_conj_eq_mul_iwasawa_integral_of_flat10 below · depth 28 - Uniform rapid decay of the Iwasawa integral along the unitary axis
AutomorphicForm.exists_forall_norm_iwasawa_integral_axis_add_norm_deriv_le_mul_rpow_neg_archParam_of_isUnitFactorization18 below · depth 28 - Unipotent term in Iwasawa coordinates via rank-one Tate integrals
AutomorphicForm.exists_forall_integral_iwasawa_cuspKernel_sub_cuspTruncation_eq_sum_mul_setIntegral_rankOne_of_sigmaInvariant_unram_ed2197 below · depth 29 - One winding datum for all K-side Hecke words
AutomorphicForm.exists_windingDatum_forall_heckeWord_mul_sum_slotFamilyCoeff_mul_sum_classIntegral_eq_sum_satakeLaurent_mul_coeff116 below · depth 29 - Iwasawa evaluation of a truncated pairing of induced sections
AutomorphicForm.integral_rationalTorusUnipotentQuotient_section_mul_conj_eq_mul_setIntegral_iwasawa24 below · depth 29 - Hecke word indicators are semi-local test functions
AutomorphicForm.isSemiLocalTestFn_sum_indicator_semiLocalIntegralSet_word0 below · depth 29 - Unweighted split-class expansion of the ground-field hyperbolic slope
AutomorphicForm.slope_eq_sum_unweighted_classIntegral_diagUnits2_of_inversionClosed_of_hyperbolicTerm_eq_affine227 below · depth 29 - Iwasawa unfolding of the unipotent term, semi-locally factorizable case
UnipotentTermUnfolding.exists_forall_integrableOn_and_lintegral_ne_top_and_setIntegral_unipotentTerm_eq_mul_integral_iwasawa_of_isSemiLocalFactorization102 below · depth 29 - Fibrewise finiteness of the unipotent term in Iwasawa coordinates
UnipotentTermUnfolding.forall_exists_lintegral_iwasawa_tsum_tsum_enorm_sub_ne_top_of_isSemiLocalFactorization102 below · depth 29 - Measurable fundamental domain for the principal K-ideles in A_L^×
AutomorphicForm.TransversalMeasure.exists_measurableSet_isFundamentalDomain_idelesBaseChange_principal10 below · depth 30 - Vanishing of the twisted unipotent term off the saturated set
AutomorphicForm.TwistedBruhat.apply_unipotent_diagOne_act_eq_zero_of_not_mem_saturated_of_isSemiLocalFactorization_unram8 below · depth 30 - Twisted unipotent term: transversal descent to rank-one Tate data
AutomorphicForm.TwistedBruhat.exists_forall_integral_transversal_finsum_tracePushforward_sub_eq_finsum_indicator_prod_twistedLocalFactor_sub_unram79 below · depth 30 - Transversal descent and dilation of the unfolded unipotent term
AutomorphicForm.TwistedBruhat.integrableOn_and_integral_finsum_tracePushforward_sub_eq_sum_mul_setIntegral_rankOne_of_transversal16 below · depth 30 - Centre removal in the Iwasawa integral of the twisted cusp kernel
AutomorphicForm.TwistedBruhat.integral_iwasawa_indicator_cuspKernel_sub_cuspTruncation_eq_measure_mul_integral_of_sigmaInvariant_ed221 below · depth 30 - Removing the central variable from the unipotent-type Iwasawa lower integral
AutomorphicForm.TwistedBruhat.lintegral_iwasawa_indicator_tsum_tsum_enorm_sub_eq_measure_mul_lintegral_of_sigmaInvariant20 below · depth 30 - Unfolding the unipotent term along centre, torus and trace
AutomorphicForm.TwistedBruhat.lintegral_ne_top_and_integral_iwasawa_cuspKernel_sub_cuspTruncation_eq_mul_integral_finsum_tracePushforward_sub118 below · depth 30 - Hyperbolic slope and intercept as sums of orbital integrals
AutomorphicForm.exists_finset_forall_slope_eq_sum_classIntegral_and_intercept_eq_sum_weightedClassIntegral_of_hyperbolicTerm_eq_affine225 below · depth 30 - Twisted hyperbolic slope and intercept as twisted orbital class sums
AutomorphicForm.exists_finset_forall_slope_eq_sum_twistedClassIntegral_and_intercept_eq_sum_weightedTwistedClassIntegral_haarQuotient_of_eq_affine241 below · depth 30 - Unfolding Borel-coset sums into Iwasawa coordinates
AutomorphicForm.exists_forall_setLIntegral_tsum_borelSubgroup_cosets_eq_mul_lintegral_iwasawa15 below · depth 30 - The K-side class sum as a winding-datum coefficient array
AutomorphicForm.exists_windingDatum_forall_coeff_eq_mul_finsum_mul_prod_zpow_neg_mul_ideleNorm_mul_integral_orbital_of_smul_eq_map_partAt_of_ne_one_unweighted74 below · depth 30 - Windowed Iwasawa factorisation for induced sections on GL₂
AutomorphicForm.integral_rationalTorusUnipotentQuotient_section_mul_conj_eq_mul_setIntegral_iwasawa_of_window21 below · depth 30 - Hyperbolic class sums of a Hecke word as winding pairing
AutomorphicForm.sum_slotFamilyCoeff_mul_sum_mul_integral_orbital_eq_sum_prod_mul_windingDatum_coeff_of_forall_coeff_eq_of_smul_eq_map_partAt_of_ne_one_unweighted76 below · depth 30 - Uniqueness of Haar measure on the idele group
NumberField.Idele.exists_forall_measure_eq_mul_idelicHaar0 below · depth 30 - Existence of a product-measure datum with prescribed ord and S-part
NumberField.Idele.exists_productMeasureData_ord_eq_and_projS_eq_and_smul_eq_map_partAt0 below · depth 30 - Shift-invariance and finiteness of idelic norm shells
NumberField.Idele.idelicHaar_inter_setOf_mul_ideleNorm_sq_mem_Icc_eq16 below · depth 30 - Transversal measures on the ideles of an extension L/K
TwistedUnipotentTerm.exists_transversal23 below · depth 30 - Finiteness of the cusp-kernel truncation error over a Siegel shell
UnipotentTermCuspBound.exists_forall_setLIntegral_tsum_setLIntegral_enorm_cuspKernel_sub_cuspTruncation_ne_top91 below · depth 30 - Finiteness of the truncated unipotent-type term over Borel fibres
UnipotentTermCuspBound.exists_forall_setLIntegral_tsum_setLIntegral_enorm_mul_tsum_tsum_enorm_sub_ne_top90 below · depth 30 - Iwasawa unfolding of the unipotent cusp-kernel term
UnipotentTermUnfolding.exists_forall_setIntegral_unipotentTerm_eq_mul_integral_iwasawa30 below · depth 30 - Transversal integral of the unramified twisted unipotent term as a pure tensor
AutomorphicForm.TwistedBruhat.exists_forall_integral_transversal_tracePushforward_eq_indicator_prod_twistedLocalFactor_unram76 below · depth 31 - Lattice sum and constant term commute with transversal integrals
AutomorphicForm.TwistedBruhat.forall_integral_transversal_finsum_tracePushforward_sub_eq_finsum_integral_transversal_sub_unram42 below · depth 31 - Transversal descent of the unipotent fold to rank-one integrals
AutomorphicForm.TwistedBruhat.integrableOn_and_integral_unipotentFold_eq_sum_mul_setIntegral_rankOne_of_invariance_of_dilation_of_ne_top2 below · depth 31 - Fibrewise collapse of the twisted cusp kernel Iwasawa integral
AutomorphicForm.TwistedBruhat.integral_iwasawa_cuspKernel_sub_cuspTruncation_eq_integral_tsum_normOneFibre_of_fibrewise5 below · depth 31 - Unfolding norm-one fibres onto the unit fibre
AutomorphicForm.TwistedBruhat.integral_iwasawa_tsum_normOneFibre_eq_integral_unitFibre_of_fibrewise13 below · depth 31 - Unfolding the twisted unipotent kernel along the trace fibration
AutomorphicForm.TwistedBruhat.lintegral_ne_top_and_integral_iwasawa_unitFibre_eq_mul_integral_finsum_tracePushforward_sub112 below · depth 31 - Measurability of the twisted unipotent fold
AutomorphicForm.TwistedBruhat.measurable_unipotentFold4 below · depth 31 - Base-changed ideles fold out of the twisted Bruhat integral
AutomorphicForm.TwistedBruhat.unipotentFold_mul_idelesBaseChange_eq_mul_integral_finsum_tracePushforward_sub4 below · depth 31 - Invariance of the twisted Bruhat fold under K^×
AutomorphicForm.TwistedBruhat.unipotentFold_mul_idelesBaseChange_map_algebraMap_eq8 below · depth 31 - Independence of the local orbital integral from the section function
AutomorphicForm.eq_of_isOrbitalIntegral_of_isOrbitalIntegral_of_isRegularSemisimple3 below · depth 31 - Finitely many ratios carry a non-zero window product
AutomorphicForm.exists_finset_forall_window_product_eq_zero_of_not_mem14 below · depth 31 - Hyperbolic class sums as finite sums of twisted lattice sums
AutomorphicForm.exists_forall_finsum_mul_prod_zpow_neg_mul_ideleNorm_mul_integral_orbital_eq_sum_tsum_ite_of_smul_eq_map_partAt_of_ne_one72 below · depth 31 - One winding datum for all Hecke words (window side)
AutomorphicForm.exists_windingDatum_forall_heckeWord_mul_sum_slotFamilyCoeff_mul_sum_windowClassIntegral_eq_sum_satakeLaurent_mul_coeff302 below · depth 31 - Window cancellation at a non-norm idele, prime degree
AutomorphicForm.finrank_mul_ratio_mul_weightedClassIntegral_add_mul_window_eq_zero_of_mem_sup_of_not_mem_range_of_prime339 below · depth 31 - Non-normic split classes: vanishing of the weighted window combination
AutomorphicForm.finrank_mul_ratio_mul_weightedClassIntegral_add_mul_window_eq_zero_of_ratio_not_mem_range_norm_of_prime344 below · depth 31 - Integrability of the S-part orbital-integral window at diag(u,1)
AutomorphicForm.integrable_mul_orbital_mul_prod_orbital_sPart_of_isArchTestFactor_of_isLocalTestFn32 below · depth 31 - Centre-integrated Euler factorisation of a hyperbolic class integral
AutomorphicForm.integral_mul_orbital_centralScalar_eq_mul_ideleNorm_mul_prod_tsum_mul_integral_of_isUnitFactorization_of_integrable23 below · depth 31 - Local constancy and integrability of the split-family window product
AutomorphicForm.isLocallyConstant_finprod_unitValue_and_integrable_window_product_of_ne_one_of_isLocalTestFn60 below · depth 31 - Measurability of window values in the central idele parameter
AutomorphicForm.measurable_window_values_of_ne_one_of_prime59 below · depth 31 - Vanishing of the ∞–S orbital window from class vanishing
AutomorphicForm.mul_prod_orbital_eq_zero_of_forall_apply_conj_centralScalar_mul_diagUnits2_eq_zero6 below · depth 31 - Per-class window transfer for twisted weighted orbital integrals
AutomorphicForm.twistedWeightedClassIntegral_eq_finrank_mul_ratio_mul_weightedClassIntegral_add_mul_window_of_coupled_of_isSemiLocalFactorization76 below · depth 31 - Invariance of window values under (u,z)↦(u⁻¹,zu)
AutomorphicForm.window_values_inv_mul_unitsMap_eq_of_ne_one_of_prime26 below · depth 31 - Local norm of a principal idele as a power of ‖varpiᵥ‖
NumberField.Idele.norm_algebraMap_adicCompletion_eq_norm_uniformizer_zpow_ord0 below · depth 31 - Transversal measure identity over a K^×-fundamental domain
AutomorphicForm.TransversalMeasure.setLIntegral_fundamentalDomain_inter_saturated_eq_mul_setLIntegral_lintegral_sum_of_transversal0 below · depth 32 - Word-independent factorisation of unramified unipotent twisted transversal integrals
AutomorphicForm.TwistedBruhat.exists_forall_integral_transversal_eq_indicator_mul_prod_unipotentOrbitalFn_unram69 below · depth 32 - Effective support, uniform bound and continuity of the twisted unipotent integrand
AutomorphicForm.TwistedBruhat.exists_isCompact_forall_unipotentTwist_traceFibre_bound_and_eq_zero_unram39 below · depth 32 - Unipotent merge: fundamental-domain integral as trace push-forward sum
AutomorphicForm.TwistedBruhat.integrableOn_and_setIntegral_finsum_trace_ne_zero_unipotentMerge_eq_mul_finsum_tracePushforward6 below · depth 32 - Truncated twisted constant term integrated over a fundamental domain
AutomorphicForm.TwistedBruhat.integrableOn_and_setIntegral_indicator_constantTerm_unitFibre_eq_mul_ite_integral_tracePushforward10 below · depth 32 - Fubini interchange of trace push-forward with transversal integrals
AutomorphicForm.TwistedBruhat.integral_transversal_tracePushforward_eq_tracePushforward_integral_of_bound2 below · depth 32 - Archimedean window for split-torus orbital integrals on GL₂
AutomorphicForm.exists_contDiff_hasCompactSupport_tsupport_subset_units_prod_norm_sub_one_pow_mul_eq_of_isOrbitalIntegralOn_glArch_centralScalar_mul_diagUnits220 below · depth 32 - Uniform smooth archimedean window for split orbital integrals
AutomorphicForm.exists_contDiff_hasCompactSupport_tsupport_subset_units_prod_norm_sub_one_pow_mul_eq_of_isOrbitalIntegralOn_glArch_centralScalar_mul_diagUnits2_of_ne_one20 below · depth 32 - One continuous compactly supported window for twisted archimedean orbital integrals
AutomorphicForm.exists_continuous_hasCompactSupport_eq_of_isTwistedWeightedOrbitalIntegralOn_glArch_centralScalar_mul_diagUnits216 below · depth 32 - A single archimedean window for weighted split orbital integrals
AutomorphicForm.exists_continuous_hasCompactSupport_tsupport_subset_units_eq_of_isWeightedOrbitalIntegralOn_glArch_centralScalar_mul_diagUnits220 below · depth 32
… and 86 more statements (search for the module name to find them).