File: Mathlib/AlgebraicGeometry/Properties.lean

full_name: AlgebraicGeometry.instT0SpaceαTopologicalSpaceCarrierCommRingCat
code: instance : T0Space X 
goal: T0Space ↑↑X.toPresheafedSpace

full_name: AlgebraicGeometry.instQuasiSoberαTopologicalSpaceCarrierCommRingCat
code: instance : QuasiSober X 
goal: QuasiSober ↑↑X.toPresheafedSpace

full_name: AlgebraicGeometry.IsReduced
code: /-- A scheme `X` is reduced if all `𝒪ₓ(U)` are reduced. -/
class IsReduced : Prop where
  component_reduced : ∀ U, IsReduced Γ(X, U) := by infer_instance
goal: Prop

full_name: AlgebraicGeometry.IsReduced.component_reduced
code: /-- A scheme `X` is reduced if all `𝒪ₓ(U)` are reduced. -/
class IsReduced : Prop where
  component_reduced : ∀ U, IsReduced Γ(X, U) := by infer_instance
goal: IsReduced ↑(X.presheaf.obj (Opposite.op U))

full_name: AlgebraicGeometry.isReduced_of_isReduced_stalk
code: theorem isReduced_of_isReduced_stalk [∀ x : X, _root_.IsReduced (X.presheaf.stalk x)] :
    IsReduced X 
goal: AlgebraicGeometry.IsReduced X

full_name: AlgebraicGeometry.isReduced_stalk_of_isReduced
code: instance isReduced_stalk_of_isReduced [IsReduced X] (x : X) :
    _root_.IsReduced (X.presheaf.stalk x) 
goal: IsReduced ↑(X.presheaf.stalk x)

full_name: AlgebraicGeometry.isReduced_of_isOpenImmersion
code: theorem isReduced_of_isOpenImmersion {X Y : Scheme} (f : X ⟶ Y) [H : IsOpenImmersion f]
    [IsReduced Y] : IsReduced X 
goal: AlgebraicGeometry.IsReduced X

full_name: AlgebraicGeometry.instIsReducedSpecOfIsReducedαCommRing
code: instance {R : CommRingCat.{u}} [H : _root_.IsReduced R] : IsReduced (Spec R) 
goal: AlgebraicGeometry.IsReduced (AlgebraicGeometry.Spec R)

full_name: AlgebraicGeometry.affine_isReduced_iff
code: theorem affine_isReduced_iff (R : CommRingCat) :
    IsReduced (Spec R) ↔ _root_.IsReduced R 
goal: AlgebraicGeometry.IsReduced (AlgebraicGeometry.Spec R) ↔ IsReduced ↑R

full_name: AlgebraicGeometry.isReduced_of_isAffine_isReduced
code: theorem isReduced_of_isAffine_isReduced [IsAffine X] [_root_.IsReduced Γ(X, ⊤)] :
    IsReduced X 
goal: AlgebraicGeometry.IsReduced X

full_name: AlgebraicGeometry.reduce_to_affine_global
code: /-- To show that a statement `P` holds for all open subsets of all schemes, it suffices to show that
1. In any scheme `X`, if `P` holds for an open cover of `U`, then `P` holds for `U`.
2. For an open immerison `f : X ⟶ Y`, if `P` holds for the entire space of `X`, then `P` holds for
  the image of `f`.
3. `P` holds for the entire space of an affine scheme.
-/
@[elab_as_elim]
theorem reduce_to_affine_global (P : ∀ {X : Scheme} (_ : X.Opens), Prop)
    {X : Scheme} (U : X.Opens)
    (h₁ : ∀ (X : Scheme) (U : X.Opens),
      (∀ x : U, ∃ (V : _) (_ : x.1 ∈ V) (_ : V ⟶ U), P V) → P U)
    (h₂ : ∀ (X Y) (f : X ⟶ Y) [hf : IsOpenImmersion f],
      ∃ (U : Set X) (V : Set Y) (hU : U = ⊤) (hV : V = Set.range f.1.base),
        P ⟨U, hU.symm ▸ isOpen_univ⟩ → P ⟨V, hV.symm ▸ hf.base_open.isOpen_range⟩)
    (h₃ : ∀ R : CommRingCat, P (X := Spec R) ⊤) : P U 
goal: P U

full_name: AlgebraicGeometry.reduce_to_affine_nbhd
code: theorem reduce_to_affine_nbhd (P : ∀ (X : Scheme) (_ : X), Prop)
    (h₁ : ∀ R x, P (Spec R) x)
    (h₂ : ∀ {X Y} (f : X ⟶ Y) [IsOpenImmersion f] (x : X), P X x → P Y (f.1.base x)) :
    ∀ (X : Scheme) (x : X), P X x 
goal: P X x

full_name: AlgebraicGeometry.eq_zero_of_basicOpen_eq_bot
code: theorem eq_zero_of_basicOpen_eq_bot {X : Scheme} [hX : IsReduced X] {U : X.Opens}
    (s : Γ(X, U)) (hs : X.basicOpen s = ⊥) : s = 0 
goal: s = 0

full_name: AlgebraicGeometry.basicOpen_eq_bot_iff
code: @[simp]
theorem basicOpen_eq_bot_iff {X : Scheme} [IsReduced X] {U : X.Opens}
    (s : Γ(X, U)) : X.basicOpen s = ⊥ ↔ s = 0 
