@@ -136,6 +136,52 @@ lemma trans [algebra A B] [is_scalar_tower R A B] (hRA : finite_type R A) (hAB :
136
136
finite_type R B :=
137
137
fg_trans' hRA hAB
138
138
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
+
139
185
end finite_type
140
186
141
187
end algebra
0 commit comments