import Mathlib import Definitions.Def_AutomorphicForm_ViaCompactCuspNotion set_option autoImplicit false open NumberField NumberField.InfinitePlace NumberField.InfinitePlace.Completion open scoped Manifold noncomputable section namespace AutomorphicForm def IsArchLowestWeightAt {F : Type} [Field F] [NumberField F] (w : InfinitePlace F) (hw : w.IsReal) (Ο† : AdelicGL2 (π“ž F) F β†’ β„‚) : Prop := βˆƒ Οƒ : β„‚, βˆ€ g : AdelicGL2 (π“ž F) F, MDifferentiable π“˜(β„‚) π“˜(β„‚) fun z : UpperHalfPlane => (((z.im : ℝ) : β„‚) ^ Οƒ) * Ο† (g * adelicArchGLInclAt F w (Matrix.GeneralLinearGroup.map ((InfinitePlace.Completion.ringEquivRealOfIsReal hw).symm.toRingHom) (iwasawaSectionGL z))) variable {F : Type} [Field F] [NumberField F] theorem isArchLowestWeightAt_iff (w : InfinitePlace F) (hw : w.IsReal) (Ο† : AdelicGL2 (π“ž F) F β†’ β„‚) : IsArchLowestWeightAt w hw Ο† ↔ βˆƒ Οƒ : β„‚, βˆ€ g : AdelicGL2 (π“ž F) F, MDifferentiable π“˜(β„‚) π“˜(β„‚) fun z : UpperHalfPlane => (((z.im : ℝ) : β„‚) ^ Οƒ) * Ο† (g * adelicArchGLInclAt F w (Matrix.GeneralLinearGroup.map ((InfinitePlace.Completion.ringEquivRealOfIsReal hw).symm.toRingHom) (iwasawaSectionGL z))) := Iff.rfl theorem isArchLowestWeightAt_zero (w : InfinitePlace F) (hw : w.IsReal) : IsArchLowestWeightAt w hw (fun _ => 0) := ⟨0, fun _ => by simpa using mdifferentiable_const⟩ theorem IsArchLowestWeightAt.const_mul {w : InfinitePlace F} {hw : w.IsReal} {Ο† : AdelicGL2 (π“ž F) F β†’ β„‚} (h : IsArchLowestWeightAt w hw Ο†) (a : β„‚) : IsArchLowestWeightAt w hw (fun g => a * Ο† g) := by obtain βŸ¨Οƒ, hΟƒβŸ© := h refine βŸ¨Οƒ, fun g => ?_⟩ have := (hΟƒ g).const_smul a simpa [Pi.smul_def, smul_eq_mul, mul_left_comm] using this theorem isArchLowestWeightAt_of_rpow {w : InfinitePlace F} {hw : w.IsReal} {Ο† : AdelicGL2 (π“ž F) F β†’ β„‚} (Οƒ : ℝ) (h : βˆ€ g : AdelicGL2 (π“ž F) F, MDifferentiable π“˜(β„‚) π“˜(β„‚) fun z : UpperHalfPlane => (((z.im : ℝ) ^ Οƒ : ℝ) : β„‚) * Ο† (g * adelicArchGLInclAt F w (Matrix.GeneralLinearGroup.map ((InfinitePlace.Completion.ringEquivRealOfIsReal hw).symm.toRingHom) (iwasawaSectionGL z)))) : IsArchLowestWeightAt w hw Ο† := by refine ⟨(Οƒ : β„‚), fun g => ?_⟩ have hfun : (fun z : UpperHalfPlane => (((z.im : ℝ) : β„‚) ^ (Οƒ : β„‚)) * Ο† (g * adelicArchGLInclAt F w (Matrix.GeneralLinearGroup.map ((InfinitePlace.Completion.ringEquivRealOfIsReal hw).symm.toRingHom) (iwasawaSectionGL z)))) = (fun z : UpperHalfPlane => (((z.im : ℝ) ^ Οƒ : ℝ) : β„‚) * Ο† (g * adelicArchGLInclAt F w (Matrix.GeneralLinearGroup.map ((InfinitePlace.Completion.ringEquivRealOfIsReal hw).symm.toRingHom) (iwasawaSectionGL z)))) := by funext z rw [Complex.ofReal_cpow (le_of_lt z.im_pos)] rw [hfun] exact h g theorem IsArchHolomorphicAt.isArchLowestWeightAt {w : InfinitePlace F} {hw : w.IsReal} {Ο† : AdelicGL2 (π“ž F) F β†’ β„‚} (h : IsArchHolomorphicAt w hw Ο†) : IsArchLowestWeightAt w hw Ο† := by refine ⟨-1, fun g => ?_⟩ have hfun : (fun z : UpperHalfPlane => (((z.im : ℝ) : β„‚) ^ (-1 : β„‚)) * Ο† (g * adelicArchGLInclAt F w (Matrix.GeneralLinearGroup.map ((InfinitePlace.Completion.ringEquivRealOfIsReal hw).symm.toRingHom) (iwasawaSectionGL z)))) = (fun z : UpperHalfPlane => ((z.im : ℝ) : β„‚)⁻¹ * Ο† (g * adelicArchGLInclAt F w (Matrix.GeneralLinearGroup.map ((InfinitePlace.Completion.ringEquivRealOfIsReal hw).symm.toRingHom) (iwasawaSectionGL z)))) := by funext z rw [Complex.cpow_neg_one] rw [hfun] exact h g end AutomorphicForm end section Battery open AutomorphicForm #check @IsArchLowestWeightAt #print axioms AutomorphicForm.isArchLowestWeightAt_zero #print axioms AutomorphicForm.IsArchLowestWeightAt.const_mul #print axioms AutomorphicForm.isArchLowestWeightAt_of_rpow #print axioms AutomorphicForm.IsArchHolomorphicAt.isArchLowestWeightAt end Battery