File: Mathlib/AlgebraicGeometry/Noetherian.lean

full_name: AlgebraicGeometry.IsLocallyNoetherian
code: /-- A scheme `X` is locally Noetherian if `𝒪ₓ(U)` is Noetherian for all affine `U`. -/
class IsLocallyNoetherian (X : Scheme) : Prop where
  component_noetherian : ∀ (U : X.affineOpens),
    IsNoetherianRing Γ(X, U) := by infer_instance
goal: Prop

full_name: AlgebraicGeometry.IsLocallyNoetherian.component_noetherian
code: /-- A scheme `X` is locally Noetherian if `𝒪ₓ(U)` is Noetherian for all affine `U`. -/
class IsLocallyNoetherian (X : Scheme) : Prop where
  component_noetherian : ∀ (U : X.affineOpens),
    IsNoetherianRing Γ(X, U) := by infer_instance
goal: IsNoetherianRing ↑Γ(X, ↑U)

full_name: AlgebraicGeometry.isNoetherianRing_of_away
code: /-- Let `R` be a ring, and `f i` a finite collection of elements of `R` generating the unit ideal.
If the localization of `R` at each `f i` is noetherian, so is `R`.

We follow the proof given in [Har77], Proposition II.3.2 -/
theorem isNoetherianRing_of_away : IsNoetherianRing R 
goal: IsNoetherianRing R

