Definitions/Def_AutomorphicForm_SmoothingKernel.lean
Archimedean smoothing kernels for adelic GL_n
For a finite index type \iota the module sets up archimedean test functions on \mathrm{GL}_\iota of the infinite adeles and a concrete example for \iota=\mathrm{Fin}\,3, F=\mathbb{Q}. Basic constructions: transposeInvN sends g\in\mathrm{GL}_\iota(R) to the unit with value (g^{-1})^{\mathsf T} and inverse g^{\mathsf T} (an anti-involutive group homomorphism, proved multiplicative and of order two); archEntriesN reads the entries of g\in\mathrm{GL}_\iota(F_\infty) in the mixed space \mathbb{R}^{r_1}\times\mathbb{C}^{r_2} via the ring isomorphism of the infinite adele ring; orthN is the set of k with k^{\mathsf T}k=1. A function \alpha:\mathrm{GL}_\iota(F_\infty)\to\mathbb{C} satisfies IsLeftOrthFiniteN when a single finite set S of functions has \mathbb{C}-span containing every translate x\mapsto\alpha(kx), k\in\mathrm{orthN}; it satisfies IsArchTestFactorN when \alpha=\Phi\circ\mathrm{archEntriesN} for some \Phi smooth (C^\infty over \mathbb{R}) on the entry array and \alpha has compact support; IsSmoothingKernelN is the conjunction. Further: archInclN, finInclN place a matrix at the infinite, resp. finite, adeles with 1 elsewhere (entrywise, hence monoid maps; their images commute); archGLHaarN is Haar measure for the Borel \sigma-algebra archGLBorelN on the locally compact group \mathrm{GL}_\iota(F_\infty), used to define \mathrm{conv}(\Psi,\alpha)(x)=\int\Psi(xh)\alpha(h)\,dh and its adelic analogue \mathrm{archConv}(\Phi,\alpha)(g)=\int\Phi(g\cdot\mathrm{archInclN}\,h)\alpha(h)\,dh, with right-translation and factorisation lemmas; compactHaarN is normalised Haar (a probability measure) on a compact open-type subgroup U of \mathrm{GL}_\iota(\mathbb{A}_F^f) and finAvgN averages \Phi over U, fixing U-right-invariant functions. Finally an explicit kernel is built for \mathrm{GL}_3/\mathbb{Q}: from \mathrm{tr}(M^{\mathsf T}M), \det(M)^2, the transposed adjugate and three smooth bump functions one forms standardKernelCore, invariant under M\mapsto kM (k orthogonal) and M\mapsto (M^{-1})^{\mathsf T}, with \mathrm{standardKernelCore}(1)=1 and support contained in a region where the entry sizes of M and M^{-1} are bounded by 8. Its transport standardKernel to \mathrm{GL}_3(\mathbb{Q}_\infty) is shown to be a smoothing kernel, invariant under transposeInvN, with value 1 at the identity, yielding an existence statement for such kernels.
Relation to Mathlib
The smoothing-kernel predicates, the adelic placement maps and the averaging operators are the project's own; they are built on Mathlib's adele and infinite adele rings, ContDiffBump, HasCompactSupport and Haar measure, and the measures are obtained from Mathlib's Measure.haar and Measure.haarMeasure for explicitly chosen Borel structures.
Where it is used
These test functions are the archimedean factors used to smooth automorphic forms on \mathrm{GL}_3 of the adeles in the Langlands–Tunnell step, where a cuspidal automorphic representation attached to the mod-3 representation of the Frey curve is produced; the explicit \mathrm{GL}_3/\mathbb{Q} kernel provides a nonzero such factor with value 1 at the identity.
References
- H. Darmon, F. Diamond and R. Taylor, Fermat's Last Theorem, in: Current Developments in Mathematics 1995, International Press, 1995, 1–154
- J. Tunnell, Artin's conjecture for representations of octahedral type, Bulletin of the American Mathematical Society (N.S.) 5 (1981), 173–175
- R. P. Langlands, Base Change for GL(2), Annals of Mathematics Studies 96, Princeton University Press, 1980
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 980 lines
- 156 declarations
- used in the statements of 207 theorems and imported by 223 proofs
- imports 1 definition modules
Source file: Definitions/Def_AutomorphicForm_SmoothingKernel.lean
Declarations
- def
AutomorphicForm.transposeInvN - theorem
AutomorphicForm.coe_transposeInvN - theorem
AutomorphicForm.coe_inv_transposeInvN - theorem
AutomorphicForm.transposeInvN_transposeInvN - theorem
AutomorphicForm.transposeInvN_mul - def
AutomorphicForm.archEntriesN - theorem
AutomorphicForm.archEntriesN_apply - def
AutomorphicForm.orthN - def
AutomorphicForm.IsLeftOrthFiniteN - theorem
AutomorphicForm.isLeftOrthFiniteN_zero - def
AutomorphicForm.IsArchTestFactorN - theorem
AutomorphicForm.isArchTestFactorN_zero - def
AutomorphicForm.IsSmoothingKernelN - theorem
AutomorphicForm.isSmoothingKernelN_zero - def
AutomorphicForm.archMatrixInclN - theorem
AutomorphicForm.adeleArch_archMatrixInclN - theorem
AutomorphicForm.adeleFin_archMatrixInclN - theorem
AutomorphicForm.archMatrixInclN_one - theorem
AutomorphicForm.archMatrixInclN_mul - def
AutomorphicForm.archMatrixInclHomN - def
AutomorphicForm.archInclN - theorem
AutomorphicForm.archComponentN_archInclN - theorem
AutomorphicForm.componentAtN_archInclN - theorem
AutomorphicForm.archComponentN_mul_archInclN - theorem
AutomorphicForm.componentAtN_mul_archInclN - def
AutomorphicForm.archGLBorelN - theorem
AutomorphicForm.borelSpace_archGLBorelN - theorem
AutomorphicForm.locallyCompactSpace_archGLN - def
AutomorphicForm.archGLHaarN - theorem
AutomorphicForm.isHaarMeasure_archGLHaarN - def
AutomorphicForm.convN - def
AutomorphicForm.archConvN - theorem
AutomorphicForm.convN_apply - theorem
AutomorphicForm.archConvN_apply - theorem
AutomorphicForm.convN_zero_left - theorem
AutomorphicForm.convN_zero_right - theorem
AutomorphicForm.archConvN_zero_left - theorem
AutomorphicForm.archConvN_zero_right - theorem
AutomorphicForm.archConvN_comp_mul_left - theorem
AutomorphicForm.convN_mul_right - theorem
AutomorphicForm.archConvN_eq_convN_mul - def
AutomorphicForm.finMatrixInclN - theorem
AutomorphicForm.adeleArch_finMatrixInclN - theorem
AutomorphicForm.adeleFin_finMatrixInclN - theorem
AutomorphicForm.finMatrixInclN_one - theorem
AutomorphicForm.finMatrixInclN_mul - def
AutomorphicForm.finMatrixInclHomN - def
AutomorphicForm.finInclN - theorem
AutomorphicForm.archComponentN_finInclN - theorem
AutomorphicForm.componentAtN_finInclN - theorem
AutomorphicForm.archMatrixInclN_mul_finMatrixInclN - theorem
AutomorphicForm.finInclN_mul_archInclN - theorem
AutomorphicForm.archConvN_mul_finInclN - def
AutomorphicForm.compactBorelN - theorem
AutomorphicForm.borelSpace_compactBorelN - def
AutomorphicForm.compactHaarN - theorem
AutomorphicForm.isProbabilityMeasure_compactHaarN - theorem
AutomorphicForm.isMulLeftInvariant_compactHaarN - def
AutomorphicForm.finAvgN - theorem
AutomorphicForm.finAvgN_apply - theorem
AutomorphicForm.finAvgN_eq_self - theorem
AutomorphicForm.finAvgN_comp_mul_left - theorem
AutomorphicForm.finAvgN_mul_finInclN - def
AutomorphicForm.StandardKernel.entrySize - theorem
AutomorphicForm.StandardKernel.entrySize_eq_sum - theorem
AutomorphicForm.StandardKernel.entrySize_nonneg - theorem
AutomorphicForm.StandardKernel.entry_sq_le_entrySize - theorem
AutomorphicForm.StandardKernel.entrySize_transpose - theorem
AutomorphicForm.StandardKernel.entrySize_smul - theorem
AutomorphicForm.StandardKernel.entrySize_one - theorem
AutomorphicForm.StandardKernel.entrySize_mul_of_orth - theorem
AutomorphicForm.StandardKernel.adjugate_eq_det_smul_inv - def
AutomorphicForm.StandardKernel.adjugateT - theorem
AutomorphicForm.StandardKernel.adjugateT_one - theorem
AutomorphicForm.StandardKernel.transpose_inv_eq - theorem
AutomorphicForm.StandardKernel.det_sq_of_orth - theorem
AutomorphicForm.StandardKernel.entrySize_adjugateT_mul_of_orth - theorem
AutomorphicForm.StandardKernel.adjugateT_transpose_inv - theorem
AutomorphicForm.StandardKernel.det_transpose_inv - def
AutomorphicForm.StandardKernel.detSq - theorem
AutomorphicForm.StandardKernel.detSq_one - theorem
AutomorphicForm.StandardKernel.detSq_mul_of_orth - theorem
AutomorphicForm.StandardKernel.detSq_transpose_inv - theorem
AutomorphicForm.StandardKernel.detSq_nonneg - theorem
AutomorphicForm.StandardKernel.entrySize_transpose_inv - theorem
AutomorphicForm.StandardKernel.entrySize_adjugateT_transpose_inv - def
AutomorphicForm.StandardKernel.unitCutoff - def
AutomorphicForm.StandardKernel.reciprocalCutoff - theorem
AutomorphicForm.StandardKernel.reciprocalCutoff_eq_inv - theorem
AutomorphicForm.StandardKernel.reciprocalCutoff_eq_zero - theorem
AutomorphicForm.StandardKernel.contDiff_reciprocalCutoff - def
AutomorphicForm.StandardKernel.logBump - def
AutomorphicForm.StandardKernel.detCutoff - theorem
AutomorphicForm.StandardKernel.detCutoff_of_pos - theorem
AutomorphicForm.StandardKernel.detCutoff_of_nonpos - theorem
AutomorphicForm.StandardKernel.detCutoff_inv - theorem
AutomorphicForm.StandardKernel.detCutoff_one - theorem
AutomorphicForm.StandardKernel.mem_of_detCutoff_ne_zero - theorem
AutomorphicForm.StandardKernel.detCutoff_eq_zero_of_lt_half - theorem
AutomorphicForm.StandardKernel.contDiff_detCutoff - def
AutomorphicForm.StandardKernel.sizeBump - theorem
AutomorphicForm.StandardKernel.sizeBump_six - theorem
AutomorphicForm.StandardKernel.lt_eight_of_sizeBump_ne_zero - def
AutomorphicForm.StandardKernel.sizeInvariant - def
AutomorphicForm.StandardKernel.standardKernelCore - theorem
AutomorphicForm.StandardKernel.sizeInvariant_one - theorem
AutomorphicForm.StandardKernel.standardKernelCore_one - theorem
AutomorphicForm.StandardKernel.standardKernelCore_mul_of_orth - theorem
AutomorphicForm.StandardKernel.standardKernelCore_transpose_inv - theorem
AutomorphicForm.StandardKernel.bound_of_standardKernelCore_ne_zero - def
AutomorphicForm.StandardKernel.coreOfEntries - theorem
AutomorphicForm.StandardKernel.coreOfEntries_apply - theorem
AutomorphicForm.StandardKernel.contDiff_entrySize_of - theorem
AutomorphicForm.StandardKernel.contDiff_detSq_of - theorem
AutomorphicForm.StandardKernel.contDiff_entrySize_adjugateT_of - theorem
AutomorphicForm.StandardKernel.contDiff_coreOfEntries - def
AutomorphicForm.StandardKernel.realCoord - theorem
AutomorphicForm.StandardKernel.realCoord_apply - def
AutomorphicForm.StandardKernel.ofReal - theorem
AutomorphicForm.StandardKernel.continuous_ofReal - theorem
AutomorphicForm.StandardKernel.ofReal_realCoord - def
AutomorphicForm.StandardKernel.realGL - def
AutomorphicForm.StandardKernel.realMat - theorem
AutomorphicForm.StandardKernel.realMat_eq - theorem
AutomorphicForm.StandardKernel.realMat_mul - theorem
AutomorphicForm.StandardKernel.realMat_inv - theorem
AutomorphicForm.StandardKernel.realMat_one - theorem
AutomorphicForm.StandardKernel.realMat_transposeInvN - theorem
AutomorphicForm.StandardKernel.realMat_orth - def
AutomorphicForm.StandardKernel.standardKernel - theorem
AutomorphicForm.StandardKernel.standardKernel_one - theorem
AutomorphicForm.StandardKernel.standardKernel_ne_zero - theorem
AutomorphicForm.StandardKernel.standardKernel_transposeInvN - theorem
AutomorphicForm.StandardKernel.standardKernel_comp_transposeInvN - theorem
AutomorphicForm.StandardKernel.standardKernel_mul_of_mem_orthN - theorem
AutomorphicForm.StandardKernel.isLeftOrthFiniteN_standardKernel - def
AutomorphicForm.StandardKernel.mixedCoord - theorem
AutomorphicForm.StandardKernel.mixedCoord_ringEquiv - theorem
AutomorphicForm.StandardKernel.contDiff_mixedCoord - def
AutomorphicForm.StandardKernel.entryFunction - theorem
AutomorphicForm.StandardKernel.contDiff_entryFunction - theorem
AutomorphicForm.StandardKernel.standardKernel_eq_entryFunction - def
AutomorphicForm.StandardKernel.entryBox - theorem
AutomorphicForm.StandardKernel.isCompact_entryBox - theorem
AutomorphicForm.StandardKernel.mem_entryBox_of_entrySize_le - def
AutomorphicForm.StandardKernel.adelicEntryBox - theorem
AutomorphicForm.StandardKernel.isCompact_adelicEntryBox - theorem
AutomorphicForm.StandardKernel.mem_adelicEntryBox_of_entrySize_le - def
AutomorphicForm.StandardKernel.carrierSet - theorem
AutomorphicForm.StandardKernel.isCompact_carrierSet - theorem
AutomorphicForm.StandardKernel.isClosed_carrierSet - theorem
AutomorphicForm.StandardKernel.mem_carrierSet_of_standardKernel_ne_zero - theorem
AutomorphicForm.StandardKernel.hasCompactSupport_standardKernel - theorem
AutomorphicForm.StandardKernel.isArchTestFactorN_standardKernel - theorem
AutomorphicForm.StandardKernel.isSmoothingKernelN_standardKernel - theorem
AutomorphicForm.StandardKernel.exists_isSmoothingKernelN_transposeInvN_one
Source
import Definitions.Def_LanglandsTunnell_CubicInduction_Carrier import Mathlib.Analysis.Calculus.ContDiff.Defs ↗ import Mathlib.Analysis.Calculus.BumpFunction.Basic ↗ import Mathlib.Analysis.Calculus.ContDiff.Operations ↗ import Mathlib.Analysis.SpecialFunctions.Log.Deriv ↗ import Mathlib.LinearAlgebra.Matrix.Adjugate ↗ import Mathlib.LinearAlgebra.Matrix.NonsingularInverse ↗ set_option autoImplicit false section Vocabulary open NumberField IsDedekindDomain MeasureTheory LanglandsTunnell.CubicInduction open scoped Matrix noncomputable section open scoped Classical namespace AutomorphicForm variable (ι : Type) [Fintype ι] [DecidableEq ι] section TransposeInverse variable {R : Type*} [CommRing R] noncomputable def transposeInvN (g : GL ι R) : GL ι R where val := ((g⁻¹ : GL ι R) : Matrix ι ι R)ᵀ inv := ((g : GL ι R) : Matrix ι ι R)ᵀ val_inv := by rw [← Matrix.transpose_mul, Units.mul_inv, Matrix.transpose_one] inv_val := by rw [← Matrix.transpose_mul, Units.inv_mul, Matrix.transpose_one] theorem coe_transposeInvN (g : GL ι R) : ((transposeInvN ι g : GL ι R) : Matrix ι ι R) = ((g⁻¹ : GL ι R) : Matrix ι ι R)ᵀ := rfl theorem coe_inv_transposeInvN (g : GL ι R) : (((transposeInvN ι g)⁻¹ : GL ι R) : Matrix ι ι R) = ((g : GL ι R) : Matrix ι ι R)ᵀ := rfl theorem transposeInvN_transposeInvN (g : GL ι R) : transposeInvN ι (transposeInvN ι g) = g := Units.ext (by rw [coe_transposeInvN, coe_inv_transposeInvN, Matrix.transpose_transpose]) theorem transposeInvN_mul (g h : GL ι R) : transposeInvN ι (g * h) = transposeInvN ι g * transposeInvN ι h := Units.ext (by simp only [Units.val_mul, coe_transposeInvN, mul_inv_rev, Matrix.transpose_mul]) end TransposeInverse section Kernels variable (F : Type) [Field F] noncomputable def archEntriesN (g : GL ι (InfiniteAdeleRing F)) : ι → ι → mixedEmbedding.mixedSpace F := fun i j => InfiniteAdeleRing.ringEquiv_mixedSpace F ((g : Matrix ι ι (InfiniteAdeleRing F)) i j) theorem archEntriesN_apply (g : GL ι (InfiniteAdeleRing F)) (i j : ι) : archEntriesN ι F g i j = InfiniteAdeleRing.ringEquiv_mixedSpace F ((g : Matrix ι ι (InfiniteAdeleRing F)) i j) := rfl noncomputable def orthN : Set (GL ι (InfiniteAdeleRing F)) := {k | (k : Matrix ι ι (InfiniteAdeleRing F))ᵀ * k = 1} noncomputable def IsLeftOrthFiniteN (α : GL ι (InfiniteAdeleRing F) → ℂ) : Prop := ∃ S : Finset (GL ι (InfiniteAdeleRing F) → ℂ), ∀ k ∈ orthN ι F, (fun x => α (k * x)) ∈ Submodule.span ℂ (S : Set (GL ι (InfiniteAdeleRing F) → ℂ)) theorem isLeftOrthFiniteN_zero : IsLeftOrthFiniteN ι F (fun _ => 0) := ⟨∅, fun _ _ => Submodule.zero_mem _⟩ variable [NumberField F] noncomputable def IsArchTestFactorN (α : GL ι (InfiniteAdeleRing F) → ℂ) : Prop := (∃ Φ : (ι → ι → mixedEmbedding.mixedSpace F) → ℂ, ContDiff ℝ (⊤ : ℕ∞) Φ ∧ ∀ g, α g = Φ (archEntriesN ι F g)) ∧ HasCompactSupport α theorem isArchTestFactorN_zero : IsArchTestFactorN ι F (fun _ => 0) := ⟨⟨fun _ => 0, contDiff_const, fun _ => rfl⟩, HasCompactSupport.zero⟩ noncomputable def IsSmoothingKernelN (α : GL ι (InfiniteAdeleRing F) → ℂ) : Prop := IsArchTestFactorN ι F α ∧ IsLeftOrthFiniteN ι F α theorem isSmoothingKernelN_zero : IsSmoothingKernelN ι F (fun _ => 0) := ⟨isArchTestFactorN_zero ι F, isLeftOrthFiniteN_zero ι F⟩ end Kernels section Inclusion variable (F : Type) [Field F] [NumberField F] noncomputable def archMatrixInclN (M : Matrix ι ι (InfiniteAdeleRing F)) : Matrix ι ι (AdeleRing (𝓞 F) F) := Matrix.of fun i j => ((M i j, (1 : Matrix ι ι (FiniteAdeleRing (𝓞 F) F)) i j) : InfiniteAdeleRing F × FiniteAdeleRing (𝓞 F) F) omit [Fintype ι] in theorem adeleArch_archMatrixInclN (M : Matrix ι ι (InfiniteAdeleRing F)) (i j : ι) : AdelicLevel.adeleArch (𝓞 F) F (archMatrixInclN ι F M i j) = M i j := rfl omit [Fintype ι] in theorem adeleFin_archMatrixInclN (M : Matrix ι ι (InfiniteAdeleRing F)) (i j : ι) : AdelicLevel.adeleFin (𝓞 F) F (archMatrixInclN ι F M i j) = (1 : Matrix ι ι (FiniteAdeleRing (𝓞 F) F)) i j := rfl omit [Fintype ι] in theorem archMatrixInclN_one : archMatrixInclN ι F (1 : Matrix ι ι (InfiniteAdeleRing F)) = 1 := by ext i j refine Prod.ext ?_ ?_ · change (1 : Matrix ι ι (InfiniteAdeleRing F)) i j = AdelicLevel.adeleArch (𝓞 F) F ((1 : Matrix ι ι (AdeleRing (𝓞 F) F)) i j) by_cases hij : i = j · subst hij simp · simp [hij] · change (1 : Matrix ι ι (FiniteAdeleRing (𝓞 F) F)) i j = AdelicLevel.adeleFin (𝓞 F) F ((1 : Matrix ι ι (AdeleRing (𝓞 F) F)) i j) by_cases hij : i = j · subst hij simp · simp [hij] theorem archMatrixInclN_mul (M N : Matrix ι ι (InfiniteAdeleRing F)) : archMatrixInclN ι F (M * N) = archMatrixInclN ι F M * archMatrixInclN ι F N := by ext i j refine Prod.ext ?_ ?_ · change (M * N) i j = AdelicLevel.adeleArch (𝓞 F) F ((archMatrixInclN ι F M * archMatrixInclN ι F N) i j) simp only [Matrix.mul_apply] rw [map_sum] refine Finset.sum_congr rfl fun k _ => ?_ rw [map_mul, adeleArch_archMatrixInclN, adeleArch_archMatrixInclN] · change (1 : Matrix ι ι (FiniteAdeleRing (𝓞 F) F)) i j = AdelicLevel.adeleFin (𝓞 F) F ((archMatrixInclN ι F M * archMatrixInclN ι F N) i j) rw [Matrix.mul_apply, map_sum] simp only [map_mul, adeleFin_archMatrixInclN] rw [← Matrix.mul_apply, Matrix.one_mul] noncomputable def archMatrixInclHomN : Matrix ι ι (InfiniteAdeleRing F) →* Matrix ι ι (AdeleRing (𝓞 F) F) where toFun := archMatrixInclN ι F map_one' := archMatrixInclN_one ι F map_mul' := archMatrixInclN_mul ι F noncomputable def archInclN : GL ι (InfiniteAdeleRing F) →* GL ι (AdeleRing (𝓞 F) F) := Units.map (archMatrixInclHomN ι F) theorem archComponentN_archInclN (h : GL ι (InfiniteAdeleRing F)) : archComponentN ι (𝓞 F) F (archInclN ι F h) = h := by ext i j rfl theorem componentAtN_archInclN (v : HeightOneSpectrum (𝓞 F)) (h : GL ι (InfiniteAdeleRing F)) : componentAtN ι (𝓞 F) F v (archInclN ι F h) = 1 := by refine Matrix.GeneralLinearGroup.ext fun i j => ?_ change AdelicLevel.finAdeleEval (𝓞 F) F v (AdelicLevel.adeleFin (𝓞 F) F (archMatrixInclN ι F (h : Matrix ι ι (InfiniteAdeleRing F)) i j)) = (1 : Matrix ι ι (v.adicCompletion F)) i j rw [adeleFin_archMatrixInclN] by_cases hij : i = j · subst hij simp · simp [hij] theorem archComponentN_mul_archInclN (g : GL ι (AdeleRing (𝓞 F) F)) (h : GL ι (InfiniteAdeleRing F)) : archComponentN ι (𝓞 F) F (g * archInclN ι F h) = archComponentN ι (𝓞 F) F g * h := by rw [map_mul, archComponentN_archInclN] theorem componentAtN_mul_archInclN (v : HeightOneSpectrum (𝓞 F)) (g : GL ι (AdeleRing (𝓞 F) F)) (h : GL ι (InfiniteAdeleRing F)) : componentAtN ι (𝓞 F) F v (g * archInclN ι F h) = componentAtN ι (𝓞 F) F v g := by rw [map_mul, componentAtN_archInclN, mul_one] end Inclusion section Haar variable (F : Type) [Field F] [NumberField F] @[reducible] noncomputable def archGLBorelN : MeasurableSpace (GL ι (InfiniteAdeleRing F)) := borel _ omit [NumberField F] in theorem borelSpace_archGLBorelN : @BorelSpace (GL ι (InfiniteAdeleRing F)) _ (archGLBorelN ι F) := @BorelSpace.mk _ _ (archGLBorelN ι F) rfl theorem locallyCompactSpace_archGLN : LocallyCompactSpace (GL ι (InfiniteAdeleRing F)) := by haveI : LocallyCompactSpace (Matrix ι ι (InfiniteAdeleRing F)) := inferInstanceAs (LocallyCompactSpace (ι → ι → InfiniteAdeleRing F)) exact Units.isClosedEmbedding_embedProduct.locallyCompactSpace noncomputable def archGLHaarN : @Measure (GL ι (InfiniteAdeleRing F)) (archGLBorelN ι F) := by letI := archGLBorelN ι F haveI := borelSpace_archGLBorelN ι F haveI : T2Space (Matrix ι ι (InfiniteAdeleRing F)) := inferInstanceAs (T2Space (ι → ι → InfiniteAdeleRing F)) haveI := locallyCompactSpace_archGLN ι F exact Measure.haar theorem isHaarMeasure_archGLHaarN : @Measure.IsHaarMeasure (GL ι (InfiniteAdeleRing F)) _ _ (archGLBorelN ι F) (archGLHaarN ι F) := by letI := archGLBorelN ι F haveI := borelSpace_archGLBorelN ι F haveI : T2Space (Matrix ι ι (InfiniteAdeleRing F)) := inferInstanceAs (T2Space (ι → ι → InfiniteAdeleRing F)) haveI := locallyCompactSpace_archGLN ι F unfold archGLHaarN infer_instance end Haar section Convolution variable (F : Type) [Field F] [NumberField F] noncomputable def convN (Ψ α : GL ι (InfiniteAdeleRing F) → ℂ) : GL ι (InfiniteAdeleRing F) → ℂ := fun x => (letI := archGLBorelN ι F ∫ h, Ψ (x * h) * α h ∂(archGLHaarN ι F)) noncomputable def archConvN (Φ : GL ι (AdeleRing (𝓞 F) F) → ℂ) (α : GL ι (InfiniteAdeleRing F) → ℂ) : GL ι (AdeleRing (𝓞 F) F) → ℂ := fun g => (letI := archGLBorelN ι F ∫ h, Φ (g * archInclN ι F h) * α h ∂(archGLHaarN ι F)) theorem convN_apply (Ψ α : GL ι (InfiniteAdeleRing F) → ℂ) (x : GL ι (InfiniteAdeleRing F)) : convN ι F Ψ α x = (letI := archGLBorelN ι F; ∫ h, Ψ (x * h) * α h ∂(archGLHaarN ι F)) := rfl theorem archConvN_apply (Φ : GL ι (AdeleRing (𝓞 F) F) → ℂ) (α : GL ι (InfiniteAdeleRing F) → ℂ) (g : GL ι (AdeleRing (𝓞 F) F)) : archConvN ι F Φ α g = (letI := archGLBorelN ι F; ∫ h, Φ (g * archInclN ι F h) * α h ∂(archGLHaarN ι F)) := rfl theorem convN_zero_left (α : GL ι (InfiniteAdeleRing F) → ℂ) : convN ι F (fun _ => 0) α = fun _ => 0 := by funext x simp [convN] theorem convN_zero_right (Ψ : GL ι (InfiniteAdeleRing F) → ℂ) : convN ι F Ψ (fun _ => 0) = fun _ => 0 := by funext x simp [convN] theorem archConvN_zero_left (α : GL ι (InfiniteAdeleRing F) → ℂ) : archConvN ι F (fun _ => 0) α = fun _ => 0 := by funext g simp [archConvN] theorem archConvN_zero_right (Φ : GL ι (AdeleRing (𝓞 F) F) → ℂ) : archConvN ι F Φ (fun _ => 0) = fun _ => 0 := by funext g simp [archConvN] theorem archConvN_comp_mul_left (Φ : GL ι (AdeleRing (𝓞 F) F) → ℂ) (α : GL ι (InfiniteAdeleRing F) → ℂ) (a g : GL ι (AdeleRing (𝓞 F) F)) : archConvN ι F (fun x => Φ (a * x)) α g = archConvN ι F Φ α (a * g) := by simp only [archConvN, mul_assoc] theorem convN_mul_right (Ψ α : GL ι (InfiniteAdeleRing F) → ℂ) (x k : GL ι (InfiniteAdeleRing F)) : convN ι F Ψ α (x * k) = convN ι F Ψ (fun h => α (k⁻¹ * h)) x := by simp only [convN] letI := archGLBorelN ι F haveI := borelSpace_archGLBorelN ι F haveI := isHaarMeasure_archGLHaarN ι F rw [← integral_mul_left_eq_self (fun h => Ψ (x * h) * α (k⁻¹ * h)) k] simp only [mul_assoc, inv_mul_cancel_left] theorem archConvN_eq_convN_mul (Φ : GL ι (AdeleRing (𝓞 F) F) → ℂ) (α Ψ : GL ι (InfiniteAdeleRing F) → ℂ) (B : GL ι (AdeleRing (𝓞 F) F) → ℂ) (hΦ : ∀ g, Φ g = Ψ (archComponentN ι (𝓞 F) F g) * B g) (hB : ∀ g h, B (g * archInclN ι F h) = B g) (g : GL ι (AdeleRing (𝓞 F) F)) : archConvN ι F Φ α g = convN ι F Ψ α (archComponentN ι (𝓞 F) F g) * B g := by simp only [archConvN, convN, hΦ, hB, archComponentN_mul_archInclN] rw [← integral_mul_const] congr 1 funext h ring end Convolution section FiniteInclusion variable (F : Type) [Field F] [NumberField F] noncomputable def finMatrixInclN (M : Matrix ι ι (FiniteAdeleRing (𝓞 F) F)) : Matrix ι ι (AdeleRing (𝓞 F) F) := Matrix.of fun i j => (((1 : Matrix ι ι (InfiniteAdeleRing F)) i j, M i j) : InfiniteAdeleRing F × FiniteAdeleRing (𝓞 F) F) omit [Fintype ι] in theorem adeleArch_finMatrixInclN (M : Matrix ι ι (FiniteAdeleRing (𝓞 F) F)) (i j : ι) : AdelicLevel.adeleArch (𝓞 F) F (finMatrixInclN ι F M i j) = (1 : Matrix ι ι (InfiniteAdeleRing F)) i j := rfl omit [Fintype ι] in theorem adeleFin_finMatrixInclN (M : Matrix ι ι (FiniteAdeleRing (𝓞 F) F)) (i j : ι) : AdelicLevel.adeleFin (𝓞 F) F (finMatrixInclN ι F M i j) = M i j := rfl omit [Fintype ι] in theorem finMatrixInclN_one : finMatrixInclN ι F (1 : Matrix ι ι (FiniteAdeleRing (𝓞 F) F)) = 1 := by ext i j refine Prod.ext ?_ ?_ · change (1 : Matrix ι ι (InfiniteAdeleRing F)) i j = AdelicLevel.adeleArch (𝓞 F) F ((1 : Matrix ι ι (AdeleRing (𝓞 F) F)) i j) by_cases hij : i = j · subst hij simp · simp [hij] · change (1 : Matrix ι ι (FiniteAdeleRing (𝓞 F) F)) i j = AdelicLevel.adeleFin (𝓞 F) F ((1 : Matrix ι ι (AdeleRing (𝓞 F) F)) i j) by_cases hij : i = j · subst hij simp · simp [hij] theorem finMatrixInclN_mul (M N : Matrix ι ι (FiniteAdeleRing (𝓞 F) F)) : finMatrixInclN ι F (M * N) = finMatrixInclN ι F M * finMatrixInclN ι F N := by ext i j refine Prod.ext ?_ ?_ · change (1 : Matrix ι ι (InfiniteAdeleRing F)) i j = AdelicLevel.adeleArch (𝓞 F) F ((finMatrixInclN ι F M * finMatrixInclN ι F N) i j) rw [Matrix.mul_apply, map_sum] simp only [map_mul, adeleArch_finMatrixInclN] rw [← Matrix.mul_apply, Matrix.one_mul] · change (M * N) i j = AdelicLevel.adeleFin (𝓞 F) F ((finMatrixInclN ι F M * finMatrixInclN ι F N) i j) simp only [Matrix.mul_apply] rw [map_sum] refine Finset.sum_congr rfl fun k _ => ?_ rw [map_mul, adeleFin_finMatrixInclN, adeleFin_finMatrixInclN] noncomputable def finMatrixInclHomN : Matrix ι ι (FiniteAdeleRing (𝓞 F) F) →* Matrix ι ι (AdeleRing (𝓞 F) F) where toFun := finMatrixInclN ι F map_one' := finMatrixInclN_one ι F map_mul' := finMatrixInclN_mul ι F noncomputable def finInclN : GL ι (FiniteAdeleRing (𝓞 F) F) →* GL ι (AdeleRing (𝓞 F) F) := Units.map (finMatrixInclHomN ι F) theorem archComponentN_finInclN (u : GL ι (FiniteAdeleRing (𝓞 F) F)) : archComponentN ι (𝓞 F) F (finInclN ι F u) = 1 := by ext i j rfl theorem componentAtN_finInclN (v : HeightOneSpectrum (𝓞 F)) (u : GL ι (FiniteAdeleRing (𝓞 F) F)) : componentAtN ι (𝓞 F) F v (finInclN ι F u) = Matrix.GeneralLinearGroup.map (AdelicLevel.finAdeleEval (𝓞 F) F v) u := by ext i j rfl theorem archMatrixInclN_mul_finMatrixInclN (M : Matrix ι ι (InfiniteAdeleRing F)) (N : Matrix ι ι (FiniteAdeleRing (𝓞 F) F)) : archMatrixInclN ι F M * finMatrixInclN ι F N = finMatrixInclN ι F N * archMatrixInclN ι F M := by ext i j refine Prod.ext ?_ ?_ · change AdelicLevel.adeleArch (𝓞 F) F ((archMatrixInclN ι F M * finMatrixInclN ι F N) i j) = AdelicLevel.adeleArch (𝓞 F) F ((finMatrixInclN ι F N * archMatrixInclN ι F M) i j) simp only [Matrix.mul_apply, map_sum, map_mul, adeleArch_archMatrixInclN, adeleArch_finMatrixInclN] rw [← Matrix.mul_apply, ← Matrix.mul_apply, Matrix.mul_one, Matrix.one_mul] · change AdelicLevel.adeleFin (𝓞 F) F ((archMatrixInclN ι F M * finMatrixInclN ι F N) i j) = AdelicLevel.adeleFin (𝓞 F) F ((finMatrixInclN ι F N * archMatrixInclN ι F M) i j) simp only [Matrix.mul_apply, map_sum, map_mul, adeleFin_archMatrixInclN, adeleFin_finMatrixInclN] rw [← Matrix.mul_apply, ← Matrix.mul_apply, Matrix.one_mul, Matrix.mul_one] theorem finInclN_mul_archInclN (u : GL ι (FiniteAdeleRing (𝓞 F) F)) (h : GL ι (InfiniteAdeleRing F)) : finInclN ι F u * archInclN ι F h = archInclN ι F h * finInclN ι F u := Units.ext (archMatrixInclN_mul_finMatrixInclN ι F (h : Matrix ι ι (InfiniteAdeleRing F)) (u : Matrix ι ι (FiniteAdeleRing (𝓞 F) F))).symm theorem archConvN_mul_finInclN (Φ : GL ι (AdeleRing (𝓞 F) F) → ℂ) (α : GL ι (InfiniteAdeleRing F) → ℂ) (u : GL ι (FiniteAdeleRing (𝓞 F) F)) (hΦ : ∀ g, Φ (g * finInclN ι F u) = Φ g) (g : GL ι (AdeleRing (𝓞 F) F)) : archConvN ι F Φ α (g * finInclN ι F u) = archConvN ι F Φ α g := by simp only [archConvN] congr 1 funext h rw [mul_assoc, finInclN_mul_archInclN, ← mul_assoc, hΦ] end FiniteInclusion section FiniteAverage variable (F : Type) [Field F] [NumberField F] variable (U : Subgroup (GL ι (FiniteAdeleRing (𝓞 F) F))) [CompactSpace U] @[reducible] noncomputable def compactBorelN : MeasurableSpace U := borel U omit [CompactSpace U] in theorem borelSpace_compactBorelN : @BorelSpace U _ (compactBorelN ι F U) := @BorelSpace.mk _ _ (compactBorelN ι F U) rfl noncomputable def compactHaarN : @Measure U (compactBorelN ι F U) := by letI := compactBorelN ι F U haveI := borelSpace_compactBorelN ι F U exact Measure.haarMeasure ⊤ theorem isProbabilityMeasure_compactHaarN : @IsProbabilityMeasure U (compactBorelN ι F U) (compactHaarN ι F U) := by letI := compactBorelN ι F U haveI := borelSpace_compactBorelN ι F U exact ⟨by rw [compactHaarN, ← TopologicalSpace.PositiveCompacts.coe_top]; exact Measure.haarMeasure_self⟩ theorem isMulLeftInvariant_compactHaarN : @Measure.IsMulLeftInvariant U (compactBorelN ι F U) _ (compactHaarN ι F U) := by letI := compactBorelN ι F U haveI := borelSpace_compactBorelN ι F U rw [compactHaarN] infer_instance noncomputable def finAvgN (Φ : GL ι (AdeleRing (𝓞 F) F) → ℂ) : GL ι (AdeleRing (𝓞 F) F) → ℂ := fun g => (letI := compactBorelN ι F U ∫ u : U, Φ (g * finInclN ι F (u : GL ι (FiniteAdeleRing (𝓞 F) F))) ∂(compactHaarN ι F U)) theorem finAvgN_apply (Φ : GL ι (AdeleRing (𝓞 F) F) → ℂ) (g : GL ι (AdeleRing (𝓞 F) F)) : finAvgN ι F U Φ g = (letI := compactBorelN ι F U ∫ u : U, Φ (g * finInclN ι F (u : GL ι (FiniteAdeleRing (𝓞 F) F))) ∂(compactHaarN ι F U)) := rfl theorem finAvgN_eq_self (Φ : GL ι (AdeleRing (𝓞 F) F) → ℂ) (hΦ : ∀ g, ∀ u ∈ U, Φ (g * finInclN ι F u) = Φ g) (g : GL ι (AdeleRing (𝓞 F) F)) : finAvgN ι F U Φ g = Φ g := by simp only [finAvgN] letI := compactBorelN ι F U haveI := isProbabilityMeasure_compactHaarN ι F U simp only [hΦ g _ (SetLike.coe_mem _)] simp theorem finAvgN_comp_mul_left (Φ : GL ι (AdeleRing (𝓞 F) F) → ℂ) (a g : GL ι (AdeleRing (𝓞 F) F)) : finAvgN ι F U (fun x => Φ (a * x)) g = finAvgN ι F U Φ (a * g) := by simp only [finAvgN, mul_assoc] theorem finAvgN_mul_finInclN (Φ : GL ι (AdeleRing (𝓞 F) F) → ℂ) (g : GL ι (AdeleRing (𝓞 F) F)) (u : GL ι (FiniteAdeleRing (𝓞 F) F)) (hu : u ∈ U) : finAvgN ι F U Φ (g * finInclN ι F u) = finAvgN ι F U Φ g := by simp only [finAvgN] letI := compactBorelN ι F U haveI := borelSpace_compactBorelN ι F U haveI := isMulLeftInvariant_compactHaarN ι F U rw [← integral_mul_left_eq_self (fun w : U => Φ (g * finInclN ι F (w : GL ι (FiniteAdeleRing (𝓞 F) F)))) ⟨u, hu⟩] simp only [Subgroup.coe_mul, map_mul, mul_assoc] end FiniteAverage end AutomorphicForm end end Vocabulary section RealCore open Matrix noncomputable section namespace AutomorphicForm.StandardKernel noncomputable def entrySize (M : Matrix (Fin 3) (Fin 3) ℝ) : ℝ := Matrix.trace (Mᵀ * M) theorem entrySize_eq_sum (M : Matrix (Fin 3) (Fin 3) ℝ) : entrySize M = ∑ i, ∑ j, M i j ^ 2 := by simp only [entrySize, Matrix.trace, Matrix.diag, Matrix.mul_apply, Matrix.transpose_apply, sq] exact Finset.sum_comm theorem entrySize_nonneg (M : Matrix (Fin 3) (Fin 3) ℝ) : 0 ≤ entrySize M := by rw [entrySize_eq_sum] positivity theorem entry_sq_le_entrySize (M : Matrix (Fin 3) (Fin 3) ℝ) (i j : Fin 3) : M i j ^ 2 ≤ entrySize M := by rw [entrySize_eq_sum] calc M i j ^ 2 ≤ ∑ j', M i j' ^ 2 := Finset.single_le_sum (fun _ _ => sq_nonneg _) (Finset.mem_univ j) _ ≤ ∑ i', ∑ j', M i' j' ^ 2 := Finset.single_le_sum (fun _ _ => Finset.sum_nonneg fun _ _ => sq_nonneg _) (Finset.mem_univ i) theorem entrySize_transpose (M : Matrix (Fin 3) (Fin 3) ℝ) : entrySize Mᵀ = entrySize M := by simp only [entrySize, Matrix.transpose_transpose] exact Matrix.trace_mul_comm M Mᵀ theorem entrySize_smul (c : ℝ) (M : Matrix (Fin 3) (Fin 3) ℝ) : entrySize (c • M) = c ^ 2 * entrySize M := by simp only [entrySize, Matrix.transpose_smul, Matrix.smul_mul, Matrix.mul_smul, smul_smul, Matrix.trace_smul, smul_eq_mul, sq] theorem entrySize_one : entrySize 1 = 3 := by simp [entrySize] theorem entrySize_mul_of_orth {k : Matrix (Fin 3) (Fin 3) ℝ} (hk : kᵀ * k = 1) (M : Matrix (Fin 3) (Fin 3) ℝ) : entrySize (k * M) = entrySize M := by simp only [entrySize, Matrix.transpose_mul] rw [Matrix.mul_assoc, ← Matrix.mul_assoc kᵀ, hk, Matrix.one_mul] theorem adjugate_eq_det_smul_inv (X : Matrix (Fin 3) (Fin 3) ℝ) (hX : X.det ≠ 0) : adjugate X = X.det • X⁻¹ := by rw [Matrix.inv_def, Ring.inverse_eq_inv, smul_smul, mul_inv_cancel₀ hX, one_smul] noncomputable def adjugateT (M : Matrix (Fin 3) (Fin 3) ℝ) : Matrix (Fin 3) (Fin 3) ℝ := (adjugate M)ᵀ theorem adjugateT_one : adjugateT 1 = 1 := by simp [adjugateT] theorem transpose_inv_eq (M : Matrix (Fin 3) (Fin 3) ℝ) : (M⁻¹)ᵀ = (M.det)⁻¹ • adjugateT M := by rw [Matrix.inv_def, Ring.inverse_eq_inv, Matrix.transpose_smul, adjugateT] theorem det_sq_of_orth {k : Matrix (Fin 3) (Fin 3) ℝ} (hk : kᵀ * k = 1) : k.det ^ 2 = 1 := by have h := congrArg Matrix.det hk rwa [Matrix.det_mul, Matrix.det_transpose, Matrix.det_one, ← sq] at h theorem entrySize_adjugateT_mul_of_orth {k : Matrix (Fin 3) (Fin 3) ℝ} (hk : kᵀ * k = 1) (M : Matrix (Fin 3) (Fin 3) ℝ) : entrySize (adjugateT (k * M)) = entrySize (adjugateT M) := by have hdet : k.det ≠ 0 := fun h => by simpa [h] using det_sq_of_orth hk have hadj : adjugate k = k.det • kᵀ := by rw [adjugate_eq_det_smul_inv k hdet, Matrix.inv_eq_left_inv hk] rw [adjugateT, Matrix.adjugate_mul_distrib, hadj, Matrix.mul_smul, Matrix.transpose_smul, Matrix.transpose_mul, Matrix.transpose_transpose, entrySize_smul, det_sq_of_orth hk, one_mul, entrySize_mul_of_orth hk, adjugateT] theorem adjugateT_transpose_inv (M : Matrix (Fin 3) (Fin 3) ℝ) (hM : M.det ≠ 0) : adjugateT ((M⁻¹)ᵀ) = (M.det)⁻¹ • M := by have hdet : ((M⁻¹)ᵀ).det = (M.det)⁻¹ := by rw [Matrix.det_transpose, Matrix.det_nonsing_inv, Ring.inverse_eq_inv] have hinv : ((M⁻¹)ᵀ)⁻¹ = Mᵀ := by rw [← Matrix.transpose_nonsing_inv, Matrix.nonsing_inv_nonsing_inv M (isUnit_iff_ne_zero.mpr hM)] rw [adjugateT, adjugate_eq_det_smul_inv _ (by rw [hdet]; exact inv_ne_zero hM), hdet, hinv, Matrix.transpose_smul, Matrix.transpose_transpose] theorem det_transpose_inv (M : Matrix (Fin 3) (Fin 3) ℝ) : ((M⁻¹)ᵀ).det = (M.det)⁻¹ := by rw [Matrix.det_transpose, Matrix.det_nonsing_inv, Ring.inverse_eq_inv] noncomputable def detSq (M : Matrix (Fin 3) (Fin 3) ℝ) : ℝ := M.det ^ 2 theorem detSq_one : detSq 1 = 1 := by simp [detSq] theorem detSq_mul_of_orth {k : Matrix (Fin 3) (Fin 3) ℝ} (hk : kᵀ * k = 1) (M : Matrix (Fin 3) (Fin 3) ℝ) : detSq (k * M) = detSq M := by rw [detSq, detSq, Matrix.det_mul, mul_pow, det_sq_of_orth hk, one_mul] theorem detSq_transpose_inv (M : Matrix (Fin 3) (Fin 3) ℝ) : detSq ((M⁻¹)ᵀ) = (detSq M)⁻¹ := by rw [detSq, detSq, det_transpose_inv, inv_pow] theorem detSq_nonneg (M : Matrix (Fin 3) (Fin 3) ℝ) : 0 ≤ detSq M := sq_nonneg _ theorem entrySize_transpose_inv (M : Matrix (Fin 3) (Fin 3) ℝ) : entrySize ((M⁻¹)ᵀ) = (detSq M)⁻¹ * entrySize (adjugateT M) := by rw [transpose_inv_eq, entrySize_smul, detSq, inv_pow] theorem entrySize_adjugateT_transpose_inv (M : Matrix (Fin 3) (Fin 3) ℝ) (hM : M.det ≠ 0) : entrySize (adjugateT ((M⁻¹)ᵀ)) = (detSq M)⁻¹ * entrySize M := by rw [adjugateT_transpose_inv M hM, entrySize_smul, detSq, inv_pow] noncomputable def unitCutoff : ContDiffBump (9 / 4 : ℝ) := ⟨7 / 4, 2, by norm_num, by norm_num⟩ noncomputable def reciprocalCutoff (t : ℝ) : ℝ := unitCutoff t * t⁻¹ theorem reciprocalCutoff_eq_inv {t : ℝ} (h₁ : 1 / 2 ≤ t) (h₂ : t ≤ 4) : reciprocalCutoff t = t⁻¹ := by have hmem : t ∈ Metric.closedBall (9 / 4 : ℝ) unitCutoff.rIn := by rw [Metric.mem_closedBall, Real.dist_eq, abs_le] change -(7 / 4 : ℝ) ≤ t - 9 / 4 ∧ t - 9 / 4 ≤ 7 / 4 constructor <;> linarith rw [reciprocalCutoff, unitCutoff.one_of_mem_closedBall hmem, one_mul] theorem reciprocalCutoff_eq_zero {t : ℝ} (ht : |t| < 1 / 4) : reciprocalCutoff t = 0 := by have hdist : unitCutoff.rOut ≤ dist t (9 / 4 : ℝ) := by change (2 : ℝ) ≤ dist t (9 / 4) rw [Real.dist_eq] rcases abs_lt.mp ht with ⟨h₁, h₂⟩ rw [abs_of_nonpos (by linarith)] linarith rw [reciprocalCutoff, unitCutoff.zero_of_le_dist hdist, zero_mul] theorem contDiff_reciprocalCutoff : ContDiff ℝ (⊤ : ℕ∞) reciprocalCutoff := by rw [contDiff_iff_contDiffAt] intro t by_cases ht : t = 0 · subst ht refine (contDiffAt_const (c := (0 : ℝ))).congr_of_eventuallyEq ?_ have hball : Metric.ball (0 : ℝ) (1 / 4) ∈ nhds (0 : ℝ) := Metric.ball_mem_nhds _ (by norm_num) filter_upwards [hball] with s hs rw [Metric.mem_ball, Real.dist_eq, sub_zero] at hs exact reciprocalCutoff_eq_zero hs · exact unitCutoff.contDiffAt.mul (contDiffAt_inv ℝ ht) noncomputable def logBump : ContDiffBump (0 : ℝ) := ⟨Real.log 2 / 2, Real.log 2, by have := Real.log_pos (by norm_num : (1 : ℝ) < 2); positivity, by have := Real.log_pos (by norm_num : (1 : ℝ) < 2); linarith⟩ noncomputable def detCutoff (t : ℝ) : ℝ := if t ≤ 0 then 0 else logBump (Real.log t) * logBump (-Real.log t) theorem detCutoff_of_pos {t : ℝ} (ht : 0 < t) : detCutoff t = logBump (Real.log t) * logBump (-Real.log t) := by rw [detCutoff, if_neg (not_le.mpr ht)] theorem detCutoff_of_nonpos {t : ℝ} (ht : t ≤ 0) : detCutoff t = 0 := by rw [detCutoff, if_pos ht] theorem detCutoff_inv (t : ℝ) : detCutoff t⁻¹ = detCutoff t := by rcases le_or_gt t 0 with ht | ht · rw [detCutoff_of_nonpos ht, detCutoff_of_nonpos (inv_nonpos.mpr ht)] · rw [detCutoff_of_pos ht, detCutoff_of_pos (inv_pos.mpr ht), Real.log_inv, neg_neg, mul_comm] theorem detCutoff_one : detCutoff 1 = 1 := by have h0 : logBump (0 : ℝ) = 1 := logBump.one_of_mem_closedBall (by rw [Metric.mem_closedBall, dist_self]; exact logBump.rIn_pos.le) rw [detCutoff_of_pos one_pos, Real.log_one, neg_zero, h0, one_mul] theorem mem_of_detCutoff_ne_zero {t : ℝ} (h : detCutoff t ≠ 0) : 1 / 2 < t ∧ t < 2 := by have ht : 0 < t := by by_contra hle exact h (detCutoff_of_nonpos (not_lt.mp hle)) rw [detCutoff_of_pos ht] at h have h₁ : logBump (Real.log t) ≠ 0 := left_ne_zero_of_mul h have hsupp : Real.log t ∈ Metric.ball (0 : ℝ) logBump.rOut := by rw [← logBump.support_eq] exact h₁ rw [Metric.mem_ball, Real.dist_eq, sub_zero] at hsupp change |Real.log t| < Real.log 2 at hsupp rcases abs_lt.mp hsupp with ⟨hlow, hhigh⟩ constructor · have : Real.log (1 / 2) < Real.log t := by rw [one_div, Real.log_inv]; exact hlow exact (Real.log_lt_log_iff (by norm_num) ht).mp this · exact (Real.log_lt_log_iff ht (by norm_num)).mp hhigh theorem detCutoff_eq_zero_of_lt_half {t : ℝ} (ht : t < 1 / 2) : detCutoff t = 0 := by by_contra h exact absurd (mem_of_detCutoff_ne_zero h).1 (not_lt.mpr ht.le) theorem contDiff_detCutoff : ContDiff ℝ (⊤ : ℕ∞) detCutoff := by rw [contDiff_iff_contDiffAt] intro t rcases lt_or_ge t (1 / 2) with ht | ht · refine (contDiffAt_const (c := (0 : ℝ))).congr_of_eventuallyEq ?_ filter_upwards [Iio_mem_nhds ht] with s hs exact detCutoff_eq_zero_of_lt_half hs · have hpos : 0 < t := by linarith have hsmooth : ContDiffAt ℝ (⊤ : ℕ∞) (fun s : ℝ => logBump (Real.log s) * logBump (-Real.log s)) t := by have hlog : ContDiffAt ℝ (⊤ : ℕ∞) Real.log t := Real.contDiffAt_log.mpr hpos.ne' exact (logBump.contDiffAt.comp t hlog).mul (logBump.contDiffAt.comp t hlog.neg) refine hsmooth.congr_of_eventuallyEq ?_ filter_upwards [Ioi_mem_nhds hpos] with s hs exact detCutoff_of_pos hs noncomputable def sizeBump : ContDiffBump (6 : ℝ) := ⟨1, 2, one_pos, by norm_num⟩ theorem sizeBump_six : sizeBump (6 : ℝ) = 1 := sizeBump.one_of_mem_closedBall (by rw [Metric.mem_closedBall, dist_self]; exact sizeBump.rIn_pos.le) theorem lt_eight_of_sizeBump_ne_zero {s : ℝ} (h : sizeBump s ≠ 0) : s < 8 := by have hs : s ∈ Metric.ball (6 : ℝ) sizeBump.rOut := by rw [← sizeBump.support_eq] exact h rw [Metric.mem_ball, Real.dist_eq] at hs change |s - 6| < 2 at hs linarith [(abs_lt.mp hs).2] noncomputable def sizeInvariant (M : Matrix (Fin 3) (Fin 3) ℝ) : ℝ := entrySize M + entrySize (adjugateT M) * reciprocalCutoff (detSq M) noncomputable def standardKernelCore (M : Matrix (Fin 3) (Fin 3) ℝ) : ℝ := sizeBump (sizeInvariant M) * detCutoff (detSq M) theorem sizeInvariant_one : sizeInvariant 1 = 6 := by rw [sizeInvariant, entrySize_one, adjugateT_one, entrySize_one, detSq_one, reciprocalCutoff_eq_inv (by norm_num) (by norm_num)] norm_num theorem standardKernelCore_one : standardKernelCore 1 = 1 := by rw [standardKernelCore, sizeInvariant_one, detSq_one, sizeBump_six, detCutoff_one, one_mul] theorem standardKernelCore_mul_of_orth {k : Matrix (Fin 3) (Fin 3) ℝ} (hk : kᵀ * k = 1) (M : Matrix (Fin 3) (Fin 3) ℝ) : standardKernelCore (k * M) = standardKernelCore M := by simp only [standardKernelCore, sizeInvariant, entrySize_mul_of_orth hk, entrySize_adjugateT_mul_of_orth hk, detSq_mul_of_orth hk] theorem standardKernelCore_transpose_inv (M : Matrix (Fin 3) (Fin 3) ℝ) : standardKernelCore ((M⁻¹)ᵀ) = standardKernelCore M := by by_cases hM : M.det = 0 · have hinv : M⁻¹ = 0 := Matrix.nonsing_inv_apply_not_isUnit M (by rw [hM]; exact not_isUnit_zero) have h0 : detCutoff (detSq (0 : Matrix (Fin 3) (Fin 3) ℝ)) = 0 := by refine detCutoff_of_nonpos ?_ rw [detSq, Matrix.det_zero, zero_pow two_ne_zero] rw [standardKernelCore, standardKernelCore, hinv, Matrix.transpose_zero, h0, mul_zero, detSq, hM, zero_pow two_ne_zero, detCutoff_of_nonpos le_rfl, mul_zero] · rw [standardKernelCore, standardKernelCore, detSq_transpose_inv, detCutoff_inv] by_cases hcut : detCutoff (detSq M) = 0 · rw [hcut, mul_zero, mul_zero] · congr 2 obtain ⟨hlow, hhigh⟩ := mem_of_detCutoff_ne_zero hcut have hQ : 0 < detSq M := by linarith have hQinv_low : 1 / 2 ≤ (detSq M)⁻¹ := by rw [div_le_iff₀ (by norm_num : (0 : ℝ) < 2)] nlinarith [mul_inv_cancel₀ hQ.ne', inv_pos.mpr hQ, hhigh] have hQinv_high : (detSq M)⁻¹ ≤ 4 := by rw [inv_le_comm₀ hQ (by norm_num)] linarith rw [sizeInvariant, sizeInvariant, entrySize_transpose_inv, entrySize_adjugateT_transpose_inv M hM, detSq_transpose_inv, reciprocalCutoff_eq_inv hQinv_low hQinv_high, reciprocalCutoff_eq_inv hlow.le (by linarith), inv_inv] field_simp ring theorem bound_of_standardKernelCore_ne_zero {M : Matrix (Fin 3) (Fin 3) ℝ} (h : standardKernelCore M ≠ 0) : M.det ≠ 0 ∧ entrySize M ≤ 8 ∧ entrySize M⁻¹ ≤ 8 := by have hbump : sizeBump (sizeInvariant M) ≠ 0 := left_ne_zero_of_mul h have hcut : detCutoff (detSq M) ≠ 0 := right_ne_zero_of_mul h obtain ⟨hlow, hhigh⟩ := mem_of_detCutoff_ne_zero hcut have hdet : M.det ≠ 0 := by intro h0 rw [detSq, h0, zero_pow two_ne_zero] at hlow norm_num at hlow have hsize : sizeInvariant M < 8 := lt_eight_of_sizeBump_ne_zero hbump have hinv : entrySize M⁻¹ = entrySize (adjugateT M) * reciprocalCutoff (detSq M) := by rw [← entrySize_transpose (M⁻¹), entrySize_transpose_inv, reciprocalCutoff_eq_inv hlow.le (by linarith), mul_comm] have h₁ := entrySize_nonneg M have h₂ : 0 ≤ entrySize M⁻¹ := entrySize_nonneg _ rw [sizeInvariant, ← hinv] at hsize exact ⟨hdet, by linarith, by linarith⟩ noncomputable def coreOfEntries (m : Fin 3 → Fin 3 → ℝ) : ℝ := standardKernelCore (Matrix.of m) theorem coreOfEntries_apply (M : Matrix (Fin 3) (Fin 3) ℝ) : coreOfEntries (fun i j => M i j) = standardKernelCore M := rfl theorem contDiff_entrySize_of : ContDiff ℝ (⊤ : ℕ∞) fun m : Fin 3 → Fin 3 → ℝ => entrySize (Matrix.of m) := by simp only [entrySize_eq_sum, Matrix.of_apply] fun_prop theorem contDiff_detSq_of : ContDiff ℝ (⊤ : ℕ∞) fun m : Fin 3 → Fin 3 → ℝ => detSq (Matrix.of m) := by simp only [detSq, Matrix.det_fin_three, Matrix.of_apply] fun_prop theorem contDiff_entrySize_adjugateT_of : ContDiff ℝ (⊤ : ℕ∞) fun m : Fin 3 → Fin 3 → ℝ => entrySize (adjugateT (Matrix.of m)) := by simp only [entrySize_eq_sum, adjugateT, Matrix.adjugate_fin_three, Matrix.transpose_apply, Matrix.of_apply, Fin.sum_univ_three, Matrix.cons_val_zero, Matrix.cons_val_one, Matrix.cons_val_two, Matrix.head_cons, Matrix.tail_cons] fun_prop theorem contDiff_coreOfEntries : ContDiff ℝ (⊤ : ℕ∞) coreOfEntries := by have h₁ := contDiff_entrySize_of have h₂ := contDiff_detSq_of have h₃ := contDiff_entrySize_adjugateT_of have h₄ := contDiff_reciprocalCutoff have h₅ := contDiff_detCutoff have h₆ : ContDiff ℝ (⊤ : ℕ∞) (sizeBump : ℝ → ℝ) := sizeBump.contDiff have hinv : ContDiff ℝ (⊤ : ℕ∞) fun m : Fin 3 → Fin 3 → ℝ => sizeInvariant (Matrix.of m) := by simp only [sizeInvariant] exact h₁.add (h₃.mul (h₄.comp h₂)) unfold coreOfEntries standardKernelCore exact (h₆.comp hinv).mul (h₅.comp h₂) end AutomorphicForm.StandardKernel end end RealCore section Kernel open NumberField Matrix Topology open scoped Classical noncomputable section namespace AutomorphicForm.StandardKernel noncomputable def realCoord : InfiniteAdeleRing ℚ →+* ℝ := (InfinitePlace.Completion.ringEquivRealOfIsReal Rat.isReal_infinitePlace).toRingHom.comp (Pi.evalRingHom (fun w : InfinitePlace ℚ => w.Completion) Rat.infinitePlace) theorem realCoord_apply (x : InfiniteAdeleRing ℚ) : realCoord x = InfinitePlace.Completion.extensionEmbeddingOfIsReal Rat.isReal_infinitePlace (x Rat.infinitePlace) := rfl noncomputable def ofReal (r : ℝ) : InfiniteAdeleRing ℚ := fun v => (InfinitePlace.Completion.ringEquivRealOfIsReal (IsTotallyReal.isReal v)).symm r theorem continuous_ofReal : Continuous ofReal := continuous_pi fun v => (InfinitePlace.Completion.isometryEquivRealOfIsReal (IsTotallyReal.isReal v)).symm.continuous theorem ofReal_realCoord (x : InfiniteAdeleRing ℚ) : ofReal (realCoord x) = x := by funext v obtain rfl : v = Rat.infinitePlace := Subsingleton.elim _ _ exact (InfinitePlace.Completion.ringEquivRealOfIsReal Rat.isReal_infinitePlace).symm_apply_apply _ noncomputable def realGL : GL (Fin 3) (InfiniteAdeleRing ℚ) →* GL (Fin 3) ℝ := Units.map (realCoord.mapMatrix (m := Fin 3)).toMonoidHom noncomputable def realMat (g : GL (Fin 3) (InfiniteAdeleRing ℚ)) : Matrix (Fin 3) (Fin 3) ℝ := (realGL g : Matrix (Fin 3) (Fin 3) ℝ) theorem realMat_eq (g : GL (Fin 3) (InfiniteAdeleRing ℚ)) : realMat g = (g : Matrix (Fin 3) (Fin 3) (InfiniteAdeleRing ℚ)).map realCoord := rfl theorem realMat_mul (g h : GL (Fin 3) (InfiniteAdeleRing ℚ)) : realMat (g * h) = realMat g * realMat h := by rw [realMat, realMat, realMat, map_mul, Units.val_mul] theorem realMat_inv (g : GL (Fin 3) (InfiniteAdeleRing ℚ)) : realMat g⁻¹ = (realMat g)⁻¹ := by rw [realMat, realMat, map_inv, Matrix.coe_units_inv] theorem realMat_one : realMat 1 = 1 := by rw [realMat, map_one, Units.val_one] theorem realMat_transposeInvN (g : GL (Fin 3) (InfiniteAdeleRing ℚ)) : realMat (transposeInvN (Fin 3) g) = ((realMat g)⁻¹)ᵀ := by rw [realMat_eq, coe_transposeInvN, Matrix.transpose_map, ← realMat_eq, realMat_inv] theorem realMat_orth {k : GL (Fin 3) (InfiniteAdeleRing ℚ)} (hk : k ∈ orthN (Fin 3) ℚ) : (realMat k)ᵀ * realMat k = 1 := by have h : (k : Matrix (Fin 3) (Fin 3) (InfiniteAdeleRing ℚ))ᵀ * k = 1 := hk have h' := congrArg (fun M : Matrix (Fin 3) (Fin 3) (InfiniteAdeleRing ℚ) => M.map realCoord) h rw [Matrix.map_mul, Matrix.transpose_map, Matrix.map_one realCoord (map_zero _) (map_one _)] at h' rw [realMat_eq] exact h' noncomputable def standardKernel (g : GL (Fin 3) (InfiniteAdeleRing ℚ)) : ℂ := (standardKernelCore (realMat g) : ℂ) theorem standardKernel_one : standardKernel 1 = 1 := by rw [standardKernel, realMat_one, standardKernelCore_one, Complex.ofReal_one] theorem standardKernel_ne_zero : standardKernel ≠ 0 := fun h => by have := congrFun h 1 rw [standardKernel_one, Pi.zero_apply] at this exact one_ne_zero this theorem standardKernel_transposeInvN (g : GL (Fin 3) (InfiniteAdeleRing ℚ)) : standardKernel (transposeInvN (Fin 3) g) = standardKernel g := by rw [standardKernel, standardKernel, realMat_transposeInvN, standardKernelCore_transpose_inv] theorem standardKernel_comp_transposeInvN : standardKernel ∘ transposeInvN (Fin 3) = standardKernel := funext standardKernel_transposeInvN theorem standardKernel_mul_of_mem_orthN {k : GL (Fin 3) (InfiniteAdeleRing ℚ)} (hk : k ∈ orthN (Fin 3) ℚ) (g : GL (Fin 3) (InfiniteAdeleRing ℚ)) : standardKernel (k * g) = standardKernel g := by rw [standardKernel, standardKernel, realMat_mul, standardKernelCore_mul_of_orth (realMat_orth hk)] theorem isLeftOrthFiniteN_standardKernel : IsLeftOrthFiniteN (Fin 3) ℚ standardKernel := by refine ⟨{standardKernel}, fun k hk => ?_⟩ have h : (fun x => standardKernel (k * x)) = standardKernel := funext fun x => standardKernel_mul_of_mem_orthN hk x rw [h] exact Submodule.subset_span (by simp) noncomputable def mixedCoord (x : mixedEmbedding.mixedSpace ℚ) : ℝ := x.1 ⟨Rat.infinitePlace, Rat.isReal_infinitePlace⟩ theorem mixedCoord_ringEquiv (x : InfiniteAdeleRing ℚ) : mixedCoord (InfiniteAdeleRing.ringEquiv_mixedSpace ℚ x) = realCoord x := rfl theorem contDiff_mixedCoord : ContDiff ℝ (⊤ : ℕ∞) mixedCoord := by unfold mixedCoord fun_prop noncomputable def entryFunction (m : Fin 3 → Fin 3 → mixedEmbedding.mixedSpace ℚ) : ℂ := (coreOfEntries (fun i j => mixedCoord (m i j)) : ℂ) theorem contDiff_entryFunction : ContDiff ℝ (⊤ : ℕ∞) entryFunction := by have h₁ := contDiff_coreOfEntries have h₂ := contDiff_mixedCoord have h₃ : ContDiff ℝ (⊤ : ℕ∞) fun m : Fin 3 → Fin 3 → mixedEmbedding.mixedSpace ℚ => fun i j => mixedCoord (m i j) := by fun_prop exact Complex.ofRealCLM.contDiff.comp (h₁.comp h₃) theorem standardKernel_eq_entryFunction (g : GL (Fin 3) (InfiniteAdeleRing ℚ)) : standardKernel g = entryFunction (archEntriesN (Fin 3) ℚ g) := rfl noncomputable def entryBox : Set (Matrix (Fin 3) (Fin 3) ℝ) := Set.pi Set.univ fun _ => Set.pi Set.univ fun _ => Set.Icc (-3 : ℝ) 3 theorem isCompact_entryBox : IsCompact entryBox := isCompact_univ_pi fun _ => isCompact_univ_pi fun _ => isCompact_Icc theorem mem_entryBox_of_entrySize_le {M : Matrix (Fin 3) (Fin 3) ℝ} (h : entrySize M ≤ 8) : M ∈ entryBox := by unfold entryBox intro i _ j _ have h₁ := (entry_sq_le_entrySize M i j).trans h exact ⟨by nlinarith, by nlinarith⟩ noncomputable def adelicEntryBox : Set (Matrix (Fin 3) (Fin 3) (InfiniteAdeleRing ℚ)) := (fun Y : Matrix (Fin 3) (Fin 3) ℝ => Y.map ofReal) '' entryBox theorem isCompact_adelicEntryBox : IsCompact adelicEntryBox := isCompact_entryBox.image (continuous_id.matrix_map continuous_ofReal) theorem mem_adelicEntryBox_of_entrySize_le {X : Matrix (Fin 3) (Fin 3) (InfiniteAdeleRing ℚ)} (h : entrySize (X.map realCoord) ≤ 8) : X ∈ adelicEntryBox := by refine ⟨X.map realCoord, mem_entryBox_of_entrySize_le h, ?_⟩ ext i j simp only [Matrix.map_apply, ofReal_realCoord] noncomputable def carrierSet : Set (GL (Fin 3) (InfiniteAdeleRing ℚ)) := Units.embedProduct _ ⁻¹' (adelicEntryBox ×ˢ (MulOpposite.op '' adelicEntryBox)) theorem isCompact_carrierSet : IsCompact carrierSet := by haveI : T2Space (Matrix (Fin 3) (Fin 3) (InfiniteAdeleRing ℚ)) := inferInstanceAs (T2Space (Fin 3 → Fin 3 → InfiniteAdeleRing ℚ)) exact Units.isClosedEmbedding_embedProduct.isCompact_preimage (isCompact_adelicEntryBox.prod (isCompact_adelicEntryBox.image MulOpposite.continuous_op)) theorem isClosed_carrierSet : IsClosed carrierSet := by haveI : T2Space (Matrix (Fin 3) (Fin 3) (InfiniteAdeleRing ℚ)) := inferInstanceAs (T2Space (Fin 3 → Fin 3 → InfiniteAdeleRing ℚ)) have hC := isCompact_adelicEntryBox.isClosed have hC' := (isCompact_adelicEntryBox.image MulOpposite.continuous_op).isClosed exact (hC.prod hC').preimage Units.continuous_embedProduct theorem mem_carrierSet_of_standardKernel_ne_zero {g : GL (Fin 3) (InfiniteAdeleRing ℚ)} (h : standardKernel g ≠ 0) : g ∈ carrierSet := by have hcore : standardKernelCore (realMat g) ≠ 0 := fun h0 => h (by rw [standardKernel, h0, Complex.ofReal_zero]) obtain ⟨-, hg, hginv⟩ := bound_of_standardKernelCore_ne_zero hcore rw [← realMat_inv] at hginv have h₁ : (g : Matrix (Fin 3) (Fin 3) (InfiniteAdeleRing ℚ)) ∈ adelicEntryBox := mem_adelicEntryBox_of_entrySize_le (by rw [← realMat_eq]; exact hg) have h₂ : ((g⁻¹ : GL (Fin 3) (InfiniteAdeleRing ℚ)) : Matrix (Fin 3) (Fin 3) (InfiniteAdeleRing ℚ)) ∈ adelicEntryBox := mem_adelicEntryBox_of_entrySize_le (by rw [← realMat_eq]; exact hginv) exact ⟨h₁, (g⁻¹ : GL (Fin 3) (InfiniteAdeleRing ℚ)), h₂, rfl⟩ theorem hasCompactSupport_standardKernel : HasCompactSupport standardKernel := HasCompactSupport.intro' isCompact_carrierSet isClosed_carrierSet fun g hg => by by_contra h exact hg (mem_carrierSet_of_standardKernel_ne_zero h) theorem isArchTestFactorN_standardKernel : IsArchTestFactorN (Fin 3) ℚ standardKernel := ⟨⟨entryFunction, contDiff_entryFunction, standardKernel_eq_entryFunction⟩, hasCompactSupport_standardKernel⟩ theorem isSmoothingKernelN_standardKernel : IsSmoothingKernelN (Fin 3) ℚ standardKernel := ⟨isArchTestFactorN_standardKernel, isLeftOrthFiniteN_standardKernel⟩ theorem exists_isSmoothingKernelN_transposeInvN_one : ∃ α : GL (Fin 3) (InfiniteAdeleRing ℚ) → ℂ, IsSmoothingKernelN (Fin 3) ℚ α ∧ α ∘ transposeInvN (Fin 3) = α ∧ α 1 = 1 := ⟨standardKernel, isSmoothingKernelN_standardKernel, standardKernel_comp_transposeInvN, standardKernel_one⟩ end AutomorphicForm.StandardKernel end end Kernel #check @AutomorphicForm.transposeInvN #check @AutomorphicForm.archEntriesN #check @AutomorphicForm.orthN #check @AutomorphicForm.IsLeftOrthFiniteN #check @AutomorphicForm.IsArchTestFactorN #check @AutomorphicForm.IsSmoothingKernelN #check @AutomorphicForm.archInclN #check @AutomorphicForm.archGLHaarN #check @AutomorphicForm.convN #check @AutomorphicForm.archConvN #check @AutomorphicForm.finInclN #check @AutomorphicForm.compactHaarN #check @AutomorphicForm.finAvgN #print axioms AutomorphicForm.transposeInvN_mul #print axioms AutomorphicForm.componentAtN_mul_archInclN #print axioms AutomorphicForm.isHaarMeasure_archGLHaarN #print axioms AutomorphicForm.archConvN_comp_mul_left #print axioms AutomorphicForm.convN_mul_right #print axioms AutomorphicForm.archConvN_eq_convN_mul #print axioms AutomorphicForm.finInclN_mul_archInclN #print axioms AutomorphicForm.archConvN_mul_finInclN #print axioms AutomorphicForm.isProbabilityMeasure_compactHaarN #print axioms AutomorphicForm.finAvgN_eq_self #print axioms AutomorphicForm.finAvgN_mul_finInclN #check @AutomorphicForm.StandardKernel.standardKernelCore #print axioms AutomorphicForm.StandardKernel.standardKernelCore_one #print axioms AutomorphicForm.StandardKernel.standardKernelCore_mul_of_orth #print axioms AutomorphicForm.StandardKernel.standardKernelCore_transpose_inv #print axioms AutomorphicForm.StandardKernel.bound_of_standardKernelCore_ne_zero #print axioms AutomorphicForm.StandardKernel.contDiff_coreOfEntries #check @AutomorphicForm.StandardKernel.standardKernel #print axioms AutomorphicForm.StandardKernel.standardKernel_one #print axioms AutomorphicForm.StandardKernel.standardKernel_comp_transposeInvN #print axioms AutomorphicForm.StandardKernel.isSmoothingKernelN_standardKernel #print axioms AutomorphicForm.StandardKernel.exists_isSmoothingKernelN_transposeInvN_one
Statements phrased using this module (207)
- 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 - 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 - 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 - 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 - Archimedean root sizes of a GL₂ block image and its dual
LanglandsTunnell.CubicInduction.archRoot_iota_archRealGLAt_and_dual0 below · depth 19 - Finite support of the GL₃ Whittaker type integrals
LanglandsTunnell.CubicInduction.exists_finset_typeIntegral_eq_zero_of_eq_coefficientFn_of_le_conductorExponentAt23 below · depth 19 - Vanishing of type integrals outside finitely many torus shells
LanglandsTunnell.CubicInduction.exists_finset_typeIntegral_eq_zero_of_forall_exists_finset_eq_zero_betaFinCS0 below · depth 19 - 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 - 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 - 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 - Whittaker functions vanish deep in the GL₂-torus
LanglandsTunnell.CubicInduction.exists_forall_apply_iotaGL_mul_eq_zero_of_lt_neg4 below · depth 20 - Type integrals of deep GL₃ Whittaker coefficients vanish eventually
LanglandsTunnell.CubicInduction.exists_forall_typeIntegral_eq_zero_of_le_fst7 below · depth 20 - Vanishing of GL₃ type integrals for large n₂
LanglandsTunnell.CubicInduction.exists_forall_typeIntegral_eq_zero_of_le_snd11 below · depth 20 - Conductor bound for the local central character at unramified v
LanglandsTunnell.CubicInduction.exists_hasConductorExponentAt_localChar_centralChar_le_inducedLevelAt_of_isCubicInductionDataOn278 below · depth 20 - Uniform smoothness of a GL₃ principal-series coefficient under right translation
LanglandsTunnell.CubicInduction.exists_isOpen_forall_apply_mul_iotaGL_mul_eq1 below · depth 20 - 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 - Identified local functional equation passes to the cyclic span
LanglandsTunnell.CubicInduction.localZeta31_identified_of_mem_gl3CyclicSubspace1 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 - 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 - Convergence and rationality of local GL₃timesGL₂ Rankin–Selberg integrals
LanglandsTunnell.RankinSelberg.forall_rsLocalIntegral_integrable_and_eq_laurent_of_torusFinite_of_centralChar_of_shellGrowth20 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 - Haar measure on (ℚ⊗ℝ)^× pushes forward to κ |y|⁻¹dy
AutomorphicForm.StandardKernel.exists_pos_map_realCoord_eq_smul_volume_withDensity_abs_inv0 below · depth 21 - Smoothness, admissibility and inverse Whittaker law for the dual function
LanglandsTunnell.CubicInduction.admissible_gl3CyclicSubspace_dualWhittakerFn3_rightTranslate1 below · depth 21 - Convergence of the dual local GL₃timesGL₂ Rankin–Selberg integrand
LanglandsTunnell.RankinSelberg.exists_forall_integrable_dual_rsLocalIntegrand_of_gauge9 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 - Laurent polynomiality of the dual local Rankin–Selberg integral at level vᵇ
LanglandsTunnell.RankinSelberg.exists_polynomial_forall_rsLocalIntegral_dualWhittakerFn3_iotaGL_eq_of_forall_torusShell_transposeInvN_eq_zero9 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 - Deep-torus vanishing of unipotent coboundaries of Whittaker functions
LanglandsTunnell.CubicInduction.exists_forall_apply_iotaGL_torus_eq_zero_of_mem_span_radical_of_isGL3PsiWhittakerFn0 below · depth 22 - Gauge majorant for cyclic translates of principal-series Whittaker coefficients
LanglandsTunnell.CubicInduction.exists_gauge_of_mem_gl3CyclicSubspace_coefficientFn_principalSeries323 below · depth 22 - Level-pᵈ Whittaker vector in a unitary principal series of GL₃
LanglandsTunnell.CubicInduction.exists_isWhittakerFunctional3_coefficientFn_ne_zero_forall_deepTwist_eq_of_forall_higherUnitsAt_of_pos11 below · depth 22 - Dual section of the GL₂ principal series
LanglandsTunnell.CubicInduction.exists_modulus_det_mul_apply_antidiagonal_mul_transposeInvN_mem_principalSeries21 below · depth 22 - Jacquet's lemma in polynomial recurrence form for GL₃
LanglandsTunnell.CubicInduction.exists_polynomial_sum_coeff_smul_rightTranslate_pow_mem_span_radical_of_admissible1 below · depth 22 - Unramified twist shifts the local (3,1) functional equation
LanglandsTunnell.CubicInduction.forall_localZeta31_fe_of_twist_modulus_cpow0 below · depth 22 - Haar scaling on the unipotent subgroup: dilating the integral ball
LanglandsTunnell.CubicInduction.measure_unipotentEntry_preimage_mul_eq0 below · depth 22 - Unipotent invariance of the dual Rankin–Selberg integrand
LanglandsTunnell.CubicInduction.mul_dual_eq_of_isGL3PsiWhittakerFn_inv_of_unipotent0 below · depth 22 - 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 - Convergence of two intermediate GL₃timesGL₂ local integrals
LanglandsTunnell.RankinSelberg.exists_forall_integrable_flatSection_mul_whittaker_iotaGL_diagUnits2_longWeyl3_of_gauge1 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 - Local Rankin–Selberg functional equation spreads to both spans
LanglandsTunnell.RankinSelberg.forall_mem_span_rsLocalIntegral_dual_eq_mul_of_forall_rightTranslate_rsLocalIntegral_dual_eq_mul6 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 - 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 - Rationality of torus-shell averages of admissible Whittaker functions
LanglandsTunnell.CubicInduction.exists_rational_torusShellAverage_and_dual_of_admissible_of_isGL3PsiWhittakerFn11 below · depth 23 - Unfolded dual and primal (3,2) local integrals agree
LanglandsTunnell.CubicInduction.integral_transposeInvN_mul_integral_integral_diagUnits2_eq_integral_upperUnipotent2_mul_of_mem_principalSeries23 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 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 - Rationality of local GL₃× GL₂ Rankin–Selberg integrals and duals
LanglandsTunnell.RankinSelberg.forall_exists_rational_rsLocalIntegral_and_dual_of_shellRecurrence_of_centralChar_of_rationalTorusShell_of_gauge21 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 - Primal transport of the local GL₃timesGL₁ functional equation
LanglandsTunnell.RankinSelberg.integral_principalSeries2_mul_whittaker_iotaGL_diagUnits2_longWeyl3_eq_mul_of_forall_integral_localZeta31_eq_of_torusShell25 below · depth 23 - Dual transport of the GL₃timesGL₁ functional equation
LanglandsTunnell.RankinSelberg.mul_integral_transposeInvN_mul_whittaker_iotaGL_diagUnits2_longWeyl3_eq_of_forall_integral_localZeta31_dualWhittakerFn3_eq_of_torusShell23 below · depth 23 - Dual section in the principal series and its Jacquet integral
LanglandsTunnell.CubicInduction.dualSection_mem_principalSeries2_and_jacquetIntegral_eq0 below · depth 24 - Lower support bound for torus-shell averages of GL₃ Whittaker data
LanglandsTunnell.CubicInduction.exists_forall_torusShellAverage_and_dual_eq_zero_of_lt_of_isGL3PsiWhittakerFn3 below · depth 24 - Torus-shell averages are values of cyclic smooth vectors
LanglandsTunnell.CubicInduction.exists_mem_gl3CyclicSubspace_forall_torusShellAverage_eq_apply4 below · depth 24 - Rationality of two-variable torus-shell Whittaker series
LanglandsTunnell.CubicInduction.exists_mvPolynomial_forall_tsum_torusShellAverage_mul_eval_eq_and_dual_of_admissible_of_isGL3PsiWhittakerFn13 below · depth 24 - Rationality of the two-variable torus series of a Whittaker vector
LanglandsTunnell.CubicInduction.exists_mvPolynomial_forall_tsum_torus_apply_mul_eval_eq_of_mem_gl3CyclicSubspace4 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 - 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 - 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 - Rationality of the dual local GL₃× GL₂ Rankin–Selberg integral
LanglandsTunnell.RankinSelberg.forall_exists_rational_rsLocalIntegral_dual_translate_of_shellRecurrence_of_centralChar_of_rationalTorusShell_of_gauge16 below · depth 24 - Rationality of one local GL₃× GL₂ Rankin–Selberg integral
LanglandsTunnell.RankinSelberg.forall_exists_rational_rsLocalIntegral_translate_of_shellRecurrence_of_centralChar_of_rationalTorusShell_of_gauge16 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 - Kirillov bump in a twisted Whittaker translate span
LanglandsTunnell.RankinSelberg.exists_mem_span_twist_det_kirillov_eq_indicator_shell_of_localLevelOne8 below · depth 25 - Rationality of the dual GL₂× GL₂ Rankin–Selberg integral
LanglandsTunnell.RankinSelberg.exists_rsLocalIntegral22_dual_mul_one_sub_eq_cpow_mul_eval_of_principalSeries2_of_forall_torusZeta_polynomial40 below · depth 25 - Rationality of the local GL₂timesGL₂ Rankin–Selberg integral
LanglandsTunnell.RankinSelberg.exists_rsLocalIntegral22_mul_one_sub_eq_cpow_mul_eval_of_principalSeries2_of_forall_torusZeta_polynomial39 below · depth 25 - Unfolded GL₃× GL₂ Rankin–Selberg integrals, primal and dual
LanglandsTunnell.RankinSelberg.exists_rsLocalIntegral_jacquetWhittaker3_iotaGL_eq_sum_and_dual_eq_mul_sum_of_chamber_ed2111 below · depth 25 - Cleared local GL₃× GL₂ Rankin–Selberg integrals in a chamber
LanglandsTunnell.RankinSelberg.exists_rsLocalIntegral_jacquetWhittaker3_mul_centralTate_eq_cpow_mul_eval_and_dual_of_chamber141 below · depth 25 - Whittaker functions agreeing on ι(GL₂) agree on ι(GL₂)N₃Z₃K₁
LanglandsTunnell.RankinSelberg.forall_apply_iotaGL_mul_upperUnipotent3_mul_scalar_mul_eq_of_forall_apply_iotaGL_eq0 below · depth 25 - Godement–Jacquet zeta integrals for GL₂: cleared functional equation
LanglandsTunnell.RankinSelberg.forall_godementZeta2_clearedFE_of_forall_torusZeta_fe167 below · depth 25 - Cleared GL₂× GL₂ local functional equation: principal series case
LanglandsTunnell.RankinSelberg.forall_rsLocalIntegral22_schwartz_clearedFE_of_principalSeries2_of_forall_torusZeta_fe_ed2219 below · depth 25 - Schwartz–Bruhat cut-off kernels with prescribed local Fourier transforms
LanglandsTunnell.RankinSelberg.isSchwartzBruhat_and_tateFourier_shellKernels_of_conductor_le15 below · depth 25 - Local dual Rankin–Selberg integrand of a smoothed bump vector
LanglandsTunnell.RankinSelberg.rsIntegrand_dual_longWeyl3_smoothedBump_invariant_support_bound_and_bigCell_eq3 below · depth 25 - Non-vanishing of a unit-shell Whittaker–Fourier pairing
LanglandsTunnell.RankinSelberg.setIntegral_unitShell_pairing_ne_zero_of_kirillov_shell_of_deepTwist_of_conductor_le34 below · depth 25 - Gauge bound for an admissible local Whittaker function on the torus
AutomorphicForm.WhittakerModel.exists_norm_diagUnits2_mul_le_and_eq_zero_of_admissible_of_centralChar4 below · depth 26 - Contragredient involution maps I(μ₀,μ₁) to I(μ₁⁻¹,μ₀⁻¹)
LanglandsTunnell.CubicInduction.conj_transposeInvN_mem_principalSeries20 below · depth 26 - Godement–Whittaker function of a pure tensor at ι(g)
LanglandsTunnell.CubicInduction.godementWhittaker3_iotaGL_eq_of_pureTensor0 below · depth 26 - Dual Jacquet integral of a principal-series vector
LanglandsTunnell.CubicInduction.integral_psiLocal_mul_transposeInvN_eq_mul_integral_psiLocal_mul_dual0 below · depth 26 - Godement-section realisation of the GL₃ Jacquet–Whittaker function
LanglandsTunnell.CubicInduction.jacquetWhittaker3_diagonal3_mul_eq_mul_godementWhittaker3_of_chamber27 below · depth 26 - Twisted contragredient of a Whittaker vector is again Whittaker
LanglandsTunnell.RankinSelberg.dualPartner_block_of_admissible2 below · depth 26 - Uniform radial profile of a Schwartz–Bruhat function on bottom rows
LanglandsTunnell.RankinSelberg.exists_forall_apply_row_localLevelOne_eq_zero_and_eq_apply_zero_of_isLocallyConstant_of_hasCompactSupport0 below · depth 26 - Convergence of the dual GL₂× GL₂ Rankin–Selberg integrand
LanglandsTunnell.RankinSelberg.exists_forall_integrable_dual_rsIntegrand22_withDensity_of_admissible_of_chamber33 below · depth 26 - Absolute convergence of the unfolded local Godement integrand
LanglandsTunnell.RankinSelberg.exists_forall_integrable_godementUnfold_of_principalSeries2_of_admissible_ed236 below · depth 26 - Integrability of the folded local Rankin–Selberg integrand in the chamber
LanglandsTunnell.RankinSelberg.exists_forall_integrable_jacquetIntegral_mul_whittaker_mul_row_mul_cpow_withDensity_of_principalSeries2_of_chamber28 below · depth 26 - Vanishing of deep dual torus shells over K₀
LanglandsTunnell.RankinSelberg.exists_forall_le_setIntegral_localLevelOne_dualJacquet_mul_partner_mul_eq_zero_of_dualTorusZeta_polynomial12 below · depth 26 - Rationality of the local (2,2) Rankin–Selberg integral
LanglandsTunnell.RankinSelberg.exists_rsLocalIntegral22_mul_one_sub_eq_cpow_mul_eval_of_principalSeries2_of_forall_torusZeta_polynomial_core38 below · depth 26 - Open compact subgroup adapted to φ₁ and χ
LanglandsTunnell.RankinSelberg.exists_subgroup_isOpen_isCompact_forall_apply_mul_eq_and_det_eq_one_and_transposeInv_mem0 below · depth 26 - Half-plane integrability of local Godement–Jacquet integrals on GL₂
LanglandsTunnell.RankinSelberg.forall_exists_integrable_godementZeta2_coefficient36 below · depth 26 - Godement–Jacquet zeta integrals of GL₂ matrix coefficients
LanglandsTunnell.RankinSelberg.forall_exists_laurent_godementZeta2_coefficient_of_forall_torusZeta_fe47 below · depth 26 - Rationality of Whittaker Godement–Jacquet zeta integrals on GL₂
LanglandsTunnell.RankinSelberg.forall_exists_rational_godementZeta2_whittaker_of_forall_torusZeta_fe48 below · depth 26 - Cleared local Godement–Jacquet functional equation for Whittaker coefficients
LanglandsTunnell.RankinSelberg.forall_godementZeta2_whittaker_clearedFE_of_forall_torusZeta_fe166 below · depth 26 - Local GL₂× GL₂ functional equation for Laurent numerators
LanglandsTunnell.RankinSelberg.forall_rsLocalIntegral22_schwartz_centralCleared_laurentFE_of_principalSeries2_of_forall_torusZeta_fe206 below · depth 26 - Integrability of the local Rankin–Selberg integrand from its unfolding
LanglandsTunnell.RankinSelberg.integrable_rsIntegrand_godementSlot_of_integrable_unfold9 below · depth 26 - Unfolding of a Godement-section Rankin–Selberg local integral
LanglandsTunnell.RankinSelberg.rsLocalIntegral_godementWhittaker_iotaGL_eq_sum_rsLocalIntegral_mul_godementZeta9 below · depth 26 - Finiteness of |det|^t over norm balls in GL₂(ℚₚ)
AutomorphicForm.lintegral_indicator_norm_le_mul_norm_det_rpow_lt_top22 below · depth 27 - Haar measure on local GL₂ is invariant under g↦ ^tg⁻¹
AutomorphicForm.map_transposeInvN_eq_self_of_isHaarMeasure_fin_two0 below · depth 27 - Big-cell GL₃ section as a GL₂ Godement integral
LanglandsTunnell.CubicInduction.cellSectionOf_antidiagonal3_mul_mul_eq_integral_godementDatum4 below · depth 27 - Finite pure-tensor decomposition of the local Godement datum
LanglandsTunnell.CubicInduction.exists_finset_pureTensor_godementDatum4 below · depth 27 - Godement slot vectors: principal series membership and support
LanglandsTunnell.CubicInduction.godementDatum_mem_principalSeries2_and_support2 below · depth 27 - Jacquet unfolding of a Godement section on GL₃
LanglandsTunnell.CubicInduction.integral_godementSection_upperUnipotent3_eq_godementWhittaker3_of_continuous4 below · depth 27 - Jacquet–Whittaker function at diag(1,-1,1)Y as a ψ-integral
LanglandsTunnell.CubicInduction.jacquetWhittaker3_diagonal3_mul_eq_mul_integral_psiLocal_cellSectionOf15 below · depth 27 - Measurability of the unfolded Godement double integrand
LanglandsTunnell.RankinSelberg.aestronglyMeasurable_godementUnfold_integrand3 below · depth 27 - Half-plane integrability of the local GL₂timesGL₂ integrand
LanglandsTunnell.RankinSelberg.exists_forall_integrable_jacquetIntegral_mul_whittaker_mul_row_withDensity_of_admissible_of_chamber25 below · depth 27 - Two-exponent asymptotics of chamber Jacquet integrals on small torus
LanglandsTunnell.RankinSelberg.exists_forall_jacquetIntegral_diagOne_mul_eq_sqrt_modulus_mul_add_of_mem_principalSeries2_of_chamber6 below · depth 27
… and 57 more statements (search for the module name to find them).