Definitions/Def_JPSS_CubicLiftFactor.lean
Factored JPSS cubic base-change packages and GL(3) Euler factors
Over a commutative ring R, gl3LFactorPoly e1 e2 e3 is the cubic polynomial 1 - e_1X + e_2X^2 - e_3X^3; helper lemmas compute its coefficients in degrees 0,1,2,3 as 1,-e_1,e_2,-e_3, deduce that the triple (e_1,e_2,e_3) is determined by the polynomial, and record the factorisation \prod_{i}(1-\gamma_iX) when (e_1,e_2,e_3) are the elementary symmetric functions of \gamma_1,\gamma_2,\gamma_3, together with the collapsed shape 1-cX^3 in the case (0,0,c). Four further identities treat the substitution X\mapsto X^3 in the degree-two factor heckeLFactorPoly s e =1-sX+eX^2, where satakePow n s e is the Chebyshev-type recursion with \mathrm{sp}_0=2, \mathrm{sp}_1=s, \mathrm{sp}_{n+2}=s\,\mathrm{sp}_{n+1}-e\,\mathrm{sp}_n: for s=\alpha+\beta, e=\alpha\beta one gets (1-\alpha^3X^3)(1-\beta^3X^3), in general 1-\mathrm{sp}_3(s,e)X^3+e^3X^6, and likewise after scaling (s,e) by (c,c^2); rankinFactor_inert expands (1-c\alpha^3X^3)(1-c\beta^3X^3).
The two structures refine JPSSCubicLiftPackage. JPSSConverseFactored R F K, for number fields F,K with \mathcal{O}_K integral over \mathcal{O}_F, carries a cuspidality notion (a family of predicates on Hecke eigensystems), the assertion that outside some finite set of primes of K all residue degrees are \le 3, a predicate ConverseHyp on Hecke eigensystems over K, a field saying that any \Phi satisfying ConverseHyp is cuspidal or constant on fibres over F, and a field saying that formalBaseChange F K π satisfies ConverseHyp for cuspidal \pi. The bridge toJPSSCubicLiftPackage supplies the package's lifting field with formalBaseChange, citing isBaseChangeOf_formalBaseChange. JPSSGL3Factored extends this by predicates IsGL3Automorphic on systems of Satake triples over F, RankinNice pairing an eigensystem with such a system, and IsIrreducibleInduced on functions on the primes of K, plus fields producing a GL(3)-automorphic \sigma from each irreducible induced \chi, Rankin-niceness of cuspidal \pi against any such \sigma, an Euler comparison yielding ConverseHyp (formalBaseChange F K π), and a coherence field identifying the inherited proof with the one assembled from these three ingredients; converseHyp_of_ingredients performs that assembly. Finally trivialNotion (always cuspidal) is used to inhabit both structures from the residue-degree hypothesis alone, with all extra predicates taken to be True, and the resulting package is recorded.
Relation to Mathlib
Mathlib has no notion of automorphic forms, Hecke eigensystems or base change; the structures and predicates here are the project's own. Only Mathlib's Polynomial (with comp), Dedekind-domain height-one spectrum and inertia degree are reused.
Where it is used
These are the intermediate layers of the non-normal cubic base change input for \mathrm{GL}_2: they reduce the lifting field of JPSSCubicLiftPackage first to a converse-theorem hypothesis over K, then to GL(3) automorphic induction, \mathrm{GL}_2\times\mathrm{GL}_3 Rankin–Selberg niceness and a local Euler-factor comparison at primes of residue degree three. Cubic base change of this kind is what the Langlands–Tunnell step of the Fermat argument rests on.
References
- H. Jacquet, I. I. Piatetski-Shapiro and J. Shalika, Relèvement cubique non normal, C. R. Acad. Sci. Paris Sér. I Math. 292 (1981), 567–571
- H. Jacquet, I. I. Piatetski-Shapiro and J. Shalika, Automorphic forms on GL(3), Ann. of Math. 109 (1979), 169–258
- H. Jacquet, I. I. Piatetski-Shapiro and J. Shalika, Rankin–Selberg convolutions, Amer. J. Math. 105 (1983), 367–464
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 207 lines
- 38 declarations
- used in the statements of 1 theorems and imported by 2 proofs
- imports 2 definition modules, and the statements of 1 theorems
Source file: Definitions/Def_JPSS_CubicLiftFactor.lean
Imports
Theorems imported by this definition module
Imported by
- no other definition module
Declarations
- def
AutomorphicForm.gl3LFactorPoly - theorem
AutomorphicForm.gl3LFactorPoly_def - theorem
AutomorphicForm.coeff_zero_gl3LFactorPoly - theorem
AutomorphicForm.coeff_one_gl3LFactorPoly - theorem
AutomorphicForm.coeff_two_gl3LFactorPoly - theorem
AutomorphicForm.coeff_three_gl3LFactorPoly - theorem
AutomorphicForm.gl3LFactorPoly_inj - theorem
AutomorphicForm.gl3LFactorPoly_split - theorem
AutomorphicForm.gl3LFactorPoly_inertInduction - theorem
AutomorphicForm.gl3LFactorPoly_splitInduction - theorem
AutomorphicForm.eulerCompare_inert - theorem
AutomorphicForm.eulerCompare_inert_symm - theorem
AutomorphicForm.rankinFactor_inert - theorem
AutomorphicForm.eulerCompare_inert_twist - structure
AutomorphicForm.JPSSConverseFactored - field
AutomorphicForm.JPSSConverseFactored.notion - field
AutomorphicForm.JPSSConverseFactored.cubicDeg - field
AutomorphicForm.JPSSConverseFactored.ConverseHyp - field
AutomorphicForm.JPSSConverseFactored.jl_converse - field
AutomorphicForm.JPSSConverseFactored.formalLift_converseHyp - field
AutomorphicForm.JPSSConverseFactored.ConverseHyp - def
AutomorphicForm.JPSSConverseFactored.toJPSSCubicLiftPackage - structure
AutomorphicForm.JPSSGL3Factored - field
AutomorphicForm.JPSSGL3Factored.IsGL3Automorphic - field
AutomorphicForm.JPSSGL3Factored.RankinNice - field
AutomorphicForm.JPSSGL3Factored.IsIrreducibleInduced - field
AutomorphicForm.JPSSGL3Factored.gl3_induction - field
AutomorphicForm.JPSSGL3Factored.rankin_nice - field
AutomorphicForm.JPSSGL3Factored.euler_compare - field
AutomorphicForm.JPSSGL3Factored.ConverseHyp - field
AutomorphicForm.JPSSGL3Factored.formalLift_converseHyp_eq - def
AutomorphicForm.JPSSGL3Factored.toJPSSCubicLiftPackage - theorem
AutomorphicForm.JPSSGL3Factored.converseHyp_of_ingredients - def
AutomorphicForm.trivialNotion - def
AutomorphicForm.jpssConverseFactored_sat - def
AutomorphicForm.jpssGL3Factored_sat - theorem
AutomorphicForm.jpssGL3Factored_sat_toPackage_notion - def
AutomorphicForm.jpssConverseFactored_sat_toPackage
Source
import Mathlib import Definitions.Def_AutomorphicForm_FormalBaseChange import Definitions.Def_AutomorphicForm_LocalLFactor import Theorems.Thm_AutomorphicForm_isBaseChangeOf_formalBaseChange set_option autoImplicit false open IsDedekindDomain NumberField Polynomial noncomputable section namespace AutomorphicForm variable {R : Type*} [CommRing R] def gl3LFactorPoly (e1 e2 e3 : R) : Polynomial R := 1 - C e1 * X + C e2 * X ^ 2 - C e3 * X ^ 3 @[simp] theorem gl3LFactorPoly_def (e1 e2 e3 : R) : gl3LFactorPoly e1 e2 e3 = 1 - C e1 * X + C e2 * X ^ 2 - C e3 * X ^ 3 := rfl @[simp] theorem coeff_zero_gl3LFactorPoly (e1 e2 e3 : R) : (gl3LFactorPoly e1 e2 e3).coeff 0 = 1 := by simp [gl3LFactorPoly, coeff_one, coeff_X_pow] @[simp] theorem coeff_one_gl3LFactorPoly (e1 e2 e3 : R) : (gl3LFactorPoly e1 e2 e3).coeff 1 = -e1 := by simp [gl3LFactorPoly, coeff_one, coeff_C_mul, coeff_X_pow] @[simp] theorem coeff_two_gl3LFactorPoly (e1 e2 e3 : R) : (gl3LFactorPoly e1 e2 e3).coeff 2 = e2 := by simp [gl3LFactorPoly, coeff_one, coeff_C_mul, coeff_X_pow] @[simp] theorem coeff_three_gl3LFactorPoly (e1 e2 e3 : R) : (gl3LFactorPoly e1 e2 e3).coeff 3 = -e3 := by simp [gl3LFactorPoly, coeff_one, coeff_C_mul, coeff_X_pow] theorem gl3LFactorPoly_inj {e1 e2 e3 e1' e2' e3' : R} (h : gl3LFactorPoly e1 e2 e3 = gl3LFactorPoly e1' e2' e3') : e1 = e1' ∧ e2 = e2' ∧ e3 = e3' := by refine ⟨?_, ?_, ?_⟩ · have := congrArg (·.coeff 1) h simp only [coeff_one_gl3LFactorPoly] at this; exact neg_injective this · have := congrArg (·.coeff 2) h simpa only [coeff_two_gl3LFactorPoly] using this · have := congrArg (·.coeff 3) h simp only [coeff_three_gl3LFactorPoly] at this; exact neg_injective this theorem gl3LFactorPoly_split (γ₁ γ₂ γ₃ : R) : gl3LFactorPoly (γ₁ + γ₂ + γ₃) (γ₁ * γ₂ + γ₁ * γ₃ + γ₂ * γ₃) (γ₁ * γ₂ * γ₃) = (1 - C γ₁ * X) * (1 - C γ₂ * X) * (1 - C γ₃ * X) := by simp only [gl3LFactorPoly, map_add, map_mul]; ring theorem gl3LFactorPoly_inertInduction (c : R) : gl3LFactorPoly 0 0 c = 1 - C c * X ^ 3 := by simp [gl3LFactorPoly] theorem gl3LFactorPoly_splitInduction (c₁ c₂ c₃ : R) : gl3LFactorPoly (c₁ + c₂ + c₃) (c₁ * c₂ + c₁ * c₃ + c₂ * c₃) (c₁ * c₂ * c₃) = (1 - C c₁ * X) * (1 - C c₂ * X) * (1 - C c₃ * X) := gl3LFactorPoly_split c₁ c₂ c₃ theorem eulerCompare_inert (α β : R) : (heckeLFactorPoly (satakePow 3 (α + β) (α * β)) ((α * β) ^ 3)).comp (X ^ 3) = (1 - C (α ^ 3) * X ^ 3) * (1 - C (β ^ 3) * X ^ 3) := by rw [satakePow_add_pow, mul_pow, heckeLFactorPoly_split] simp only [mul_comp, sub_comp, one_comp, C_comp, X_comp] theorem eulerCompare_inert_symm (s e : R) : (heckeLFactorPoly (satakePow 3 s e) (e ^ 3)).comp (X ^ 3) = 1 - C (satakePow 3 s e) * X ^ 3 + C (e ^ 3) * X ^ 6 := by simp only [heckeLFactorPoly_def, sub_comp, add_comp, one_comp, mul_comp, C_comp, X_comp, pow_comp] ring theorem rankinFactor_inert (α β c : R) : (1 - C (c * α ^ 3) * X ^ 3) * (1 - C (c * β ^ 3) * X ^ 3) = 1 - C (c * (α ^ 3 + β ^ 3)) * X ^ 3 + C (c ^ 2 * (α * β) ^ 3) * X ^ 6 := by push_cast [map_mul, map_add, map_pow]; ring theorem eulerCompare_inert_twist (s e c : R) : (heckeLFactorPoly (c * satakePow 3 s e) (c ^ 2 * e ^ 3)).comp (X ^ 3) = 1 - C (c * satakePow 3 s e) * X ^ 3 + C (c ^ 2 * e ^ 3) * X ^ 6 := by simp only [heckeLFactorPoly_def, sub_comp, add_comp, one_comp, mul_comp, C_comp, X_comp, pow_comp] ring section Factor variable (R : Type*) [CommRing R] (F K : Type) [Field F] [NumberField F] [Field K] [NumberField K] [Algebra (𝓞 F) (𝓞 K)] [Algebra.IsIntegral (𝓞 F) (𝓞 K)] structure JPSSConverseFactored where notion : CuspidalityNotion R cubicDeg : ∃ S : Finset (HeightOneSpectrum (𝓞 K)), IsDegreeThreeOutside F K S ConverseHyp : HeckeEigensystem K R → Prop jl_converse : ∀ Φ : HeckeEigensystem K R, ConverseHyp Φ → notion.IsCusp K Φ ∨ Φ.IsConstantOnFibers F formalLift_converseHyp : ∀ π : HeckeEigensystem F R, notion.IsCusp F π → ConverseHyp (formalBaseChange F K π) variable {R F K} def JPSSConverseFactored.toJPSSCubicLiftPackage (I : JPSSConverseFactored R F K) : JPSSCubicLiftPackage R F K where notion := I.notion cubicDeg := I.cubicDeg lift_automorphic := fun π hπ => ⟨formalBaseChange F K π, isBaseChangeOf_formalBaseChange F K π, I.jl_converse _ (I.formalLift_converseHyp π hπ)⟩ variable (R F K) structure JPSSGL3Factored extends JPSSConverseFactored R F K where IsGL3Automorphic : (HeightOneSpectrum (𝓞 F) → R × R × R) → Prop RankinNice : HeckeEigensystem F R → (HeightOneSpectrum (𝓞 F) → R × R × R) → Prop IsIrreducibleInduced : (HeightOneSpectrum (𝓞 K) → R) → Prop gl3_induction : ∀ χ : HeightOneSpectrum (𝓞 K) → R, IsIrreducibleInduced χ → ∃ σ : HeightOneSpectrum (𝓞 F) → R × R × R, IsGL3Automorphic σ rankin_nice : ∀ π : HeckeEigensystem F R, notion.IsCusp F π → ∀ σ, IsGL3Automorphic σ → RankinNice π σ euler_compare : ∀ π : HeckeEigensystem F R, (∀ χ : HeightOneSpectrum (𝓞 K) → R, IsIrreducibleInduced χ → ∃ σ, IsGL3Automorphic σ ∧ RankinNice π σ) → ConverseHyp (formalBaseChange F K π) formalLift_converseHyp_eq : ∀ π hπ, formalLift_converseHyp π hπ = euler_compare π (fun χ hirr => let ⟨σ, hσ⟩ := gl3_induction χ hirr; ⟨σ, hσ, rankin_nice π hπ σ hσ⟩) variable {R F K} def JPSSGL3Factored.toJPSSCubicLiftPackage (I : JPSSGL3Factored R F K) : JPSSCubicLiftPackage R F K := I.toJPSSConverseFactored.toJPSSCubicLiftPackage theorem JPSSGL3Factored.converseHyp_of_ingredients (I : JPSSGL3Factored R F K) (π : HeckeEigensystem F R) (hπ : I.notion.IsCusp F π) : I.ConverseHyp (formalBaseChange F K π) := I.euler_compare π fun χ hirr => let ⟨σ, hσ⟩ := I.gl3_induction χ hirr; ⟨σ, hσ, I.rankin_nice π hπ σ hσ⟩ end Factor def trivialNotion (R : Type*) [CommRing R] : CuspidalityNotion R where IsCusp := fun _ _ _ _ => True section SAT variable (R : Type*) [CommRing R] (F K : Type) [Field F] [NumberField F] [Field K] [NumberField K] [Algebra (𝓞 F) (𝓞 K)] [Algebra.IsIntegral (𝓞 F) (𝓞 K)] def jpssConverseFactored_sat (hcubic : ∃ S : Finset (HeightOneSpectrum (𝓞 K)), IsDegreeThreeOutside F K S) : JPSSConverseFactored R F K where notion := trivialNotion R cubicDeg := hcubic ConverseHyp := fun _ => True jl_converse := fun _ _ => Or.inl trivial formalLift_converseHyp := fun _ _ => trivial def jpssGL3Factored_sat (hcubic : ∃ S : Finset (HeightOneSpectrum (𝓞 K)), IsDegreeThreeOutside F K S) : JPSSGL3Factored R F K where notion := trivialNotion R cubicDeg := hcubic ConverseHyp := fun _ => True jl_converse := fun _ _ => Or.inl trivial formalLift_converseHyp := fun _ _ => trivial IsGL3Automorphic := fun _ => True RankinNice := fun _ _ => True IsIrreducibleInduced := fun _ => True gl3_induction := fun _ _ => ⟨fun _ => (0, 0, 0), trivial⟩ rankin_nice := fun _ _ _ _ => trivial euler_compare := fun _ _ => trivial formalLift_converseHyp_eq := fun _ _ => rfl theorem jpssGL3Factored_sat_toPackage_notion (hcubic : ∃ S : Finset (HeightOneSpectrum (𝓞 K)), IsDegreeThreeOutside F K S) : ((jpssGL3Factored_sat R F K hcubic).toJPSSCubicLiftPackage).notion = trivialNotion R := rfl def jpssConverseFactored_sat_toPackage (hcubic : ∃ S : Finset (HeightOneSpectrum (𝓞 K)), IsDegreeThreeOutside F K S) : JPSSCubicLiftPackage R F K := (jpssConverseFactored_sat R F K hcubic).toJPSSCubicLiftPackage end SAT end AutomorphicForm end