Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 314f5ad

Browse files
feat(ring_theory/finiteness): add quotient of finitely presented (#6098)
I've added `algebra.finitely_presented.quotient`: the quotient of a finitely presented algebra by a finitely generated ideal is finitely presented. To do so I had to prove some preliminary results about finitely generated modules.
1 parent 3cec1cf commit 314f5ad

File tree

3 files changed

+75
-0
lines changed

3 files changed

+75
-0
lines changed

src/algebra/algebra/basic.lean

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1359,6 +1359,22 @@ lemma restrict_scalars_bot : restrict_scalars R (⊥ : submodule A M) = ⊥ := r
13591359
@[simp]
13601360
lemma restrict_scalars_top : restrict_scalars R (⊤ : submodule A M) = ⊤ := rfl
13611361

1362+
/-- If `A` is an `R`-algebra, then the `R`-module generated by a set `X` is included in the
1363+
`A`-module generated by `X`. -/
1364+
lemma span_le_restrict_scalars (X : set M) : span R (X : set M) ≤ restrict_scalars R (span A X) :=
1365+
submodule.span_le.mpr submodule.subset_span
1366+
1367+
/-- If `A` is an `R`-algebra such that the induced morhpsim `R →+* A` is surjective, then the
1368+
`R`-module generated by a set `X` equals the `A`-module generated by `X`. -/
1369+
lemma span_eq_restrict_scalars (X : set M) (hsur : function.surjective (algebra_map R A)) :
1370+
span R X = restrict_scalars R (span A X) :=
1371+
begin
1372+
apply (span_le_restrict_scalars R A M X).antisymm (λ m hm, _),
1373+
refine span_induction hm subset_span (zero_mem _) (λ _ _, add_mem _) (λ a m hm, _),
1374+
obtain ⟨r, rfl⟩ := hsur a,
1375+
simpa [algebra_map_smul] using smul_mem _ r hm
1376+
end
1377+
13621378
end submodule
13631379

13641380
@[simp]

src/ring_theory/finiteness.lean

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,8 @@ end finite_type
200200

201201
namespace finitely_presented
202202

203+
variables {R A B}
204+
203205
/-- If `e : A ≃ₐ[R] B` and `A` is finitely presented, then so is `B`. -/
204206
lemma equiv (hfp : finitely_presented R A) (e : A ≃ₐ[R] B) : finitely_presented R B :=
205207
begin
@@ -217,6 +219,8 @@ begin
217219
ring_hom.ker_coe_equiv (alg_equiv.to_ring_equiv e), ring_hom.ker_eq_comap_bot] }
218220
end
219221

222+
variable (R)
223+
220224
/-- The ring of polynomials in finitely many variables is finitely presented. -/
221225
lemma mv_polynomial (ι : Type u_2) [fintype ι] : finitely_presented R (mv_polynomial ι R) :=
222226
begin
@@ -239,6 +243,26 @@ begin
239243
(mv_polynomial.pempty_alg_equiv R)
240244
end
241245

246+
variable {R}
247+
248+
/-- The quotient of a finitely presented algebra by a finitely generated ideal is finitely
249+
presented. -/
250+
lemma quotient {I : ideal A} (h : submodule.fg I) (hfp : finitely_presented R A) :
251+
finitely_presented R I.quotient :=
252+
begin
253+
obtain ⟨n, f, hf⟩ := hfp,
254+
refine ⟨n, (ideal.quotient.mkₐ R I).comp f, _, _⟩,
255+
{ exact (ideal.quotient.mkₐ_surjective R I).comp hf.1 },
256+
{ refine submodule.fg_ker_ring_hom_comp _ _ hf.2 _ hf.1,
257+
rwa ideal.quotient.mkₐ_ker R I }
258+
end
259+
260+
/-- If `f : A →ₐ[R] B` is surjective with finitely generated kernel and `A` is finitely presented,
261+
then so is `B`. -/
262+
lemma of_surjective {f : A →ₐ[R] B} (hf : function.surjective f) (hker : f.to_ring_hom.ker.fg)
263+
(hfp : finitely_presented R A) : finitely_presented R B :=
264+
equiv (quotient hker hfp) (ideal.quotient_ker_alg_equiv_of_surjective hf)
265+
242266
end finitely_presented
243267

244268
end algebra

src/ring_theory/noetherian.lean

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,41 @@ begin
200200
{ exact zero_smul _ }, { exact λ _ _ _, add_smul _ _ _ } }
201201
end
202202

203+
/-- The kernel of the composition of two linear maps is finitely generated if both kernels are and
204+
the first morphism is surjective. -/
205+
lemma fg_ker_comp {R M N P : Type*} [ring R] [add_comm_group M] [module R M]
206+
[add_comm_group N] [module R N] [add_comm_group P] [module R P] (f : M →ₗ[R] N)
207+
(g : N →ₗ[R] P) (hf1 : f.ker.fg) (hf2 : g.ker.fg) (hsur : function.surjective f) :
208+
(g.comp f).ker.fg :=
209+
begin
210+
rw linear_map.ker_comp,
211+
apply fg_of_fg_map_of_fg_inf_ker f,
212+
{ rwa [linear_map.map_comap_eq, linear_map.range_eq_top.2 hsur, top_inf_eq] },
213+
{ rwa [inf_of_le_right (show f.ker ≤ (comap f g.ker), from comap_mono (@bot_le _ _ g.ker))] }
214+
end
215+
216+
lemma fg_restrict_scalars {R S M : Type*} [comm_ring R] [comm_ring S] [algebra R S]
217+
[add_comm_group M] [module S M] [module R M] [is_scalar_tower R S M] (N : submodule S M)
218+
(hfin : N.fg) (h : function.surjective (algebra_map R S)) : (submodule.restrict_scalars R N).fg :=
219+
begin
220+
obtain ⟨X, rfl⟩ := hfin,
221+
use X,
222+
exact submodule.span_eq_restrict_scalars R S M X h
223+
end
224+
225+
lemma fg_ker_ring_hom_comp {R S A : Type*} [comm_ring R] [comm_ring S] [comm_ring A]
226+
(f : R →+* S) (g : S →+* A) (hf : f.ker.fg) (hg : g.ker.fg) (hsur : function.surjective f) :
227+
(g.comp f).ker.fg :=
228+
begin
229+
letI : algebra R S := ring_hom.to_algebra f,
230+
letI : algebra R A := ring_hom.to_algebra (g.comp f),
231+
letI : algebra S A := ring_hom.to_algebra g,
232+
letI : is_scalar_tower R S A := is_scalar_tower.comap,
233+
let f₁ := algebra.linear_map R S,
234+
let g₁ := (is_scalar_tower.to_alg_hom R S A).to_linear_map,
235+
exact fg_ker_comp f₁ g₁ hf (fg_restrict_scalars g.ker hg hsur) hsur
236+
end
237+
203238
/-- Finitely generated submodules are precisely compact elements in the submodule lattice. -/
204239
theorem fg_iff_compact (s : submodule R M) : s.fg ↔ complete_lattice.is_compact_element s :=
205240
begin

0 commit comments

Comments
 (0)