full_name: AlgebraicGeometry.isLocallyNoetherian_of_affine_cover
code: /-- If a scheme `X` has a cover by affine opens whose sections are Noetherian rings,
then `X` is locally Noetherian. -/
theorem isLocallyNoetherian_of_affine_cover {ι} {S : ι → X.affineOpens}
    (hS : (⨆ i, S i : X.Opens) = ⊤)
    (hS' : ∀ i, IsNoetherianRing Γ(X, S i)) : IsLocallyNoetherian X 
goal: AlgebraicGeometry.IsLocallyNoetherian X

full_name: AlgebraicGeometry.isLocallyNoetherian_iff_of_iSup_eq_top
code: /-- A scheme is locally Noetherian if and only if it is covered by affine opens whose sections
are noetherian rings.

See [Har77], Proposition II.3.2. -/
theorem isLocallyNoetherian_iff_of_iSup_eq_top {ι} {S : ι → X.affineOpens}
    (hS : (⨆ i, S i : X.Opens) = ⊤) :
    IsLocallyNoetherian X ↔ ∀ i, IsNoetherianRing Γ(X, S i) 
goal: AlgebraicGeometry.IsLocallyNoetherian X ↔ ∀ (i : ι), IsNoetherianRing ↑Γ(X, ↑(S i))

full_name: AlgebraicGeometry.isLocallyNoetherian_iff_of_affine_openCover
code: /-- A version of `isLocallyNoetherian_iff_of_iSup_eq_top` using `Scheme.OpenCover`. -/
theorem isLocallyNoetherian_iff_of_affine_openCover (𝒰 : Scheme.OpenCover.{v, u} X)
    [∀ i, IsAffine (𝒰.obj i)] :
    IsLocallyNoetherian X ↔ ∀ (i : 𝒰.J), IsNoetherianRing Γ(𝒰.obj i, ⊤) 
goal: AlgebraicGeometry.IsLocallyNoetherian X ↔ ∀ (i : 𝒰.J), IsNoetherianRing ↑Γ(𝒰.obj i, ⊤)

full_name: AlgebraicGeometry.isLocallyNoetherian_of_isOpenImmersion
code: lemma isLocallyNoetherian_of_isOpenImmersion {Y : Scheme} (f : X ⟶ Y) [IsOpenImmersion f]
    [IsLocallyNoetherian Y] : IsLocallyNoetherian X 
goal: AlgebraicGeometry.IsLocallyNoetherian X

full_name: AlgebraicGeometry.isLocallyNoetherian_iff_openCover
code: /-- If `𝒰` is an open cover of a scheme `X`, then `X` is locally noetherian if and only if
`𝒰.obj i` are all locally noetherian. -/
theorem isLocallyNoetherian_iff_openCover (𝒰 : Scheme.OpenCover X) :
    IsLocallyNoetherian X ↔ ∀ (i : 𝒰.J), IsLocallyNoetherian (𝒰.obj i) 
goal: AlgebraicGeometry.IsLocallyNoetherian X ↔ ∀ (i : 𝒰.J), AlgebraicGeometry.IsLocallyNoetherian (𝒰.obj i)

full_name: AlgebraicGeometry.instNoetherianSpaceαTopologicalSpaceCarrierCommRingCatSpecOfIsNoetherianRingCommRing
code: /-- If `R` is a noetherian ring, `Spec R` is a noetherian topological space. -/
instance {R : CommRingCat} [IsNoetherianRing R] :
    NoetherianSpace (Spec R) 
goal: TopologicalSpace.NoetherianSpace ↑↑(AlgebraicGeometry.Spec R).toPresheafedSpace

full_name: AlgebraicGeometry.noetherianSpace_of_isAffine
code: lemma noetherianSpace_of_isAffine [IsAffine X] [IsNoetherianRing Γ(X, ⊤)] :
    NoetherianSpace X 
goal: TopologicalSpace.NoetherianSpace ↑↑X.toPresheafedSpace

full_name: AlgebraicGeometry.noetherianSpace_of_isAffineOpen
code: lemma noetherianSpace_of_isAffineOpen (U : X.Opens) (hU : IsAffineOpen U)
    [IsNoetherianRing Γ(X, U)] :
    NoetherianSpace U 
goal: TopologicalSpace.NoetherianSpace ↑↑(↑U).toPresheafedSpace

full_name: AlgebraicGeometry.instQuasiCompactOfIsLocallyNoetherianOfIsOpenImmersion
code: /-- Any open immersion `Z ⟶ X` with `X` locally Noetherian is quasi-compact.

[Stacks: Lemma 01OX](https://stacks.math.columbia.edu/tag/01OX) -/
instance (priority := 100) {Z : Scheme} [IsLocallyNoetherian X]
    {f : Z ⟶ X} [IsOpenImmersion f] : QuasiCompact f 
goal: AlgebraicGeometry.QuasiCompact f

full_name: AlgebraicGeometry.IsLocallyNoetherian.quasiSeparatedSpace
code: /-- A locally Noetherian scheme is quasi-separated.

[Stacks: Lemma 01OY](https://stacks.math.columbia.edu/tag/01OY) -/
instance (priority := 100) IsLocallyNoetherian.quasiSeparatedSpace [IsLocallyNoetherian X] :
    QuasiSeparatedSpace X 
goal: QuasiSeparatedSpace ↑↑X.toPresheafedSpace

full_name: AlgebraicGeometry.IsNoetherian
code: /-- A scheme `X` is Noetherian if it is locally Noetherian and compact. -/
@[mk_iff]
class IsNoetherian (X : Scheme) extends IsLocallyNoetherian X, CompactSpace X : Prop
goal: Prop

full_name: AlgebraicGeometry.isNoetherian_iff
code: /-- A scheme `X` is Noetherian if it is locally Noetherian and compact. -/
@[mk_iff]
class IsNoetherian (X : Scheme) extends IsLocallyNoetherian X, CompactSpace X : Prop
goal: AlgebraicGeometry.IsNoetherian X ↔ AlgebraicGeometry.IsLocallyNoetherian X ∧ CompactSpace ↑↑X.toPresheafedSpace

full_name: AlgebraicGeometry.isNoetherian_iff_of_finite_iSup_eq_top
code: /-- A scheme is Noetherian if and only if it is covered by finitely many affine opens whose
sections are noetherian rings. -/
theorem isNoetherian_iff_of_finite_iSup_eq_top {ι} [Finite ι] {S : ι → X.affineOpens}
    (hS : (⨆ i, S i : X.Opens) = ⊤) :
    IsNoetherian X ↔ ∀ i, IsNoetherianRing Γ(X, S i) 
goal: AlgebraicGeometry.IsNoetherian X ↔ ∀ (i : ι), IsNoetherianRing ↑Γ(X, ↑(S i))

full_name: AlgebraicGeometry.isNoetherian_iff_of_finite_affine_openCover
code: /-- A version of `isNoetherian_iff_of_finite_iSup_eq_top` using `Scheme.OpenCover`. -/
theorem isNoetherian_iff_of_finite_affine_openCover {𝒰 : Scheme.OpenCover.{v, u} X}
    [Finite 𝒰.J] [∀ i, IsAffine (𝒰.obj i)] :
    IsNoetherian X ↔ ∀ (i : 𝒰.J), IsNoetherianRing Γ(𝒰.obj i, ⊤) 
goal: AlgebraicGeometry.IsNoetherian X ↔ ∀ (i : 𝒰.J), IsNoetherianRing ↑Γ(𝒰.obj i, ⊤)

full_name: AlgebraicGeometry.IsNoetherian.noetherianSpace
code: /-- A Noetherian scheme has a Noetherian underlying topological space.

[Stacks, Lemma 01OZ](https://stacks.math.columbia.edu/tag/01OZ) -/
instance (priority := 100) IsNoetherian.noetherianSpace [IsNoetherian X] :
    NoetherianSpace X 
goal: TopologicalSpace.NoetherianSpace ↑↑X.toPresheafedSpace

full_name: AlgebraicGeometry.quasiCompact_of_noetherianSpace_source
code: /-- Any morphism of schemes `f : X ⟶ Y` with `X` Noetherian is quasi-compact.

[Stacks, Lemma 01P0](https://stacks.math.columbia.edu/tag/01P0) -/
instance (priority := 100) quasiCompact_of_noetherianSpace_source {X Y : Scheme}
    [NoetherianSpace X] (f : X ⟶ Y) : QuasiCompact f 
goal: AlgebraicGeometry.QuasiCompact f

full_name: AlgebraicGeometry.instIsLocallyNoetherianSpecOfIsNoetherianRingαCommRing
code: /-- If `R` is a Noetherian ring, `Spec R` is a locally Noetherian scheme. -/
instance {R : CommRingCat} [IsNoetherianRing R] :
    IsLocallyNoetherian (Spec R) 
goal: AlgebraicGeometry.IsLocallyNoetherian (AlgebraicGeometry.Spec R)

full_name: AlgebraicGeometry.instIsNoetherianRingαCommRingOfIsLocallyNoetherianSpec
code: instance (priority := 100) {R : CommRingCat}
    [IsLocallyNoetherian (Spec R)] : IsNoetherianRing R 
goal: IsNoetherianRing ↑R

full_name: AlgebraicGeometry.instIsNoetherianSpecOfIsNoetherianRingαCommRing
code: /-- If `R` is a Noetherian ring, `Spec R` is a Noetherian scheme. -/
instance {R : CommRingCat} [IsNoetherianRing R] :
    IsNoetherian (Spec R) 
goal: AlgebraicGeometry.IsNoetherian (AlgebraicGeometry.Spec R)

full_name: AlgebraicGeometry.instIsNoetherianSpecOfOfIsNoetherianRing
code: instance {R} [CommRing R] [IsNoetherianRing R] :
    IsNoetherian (Spec (.of R)) 
goal: AlgebraicGeometry.IsNoetherian (AlgebraicGeometry.Spec (CommRingCat.of R))

full_name: AlgebraicGeometry.isNoetherian_Spec
code: /-- `R` is a Noetherian ring if and only if `Spec R` is a Noetherian scheme. -/
theorem isNoetherian_Spec {R : CommRingCat} :
    IsNoetherian (Spec R) ↔ IsNoetherianRing R 
goal: AlgebraicGeometry.IsNoetherian (AlgebraicGeometry.Spec R) ↔ IsNoetherianRing ↑R

full_name: AlgebraicGeometry.finite_irreducibleComponents_of_isNoetherian
code: /-- A Noetherian scheme has a finite number of irreducible components.

[Stacks, Lemma 0BA8](https://stacks.math.columbia.edu/tag/0BA8) -/
theorem finite_irreducibleComponents_of_isNoetherian [IsNoetherian X] :
    (irreducibleComponents X).Finite 
goal: (irreducibleComponents ↑↑X.toPresheafedSpace).Finite