File: Mathlib/Algebra/Homology/LocalCohomology.lean

full_name: localCohomology.ringModIdeals
code: /-- The directed system of `R`-modules of the form `R/J`, where `J` is an ideal of `R`,
determined by the functor `I`  -/
def ringModIdeals (I : D ⥤ Ideal R) : D ⥤ ModuleCat.{u} R 
goal: D ⥤ ModuleCat R

full_name: localCohomology.moduleCat_enoughProjectives'
code: instance moduleCat_enoughProjectives' : EnoughProjectives (ModuleCat.{u} R) 
goal: CategoryTheory.EnoughProjectives (ModuleCat R)

full_name: localCohomology.diagram
code: /-- The diagram we will take the colimit of to define local cohomology, corresponding to the
directed system determined by the functor `I` -/
def diagram (I : D ⥤ Ideal R) (i : ℕ) : Dᵒᵖ ⥤ ModuleCat.{u} R ⥤ ModuleCat.{u} R 
goal: Dᵒᵖ ⥤ ModuleCat R ⥤ ModuleCat R

full_name: localCohomology.hasColimitDiagram
code: lemma hasColimitDiagram (I : D ⥤ Ideal R) (i : ℕ) :
    HasColimit (diagram I i) 
goal: CategoryTheory.Limits.HasColimit (localCohomology.diagram I i)

full_name: localCohomology.ofDiagram
code: /-- `localCohomology.ofDiagram I i` is the functor sending a module `M` over a commutative
ring `R` to the direct limit of `Ext^i(R/J, M)`, where `J` ranges over a collection of ideals
of `R`, represented as a functor `I`. -/
def ofDiagram (I : D ⥤ Ideal R) (i : ℕ) : ModuleCatMax.{u, v} R ⥤ ModuleCatMax.{u, v} R 
goal: ModuleCatMax R ⥤ ModuleCatMax R

