Faithfully flat modules #
A module M
over a commutative ring R
is faithfully flat if it is flat and IM ≠ M
whenever
I
is a maximal ideal of R
.
Main declaration #
Module.FaithfullyFlat
: the predicate asserting that anR
-moduleM
is faithfully flat.
Main theorems #
Module.FaithfullyFlat.iff_flat_and_proper_ideal
: anR
-moduleM
is faithfully flat iff it is flat and for all proper idealsI
ofR
,I • M ≠ M
.Module.FaithfullyFlat.iff_flat_and_rTensor_faithful
: anR
-moduleM
is faithfully flat iff it is flat and tensoring withM
is faithful, i.e.N ≠ 0
impliesN ⊗ M ≠ 0
.Module.FaithfullyFlat.iff_flat_and_lTensor_faithful
: anR
-moduleM
is faithfully flat iff it is flat and tensoring withM
is faithful, i.e.N ≠ 0
impliesM ⊗ N ≠ 0
.Module.FaithfullyFlat.iff_exact_iff_rTensor_exact
: anR
-moduleM
is faithfully flat iff tensoring withM
preserves and reflects exact sequences, i.e. the sequenceN₁ → N₂ → N₃
is exact iff the sequenceN₁ ⊗ M → N₂ ⊗ M → N₃ ⊗ M
is exact.Module.FaithfullyFlat.iff_exact_iff_lTensor_exact
: anR
-moduleM
is faithfully flat iff tensoring withM
preserves and reflects exact sequences, i.e. the sequenceN₁ → N₂ → N₃
is exact iff the sequenceM ⊗ N₁ → M ⊗ N₂ → M ⊗ N₃
is exact.Module.FaithfullyFlat.iff_zero_iff_lTensor_zero
: anR
-moduleM
is faithfully flat iff for all linear mapsf : N → N'
,f = 0
iffM ⊗ f = 0
.Module.FaithfullyFlat.iff_zero_iff_rTensor_zero
: anR
-moduleM
is faithfully flat iff for all linear mapsf : N → N'
,f = 0
ifff ⊗ M = 0
.Module.FaithfullyFlat.of_linearEquiv
: modules linearly equivalent to a flat modules are flatModule.FaithfullyFlat.comp
: ifS
isR
-faithfully flat andM
isS
-faithfully flat, thenM
isR
-faithfully flat.Module.FaithfullyFlat.self
: theR
-moduleR
is faithfully flat.
A module M
over a commutative ring R
is faithfully flat if it is flat and,
for all R
-module homomorphism f : N → N'
such that id ⊗ f = 0
, we have f = 0
.
- out : ∀ ⦃I : Ideal R⦄, I.FG → Function.Injective ⇑(TensorProduct.lift (LinearMap.lsmul R M ∘ₗ Submodule.subtype I))
Instances
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Faithfully flat modules and exact sequences #
In this section we prove that an R
-module M
is faithfully flat iff tensoring with M
preserves and reflects exact sequences.
Let N₁ -l₁₂-> N₂ -l₂₃-> N₃
be two linear maps.
- We first show that if
N₁ ⊗ M -> N₂ ⊗ M -> N₃ ⊗ M
is exact, thenN₁ -l₁₂-> N₂ -l₂₃-> N₃
is a complex, i.e.range l₁₂ ≤ ker l₂₃
. This isrange_le_ker_of_exact_rTensor
. - Then in
rTensor_reflects_exact
, we showker l₂₃ = range l₁₂
by considering the cohomologyker l₂₃ ⧸ range l₁₂
. This shows that whenM
is faithfully flat,- ⊗ M
reflects exact sequences. For details, see comments in the proof. SinceM
is flat,- ⊗ M
preserves exact sequences.
On the other hand, if - ⊗ M
preserves and reflects exact sequences, then M
is faithfully flat.
M
is flat because- ⊗ M
preserves exact sequences.- We need to show that if
N ⊗ M = 0
thenN = 0
. Consider the sequenceN -0-> N -0-> 0
. After tensoring withM
, we getN ⊗ M -0-> N ⊗ M -0-> 0
which is exact becauseN ⊗ M = 0
. Since- ⊗ M
reflects exact sequences,N = 0
.
If M
is faithfully flat, then exactness of N₁ ⊗ M -> N₂ ⊗ M -> N₃ ⊗ M
implies that the
composition N₁ -> N₂ -> N₃
is 0
.
Implementation detail, please use rTensor_reflects_exact
instead.
Faithfully flat modules and linear maps #
In this section we prove that an R
-module M
is faithfully flat iff the following holds:
M
is flat- for any
R
-linear mapf : N → N'
,f
= 0 ifff ⊗ 𝟙M = 0
iff𝟙M ⊗ f = 0
If M
is a faithfully flat module, then for all linear maps f
, the map id ⊗ f = 0
, if and only
if f = 0
.
If M
is a faithfully flat module, then for all linear maps f
, the map f ⊗ id = 0
, if and only
if f = 0
.
An R
-module M
is faithfully flat iff it is flat and for all linear maps f
, the map
id ⊗ f = 0
, if and only if f = 0
.
An R
-module M
is faithfully flat iff it is flat and for all linear maps f
, the map
id ⊗ f = 0
, if and only if f = 0
.
An R
-module linearly equivalent to a faithfully flat R
-module is faithfully flat.
If S
is a faithfully flat R
-algebra, then any faithfully flat S
-Module is faithfully flat
as an R
-module.