Skip to content

Commit

Permalink
bump to nightly-2023-05-26-03
Browse files Browse the repository at this point in the history
  • Loading branch information
leanprover-community-bot committed May 26, 2023
1 parent 6bc7c80 commit d59ee35
Show file tree
Hide file tree
Showing 44 changed files with 1,041 additions and 236 deletions.
70 changes: 70 additions & 0 deletions Mathbin/Algebra/Category/Group/Colimits.lean

Large diffs are not rendered by default.

5 changes: 4 additions & 1 deletion Mathbin/Algebra/Category/Group/FilteredColimits.lean
Expand Up @@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Justus Springer
! This file was ported from Lean 3 source module algebra.category.Group.filtered_colimits
! leanprover-community/mathlib commit c43486ecf2a5a17479a32ce09e4818924145e90e
! leanprover-community/mathlib commit a87d22575d946e1e156fc1edd1e1269600a8a282
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
Expand All @@ -14,6 +14,9 @@ import Mathbin.Algebra.Category.Mon.FilteredColimits
/-!
# The forgetful functor from (commutative) (additive) groups preserves filtered colimits.
> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
> Any changes to this file require a corresponding PR to mathlib4.
Forgetful functors from algebraic categories usually don't preserve colimits. However, they tend
to preserve _filtered_ colimits.
Expand Down
10 changes: 9 additions & 1 deletion Mathbin/Algebra/Category/Module/Colimits.lean
Expand Up @@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison
! This file was ported from Lean 3 source module algebra.category.Module.colimits
! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
! leanprover-community/mathlib commit 5a684ce82399d820475609907c6ef8dba5b1b97c
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
Expand Down Expand Up @@ -399,6 +399,14 @@ instance hasColimits_moduleCat : HasColimits (ModuleCat.{max v u} R)
IsColimit := colimit_cocone_is_colimit F } }
#align Module.colimits.has_colimits_Module ModuleCat.Colimits.hasColimits_moduleCat

instance hasColimitsOfSize_moduleCat : HasColimitsOfSize.{v} (ModuleCat.{max v u} R) :=
hasColimitsOfSize_shrink _
#align Module.colimits.has_colimits_of_size_Module ModuleCat.Colimits.hasColimitsOfSize_moduleCat

instance hasColimitsOfSize_zero_moduleCat : HasColimitsOfSize.{0} (ModuleCat.{max v u} R) :=
@hasColimitsOfSize_shrink.{0} (ModuleCat.{max v u} R) _ ModuleCat.Colimits.hasColimits_moduleCat
#align Module.colimits.has_colimits_of_size_zero_Module ModuleCat.Colimits.hasColimitsOfSize_zero_moduleCat

-- We manually add a `has_colimits` instance with universe parameters swapped, for otherwise
-- the instance is not found by typeclass search.
instance hasColimits_Module' (R : Type u) [Ring R] : HasColimits (ModuleCat.{max u v} R) :=
Expand Down
5 changes: 4 additions & 1 deletion Mathbin/Algebra/Category/Module/Limits.lean
Expand Up @@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison
! This file was ported from Lean 3 source module algebra.category.Module.limits
! leanprover-community/mathlib commit c43486ecf2a5a17479a32ce09e4818924145e90e
! leanprover-community/mathlib commit a87d22575d946e1e156fc1edd1e1269600a8a282
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
Expand All @@ -15,6 +15,9 @@ import Mathbin.Algebra.DirectLimit
/-!
# The category of R-modules has all limits
> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
> Any changes to this file require a corresponding PR to mathlib4.
Further, these limits are preserved by the forgetful functor --- that is,
the underlying types are just the limits in the category of types.
-/
Expand Down
5 changes: 4 additions & 1 deletion Mathbin/Algebra/DirectLimit.lean
Expand Up @@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Chris Hughes

