import Definitions.Def_CohCarrier_Inst import Definitions.Def_IharaLemma_IdempotentSplitting import Definitions.Def_CuspForm_CornerPairingFamily import Definitions.Def_CuspForm_HeckeLocal import Definitions.Def_GaloisRep_LocalConditions import Definitions.Def_GaloisRep_Residual import Definitions.Def_GaloisRep_Adic set_option autoImplicit false set_option synthInstance.maxHeartbeats 400000 set_option maxHeartbeats 800000 namespace CuspForm.heckeLocal open CohCarrier IharaLemma open scoped IsMulCommutative def IsCornerRealization {π’ͺ : Type} [CommRing π’ͺ] [IsDomain π’ͺ] [IsDiscreteValuationRing π’ͺ] [IsAdicComplete (IsLocalRing.maximalIdeal π’ͺ) π’ͺ] (p : β„•) (ρbar : ResidualGaloisRep (IsLocalRing.ResidueField π’ͺ)) (N L : β„•) [NeZero N] [NeZero L] (S : Set β„•) (ΞΈ : β†₯(CuspForm.heckeAlgebra N 2 S) β†’+* IsLocalRing.ResidueField π’ͺ) (M : Type) [AddCommGroup M] [Module (CuspForm.heckeLocal N S π’ͺ ΞΈ) M] [Module π’ͺ M] (B : M β†’β‚—[π’ͺ] M β†’β‚—[π’ͺ] π’ͺ) : Prop := βˆƒ (hcomm : βˆ€ g h : Gen L S, opFamily L ⊀ S π’ͺ g * opFamily L ⊀ S π’ͺ h = opFamily L ⊀ S π’ͺ h * opFamily L ⊀ S π’ͺ g) (ΞΈbar : Gen L S β†’ IsLocalRing.ResidueField π’ͺ) (Sp : IdempotentSplitting β†₯(hdata L ⊀ S π’ͺ (IsLocalRing.ResidueField π’ͺ) hcomm ΞΈbar).opSubalgebra) (iβ‚€ : Fin Sp.n) (Ο€k : Sp.CornerRing iβ‚€ →ₐ[π’ͺ] IsLocalRing.ResidueField π’ͺ) (hpar : βˆ€ v : H1 L ⊀ π’ͺ, v ∈ cornerSubmodule (M := H1 L ⊀ π’ͺ) (Sp.e iβ‚€) β†’ v ∈ ModularCurve.Period.parabolicHoms π’ͺ (GammaH L ⊀) π’ͺ) (e : M ≃ₗ[π’ͺ] β†₯(cornerSubmodule (M := H1 L ⊀ π’ͺ) (Sp.e iβ‚€))), (βˆ€ (β„“ : β„•) (hβ„“ : β„“.Prime) (hβ„“S : β„“ βˆ‰ S) (hβ„“L : Β¬ β„“ ∣ L) (hβ„“N : Β¬ β„“ ∣ N), ΞΈbar (Gen.T β„“ hβ„“ hβ„“S hβ„“L) = ΞΈ (CuspForm.heckeAlgebra.T hβ„“ hβ„“N hβ„“S)) ∧ (βˆ€ (q : β„•) (hq : q.Prime) (hqL : q ∣ L), q ^ 2 ∣ L β†’ ΞΈbar (Gen.U q hq hqL) = 0) ∧ (βˆ€ (hp : p.Prime) (hpL : p ∣ L), (GaloisRepAdic.ofResidualGaloisRep ρbar).IsOrdinaryAt p β†’ ΞΈbar (Gen.U p hp hpL) β‰  0) ∧ (βˆ€ g : Gen L S, Ο€k (Sp.toCornerRing iβ‚€ ⟨(hdata L ⊀ S π’ͺ (IsLocalRing.ResidueField π’ͺ) hcomm ΞΈbar).op g, Algebra.subset_adjoin (Set.mem_range_self g)⟩) = ΞΈbar g) ∧ (βˆ€ (β„“ : β„•) (hβ„“ : β„“.Prime) (hβ„“S : β„“ βˆ‰ S) (hβ„“N : Β¬ β„“ ∣ N) (m : M), ((e (CuspForm.heckeLocal.Ο€ N S π’ͺ ΞΈ (CuspForm.heckeAlgebra.T hβ„“ hβ„“N hβ„“S) β€’ m) : β†₯(cornerSubmodule (M := H1 L ⊀ π’ͺ) (Sp.e iβ‚€))) : H1 L ⊀ π’ͺ) = (haveI : NeZero β„“ := ⟨hβ„“.ne_zero⟩; heckeT L ⊀ β„“ π’ͺ ((e m : β†₯(cornerSubmodule (M := H1 L ⊀ π’ͺ) (Sp.e iβ‚€))) : H1 L ⊀ π’ͺ))) ∧ (βˆ€ m m' : M, B m m' = CuspForm.Bfamβ‚€ π’ͺ L ⟨(e m : H1 L ⊀ π’ͺ), hpar _ (e m).2⟩ ⟨(e m' : H1 L ⊀ π’ͺ), hpar _ (e m').2⟩) end CuspForm.heckeLocal