import Definitions.Def_HeckeGalois_EichlerShimura import Definitions.Def_FLTPrelim_Modularity set_option autoImplicit false noncomputable section namespace ModularCurve def IsEigenformIdeal (N : β„•) (π”ͺ : Ideal HeckeAlg) : Prop := βˆƒ (f : CuspForm (CongruenceSubgroup.Gamma0 N) 2) (_ : f.IsNormalizedEigenform) (k : Type) (_ : Field k) (_ : Finite k) (π’ͺ : Subring β„‚) (hπ’ͺ : βˆ€ β„“ : Nat.Primes, ModularFormClass.qCoeff f β„“ ∈ π’ͺ) (Ο† : π’ͺ β†’+* k), π”ͺ = eigenIdeal (fun β„“ => Ο† ⟨ModularFormClass.qCoeff f β„“, hπ’ͺ β„“βŸ©) abbrev EigenformSupportAt (N p : β„•) (J : Type*) [AddCommGroup J] [Module HeckeAlg J] : Prop := EigenformSupport p J (IsEigenformIdeal N) abbrev EichlerShimuraDataAt {K L : Type*} [Field K] [Field L] [Algebra K L] (N p : β„•) (J : Type*) [AddCommGroup J] [Module HeckeAlg J] [DistribMulAction (L ≃ₐ[K] L) J] : Prop := EichlerShimuraDataReduced (K := K) (L := L) N p J (IsEigenformIdeal N) end ModularCurve