@@ -277,6 +277,17 @@ lemma of_surjective {f : A →ₐ[R] B} (hf : function.surjective f) (hker : f.t
277
277
(hfp : finite_presentation R A) : finite_presentation R B :=
278
278
equiv (quotient hker hfp) (ideal.quotient_ker_alg_equiv_of_surjective hf)
279
279
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
+
280
291
/-- An algebra is finitely presented if and only if it is a quotient of a polynomial ring whose
281
292
variables are indexed by a fintype by a finitely generated ideal. -/
282
293
lemma iff_quotient_mv_polynomial' : finite_presentation R A ↔ ∃ (ι : Type u_2) [fintype ι]
@@ -301,6 +312,26 @@ begin
301
312
exact ring_hom.ker_coe_equiv (equiv.symm.to_ring_equiv), }
302
313
end
303
314
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
+
304
335
end finite_presentation
305
336
306
337
end algebra
0 commit comments