import Definitions.Def_HeckeModule_IharaRungDatum import Definitions.Def_IharaLemma_IdempotentSplitting namespace IharaTower variable {š’Ŗ : Type} [CommRing š’Ŗ] {T : Type} [CommRing T] [Algebra š’Ŗ T] {T' : Type} [CommRing T'] [Algebra š’Ŗ T'] {M : Type} [AddCommGroup M] [Module T M] [Module š’Ŗ M] [IsScalarTower š’Ŗ T M] {M' : Type} [AddCommGroup M'] [Module T' M'] [Module š’Ŗ M'] [IsScalarTower š’Ŗ T' M'] {P : LevelPairing (š’Ŗ := š’Ŗ) T M} {P' : LevelPairing (š’Ŗ := š’Ŗ) T' M'} structure IsIharaDataAt (D : RungDatum T T' M M' P P') (Ļ€T : T →ₐ[š’Ŗ] š’Ŗ) (Ļ€T' : T' →ₐ[š’Ŗ] š’Ŗ) : Prop where cotorsion_comap_eq : Submodule.comap D.j (((RingHom.ker Ļ€T) • (⊤ : Submodule T M)).restrictScalars š’Ŗ) = ((RingHom.ker Ļ€T') • (⊤ : Submodule T' M')).restrictScalars š’Ŗ section CornerRung open IharaLemma variable {š’Ŗ : Type} [CommRing š’Ŗ] {V V' : Type} [AddCommGroup V] [Module š’Ŗ V] [AddCommGroup V'] [Module š’Ŗ V'] {š•‹ š•‹' : Type} [CommRing š•‹] [CommRing š•‹'] [Algebra š’Ŗ š•‹] [Algebra š’Ŗ š•‹'] [Module š•‹ V] [Module š•‹' V'] [IsScalarTower š’Ŗ š•‹ V] [IsScalarTower š’Ŗ š•‹' V'] (S : IdempotentSplitting š•‹) (S' : IdempotentSplitting š•‹') (iā‚€ : Fin S.n) (iā‚€' : Fin S'.n) (P : LevelPairing (š’Ŗ := š’Ŗ) (S.CornerRing iā‚€) ↄ(cornerSubmodule (M := V) (S.e iā‚€))) (P' : LevelPairing (š’Ŗ := š’Ŗ) (S'.CornerRing iā‚€') ↄ(cornerSubmodule (M := V') (S'.e iā‚€'))) {n : ā„•} (L : RungAssembly.LegDatum (T := S.CornerRing iā‚€) (T' := S'.CornerRing iā‚€') (M := ↄ(cornerSubmodule (M := V) (S.e iā‚€))) (M' := ↄ(cornerSubmodule (M := V') (S'.e iā‚€'))) (š’Ŗ := š’Ŗ) P P' n) (c : Fin n → S.CornerRing iā‚€) (res : S'.CornerRing iā‚€' →ₐ[š’Ŗ] S.CornerRing iā‚€) noncomputable def cornerRung : RungDatum (š’Ŗ := š’Ŗ) (S.CornerRing iā‚€) (S'.CornerRing iā‚€') ↄ(cornerSubmodule (M := V) (S.e iā‚€)) ↄ(cornerSubmodule (M := V') (S'.e iā‚€')) P P' := RungAssembly.rungDatumOfLegs L c res theorem cornerRung_res : (cornerRung S S' iā‚€ iā‚€' P P' L c res).res = res := rfl theorem cornerRung_i : (cornerRung S S' iā‚€ iā‚€' P P' L c res).i = RungAssembly.iComb L c := rfl theorem cornerRung_j : (cornerRung S S' iā‚€ iā‚€' P P' L c res).j = RungAssembly.jComb L c := rfl theorem cornerRung_delta : (cornerRung S S' iā‚€ iā‚€' P P' L c res).Ī” = RungAssembly.deltaComb L c := rfl end CornerRung end IharaTower