import Definitions.Def_LanglandsTunnell_CubicInduction_PrincipalSeries3 import Definitions.Def_LanglandsTunnell_StandardLocalConstantsAt import Definitions.Def_AutomorphicForm_SmoothingKernel import Definitions.Def_AutomorphicForm_LocalOrbitalBase set_option autoImplicit false noncomputable section open MeasureTheory IsDedekindDomain NumberField AutomorphicForm LanglandsTunnell.TateLocal namespace LanglandsTunnell.CubicInduction section GodementSection variable (v : HeightOneSpectrum (๐“ž โ„š)) def setCol23 (X : Matrix (Fin 2) (Fin 3) (v.adicCompletion โ„š)) (j : Fin 3) (u : v.adicCompletion โ„š ร— v.adicCompletion โ„š) : Matrix (Fin 2) (Fin 3) (v.adicCompletion โ„š) := Matrix.of fun i k => if k = j then (if i = 0 then u.1 else u.2) else X i k theorem setCol23_apply (X : Matrix (Fin 2) (Fin 3) (v.adicCompletion โ„š)) (j : Fin 3) (u : v.adicCompletion โ„š ร— v.adicCompletion โ„š) (i : Fin 2) (k : Fin 3) : setCol23 v X j u i k = if k = j then (if i = 0 then u.1 else u.2) else X i k := rfl def setCol22 (X : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š)) (j : Fin 2) (u : v.adicCompletion โ„š ร— v.adicCompletion โ„š) : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š) := Matrix.of fun i k => if k = j then (if i = 0 then u.1 else u.2) else X i k theorem setCol22_apply (X : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š)) (j : Fin 2) (u : v.adicCompletion โ„š ร— v.adicCompletion โ„š) (i k : Fin 2) : setCol22 v X j u i k = if k = j then (if i = 0 then u.1 else u.2) else X i k := rfl def colFourier23 (ฮท : AddChar (v.adicCompletion โ„š) โ„‚) (j : Fin 3) (ฮฆ : Matrix (Fin 2) (Fin 3) (v.adicCompletion โ„š) โ†’ โ„‚) (X : Matrix (Fin 2) (Fin 3) (v.adicCompletion โ„š)) : โ„‚ := letI := localBorel โ„š v โˆซ u : v.adicCompletion โ„š ร— v.adicCompletion โ„š, ฮฆ (setCol23 v X j u) * ฮท (u.1 * X 0 j + u.2 * X 1 j) โˆ‚((selfDualHaarAt โ„š v).prod (selfDualHaarAt โ„š v)) theorem colFourier23_apply (ฮท : AddChar (v.adicCompletion โ„š) โ„‚) (j : Fin 3) (ฮฆ : Matrix (Fin 2) (Fin 3) (v.adicCompletion โ„š) โ†’ โ„‚) (X : Matrix (Fin 2) (Fin 3) (v.adicCompletion โ„š)) : colFourier23 v ฮท j ฮฆ X = letI := localBorel โ„š v โˆซ u : v.adicCompletion โ„š ร— v.adicCompletion โ„š, ฮฆ (setCol23 v X j u) * ฮท (u.1 * X 0 j + u.2 * X 1 j) โˆ‚((selfDualHaarAt โ„š v).prod (selfDualHaarAt โ„š v)) := rfl def colFourier22 (ฮท : AddChar (v.adicCompletion โ„š) โ„‚) (j : Fin 2) (ฯ† : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š) โ†’ โ„‚) (X : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š)) : โ„‚ := letI := localBorel โ„š v โˆซ u : v.adicCompletion โ„š ร— v.adicCompletion โ„š, ฯ† (setCol22 v X j u) * ฮท (u.1 * X 0 j + u.2 * X 1 j) โˆ‚((selfDualHaarAt โ„š v).prod (selfDualHaarAt โ„š v)) theorem colFourier22_apply (ฮท : AddChar (v.adicCompletion โ„š) โ„‚) (j : Fin 2) (ฯ† : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š) โ†’ โ„‚) (X : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š)) : colFourier22 v ฮท j ฯ† X = letI := localBorel โ„š v โˆซ u : v.adicCompletion โ„š ร— v.adicCompletion โ„š, ฯ† (setCol22 v X j u) * ฮท (u.1 * X 0 j + u.2 * X 1 j) โˆ‚((selfDualHaarAt โ„š v).prod (selfDualHaarAt โ„š v)) := rfl def rowFourier23 (ฮท : AddChar (v.adicCompletion โ„š) โ„‚) (ฮฆ : Matrix (Fin 2) (Fin 3) (v.adicCompletion โ„š) โ†’ โ„‚) : Matrix (Fin 2) (Fin 3) (v.adicCompletion โ„š) โ†’ โ„‚ := colFourier23 v ฮท 2 ฮฆ theorem rowFourier23_eq (ฮท : AddChar (v.adicCompletion โ„š) โ„‚) (ฮฆ : Matrix (Fin 2) (Fin 3) (v.adicCompletion โ„š) โ†’ โ„‚) : rowFourier23 v ฮท ฮฆ = colFourier23 v ฮท 2 ฮฆ := rfl def matFourier23 (ฮท : AddChar (v.adicCompletion โ„š) โ„‚) (ฮฆ : Matrix (Fin 2) (Fin 3) (v.adicCompletion โ„š) โ†’ โ„‚) : Matrix (Fin 2) (Fin 3) (v.adicCompletion โ„š) โ†’ โ„‚ := colFourier23 v ฮท 0 (colFourier23 v ฮท 1 (colFourier23 v ฮท 2 ฮฆ)) theorem matFourier23_eq (ฮท : AddChar (v.adicCompletion โ„š) โ„‚) (ฮฆ : Matrix (Fin 2) (Fin 3) (v.adicCompletion โ„š) โ†’ โ„‚) : matFourier23 v ฮท ฮฆ = colFourier23 v ฮท 0 (colFourier23 v ฮท 1 (colFourier23 v ฮท 2 ฮฆ)) := rfl def matFourier22 (ฮท : AddChar (v.adicCompletion โ„š) โ„‚) (ฯ† : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š) โ†’ โ„‚) : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š) โ†’ โ„‚ := colFourier22 v ฮท 0 (colFourier22 v ฮท 1 ฯ†) theorem matFourier22_eq (ฮท : AddChar (v.adicCompletion โ„š) โ„‚) (ฯ† : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š) โ†’ โ„‚) : matFourier22 v ฮท ฯ† = colFourier22 v ฮท 0 (colFourier22 v ฮท 1 ฯ†) := rfl def godementArg (h : GL (Fin 2) (v.adicCompletion โ„š)) : Matrix (Fin 2) (Fin 3) (v.adicCompletion โ„š) := Matrix.of fun i k => Fin.lastCases ((transposeInvN (Fin 2) h : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š)) i 1) (fun k' : Fin 2 => (h : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š)) i k') k theorem godementArg_apply_castSucc (h : GL (Fin 2) (v.adicCompletion โ„š)) (i k : Fin 2) : godementArg v h i (Fin.castSucc k) = (h : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š)) i k := by simp only [godementArg, Matrix.of_apply, Fin.lastCases_castSucc] theorem godementArg_apply_last (h : GL (Fin 2) (v.adicCompletion โ„š)) (i : Fin 2) : godementArg v h i (Fin.last 2) = (transposeInvN (Fin 2) h : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š)) i 1 := by simp only [godementArg, Matrix.of_apply, Fin.lastCases_last] def godementWhittaker3 (ฮท : AddChar (v.adicCompletion โ„š) โ„‚) (ฮผโ‚‚ : @Measure (GL (Fin 2) (v.adicCompletion โ„š)) (localGLBorel โ„š v)) (lam0 : (v.adicCompletion โ„š)หฃ โ†’* โ„‚หฃ) (ฮฆ : Matrix (Fin 2) (Fin 3) (v.adicCompletion โ„š) โ†’ GL (Fin 2) (v.adicCompletion โ„š) โ†’ โ„‚) (g : LocalGL3 v) : โ„‚ := letI := localGLBorel โ„š v ((lam0 (Matrix.GeneralLinearGroup.det g) : โ„‚หฃ) : โ„‚) * ((modulus ((Matrix.GeneralLinearGroup.det g : (v.adicCompletion โ„š)หฃ) : v.adicCompletion โ„š) : โ„) : โ„‚) * โˆซ h : GL (Fin 2) (v.adicCompletion โ„š), rowFourier23 v ฮทโปยน (fun X => ฮฆ (X * ((g : GL (Fin 3) (v.adicCompletion โ„š)) : Matrix (Fin 3) (Fin 3) (v.adicCompletion โ„š))) hโปยน) (godementArg v h) * ((lam0 (Matrix.GeneralLinearGroup.det h) : โ„‚หฃ) : โ„‚) * ((modulus ((Matrix.GeneralLinearGroup.det h : (v.adicCompletion โ„š)หฃ) : v.adicCompletion โ„š) : โ„) : โ„‚) ^ (1 / 2 : โ„‚) โˆ‚ฮผโ‚‚ theorem godementWhittaker3_apply (ฮท : AddChar (v.adicCompletion โ„š) โ„‚) (ฮผโ‚‚ : @Measure (GL (Fin 2) (v.adicCompletion โ„š)) (localGLBorel โ„š v)) (lam0 : (v.adicCompletion โ„š)หฃ โ†’* โ„‚หฃ) (ฮฆ : Matrix (Fin 2) (Fin 3) (v.adicCompletion โ„š) โ†’ GL (Fin 2) (v.adicCompletion โ„š) โ†’ โ„‚) (g : LocalGL3 v) : godementWhittaker3 v ฮท ฮผโ‚‚ lam0 ฮฆ g = letI := localGLBorel โ„š v ((lam0 (Matrix.GeneralLinearGroup.det g) : โ„‚หฃ) : โ„‚) * ((modulus ((Matrix.GeneralLinearGroup.det g : (v.adicCompletion โ„š)หฃ) : v.adicCompletion โ„š) : โ„) : โ„‚) * โˆซ h : GL (Fin 2) (v.adicCompletion โ„š), rowFourier23 v ฮทโปยน (fun X => ฮฆ (X * ((g : GL (Fin 3) (v.adicCompletion โ„š)) : Matrix (Fin 3) (Fin 3) (v.adicCompletion โ„š))) hโปยน) (godementArg v h) * ((lam0 (Matrix.GeneralLinearGroup.det h) : โ„‚หฃ) : โ„‚) * ((modulus ((Matrix.GeneralLinearGroup.det h : (v.adicCompletion โ„š)หฃ) : v.adicCompletion โ„š) : โ„) : โ„‚) ^ (1 / 2 : โ„‚) โˆ‚ฮผโ‚‚ := rfl def godementZeta2 (ฮผโ‚‚ : @Measure (GL (Fin 2) (v.adicCompletion โ„š)) (localGLBorel โ„š v)) (c : GL (Fin 2) (v.adicCompletion โ„š) โ†’ โ„‚) (ฯ† : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š) โ†’ โ„‚) (ฯ‡ : (v.adicCompletion โ„š)หฃ โ†’* โ„‚หฃ) (s : โ„‚) : โ„‚ := letI := localGLBorel โ„š v โˆซ g : GL (Fin 2) (v.adicCompletion โ„š), c g * ฯ† ((g : GL (Fin 2) (v.adicCompletion โ„š)) : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š)) * ((ฯ‡ (Matrix.GeneralLinearGroup.det g) : โ„‚หฃ) : โ„‚) * ((modulus ((Matrix.GeneralLinearGroup.det g : (v.adicCompletion โ„š)หฃ) : v.adicCompletion โ„š) : โ„) : โ„‚) ^ s โˆ‚ฮผโ‚‚ theorem godementZeta2_apply (ฮผโ‚‚ : @Measure (GL (Fin 2) (v.adicCompletion โ„š)) (localGLBorel โ„š v)) (c : GL (Fin 2) (v.adicCompletion โ„š) โ†’ โ„‚) (ฯ† : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š) โ†’ โ„‚) (ฯ‡ : (v.adicCompletion โ„š)หฃ โ†’* โ„‚หฃ) (s : โ„‚) : godementZeta2 v ฮผโ‚‚ c ฯ† ฯ‡ s = letI := localGLBorel โ„š v โˆซ g : GL (Fin 2) (v.adicCompletion โ„š), c g * ฯ† ((g : GL (Fin 2) (v.adicCompletion โ„š)) : Matrix (Fin 2) (Fin 2) (v.adicCompletion โ„š)) * ((ฯ‡ (Matrix.GeneralLinearGroup.det g) : โ„‚หฃ) : โ„‚) * ((modulus ((Matrix.GeneralLinearGroup.det g : (v.adicCompletion โ„š)หฃ) : v.adicCompletion โ„š) : โ„) : โ„‚) ^ s โˆ‚ฮผโ‚‚ := rfl end GodementSection end LanglandsTunnell.CubicInduction end