import Definitions.Def_LanglandsTunnell_ConverseData import Definitions.Def_LanglandsTunnell_RankinSelbergEuler import Definitions.Def_LocalLanglands_HeckeCosetSystem set_option autoImplicit false open Matrix IsDedekindDomain NumberField NumberField.AdelicLevel NumberField.TateGlobal open LanglandsTunnell.TateLocal LanglandsTunnell.RankinSelberg noncomputable section namespace LanglandsTunnell.CubicInduction section Generators variable (v : HeightOneSpectrum (π“ž β„š)) abbrev LocalGL3 : Type := GL (Fin 3) (v.adicCompletion β„š) abbrev varpi : v.adicCompletion β„š := (uniformizerUnit β„š v : v.adicCompletion β„š) theorem varpi_ne_zero : varpi v β‰  0 := (uniformizerUnit β„š v).ne_zero def heckeGen1 : LocalGL3 v := Matrix.GeneralLinearGroup.mkOfDetNeZero (Matrix.diagonal ![varpi v, 1, 1]) (by simp [Matrix.det_diagonal, Fin.prod_univ_three, varpi_ne_zero v]) def heckeGen2 : LocalGL3 v := Matrix.GeneralLinearGroup.mkOfDetNeZero (Matrix.diagonal ![varpi v, varpi v, 1]) (by simp [Matrix.det_diagonal, Fin.prod_univ_three, varpi_ne_zero v]) def centralGen : LocalGL3 v := Matrix.GeneralLinearGroup.mkOfDetNeZero (Matrix.diagonal ![varpi v, varpi v, varpi v]) (by simp [Matrix.det_diagonal, Fin.prod_univ_three, varpi_ne_zero v]) def cNormQ : β„‚ := (Ideal.absNorm v.asIdeal : β„‚) end Generators section Eigen variable {G : Type*} [Group G] def cosetSum {ΞΉ : Type} [Fintype ΞΉ] (reps : ΞΉ β†’ G) (W : G β†’ β„‚) (g : G) : β„‚ := βˆ‘ i, W (g * reps i) def IsCosetEigenfunction (U : Subgroup G) (gen : G) (W : G β†’ β„‚) (lam : β„‚) : Prop := βˆ€ (ΞΉ : Type) [Fintype ΞΉ] (reps : ΞΉ β†’ G), HeckeIntegralSeam.IsHeckeCosetSystem U gen reps β†’ βˆ€ g : G, cosetSum reps W g = lam * W g theorem isCosetEigenfunction_zero (U : Subgroup G) (gen : G) (lam : β„‚) : IsCosetEigenfunction U gen (fun _ => (0 : β„‚)) lam := by intro ΞΉ _ reps _ g simp [cosetSum] def IsRightInvariant (U : Subgroup G) (W : G β†’ β„‚) : Prop := βˆ€ g : G, βˆ€ u ∈ U, W (g * u) = W g end Eigen section Datum variable {K : Type} [Field K] [Algebra (π“ž β„š) (π“ž K)] [Algebra.IsIntegral (π“ž β„š) (π“ž K)] def IsInducedSphericalAt (c : HeightOneSpectrum (π“ž K) β†’ β„‚) (v : HeightOneSpectrum (π“ž β„š)) (U : Subgroup (LocalGL3 v)) (W : LocalGL3 v β†’ β„‚) : Prop := IsRightInvariant U W ∧ IsCosetEigenfunction U (heckeGen1 v) W (cNormQ v * inducedE1 β„š c v) ∧ IsCosetEigenfunction U (heckeGen2 v) W (cNormQ v * inducedE2 β„š c v) ∧ βˆ€ g : LocalGL3 v, W (centralGen v * g) = inducedE3 β„š c v * W g theorem isInducedSphericalAt_zero (c : HeightOneSpectrum (π“ž K) β†’ β„‚) (v : HeightOneSpectrum (π“ž β„š)) (U : Subgroup (LocalGL3 v)) : IsInducedSphericalAt c v U (fun _ => (0 : β„‚)) := ⟨fun _ _ _ => rfl, isCosetEigenfunction_zero _ _ _, isCosetEigenfunction_zero _ _ _, fun _ => by simp⟩ end Datum section BadPlaces variable (K : Type) [Field K] [NumberField K] [Algebra (π“ž β„š) (π“ž K)] [Algebra.IsIntegral (π“ž β„š) (π“ž K)] def IsRamifiedIn (v : HeightOneSpectrum (π“ž β„š)) : Prop := βˆƒ 𝔓 ∈ primeFibre β„š K v, Ideal.ramificationIdx' v.asIdeal 𝔓.asIdeal β‰  1 def IsTwistRamifiedAbove (ΞΌ : (AdeleRing (π“ž K) K)Λ£ β†’* β„‚Λ£) (v : HeightOneSpectrum (π“ž β„š)) : Prop := βˆƒ 𝔓 ∈ primeFibre β„š K v, Β¬ IsUnramifiedCharAt ΞΌ 𝔓 def IsBadPlace (ΞΌ : (AdeleRing (π“ž K) K)Λ£ β†’* β„‚Λ£) (v : HeightOneSpectrum (π“ž β„š)) : Prop := IsRamifiedIn K v ∨ IsTwistRamifiedAbove K ΞΌ v def inducedLevelAt (ΞΌ : (AdeleRing (π“ž K) K)Λ£ β†’* β„‚Λ£) (v : HeightOneSpectrum (π“ž β„š)) : β„• := βˆ‘αΆ  𝔓 ∈ primeFibre β„š K v, v.asIdeal.inertiaDeg' 𝔓.asIdeal * conductorExponentAt K 𝔓 (localChar ΞΌ 𝔓) end BadPlaces section UniformizerInverse variable (v : HeightOneSpectrum (π“ž β„š)) theorem varpi_inv_not_mem_integers : (varpi v)⁻¹ βˆ‰ v.adicCompletionIntegers β„š := by intro h rw [IsDedekindDomain.HeightOneSpectrum.mem_adicCompletionIntegers, map_invβ‚€, valued_uniformizerUnit β„š v] at h simp at h have h' : WithZero.exp (1 : β„€) ≀ WithZero.exp (0 : β„€) := h exact absurd (WithZero.exp_le_exp.mp h') (by omega) end UniformizerInverse end LanglandsTunnell.CubicInduction end