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

Commit 0176b42

Browse files
feat(ring_theory/finiteness): add mv_polynomial_of_finite_presentation (#6512)
Add `mv_polynomial_of_finite_presentation`: the polynomial ring over a finitely presented algebra is finitely presented. Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
1 parent afe38ca commit 0176b42

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

src/ring_theory/finiteness.lean

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,17 @@ lemma of_surjective {f : A →ₐ[R] B} (hf : function.surjective f) (hker : f.t
277277
(hfp : finite_presentation R A) : finite_presentation R B :=
278278
equiv (quotient hker hfp) (ideal.quotient_ker_alg_equiv_of_surjective hf)
279279

280+
281+
lemma iff : finite_presentation R A ↔
282+
∃ n (I : ideal (_root_.mv_polynomial (fin n) R)) (e : I.quotient ≃ₐ[R] A), I.fg :=
283+
begin
284+
refine ⟨λ h,_, λ h, _⟩,
285+
{ obtain ⟨n, f, hf⟩ := h,
286+
use [n, f.to_ring_hom.ker, ideal.quotient_ker_alg_equiv_of_surjective hf.1, hf.2] },
287+
{ obtain ⟨n, I, e, hfg⟩ := h,
288+
exact equiv (quotient hfg (mv_polynomial R _)) e }
289+
end
290+
280291
/-- An algebra is finitely presented if and only if it is a quotient of a polynomial ring whose
281292
variables are indexed by a fintype by a finitely generated ideal. -/
282293
lemma iff_quotient_mv_polynomial' : finite_presentation R A ↔ ∃ (ι : Type u_2) [fintype ι]
@@ -301,6 +312,26 @@ begin
301312
exact ring_hom.ker_coe_equiv (equiv.symm.to_ring_equiv), }
302313
end
303314

315+
/-- If `A` is a finitely presented `R`-algebra, then `mv_polynomial (fin n) A` is finitely presented
316+
as `R`-algebra. -/
317+
lemma mv_polynomial_of_finite_presentation (hfp : finite_presentation R A) (ι : Type*)
318+
[fintype ι] : finite_presentation R (_root_.mv_polynomial ι A) :=
319+
begin
320+
obtain ⟨n, e⟩ := fintype.exists_equiv_fin ι,
321+
replace e := (mv_polynomial.rename_equiv A (nonempty.some e)).restrict_scalars R,
322+
refine equiv _ e.symm,
323+
obtain ⟨m, I, e, hfg⟩ := iff.1 hfp,
324+
refine equiv _ (mv_polynomial.map_alg_equiv (fin n) e),
325+
letI : is_scalar_tower R (_root_.mv_polynomial (fin m) R)
326+
(@ideal.map _ (_root_.mv_polynomial (fin n) (_root_.mv_polynomial (fin m) R))
327+
_ _ mv_polynomial.C I).quotient := is_scalar_tower.comap,
328+
refine equiv _ ((@mv_polynomial.quotient_equiv_quotient_mv_polynomial
329+
_ (fin n) _ I).restrict_scalars R).symm,
330+
refine quotient (submodule.map_fg_of_fg I hfg _) _,
331+
refine equiv _ (mv_polynomial.sum_alg_equiv _ _ _),
332+
exact equiv (mv_polynomial R (fin (n + m))) (mv_polynomial.rename_equiv R sum_fin_sum_equiv).symm
333+
end
334+
304335
end finite_presentation
305336

306337
end algebra

src/ring_theory/noetherian.lean

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,30 @@ begin
201201
{ exact zero_smul _ }, { exact λ _ _ _, add_smul _ _ _ } }
202202
end
203203

204+
/-- The image of a finitely generated ideal is finitely generated. -/
205+
lemma map_fg_of_fg {R S : Type*} [comm_ring R] [comm_ring S] (I : ideal R) (h : I.fg) (f : R →+* S)
206+
: (I.map f).fg :=
207+
begin
208+
obtain ⟨X, hXfin, hXgen⟩ := fg_def.1 h,
209+
apply fg_def.2,
210+
refine ⟨set.image f X, finite.image ⇑f hXfin, _⟩,
211+
rw [ideal.map, ideal.span, ← hXgen],
212+
refine le_antisymm (submodule.span_mono (image_subset _ ideal.subset_span)) _,
213+
rw [submodule.span_le, image_subset_iff],
214+
intros i hi,
215+
refine submodule.span_induction hi (λ x hx, _) _ (λ x y hx hy, _) (λ r x hx, _),
216+
{ simp only [mem_coe, mem_preimage],
217+
suffices : f x ∈ f '' X, { exact ideal.subset_span this },
218+
exact mem_image_of_mem ⇑f hx },
219+
{ simp only [mem_coe, ring_hom.map_zero, mem_preimage, zero_mem] },
220+
{ simp only [mem_coe, mem_preimage] at hx hy,
221+
simp only [ring_hom.map_add, mem_coe, mem_preimage],
222+
exact submodule.add_mem _ hx hy },
223+
{ simp only [mem_coe, mem_preimage] at hx,
224+
simp only [algebra.id.smul_eq_mul, mem_coe, mem_preimage, ring_hom.map_mul],
225+
exact submodule.smul_mem _ _ hx }
226+
end
227+
204228
/-- The kernel of the composition of two linear maps is finitely generated if both kernels are and
205229
the first morphism is surjective. -/
206230
lemma fg_ker_comp {R M N P : Type*} [ring R] [add_comm_group M] [module R M]

0 commit comments

Comments
 (0)