The limit theorem for flatness at a finite stage #
The ordinary-ring case of the limit theorem for flatness
(EGA IV, 11.2.6.1): when R is a directed colimit of commutative
rings Rᵢ and a finitely presented flat R-module arises by base
change from a stage i₀, the base change to some finite stage
j ≥ i₀ is already flat.
We work with the matrix form of Lazard's equational criterion. A
finitely presented module is the cokernel of a presentation matrix
K : Matrix (Fin n) (Fin m) A; such a cokernel is projective —
equivalently flat, see the bridge below — precisely when K
admits a certificate: a matrix T with K * T * K = K
(projective_of_matrix_certificate and
matrix_certificate_of_projective). A certificate is a finite
system of ring equations, so it descends along a directed colimit
of rings (exists_stage_matrix_certificate); the headline
statement is exists_stage_projective.
The colimit is presented abstractly by
DirectedColimitPresentation: a compatible cocone gᵢ : Rᵢ →+* R
which is jointly surjective and detects equalities at a finite
stage. Ring.DirectLimit provides these data via
Ring.DirectLimit.exists_of and Ring.DirectLimit.of.zero_exact
(module Mathlib.Algebra.Colimit.Ring, outside our import
funnel), so the statements here apply to it directly.
The flatness bridge #
Module.Flat lives in Mathlib.RingTheory.Flat.Basic, which is
not reachable through RS.Common.MathlibDeps, so the statements
here are phrased with Module.Projective. The translation to
flatness is a pair of Mathlib lemmas for the consumer:
Module.Flat.of_projective(Mathlib.RingTheory.Flat.Basic): projective modules are flat;Module.Flat.projective_of_finitePresentation(Mathlib.RingTheory.Flat.EquationalCriterion): a finitely presented flat module is projective.
With these, exists_stage_projective is the flatness statement:
a finitely presented flat R-module presented by the base change
of a stage-i₀ matrix is projective, its certificate descends to
a stage j, and every module presented over Rⱼ by the pushed
matrix — in particular the base change Rⱼ ⊗_{R_{i₀}} M_{i₀} —
is projective, hence flat.
Lazard certificates #
A module presented by the matrix K — the cokernel of
K.mulVecLin : A^m →ₗ A^n — is projective exactly when K admits
a matrix T with K * T * K = K. The two directions are
projective_of_matrix_certificate and
matrix_certificate_of_projective.
One half of the matrix form of Lazard's criterion: a
certificate K * T * K = K splits the presentation, so any module
presented by K is a direct summand of A ^ n and therefore
projective. Combined with Module.Flat.of_projective (outside
the funnel) this shows certified modules are flat.
The other half of the matrix form of Lazard's criterion: a
projective module presented by K yields a certificate
K * T * K = K. Via
Module.Flat.projective_of_finitePresentation (outside the
funnel) the hypothesis holds for any finitely presented flat
module.
Directed colimit presentations of a ring #
The colimit R = colim Rᵢ enters only through three properties of
the cocone gᵢ : Rᵢ →+* R: compatibility with the transition
maps, joint surjectivity, and detection of equalities at a finite
stage. Ring.DirectLimit satisfies all three.
A presentation of the commutative ring R as the directed
colimit of the system F with transition maps f: a compatible
cocone which is jointly surjective and detects equalities at a
finite stage. These are the only properties of a filtered colimit
of rings used by the limit theorem.
The cocone maps from the stages to the colimit.
The cocone commutes with the transition maps.
Every element of the colimit comes from some stage.
- eventuallyEq (i : ι) (x y : F i) : (self.toColim i) x = (self.toColim i) y → ∃ (j : ι) (h : i ≤ j), (f h) x = (f h) y
An equality in the colimit holds at some later stage.
Instances For
Every finite family of elements of the colimit lifts jointly to a single stage.
Finitely many equalities holding in the colimit hold simultaneously at some common later stage.
Every matrix over the colimit lifts to a matrix at some stage.
An equality of matrices in the colimit holds at some later stage.
The limit theorem #
Certificates descend to a finite stage: when the base change
to the colimit of a stage-i₀ presentation matrix admits a
certificate over R, its base change to some finite stage
j ≥ i₀ admits a certificate over F j. This is the equational
heart of the limit theorem for flatness: the certificate is a
finite system of ring equations, its entries live at a finite
stage, and the equations hold at a further stage.
The limit theorem for flatness, projective form (the
ordinary-ring case of EGA IV, 11.2.6.1). Let R be a directed
colimit of the commutative rings F i and let M be a projective
R-module presented by the base change of a stage-i₀ matrix
K₀ — for instance a finitely presented flat module arising by
base change from a finitely presented module at stage i₀, via
Module.Flat.projective_of_finitePresentation. Then there is a
stage j ≥ i₀ at which every module presented by the pushed
matrix K₀.map (f hij) — in particular the base change
F j ⊗_{F i₀} M_{i₀}, whose presentation matrix it is by right
exactness of the tensor product — is projective, hence flat via
Module.Flat.of_projective.