import Definitions.Def_LanglandsTunnell_CubicInduction_Structure set_option autoImplicit false open Matrix IsDedekindDomain NumberField MeasureTheory AutomorphicForm noncomputable section namespace LanglandsTunnell.CubicInduction structure CubicInductionData where form : AdelicGL 3 (๐“ž โ„š) โ„š โ†’ โ„‚ whittaker : AdelicGL 3 (๐“ž โ„š) โ„š โ†’ โ„‚ whittakerLoc : (v : HeightOneSpectrum (๐“ž โ„š)) โ†’ LocalGL3 v โ†’ โ„‚ whittakerArch : GL (Fin 3) (InfiniteAdeleRing โ„š) โ†’ โ„‚ centralChar : (AdeleRing (๐“ž โ„š) โ„š)หฃ โ†’* โ„‚หฃ dualWhittaker : AdelicGL 3 (๐“ž โ„š) โ„š โ†’ โ„‚ def CubicInductionForm.toData {K : Type} [Field K] [NumberField K] [Algebra (๐“ž โ„š) (๐“ž K)] [Algebra.IsIntegral (๐“ž โ„š) (๐“ž K)] {pins : CarrierPins โ„š} {ฯˆ : AddChar (AdeleRing (๐“ž โ„š) โ„š) โ„‚} {ฮผ : (AdeleRing (๐“ž K) K)หฃ โ†’* โ„‚หฃ} (D : CubicInductionForm K pins ฯˆ ฮผ) : CubicInductionData where form := D.form whittaker := D.whittaker whittakerLoc := D.whittakerLoc whittakerArch := D.whittakerArch centralChar := D.centralChar dualWhittaker := D.dualWhittaker structure IsCubicInductionDataOn (K : Type) [Field K] [NumberField K] [Algebra (๐“ž โ„š) (๐“ž K)] [Algebra.IsIntegral (๐“ž โ„š) (๐“ž K)] (pins : CarrierPins โ„š) (ฯˆ : AddChar (AdeleRing (๐“ž โ„š) โ„š) โ„‚) (ฮผ : (AdeleRing (๐“ž K) K)หฃ โ†’* โ„‚หฃ) (S : Set (HeightOneSpectrum (๐“ž โ„š))) (X : CubicInductionData) : Prop where automorphic : โˆ€ (ฮณ : GL (Fin 3) โ„š) (g : AdelicGL 3 (๐“ž โ„š) โ„š), X.form (globalPointsGL 3 (๐“ž โ„š) โ„š ฮณ * g) = X.form g central : โˆ€ (z : (AdeleRing (๐“ž โ„š) โ„š)หฃ) (g : AdelicGL 3 (๐“ž โ„š) โ„š), X.form (centralScalarGL 3 (๐“ž โ„š) โ„š z * g) = (X.centralChar z : โ„‚) * X.form g centralChar_ideleClass : IsIdeleClassChar (๐“ž โ„š) โ„š X.centralChar cuspidalP21 : IsCuspidalAlongP21 pins X.form cuspidalP12 : IsCuspidalAlongP12 pins X.form whittaker_eq : โˆ€ g, X.whittaker g = whittaker3 pins ฯˆ X.form g whittaker_law : IsGL3PsiWhittakerFn ฯˆ X.whittaker expansion : โˆ€ g : AdelicGL 3 (๐“ž โ„š) โ„š, HasSum (fun i : MirabolicIndex โ„š => X.whittaker (mirabolicTranslate i * g)) (X.form g) whittakerLoc_law : โˆ€ v, IsGL3PsiWhittakerFn (psiLoc ฯˆ v) (X.whittakerLoc v) factorizable : โˆ€ (g : AdelicGL 3 (๐“ž โ„š) โ„š) (T : Finset (HeightOneSpectrum (๐“ž โ„š))), (โˆ€ v, v โˆˆ S โ†’ v โˆˆ T) โ†’ (โˆ€ v, v โˆ‰ T โ†’ componentAt3 (๐“ž โ„š) โ„š v g โˆˆ localMaximalCompact3 (๐“ž โ„š) โ„š v) โ†’ X.whittaker g = X.whittakerArch (archComponent3 (๐“ž โ„š) โ„š g) * โˆ v โˆˆ T, X.whittakerLoc v (componentAt3 (๐“ž โ„š) โ„š v g) spherical : โˆ€ v, v โˆ‰ S โ†’ IsInducedSphericalAt (inducedCoeff K ฮผ) v (localMaximalCompact3 (๐“ž โ„š) โ„š v) (X.whittakerLoc v) levelInvariant : โˆ€ v, v โˆ‰ S โ†’ ยฌ IsRamifiedIn K v โ†’ โˆ€ k โˆˆ congruenceK1 (๐“ž โ„š) โ„š v (inducedLevelAt K ฮผ v), โˆ€ g, X.whittakerLoc v (g * k) = X.whittakerLoc v g multOne : โˆ€ v, HasWhittakerMultOne (psiLoc ฯˆ v) (X.whittakerLoc v) moderateGrowth : IsModerateGrowth3 โ„š X.form kFinite : IsKFinite X.whittakerArch iotaMoments : HasIotaMoments X.form whittakerHalfPlane : HasWhittakerHalfPlane X.whittaker dualWhittaker_eq : โˆ€ g, X.dualWhittaker g = whittaker3 pins ฯˆโปยน (dualForm X.form) g dualWhittaker_law : IsGL3PsiWhittakerFn ฯˆโปยน X.dualWhittaker dual_expansion : โˆ€ g : AdelicGL 3 (๐“ž โ„š) โ„š, HasSum (fun i : MirabolicIndex โ„š => X.dualWhittaker (mirabolicTranslate i * g)) (dualForm X.form g) dual_iotaMoments : HasIotaMoments (dualForm X.form) dual_whittakerHalfPlane : HasWhittakerHalfPlane X.dualWhittaker theorem CubicInductionForm.isCubicInductionDataOn {K : Type} [Field K] [NumberField K] [Algebra (๐“ž โ„š) (๐“ž K)] [Algebra.IsIntegral (๐“ž โ„š) (๐“ž K)] {pins : CarrierPins โ„š} {ฯˆ : AddChar (AdeleRing (๐“ž โ„š) โ„š) โ„‚} {ฮผ : (AdeleRing (๐“ž K) K)หฃ โ†’* โ„‚หฃ} (D : CubicInductionForm K pins ฯˆ ฮผ) (S : Set (HeightOneSpectrum (๐“ž โ„š))) (hS : โˆ€ v, IsBadPlace K ฮผ v โ†’ v โˆˆ S) : IsCubicInductionDataOn K pins ฯˆ ฮผ S D.toData := { automorphic := D.automorphic, central := D.central, centralChar_ideleClass := D.centralChar_ideleClass, cuspidalP21 := D.cuspidalP21, cuspidalP12 := D.cuspidalP12, whittaker_eq := D.whittaker_eq, whittaker_law := D.whittaker_law, expansion := D.expansion, whittakerLoc_law := D.whittakerLoc_law, factorizable := fun g T hT hg => D.factorizable g T (fun v hv => hT v (hS v hv)) hg, spherical := fun v hv => D.spherical v (fun hb => hv (hS v hb)), levelInvariant := fun v _ hram => D.levelInvariant v hram, multOne := D.multOne, moderateGrowth := D.moderateGrowth, kFinite := D.kFinite, iotaMoments := D.iotaMoments, whittakerHalfPlane := D.whittakerHalfPlane, dualWhittaker_eq := D.dualWhittaker_eq, dualWhittaker_law := D.dualWhittaker_law, dual_expansion := D.dual_expansion, dual_iotaMoments := D.dual_iotaMoments, dual_whittakerHalfPlane := D.dual_whittakerHalfPlane } theorem IsCubicInductionDataOn.exists_cubicInductionForm_toData_eq {K : Type} [Field K] [NumberField K] [Algebra (๐“ž โ„š) (๐“ž K)] [Algebra.IsIntegral (๐“ž โ„š) (๐“ž K)] {pins : CarrierPins โ„š} {ฯˆ : AddChar (AdeleRing (๐“ž โ„š) โ„š) โ„‚} {ฮผ : (AdeleRing (๐“ž K) K)หฃ โ†’* โ„‚หฃ} {Y : CubicInductionData} (hY : IsCubicInductionDataOn K pins ฯˆ ฮผ {v | IsBadPlace K ฮผ v} Y) (hlevel : โˆ€ v, ยฌ IsRamifiedIn K v โ†’ โˆ€ k โˆˆ congruenceK1 (๐“ž โ„š) โ„š v (inducedLevelAt K ฮผ v), โˆ€ g, Y.whittakerLoc v (g * k) = Y.whittakerLoc v g) : โˆƒ D : CubicInductionForm K pins ฯˆ ฮผ, D.toData = Y := โŸจ{ form := Y.form, whittaker := Y.whittaker, whittakerLoc := Y.whittakerLoc, whittakerArch := Y.whittakerArch, centralChar := Y.centralChar, dualWhittaker := Y.dualWhittaker, automorphic := hY.automorphic, central := hY.central, centralChar_ideleClass := hY.centralChar_ideleClass, cuspidalP21 := hY.cuspidalP21, cuspidalP12 := hY.cuspidalP12, whittaker_eq := hY.whittaker_eq, whittaker_law := hY.whittaker_law, expansion := hY.expansion, whittakerLoc_law := hY.whittakerLoc_law, factorizable := fun g T hT hg => hY.factorizable g T (fun v hv => hT v hv) hg, spherical := fun v hv => hY.spherical v hv, levelInvariant := hlevel, multOne := hY.multOne, moderateGrowth := hY.moderateGrowth, kFinite := hY.kFinite, iotaMoments := hY.iotaMoments, whittakerHalfPlane := hY.whittakerHalfPlane, dualWhittaker_eq := hY.dualWhittaker_eq, dualWhittaker_law := hY.dualWhittaker_law, dual_expansion := hY.dual_expansion, dual_iotaMoments := hY.dual_iotaMoments, dual_whittakerHalfPlane := hY.dual_whittakerHalfPlane }, rflโŸฉ theorem exists_isCubicInductionDataOn_productionPinsOf_of_exists_form_ne_zero (K : Type) [Field K] [NumberField K] [Algebra (๐“ž โ„š) (๐“ž K)] [Algebra.IsIntegral (๐“ž โ„š) (๐“ž K)] (ฯˆ : AddChar (AdeleRing (๐“ž โ„š) โ„š) โ„‚) (ฮผ : (AdeleRing (๐“ž K) K)หฃ โ†’* โ„‚หฃ) (D : Set (AdelicGL2 (๐“ž โ„š) โ„š)) (U : Ideal (๐“ž โ„š) โ†’ Subgroup (AdelicGL2 (๐“ž โ„š) โ„š)) (gen : HeightOneSpectrum (๐“ž โ„š) โ†’ AdelicGL2 (๐“ž โ„š) โ„š) (h : โˆƒ ฮฆ : CubicInductionForm K (productionPinsOf โ„š D U gen (AdelicBox.adelicBox โ„š)) ฯˆ ฮผ, ฮฆ.form โ‰  0) : โˆƒ X : CubicInductionData, IsCubicInductionDataOn K (productionPinsOf โ„š D U gen (AdelicBox.adelicBox โ„š)) ฯˆ ฮผ {v | IsBadPlace K ฮผ v} X โˆง X.form โ‰  0 := by obtain โŸจฮฆ, hฮฆโŸฉ := h exact โŸจฮฆ.toData, ฮฆ.isCubicInductionDataOn _ (fun _ hv => hv), hฮฆโŸฉ end LanglandsTunnell.CubicInduction end