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

Commit 5ced4dd

Browse files
feat(ring_theory/finiteness): add iff_quotient_mv_polynomial (#5321)
Add characterizations of finite type algebra as quotient of polynomials rings. There are three version of the same lemma, using a `finset`, a `fintype` and `fin n`.
1 parent 3afdf41 commit 5ced4dd

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

src/data/mv_polynomial/equiv.lean

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,16 @@ def ring_equiv_of_equiv (e : S₁ ≃ S₂) : mv_polynomial S₁ R ≃+* mv_poly
101101
map_mul' := (rename e).map_mul,
102102
map_add' := (rename e).map_add }
103103

104+
/-- The algebra isomorphism between multivariable polynomials induced by an equivalence of the variables. -/
105+
@[simps]
106+
def alg_equiv_of_equiv (e : S₁ ≃ S₂) : mv_polynomial S₁ R ≃ₐ[R] mv_polynomial S₂ R :=
107+
{ to_fun := rename e,
108+
inv_fun := rename e.symm,
109+
left_inv := λ p, by simp only [rename_rename, (∘), e.symm_apply_apply]; exact rename_id p,
110+
right_inv := λ p, by simp only [rename_rename, (∘), e.apply_symm_apply]; exact rename_id p,
111+
commutes' := λ p, by simp only [alg_hom.commutes],
112+
.. rename e }
113+
104114
/-- The ring isomorphism between multivariable polynomials induced by a ring isomorphism of the ground ring. -/
105115
@[simps]
106116
def ring_equiv_congr [comm_semiring S₂] (e : R ≃+* S₂) : mv_polynomial S₁ R ≃+* mv_polynomial S₁ S₂ :=

src/ring_theory/finiteness.lean

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,52 @@ lemma trans [algebra A B] [is_scalar_tower R A B] (hRA : finite_type R A) (hAB :
136136
finite_type R B :=
137137
fg_trans' hRA hAB
138138

139+
/-- An algebra is finitely generated if and only if it is a quotient
140+
of a polynomial ring whose variables are indexed by a finset. -/
141+
lemma iff_quotient_mv_polynomial : (finite_type R A) ↔ ∃ (s : finset A)
142+
(f : (mv_polynomial {x // x ∈ s} R) →ₐ[R] A), (surjective f) :=
143+
begin
144+
split,
145+
{ rintro ⟨s, hs⟩,
146+
use [s, mv_polynomial.aeval coe],
147+
intro x,
148+
have hrw : (↑s : set A) = (λ (x : A), x ∈ s.val) := rfl,
149+
rw [← set.mem_range, ← alg_hom.coe_range, ← adjoin_eq_range, ← hrw, hs],
150+
exact mem_top },
151+
{ rintro ⟨s, ⟨f, hsur⟩⟩,
152+
exact finite_type.of_surjective (finite_type.mv_polynomial R {x // x ∈ s}) f hsur }
153+
end
154+
155+
/-- An algebra is finitely generated if and only if it is a quotient
156+
of a polynomial ring whose variables are indexed by a fintype. -/
157+
lemma iff_quotient_mv_polynomial' : (finite_type R A) ↔ ∃ (ι : Type u_2) [fintype ι]
158+
(f : (mv_polynomial ι R) →ₐ[R] A), (surjective f) :=
159+
begin
160+
split,
161+
{ rw iff_quotient_mv_polynomial,
162+
rintro ⟨s, ⟨f, hsur⟩⟩,
163+
use [{x // x ∈ s}, by apply_instance, f, hsur] },
164+
{ rintro ⟨ι, ⟨hfintype, ⟨f, hsur⟩⟩⟩,
165+
letI : fintype ι := hfintype,
166+
exact finite_type.of_surjective (finite_type.mv_polynomial R ι) f hsur }
167+
end
168+
169+
/-- An algebra is finitely generated if and only if it is a quotient of a polynomial ring in `n`
170+
variables. -/
171+
lemma iff_quotient_mv_polynomial'' : (finite_type R A) ↔ ∃ (n : ℕ)
172+
(f : (mv_polynomial (fin n) R) →ₐ[R] A), (surjective f) :=
173+
begin
174+
split,
175+
{ rw iff_quotient_mv_polynomial',
176+
rintro ⟨ι, hfintype, ⟨f, hsur⟩⟩,
177+
obtain ⟨n, equiv⟩ := @fintype.exists_equiv_fin ι hfintype,
178+
replace equiv := mv_polynomial.alg_equiv_of_equiv R (nonempty.some equiv),
179+
use [n, alg_hom.comp f equiv.symm, function.surjective.comp hsur
180+
(alg_equiv.symm equiv).surjective] },
181+
{ rintro ⟨n, ⟨f, hsur⟩⟩,
182+
exact finite_type.of_surjective (finite_type.mv_polynomial R (fin n)) f hsur }
183+
end
184+
139185
end finite_type
140186

141187
end algebra

0 commit comments

Comments
 (0)