! This file was ported from Lean 3 source module algebra.direct_limit
! leanprover-community/mathlib commit f0c8bf9245297a541f468be517f1bde6195105e9
! leanprover-community/mathlib commit a87d22575d946e1e156fc1edd1e1269600a8a282
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
Expand All @@ -16,6 +16,9 @@ import Mathbin.RingTheory.Ideal.Quotient
/-!
# Direct limit of modules, abelian groups, rings, and fields.

> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
> Any changes to this file require a corresponding PR to mathlib4.

See Atiyah-Macdonald PP.32-33, Matsumura PP.269-270

Generalizes the notion of "union", or "gluing", of incomparable modules over the same ring,
Expand Down
212 changes: 212 additions & 0 deletions Mathbin/Algebra/Homology/LocalCohomology.lean
@@ -0,0 +1,212 @@
/-
Copyright (c) 2023 Emily Witt. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Emily Witt, Scott Morrison, Jake Levinson, Sam van Gool
! This file was ported from Lean 3 source module algebra.homology.local_cohomology
! leanprover-community/mathlib commit 5a684ce82399d820475609907c6ef8dba5b1b97c
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathbin.RingTheory.Ideal.Basic
import Mathbin.Algebra.Category.Module.Colimits
import Mathbin.Algebra.Category.Module.Projective
import Mathbin.CategoryTheory.Abelian.Ext
import Mathbin.RingTheory.Finiteness

/-!
# Local cohomology.
This file defines the `i`-th local cohomology module of an `R`-module `M` with support in an
ideal `I` of `R`, where `R` is a commutative ring, as the direct limit of Ext modules:
Given a collection of ideals cofinal with the powers of `I`, consider the directed system of
quotients of `R` by these ideals, and take the direct limit of the system induced on the `i`-th
Ext into `M`. One can, of course, take the collection to simply be the integral powers of `I`.
## References
* [M. Hochster, *Local cohomology*][hochsterunpublished]
<https://dept.math.lsa.umich.edu/~hochster/615W22/lcc.pdf>
* [R. Hartshorne, *Local cohomology: A seminar given by A. Grothendieck*][hartshorne61]
* [M. Brodmann and R. Sharp, *Local cohomology: An algebraic introduction with geometric
applications*][brodmannsharp13]
* [S. Iyengar, G. Leuschke, A. Leykin, Anton, C. Miller, E. Miller, A. Singh, U. Walther,
*Twenty-four hours of local cohomology*][iyengaretal13]
## Tags
local cohomology, local cohomology modules
## Future work
* Prove that this definition is equivalent to:
* the right-derived functor definition
* the characterization as the limit of Koszul homology
* the characterization as the cohomology of a Cech-like complex
* Prove that local cohomology depends only on the radical of the ideal
* Establish long exact sequence(s) in local cohomology
-/


open Opposite

open CategoryTheory

open CategoryTheory.Limits

noncomputable section

universe u v

namespace localCohomology

-- We define local cohomology, implemented as a direct limit of `Ext(R/J, -)`.
section

variable {R : Type u} [CommRing R] {D : Type v} [SmallCategory D]

/-- 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
where
obj t := ModuleCat.of R <| R ⧸ I.obj t
map s t w := Submodule.mapQ _ _ LinearMap.id (I.map w).down.down
#align local_cohomology.ring_mod_ideals LocalCohomology.ringModIdeals

-- TODO: Once this file is ported, move this file to the right location.
instance moduleCat_enough_projectives' : EnoughProjectives (ModuleCat.{u} R) :=
ModuleCat.moduleCat_enoughProjectives.{u}
#align local_cohomology.Module_enough_projectives' LocalCohomology.moduleCat_enough_projectives'

/-- 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 :=
(ringModIdeals I).op ⋙ ext R (ModuleCat.{u} R) i
#align local_cohomology.diagram LocalCohomology.diagram

end

section

-- We momentarily need to work with a type inequality, as later we will take colimits
-- along diagrams either in Type, or in the same universe as the ring, and we need to cover both.
variable {R : Type max u v} [CommRing R] {D : Type v} [SmallCategory D]

