Documentation

Mathlib.AlgebraicGeometry.Morphisms.Flat

Flat morphisms #

A morphism of schemes f : X ⟶ Y is flat if for each affine U ⊆ Y and V ⊆ f ⁻¹' U, the induced map Γ(Y, U) ⟶ Γ(X, V) is flat. This is equivalent to asking that all stalk maps are flat (see AlgebraicGeometry.Flat.iff_flat_stalkMap).

We show that this property is local, and are stable under compositions and base change.

class AlgebraicGeometry.Flat {X Y : Scheme} (f : X Y) :

A morphism of schemes f : X ⟶ Y is flat if for each affine U ⊆ Y and V ⊆ f ⁻¹' U, the induced map Γ(Y, U) ⟶ Γ(X, V) is flat. This is equivalent to asking that all stalk maps are flat (see AlgebraicGeometry.Flat.iff_flat_stalkMap).

Instances
    theorem AlgebraicGeometry.flat_iff {X Y : Scheme} (f : X Y) :
    Flat f ∀ {U : Y.Opens}, IsAffineOpen U∀ {V : X.Opens}, IsAffineOpen V∀ (e : V (TopologicalSpace.Opens.map f.base).obj U), (CommRingCat.Hom.hom (Scheme.Hom.appLE f U V e)).Flat
    theorem AlgebraicGeometry.Scheme.Hom.flat_appLE {X Y : Scheme} (f : X Y) [self : Flat f] {U : Y.Opens} :
    IsAffineOpen U∀ {V : X.Opens}, IsAffineOpen V∀ (e : V (TopologicalSpace.Opens.map f.base).obj U), (CommRingCat.Hom.hom (appLE f U V e)).Flat

    Alias of AlgebraicGeometry.Flat.flat_appLE.

    @[deprecated AlgebraicGeometry.Scheme.Hom.flat_appLE (since := "2026-01-20")]
    theorem AlgebraicGeometry.Flat.flat_of_affine_subset {X Y : Scheme} (f : X Y) [self : Flat f] {U : Y.Opens} :

    Alias of AlgebraicGeometry.Flat.flat_appLE.


    Alias of AlgebraicGeometry.Flat.flat_appLE.

    @[instance 900]
    instance AlgebraicGeometry.Flat.comp {X Y Z : Scheme} (f : X Y) (g : Y Z) [hf : Flat f] [hg : Flat g] :
    instance AlgebraicGeometry.Flat.instMorphismRestrict {X Y : Scheme} (f : X Y) (V : Y.Opens) [Flat f] :
    Flat (f ∣_ V)
    instance AlgebraicGeometry.Flat.instResLE {X Y : Scheme} (f : X Y) (U : X.Opens) (V : Y.Opens) (e : U (TopologicalSpace.Opens.map f.base).obj V) [Flat f] :
    theorem AlgebraicGeometry.Flat.of_stalkMap {X Y : Scheme} (f : X Y) (H : ∀ (x : X), (CommRingCat.Hom.hom (Scheme.Hom.stalkMap f x)).Flat) :
    instance AlgebraicGeometry.Flat.instDescScheme {X : Scheme} {ι : Type v} [Small.{u, v} ι] {Y : ιScheme} {f : (i : ι) → Y i X} [∀ (i : ι), Flat (f i)] :

    A surjective, quasi-compact, flat morphism is a quotient map.

    A flat surjective morphism of schemes is an epimorphism in the category of schemes.

    Sections of fibered products #

    Suppose we are given the following cartesian square:

    Y --g-→ X
    |       |
    iY      iX
    ↓       |
    T --f-→ S
    

    Let Uₛ be an open of S, Uₓ and Uₜ be opens of X and T mapping into Uₛ. There is a canonical map Γ(X, Uₓ) ⊗[Γ(S, Uₛ)] Γ(T, Uₜ) ⟶ Γ(X ×ₛ T, pr₁ ⁻¹ Uₓ ∩ pr₂ ⁻¹ Uₜ).

    We show that this map is

    1. isIso_pushoutSection_of_isAffineOpen: bijective when Uₛ, Uₜ, and Uₓ are all affine.
    2. mono_pushoutSection_of_isCompact_of_flat_right: injective when Uₛ, Uₜ are affine, Uₓ is compact, and f is flat.
    3. isIso_pushoutSection_of_isQuasiSeparated_of_flat_right: bijective when Uₛ, Uₜ are affine, Uₓ is qcqs, and f is flat.
    4. mono_pushoutSection_of_isCompact_of_flat_right_of_ringHomFlat: injective when Uₛ is affine, Uₜ is compact, Uₓ is qcqs, f is flat, and Γ(T, Uₜ) is flat over Γ(S, Uₛ) (typically true when S = Spec k.)
    5. isIso_pushoutSection_of_isCompact_of_flat_right_of_ringHomFlat: bijective when Uₛ is affine, Uₜ and Uₓ are qcqs, f is flat, and Γ(T, Uₜ) is flat over Γ(S, Uₛ) (typically true when S = Spec k.)
    @[reducible, inline]
    abbrev AlgebraicGeometry.pushoutSection {X Y S T : Scheme} {f : T S} {g : Y X} {iX : X S} {iY : Y T} (H : CategoryTheory.IsPullback g iY iX f) {US : S.Opens} {UT : T.Opens} {UX : X.Opens} (hUST : UT (TopologicalSpace.Opens.map f.base).obj US) (hUSX : UX (TopologicalSpace.Opens.map iX.base).obj US) {UY : Y.Opens} (hUY : UY = (TopologicalSpace.Opens.map g.base).obj UX(TopologicalSpace.Opens.map iY.base).obj UT) :

    The canonical map Γ(X, Uₓ) ⊗[Γ(S, Uₛ)] Γ(T, Uₜ) ⟶ Γ(X ×ₛ T, pr₁ ⁻¹ Uₓ ∩ pr₂ ⁻¹ Uₜ). This is an isomorphism under various circumstances.

    Equations
    Instances For
      theorem AlgebraicGeometry.isIso_pushoutSection_iff {X Y S T : Scheme} {f : T S} {g : Y X} {iX : X S} {iY : Y T} (H : CategoryTheory.IsPullback g iY iX f) {US : S.Opens} {UT : T.Opens} {UX : X.Opens} (hUST : UT (TopologicalSpace.Opens.map f.base).obj US) (hUSX : UX (TopologicalSpace.Opens.map iX.base).obj US) {UY : Y.Opens} (hUY : UY = (TopologicalSpace.Opens.map g.base).obj UX(TopologicalSpace.Opens.map iY.base).obj UT) :
      CategoryTheory.IsIso (pushoutSection H hUST hUSX hUY) CategoryTheory.IsPushout (Scheme.Hom.appLE iX US UX hUSX) (Scheme.Hom.appLE f US UT hUST) (Scheme.Hom.appLE g UX UY ) (Scheme.Hom.appLE iY UT UY )
      theorem AlgebraicGeometry.isIso_pushoutSection_of_isAffineOpen {X Y S T : Scheme} {f : T S} {g : Y X} {iX : X S} {iY : Y T} (H : CategoryTheory.IsPullback g iY iX f) {US : S.Opens} {UT : T.Opens} {UX : X.Opens} (hUST : UT (TopologicalSpace.Opens.map f.base).obj US) (hUSX : UX (TopologicalSpace.Opens.map iX.base).obj US) {UY : Y.Opens} (hUY : UY = (TopologicalSpace.Opens.map g.base).obj UX(TopologicalSpace.Opens.map iY.base).obj UT) (hUS : IsAffineOpen US) (hUT : IsAffineOpen UT) (hUX : IsAffineOpen UX) :
      theorem AlgebraicGeometry.mono_pushoutSection_of_iSup_eq {X Y S T : Scheme} {f : T S} {g : Y X} {iX : X S} {iY : Y T} (H : CategoryTheory.IsPullback g iY iX f) {US : S.Opens} {UT : T.Opens} {UX : X.Opens} (hUST : UT (TopologicalSpace.Opens.map f.base).obj US) (hUSX : UX (TopologicalSpace.Opens.map iX.base).obj US) {UY : Y.Opens} (hUY : UY = (TopologicalSpace.Opens.map g.base).obj UX(TopologicalSpace.Opens.map iY.base).obj UT) {ι : Type u_1} [Finite ι] (VX : ιX.Opens) (hVU : iSup VX = UX) (hV : ∀ (i : ι), CategoryTheory.Mono (pushoutSection H hUST )) (hT : (CommRingCat.Hom.hom (Scheme.Hom.appLE f US UT hUST)).Flat) :
      theorem AlgebraicGeometry.isIso_pushoutSection_of_iSup_eq {X Y S T : Scheme} {f : T S} {g : Y X} {iX : X S} {iY : Y T} (H : CategoryTheory.IsPullback g iY iX f) {US : S.Opens} {UT : T.Opens} {UX : X.Opens} (hUST : UT (TopologicalSpace.Opens.map f.base).obj US) (hUSX : UX (TopologicalSpace.Opens.map iX.base).obj US) {UY : Y.Opens} (hUY : UY = (TopologicalSpace.Opens.map g.base).obj UX(TopologicalSpace.Opens.map iY.base).obj UT) {ι : Type u} [Finite ι] (VX : ιX.Opens) (hVU : iSup VX = UX) (hV : ∀ (i : ι), CategoryTheory.IsIso (pushoutSection H hUST )) (hV' : ∀ (i j : ι), CategoryTheory.Mono (pushoutSection H hUST )) (hT : (CommRingCat.Hom.hom (Scheme.Hom.appLE f US UT hUST)).Flat) :
      theorem AlgebraicGeometry.mono_pushoutSection_of_isCompact_of_flat_right {X Y S T : Scheme} {f : T S} {g : Y X} {iX : X S} {iY : Y T} (H : CategoryTheory.IsPullback g iY iX f) {US : S.Opens} {UT : T.Opens} {UX : X.Opens} (hUST : UT (TopologicalSpace.Opens.map f.base).obj US) (hUSX : UX (TopologicalSpace.Opens.map iX.base).obj US) {UY : Y.Opens} (hUY : UY = (TopologicalSpace.Opens.map g.base).obj UX(TopologicalSpace.Opens.map iY.base).obj UT) [Flat f] (hUS : IsAffineOpen US) (hUT : IsAffineOpen UT) (hUX : IsCompact UX) :
      theorem AlgebraicGeometry.mono_pushoutSection_of_isCompact_of_flat_left {X Y S T : Scheme} {f : T S} {g : Y X} {iX : X S} {iY : Y T} (H : CategoryTheory.IsPullback g iY iX f) {US : S.Opens} {UT : T.Opens} {UX : X.Opens} (hUST : UT (TopologicalSpace.Opens.map f.base).obj US) (hUSX : UX (TopologicalSpace.Opens.map iX.base).obj US) {UY : Y.Opens} (hUY : UY = (TopologicalSpace.Opens.map g.base).obj UX(TopologicalSpace.Opens.map iY.base).obj UT) [Flat iX] (hUS : IsAffineOpen US) (hUX : IsAffineOpen UX) (hUT : IsCompact UT) :
      theorem AlgebraicGeometry.isIso_pushoutSection_of_isQuasiSeparated_of_flat_right {X Y S T : Scheme} {f : T S} {g : Y X} {iX : X S} {iY : Y T} (H : CategoryTheory.IsPullback g iY iX f) {US : S.Opens} {UT : T.Opens} {UX : X.Opens} (hUST : UT (TopologicalSpace.Opens.map f.base).obj US) (hUSX : UX (TopologicalSpace.Opens.map iX.base).obj US) {UY : Y.Opens} (hUY : UY = (TopologicalSpace.Opens.map g.base).obj UX(TopologicalSpace.Opens.map iY.base).obj UT) [Flat f] (hUS : IsAffineOpen US) (hUT : IsAffineOpen UT) (hUX : IsCompact UX) (hUX' : IsQuasiSeparated UX) :
      theorem AlgebraicGeometry.isIso_pushoutSection_of_isQuasiSeparated_of_flat_left {X Y S T : Scheme} {f : T S} {g : Y X} {iX : X S} {iY : Y T} (H : CategoryTheory.IsPullback g iY iX f) {US : S.Opens} {UT : T.Opens} {UX : X.Opens} (hUST : UT (TopologicalSpace.Opens.map f.base).obj US) (hUSX : UX (TopologicalSpace.Opens.map iX.base).obj US) {UY : Y.Opens} (hUY : UY = (TopologicalSpace.Opens.map g.base).obj UX(TopologicalSpace.Opens.map iY.base).obj UT) [Flat iX] (hUS : IsAffineOpen US) (hUX : IsAffineOpen UX) (hUT : IsCompact UT) (hUT' : IsQuasiSeparated UT) :
      theorem AlgebraicGeometry.mono_pushoutSection_of_isCompact_of_flat_left_of_ringHomFlat {X Y S T : Scheme} {f : T S} {g : Y X} {iX : X S} {iY : Y T} (H : CategoryTheory.IsPullback g iY iX f) {US : S.Opens} {UT : T.Opens} {UX : X.Opens} (hUST : UT (TopologicalSpace.Opens.map f.base).obj US) (hUSX : UX (TopologicalSpace.Opens.map iX.base).obj US) {UY : Y.Opens} (hUY : UY = (TopologicalSpace.Opens.map g.base).obj UX(TopologicalSpace.Opens.map iY.base).obj UT) [Flat iX] (hUS : IsAffineOpen US) (hUT : IsCompact UT) (hUX : IsCompact UX) (hf : (CommRingCat.Hom.hom (Scheme.Hom.appLE f US UT hUST)).Flat) :
      theorem AlgebraicGeometry.mono_pushoutSection_of_isCompact_of_flat_right_of_ringHomFlat {X Y S T : Scheme} {f : T S} {g : Y X} {iX : X S} {iY : Y T} (H : CategoryTheory.IsPullback g iY iX f) {US : S.Opens} {UT : T.Opens} {UX : X.Opens} (hUST : UT (TopologicalSpace.Opens.map f.base).obj US) (hUSX : UX (TopologicalSpace.Opens.map iX.base).obj US) {UY : Y.Opens} (hUY : UY = (TopologicalSpace.Opens.map g.base).obj UX(TopologicalSpace.Opens.map iY.base).obj UT) [Flat f] (hUS : IsAffineOpen US) (hUT : IsCompact UT) (hUX : IsCompact UX) (hiX : (CommRingCat.Hom.hom (Scheme.Hom.appLE iX US UX hUSX)).Flat) :
      theorem AlgebraicGeometry.isIso_pushoutSection_of_isCompact_of_flat_right_of_ringHomFlat {X Y S T : Scheme} {f : T S} {g : Y X} {iX : X S} {iY : Y T} (H : CategoryTheory.IsPullback g iY iX f) {US : S.Opens} {UT : T.Opens} {UX : X.Opens} (hUST : UT (TopologicalSpace.Opens.map f.base).obj US) (hUSX : UX (TopologicalSpace.Opens.map iX.base).obj US) {UY : Y.Opens} (hUY : UY = (TopologicalSpace.Opens.map g.base).obj UX(TopologicalSpace.Opens.map iY.base).obj UT) [Flat f] (hUS : IsAffineOpen US) (hUT : IsCompact UT) (hUT' : IsQuasiSeparated UT) (hUX : IsCompact UX) (hUX' : IsQuasiSeparated UX) (hiX : (CommRingCat.Hom.hom (Scheme.Hom.appLE iX US UX hUSX)).Flat) :