goal: X.basicOpen s = ⊥ ↔ s = 0

full_name: AlgebraicGeometry.IsIntegral.nonempty
code: /-- A scheme `X` is integral if its is nonempty,
and `𝒪ₓ(U)` is an integral domain for each `U ≠ ∅`. -/
class IsIntegral : Prop where
  nonempty : Nonempty X := by infer_instance
  component_integral : ∀ (U : X.Opens) [Nonempty U], IsDomain Γ(X, U) := by infer_instance
goal: Nonempty ↑↑X.toPresheafedSpace

full_name: AlgebraicGeometry.IsIntegral
code: /-- A scheme `X` is integral if its is nonempty,
and `𝒪ₓ(U)` is an integral domain for each `U ≠ ∅`. -/
class IsIntegral : Prop where
  nonempty : Nonempty X := by infer_instance
  component_integral : ∀ (U : X.Opens) [Nonempty U], IsDomain Γ(X, U) := by infer_instance
goal: Prop

full_name: AlgebraicGeometry.IsIntegral.component_integral
code: /-- A scheme `X` is integral if its is nonempty,
and `𝒪ₓ(U)` is an integral domain for each `U ≠ ∅`. -/
class IsIntegral : Prop where
  nonempty : Nonempty X := by infer_instance
  component_integral : ∀ (U : X.Opens) [Nonempty U], IsDomain Γ(X, U) := by infer_instance
goal: IsDomain ↑(X.presheaf.obj (Opposite.op U))

full_name: AlgebraicGeometry.instIsDomainαCommRingObjOppositeOpensTopologicalSpaceCarrierCommRingCatPresheafOpOpensTopOfIsIntegral
code: instance [IsIntegral X] : IsDomain Γ(X, ⊤) 
goal: IsDomain ↑(X.presheaf.obj (Opposite.op ⊤))

full_name: AlgebraicGeometry.isReduced_of_isIntegral
code: instance (priority := 900) isReduced_of_isIntegral [IsIntegral X] : IsReduced X 
goal: AlgebraicGeometry.IsReduced X

full_name: AlgebraicGeometry.Scheme.component_nontrivial
code: instance Scheme.component_nontrivial (X : Scheme.{u}) (U : X.Opens) [Nonempty U] :
    Nontrivial Γ(X, U) 
goal: Nontrivial ↑(X.presheaf.obj (Opposite.op U))

full_name: AlgebraicGeometry.irreducibleSpace_of_isIntegral
code: instance irreducibleSpace_of_isIntegral [IsIntegral X] : IrreducibleSpace X 
goal: IrreducibleSpace ↑↑X.toPresheafedSpace

full_name: AlgebraicGeometry.isIntegral_of_irreducibleSpace_of_isReduced
code: theorem isIntegral_of_irreducibleSpace_of_isReduced [IsReduced X] [H : IrreducibleSpace X] :
    IsIntegral X 
goal: AlgebraicGeometry.IsIntegral X

full_name: AlgebraicGeometry.isIntegral_iff_irreducibleSpace_and_isReduced
code: theorem isIntegral_iff_irreducibleSpace_and_isReduced :
    IsIntegral X ↔ IrreducibleSpace X ∧ IsReduced X 
goal: AlgebraicGeometry.IsIntegral X ↔ IrreducibleSpace ↑↑X.toPresheafedSpace ∧ AlgebraicGeometry.IsReduced X

full_name: AlgebraicGeometry.isIntegral_of_isOpenImmersion
code: theorem isIntegral_of_isOpenImmersion {X Y : Scheme} (f : X ⟶ Y) [H : IsOpenImmersion f]
    [IsIntegral Y] [Nonempty X] : IsIntegral X 
goal: AlgebraicGeometry.IsIntegral X

full_name: AlgebraicGeometry.instIrreducibleSpaceαTopologicalSpaceCarrierCommRingCatSpecOfIsDomainCommRing
code: instance {R : CommRingCat} [IsDomain R] : IrreducibleSpace (Spec R) 
goal: IrreducibleSpace ↑↑(AlgebraicGeometry.Spec R).toPresheafedSpace

full_name: AlgebraicGeometry.instIsIntegralSpecOfIsDomainαCommRing
code: instance {R : CommRingCat} [IsDomain R] : IsIntegral (Spec R) 
goal: AlgebraicGeometry.IsIntegral (AlgebraicGeometry.Spec R)

full_name: AlgebraicGeometry.affine_isIntegral_iff
code: theorem affine_isIntegral_iff (R : CommRingCat) :
    IsIntegral (Spec R) ↔ IsDomain R 
goal: AlgebraicGeometry.IsIntegral (AlgebraicGeometry.Spec R) ↔ IsDomain ↑R

full_name: AlgebraicGeometry.isIntegral_of_isAffine_of_isDomain
code: theorem isIntegral_of_isAffine_of_isDomain [IsAffine X] [Nonempty X] [IsDomain Γ(X, ⊤)] :
    IsIntegral X 
goal: AlgebraicGeometry.IsIntegral X

full_name: AlgebraicGeometry.map_injective_of_isIntegral
code: theorem map_injective_of_isIntegral [IsIntegral X] {U V : X.Opens} (i : U ⟶ V)
    [H : Nonempty U] : Function.Injective (X.presheaf.map i.op) 
goal: Function.Injective ⇑(X.presheaf.map i.op)