/-
In this definition we do not assume any special property of the diagram `I`, but the relevant case
will be where `I` is (cofinal with) the diagram of powers of a single given ideal.
Below, we give two equivalent (to be shown) definitions of the usual local cohomology with support
in an ideal `J`, `local_cohomology` and `local_cohomology.of_self_le_radical`.
TODO: Show that any functor cofinal with `I` gives the same result.
-/
/-- `local_cohomology.of_diagram I i` is the 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 : ℕ) : ModuleCat.{max u v} R ⥤ ModuleCat.{max u v} R :=
colimit (diagram.{max u v, v} I i)
#align local_cohomology.of_diagram LocalCohomology.ofDiagram

end

section Diagrams

variable {R : Type u} [CommRing R]

/-- The functor sending a natural number `i` to the `i`-th power of the ideal `J` -/
def idealPowersDiagram (J : Ideal R) : ℕᵒᵖ ⥤ Ideal R
where
obj t := J ^ unop t
map s t w := ⟨⟨Ideal.pow_le_pow w.unop.down.down⟩⟩
#align local_cohomology.ideal_powers_diagram LocalCohomology.idealPowersDiagram

/-- The full subcategory of all ideals with radical containing `J` -/
def SelfLeRadical (J : Ideal R) : Type u :=
FullSubcategory fun J' : Ideal R => J ≤ J'.radical deriving Category
#align local_cohomology.self_le_radical LocalCohomology.SelfLeRadical

instance SelfLeRadical.inhabited (J : Ideal R) : Inhabited (SelfLeRadical J)
where default := ⟨J, Ideal.le_radical⟩
#align local_cohomology.self_le_radical.inhabited LocalCohomology.SelfLeRadical.inhabited

/-- 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 :=
fullSubcategoryInclusion _
#align local_cohomology.self_le_radical_diagram LocalCohomology.selfLeRadicalDiagram

end Diagrams

end localCohomology

/-! We give two models for the local cohomology with support in an ideal `J`: first in terms of
the powers of `J` (`local_cohomology`), then in terms of *all* ideals with radical
containing `J` (`local_cohomology.of_self_le_radical`). -/


section ModelsForLocalCohomology

open localCohomology

variable {R : Type u} [CommRing R]

