Documentation

Mathlib.RingTheory.Flat.Stability

Flatness is stable under composition and base change #

We show that flatness is stable under composition and base change.

Main theorems #

Composition #

Let R be a ring, S a flat R-algebra and M a flat S-module. To show that M is flat as an R-module, we show that the inclusion of an R-submodule N into an R-module P tensored on the left with M is injective. For this consider the composition of natural maps

M ⊗[R] N ≃ M ⊗[S] (S ⊗[R] N) → M ⊗[S] (S ⊗[R] P) ≃ M ⊗[R] P;

S ⊗[R] N → S ⊗[R] P is injective by R-flatness of S, so the middle map is injective by S-flatness of M.

theorem Module.Flat.trans (R : Type u) (S : Type v) (M : Type w) [CommSemiring R] [CommSemiring S] [Algebra R S] [AddCommMonoid M] [Module R M] [Module S M] [IsScalarTower R S M] [Module.Flat R S] [Module.Flat S M] :

If S is a flat R-algebra, then any flat S-Module is also R-flat.

@[deprecated Module.Flat.trans (since := "2024-11-03")]
theorem Module.Flat.comp (R : Type u) (S : Type v) (M : Type w) [CommSemiring R] [CommSemiring S] [Algebra R S] [AddCommMonoid M] [Module R M] [Module S M] [IsScalarTower R S M] [Module.Flat R S] [Module.Flat S M] :

Alias of Module.Flat.trans.


If S is a flat R-algebra, then any flat S-Module is also R-flat.

Base change #

Let R be a ring, M a flat R-module and S an R-algebra, then S ⊗[R] M is a flat S-module. This is a special case of Module.Flat.instTensorProduct.

instance Module.Flat.baseChange (R : Type u) (S : Type v) (M : Type w) [CommSemiring R] [CommSemiring S] [Algebra R S] [AddCommMonoid M] [Module R M] [Module.Flat R M] :

If M is a flat R-module and S is any R-algebra, S ⊗[R] M is S-flat.

theorem Module.Flat.isBaseChange (R : Type u) (S : Type v) (M : Type w) [CommSemiring R] [CommSemiring S] [Algebra R S] [AddCommMonoid M] [Module R M] [Module.Flat R M] (N : Type t) [AddCommMonoid N] [Module R N] [Module S N] [IsScalarTower R S N] {f : M →ₗ[R] N} (h : IsBaseChange S f) :

A base change of a flat module is flat.

theorem Module.Flat.of_isLocalizedModule {R : Type u} {M : Type u_1} {Mp : Type u_2} (Rp : Type v) [CommSemiring R] [AddCommMonoid M] [Module R M] [CommSemiring Rp] [Algebra R Rp] [AddCommMonoid Mp] [Module R Mp] [Module Rp Mp] [IsScalarTower R Rp Mp] [Module.Flat R M] (S : Submonoid R) [IsLocalization S Rp] (f : M →ₗ[R] Mp) [h : IsLocalizedModule S f] :