full_name: localCohomology.diagramComp
code: /-- Local cohomology along a composition of diagrams. -/
def diagramComp (i : ℕ) : diagram (I' ⋙ I) i ≅ I'.op ⋙ diagram I i 
goal: localCohomology.diagram (I' ⋙ I) i ≅ I'.op ⋙ localCohomology.diagram I i

full_name: localCohomology.isoOfFinal
code: /-- Local cohomology agrees along precomposition with a cofinal diagram. -/
@[nolint unusedHavesSuffices]
def isoOfFinal [Functor.Initial I'] (i : ℕ) :
    ofDiagram.{max u v, v'} (I' ⋙ I) i ≅ ofDiagram.{max u v', v} I i 
goal: localCohomology.ofDiagram (I' ⋙ I) i ≅ localCohomology.ofDiagram I i

full_name: localCohomology.idealPowersDiagram
code: /-- The functor sending a natural number `i` to the `i`-th power of the ideal `J` -/
def idealPowersDiagram (J : Ideal R) : ℕᵒᵖ ⥤ Ideal R 
goal: ℕᵒᵖ ⥤ Ideal R

full_name: localCohomology.SelfLERadical
code: /-- The full subcategory of all ideals with radical containing `J` -/
def SelfLERadical (J : Ideal R) : Type u 
goal: Type u

full_name: localCohomology.instCategorySelfLERadical
code: instance (J : Ideal R) : Category (SelfLERadical J) 
goal: CategoryTheory.Category.{u, u} (localCohomology.SelfLERadical J)

full_name: localCohomology.SelfLERadical.inhabited
code: instance SelfLERadical.inhabited (J : Ideal R) : Inhabited (SelfLERadical J) 
goal: Inhabited (localCohomology.SelfLERadical J)

full_name: localCohomology.selfLERadicalDiagram
code: /-- The diagram of all ideals with radical containing `J`, represented as a functor.
This is the "largest" diagram that computes local cohomology with support in `J`. -/
def selfLERadicalDiagram (J : Ideal R) : SelfLERadical J ⥤ Ideal R 
goal: localCohomology.SelfLERadical J ⥤ Ideal R

full_name: localCohomology
code: /-- `localCohomology J i` is `i`-th the local cohomology module of a module `M` over
a commutative ring `R` with support in the ideal `J` of `R`, defined as the direct limit
of `Ext^i(R/J^t, M)` over all powers `t : ℕ`. -/
def localCohomology (J : Ideal R) (i : ℕ) : ModuleCat.{u} R ⥤ ModuleCat.{u} R 
goal: ModuleCat R ⥤ ModuleCat R

full_name: localCohomology.ofSelfLERadical
code: /-- Local cohomology as the direct limit of `Ext^i(R/J', M)` over *all* ideals `J'` with radical
containing `J`. -/
def localCohomology.ofSelfLERadical (J : Ideal R) (i : ℕ) : ModuleCat.{u} R ⥤ ModuleCat.{u} R 
goal: ModuleCat R ⥤ ModuleCat R

full_name: localCohomology.idealPowersToSelfLERadical
code: /-- Lifting `idealPowersDiagram J` from a diagram valued in `ideals R` to a diagram
valued in `SelfLERadical J`. -/
def idealPowersToSelfLERadical (J : Ideal R) : ℕᵒᵖ ⥤ SelfLERadical J 
goal: ℕᵒᵖ ⥤ localCohomology.SelfLERadical J

full_name: localCohomology.Ideal.exists_pow_le_of_le_radical_of_fG
code: /-- The lemma below essentially says that `idealPowersToSelfLERadical I` is initial in
`selfLERadicalDiagram I`.

Porting note: This lemma should probably be moved to `Mathlib/RingTheory/Finiteness`
to be near `Ideal.exists_radical_pow_le_of_fg`, which it generalizes. -/
theorem Ideal.exists_pow_le_of_le_radical_of_fG (hIJ : I ≤ J.radical) (hJ : J.radical.FG) :
    ∃ k : ℕ, I ^ k ≤ J 
goal: ∃ k, I ^ k ≤ J

full_name: localCohomology.ideal_powers_initial
code: /-- The diagram of powers of `J` is initial in the diagram of all ideals with
radical containing `J`. This uses noetherianness. -/
instance ideal_powers_initial [hR : IsNoetherian R R] :
    Functor.Initial (idealPowersToSelfLERadical J) 
goal: (localCohomology.idealPowersToSelfLERadical J).Initial

full_name: localCohomology.isoSelfLERadical
code: /-- Local cohomology (defined in terms of powers of `J`) agrees with local
cohomology computed over all ideals with radical containing `J`. -/
def isoSelfLERadical (J : Ideal.{u} R) [IsNoetherian.{u,u} R R] (i : ℕ) :
    localCohomology.ofSelfLERadical.{u} J i ≅ localCohomology.{u} J i 
goal: localCohomology.ofSelfLERadical J i ≅ localCohomology J i

full_name: localCohomology.SelfLERadical.cast
code: /-- Casting from the full subcategory of ideals with radical containing `J` to the full
subcategory of ideals with radical containing `K`. -/
def SelfLERadical.cast (hJK : J.radical = K.radical) : SelfLERadical J ⥤ SelfLERadical K 
goal: localCohomology.SelfLERadical J ⥤ localCohomology.SelfLERadical K

full_name: localCohomology.SelfLERadical.castEquivalence
code: /-- The equivalence of categories `SelfLERadical J ≌ SelfLERadical K`
when `J.radical = K.radical`. -/
def SelfLERadical.castEquivalence (hJK : J.radical = K.radical) :
    SelfLERadical J ≌ SelfLERadical K 
goal: localCohomology.SelfLERadical J ≌ localCohomology.SelfLERadical K

full_name: localCohomology.SelfLERadical.cast_isEquivalence
code: instance SelfLERadical.cast_isEquivalence (hJK : J.radical = K.radical) :
    (SelfLERadical.cast hJK).IsEquivalence 
goal: (localCohomology.SelfLERadical.cast hJK).IsEquivalence

full_name: localCohomology.SelfLERadical.isoOfSameRadical
code: /-- The natural isomorphism between local cohomology defined using the `of_self_le_radical`
diagram, assuming `J.radical = K.radical`. -/
def SelfLERadical.isoOfSameRadical (hJK : J.radical = K.radical) (i : ℕ) :
    ofSelfLERadical J i ≅ ofSelfLERadical K i 
goal: localCohomology.ofSelfLERadical J i ≅ localCohomology.ofSelfLERadical K i

full_name: localCohomology.isoOfSameRadical
code: /-- Local cohomology agrees on ideals with the same radical. -/
def isoOfSameRadical [IsNoetherian R R] (hJK : J.radical = K.radical) (i : ℕ) :
    localCohomology J i ≅ localCohomology K i 
goal: localCohomology J i ≅ localCohomology K i