/-- `local_cohomology 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 :=
ofDiagram (idealPowersDiagram J) i
#align local_cohomology localCohomology

/-- 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 :=
ofDiagram.{u} (selfLeRadicalDiagram.{u} J) i
#align local_cohomology.of_self_le_radical localCohomology.ofSelfLeRadical

/- TODO: Construct `local_cohomology J i ≅ local_cohomology.of_self_le_radical J i`. Use this to
show that local cohomology depends only on `J.radical`. -/
end ModelsForLocalCohomology

section LocalCohomologyEquiv

open localCohomology

variable {R : Type u} [CommRing R] (I J : Ideal R)

/-- Lifting `ideal_powers_diagram J` from a diagram valued in `ideals R` to a diagram
valued in `self_le_radical J`. -/
def localCohomology.idealPowersToSelfLeRadical (J : Ideal R) : ℕᵒᵖ ⥤ SelfLeRadical J :=
FullSubcategory.lift _ (idealPowersDiagram J) fun k =>
by
change _ ≤ (J ^ unop k).radical
cases unop k
· simp only [Ideal.radical_top, pow_zero, Ideal.one_eq_top, le_top]
· simp only [J.radical_pow _ n.succ_pos, Ideal.le_radical]
#align local_cohomology.ideal_powers_to_self_le_radical localCohomology.idealPowersToSelfLeRadical

/-- The composition with the inclusion into `ideals R` is isomorphic to `ideal_powers_diagram J`. -/
def localCohomology.idealPowersToSelfLeRadicalCompInclusion (J : Ideal R) :
localCohomology.idealPowersToSelfLeRadical J ⋙ selfLeRadicalDiagram J ≅ idealPowersDiagram J :=
FullSubcategory.lift_comp_inclusion _ _ _
#align local_cohomology.ideal_powers_to_self_le_radical_comp_inclusion localCohomology.idealPowersToSelfLeRadicalCompInclusion

/-- The lemma below essentially says that `ideal_powers_to_self_le_radical I` is initial in
`self_le_radical_diagram I`.
PORTING NOTE: This lemma should probably be moved to `ring_theory/finiteness.lean`
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 :=
by
obtain ⟨k, hk⟩ := J.exists_radical_pow_le_of_fg hJ
use k
calc
I ^ k ≤ J.radical ^ k := Ideal.pow_mono hIJ _
_ ≤ J := hk

#align ideal.exists_pow_le_of_le_radical_of_fg Ideal.exists_pow_le_of_le_radical_of_fG

end LocalCohomologyEquiv

5 changes: 4 additions & 1 deletion Mathbin/AlgebraicGeometry/PrimeSpectrum/Basic.lean
Expand Up @@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin
! This file was ported from Lean 3 source module algebraic_geometry.prime_spectrum.basic
! leanprover-community/mathlib commit a7c017d750512a352b623b1824d75da5998457d0
! leanprover-community/mathlib commit a87d22575d946e1e156fc1edd1e1269600a8a282
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
Expand All @@ -20,6 +20,9 @@ import Mathbin.Topology.Sober
/-!
# Prime spectrum of a commutative ring
> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
> Any changes to this file require a corresponding PR to mathlib4.
The prime spectrum of a commutative ring is the type of all prime ideals.
It is naturally endowed with a topology: the Zariski topology.
Expand Down
5 changes: 4 additions & 1 deletion Mathbin/AlgebraicGeometry/PrimeSpectrum/IsOpenComapC.lean
Expand Up @@ -4,14 +4,17 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Damiano Testa
! This file was ported from Lean 3 source module algebraic_geometry.prime_spectrum.is_open_comap_C
! leanprover-community/mathlib commit 052f6013363326d50cb99c6939814a4b8eb7b301
! leanprover-community/mathlib commit a87d22575d946e1e156fc1edd1e1269600a8a282
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathbin.AlgebraicGeometry.PrimeSpectrum.Basic
import Mathbin.RingTheory.Polynomial.Basic

/-!
> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
> Any changes to this file require a corresponding PR to mathlib4.
The morphism `Spec R[x] --> Spec R` induced by the natural inclusion `R --> R[x]` is an open map.
The main result is the first part of the statement of Lemma 00FB in the Stacks Project.
Expand Down
1 change: 1 addition & 0 deletions Mathbin/All.lean
Expand Up @@ -214,6 +214,7 @@ import Mathbin.Algebra.Homology.Homology
import Mathbin.Algebra.Homology.Homotopy
import Mathbin.Algebra.Homology.HomotopyCategory
import Mathbin.Algebra.Homology.ImageToKernel
import Mathbin.Algebra.Homology.LocalCohomology
import Mathbin.Algebra.Homology.Opposite
import Mathbin.Algebra.Homology.QuasiIso
import Mathbin.Algebra.Homology.ShortExact.Abelian
Expand Down
5 changes: 4 additions & 1 deletion Mathbin/Analysis/Calculus/Fderiv/Star.lean
Expand Up @@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Eric Wieser
! This file was ported from Lean 3 source module analysis.calculus.fderiv.star
! leanprover-community/mathlib commit ad84a13c884fd19e286fb7abb36f4b9ba7e2f615
! leanprover-community/mathlib commit a87d22575d946e1e156fc1edd1e1269600a8a282
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
Expand All @@ -16,6 +16,9 @@ import Mathbin.Analysis.NormedSpace.Star.Basic
/-!
# Star operations on derivatives
> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
> Any changes to this file require a corresponding PR to mathlib4.
For detailed documentation of the Fréchet derivative,
see the module docstring of `analysis/calculus/fderiv/basic.lean`.
Expand Down

0 comments on commit d59ee35

Please sign in to comment.