import Definitions.Def_CuspForm_AuxLevelHeckeModule set_option autoImplicit false noncomputable section namespace CuspForm.AuxLevel def baseOp (N r : β„•) (S : Set β„•) (π’ͺ : Type) [CommRing π’ͺ] (g : Gen N r S) : Module.End π’ͺ (CohCarrier.H1 N ⊀ π’ͺ) := haveI : NeZero g.β„“ := ⟨g.prime.ne_zero⟩ CohCarrier.heckeTL N ⊀ π’ͺ g.β„“ def BaseOpComm (N r : β„•) (S : Set β„•) (π’ͺ : Type) [CommRing π’ͺ] : Prop := βˆ€ g h : Gen N r S, baseOp N r S π’ͺ g * baseOp N r S π’ͺ h = baseOp N r S π’ͺ h * baseOp N r S π’ͺ g def baseHeckeData (N r : β„•) [NeZero N] (S : Set β„•) (π’ͺ : Type) [CommRing π’ͺ] [IsLocalRing π’ͺ] (ΞΈ : β†₯(CuspForm.heckeAlgebra N 2 S) β†’+* IsLocalRing.ResidueField π’ͺ) (hcβ‚€ : BaseOpComm N r S π’ͺ) : CohCarrier.HeckeData π’ͺ (CohCarrier.H1 N ⊀ π’ͺ) (IsLocalRing.ResidueField π’ͺ) where Gen := Gen N r S op := baseOp N r S π’ͺ comm := hcβ‚€ ΞΈbar g := ΞΈ (CuspForm.heckeAlgebra.T g.prime g.not_dvd g.notMem) instance instModuleFreeAlgBaseCarrier (N r : β„•) [NeZero N] (S : Set β„•) (π’ͺ : Type) [CommRing π’ͺ] [IsLocalRing π’ͺ] (ΞΈ : β†₯(CuspForm.heckeAlgebra N 2 S) β†’+* IsLocalRing.ResidueField π’ͺ) (hcβ‚€ : BaseOpComm N r S π’ͺ) : Module (baseHeckeData N r S π’ͺ ΞΈ hcβ‚€).FreeAlg (CohCarrier.H1 N ⊀ π’ͺ) := (baseHeckeData N r S π’ͺ ΞΈ hcβ‚€).moduleFreeAlg abbrev baseML (N r : β„•) [NeZero N] (S : Set β„•) (π’ͺ : Type) [CommRing π’ͺ] [IsLocalRing π’ͺ] (ΞΈ : β†₯(CuspForm.heckeAlgebra N 2 S) β†’+* IsLocalRing.ResidueField π’ͺ) (hcβ‚€ : BaseOpComm N r S π’ͺ) : Type := (baseHeckeData N r S π’ͺ ΞΈ hcβ‚€).ML example (N r : β„•) [NeZero N] (S : Set β„•) (π’ͺ : Type) [CommRing π’ͺ] [IsLocalRing π’ͺ] (ΞΈ : β†₯(CuspForm.heckeAlgebra N 2 S) β†’+* IsLocalRing.ResidueField π’ͺ) (hcβ‚€ : BaseOpComm N r S π’ͺ) (hc : OpComm N r S π’ͺ) : (baseHeckeData N r S π’ͺ ΞΈ hcβ‚€).FreeAlg = (heckeData N r S π’ͺ ΞΈ hc).FreeAlg := rfl example (N r : β„•) [NeZero N] (S : Set β„•) (π’ͺ : Type) [CommRing π’ͺ] [IsLocalRing π’ͺ] (ΞΈ : β†₯(CuspForm.heckeAlgebra N 2 S) β†’+* IsLocalRing.ResidueField π’ͺ) (hcβ‚€ : BaseOpComm N r S π’ͺ) (hc : OpComm N r S π’ͺ) : (baseHeckeData N r S π’ͺ ΞΈ hcβ‚€).mTheta = (heckeData N r S π’ͺ ΞΈ hc).mTheta := rfl example (N r : β„•) [NeZero N] (S : Set β„•) (π’ͺ : Type) [CommRing π’ͺ] [IsLocalRing π’ͺ] (ΞΈ : β†₯(CuspForm.heckeAlgebra N 2 S) β†’+* IsLocalRing.ResidueField π’ͺ) (hcβ‚€ : BaseOpComm N r S π’ͺ) : Module π’ͺ (baseML N r S π’ͺ ΞΈ hcβ‚€) := by infer_instance example (N r : β„•) [NeZero N] (S : Set β„•) (π’ͺ : Type) [CommRing π’ͺ] [IsLocalRing π’ͺ] (ΞΈ : β†₯(CuspForm.heckeAlgebra N 2 S) β†’+* IsLocalRing.ResidueField π’ͺ) (hcβ‚€ : BaseOpComm N r S π’ͺ) : Module (baseHeckeData N r S π’ͺ ΞΈ hcβ‚€).FreeAlg (baseML N r S π’ͺ ΞΈ hcβ‚€) := by infer_instance example (N r : β„•) [NeZero N] (S : Set β„•) (π’ͺ : Type) [CommRing π’ͺ] [IsLocalRing π’ͺ] (ΞΈ : β†₯(CuspForm.heckeAlgebra N 2 S) β†’+* IsLocalRing.ResidueField π’ͺ) (hcβ‚€ : BaseOpComm N r S π’ͺ) : IsScalarTower π’ͺ (baseHeckeData N r S π’ͺ ΞΈ hcβ‚€).FreeAlg (baseML N r S π’ͺ ΞΈ hcβ‚€) := by infer_instance end CuspForm.AuxLevel end