@@ -67,30 +67,8 @@ variable [AddCommMonoid N] [Module R N]
67
67
68
68
namespace FiniteType
69
69
70
- theorem self : FiniteType R R :=
71
- ⟨⟨{1 }, Subsingleton.elim _ _⟩⟩
72
-
73
- protected theorem polynomial : FiniteType R R[X] :=
74
- ⟨⟨{Polynomial.X}, by
75
- rw [Finset.coe_singleton]
76
- exact Polynomial.adjoin_X⟩⟩
77
-
78
-
79
- protected theorem freeAlgebra (ι : Type *) [Finite ι] : FiniteType R (FreeAlgebra R ι) := by
80
- cases nonempty_fintype ι
81
- classical
82
- exact
83
- ⟨⟨Finset.univ.image (FreeAlgebra.ι R), by
84
- rw [Finset.coe_image, Finset.coe_univ, Set.image_univ]
85
- exact FreeAlgebra.adjoin_range_ι R ι⟩⟩
86
-
87
- protected theorem mvPolynomial (ι : Type *) [Finite ι] : FiniteType R (MvPolynomial ι R) := by
88
- cases nonempty_fintype ι
89
- classical
90
- exact
91
- ⟨⟨Finset.univ.image MvPolynomial.X, by
92
- rw [Finset.coe_image, Finset.coe_univ, Set.image_univ]
93
- exact MvPolynomial.adjoin_range_X⟩⟩
70
+ @[deprecated inferInstance (since := "2025-07-12")]
71
+ theorem self : FiniteType R R := inferInstance
94
72
95
73
theorem of_restrictScalars_finiteType [Algebra S A] [IsScalarTower R S A] [hA : FiniteType R A] :
96
74
FiniteType S A := by
@@ -104,9 +82,9 @@ theorem of_restrictScalars_finiteType [Algebra S A] [IsScalarTower R S A] [hA :
104
82
105
83
variable {R S A B}
106
84
107
- theorem of_surjective (hRA : FiniteType R A) (f : A →ₐ[R] B) (hf : Surjective f) : FiniteType R B :=
85
+ theorem of_surjective [ FiniteType R A] (f : A →ₐ[R] B) (hf : Surjective f) : FiniteType R B :=
108
86
⟨by
109
- convert hRA .1 .map f
87
+ convert ‹FiniteType R A› .1 .map f
110
88
simpa only [map_top f, @eq_comm _ ⊤, eq_top_iff, AlgHom.mem_range] using hf⟩
111
89
112
90
theorem equiv (hRA : FiniteType R A) (e : A ≃ₐ[R] B) : FiniteType R B :=
@@ -120,6 +98,36 @@ instance quotient (R : Type*) {S : Type*} [CommSemiring R] [CommRing S] [Algebra
120
98
[h : Algebra.FiniteType R S] : Algebra.FiniteType R (S ⧸ I) :=
121
99
Algebra.FiniteType.trans h inferInstance
122
100
101
+ instance [FiniteType R S] : FiniteType R S[X] := by
102
+ refine .trans ‹_› ⟨{Polynomial.X}, ?_⟩
103
+ rw [Finset.coe_singleton]
104
+ exact Polynomial.adjoin_X
105
+
106
+ @[deprecated inferInstance (since := "2025-07-12")]
107
+ protected theorem polynomial : FiniteType R R[X] := inferInstance
108
+
109
+ instance {ι : Type*} [Finite ι] [FiniteType R S] : FiniteType R (MvPolynomial ι S) := by
110
+ classical
111
+ cases nonempty_fintype ι
112
+ refine .trans ‹_› ⟨Finset.univ.image MvPolynomial.X, ?_⟩
113
+ rw [Finset.coe_image, Finset.coe_univ, Set.image_univ]
114
+ exact MvPolynomial.adjoin_range_X
115
+
116
+ @[deprecated inferInstance (since := "2025-07-12")]
117
+ protected theorem mvPolynomial (ι : Type *) [Finite ι] : FiniteType R (MvPolynomial ι R) :=
118
+ inferInstance
119
+
120
+ instance {ι : Type*} [Finite ι] [FiniteType R S] : FiniteType R (FreeAlgebra S ι) := by
121
+ classical
122
+ cases nonempty_fintype ι
123
+ refine .trans ‹_› ⟨Finset.univ.image (FreeAlgebra.ι _), ?_⟩
124
+ rw [Finset.coe_image, Finset.coe_univ, Set.image_univ]
125
+ exact FreeAlgebra.adjoin_range_ι ..
126
+
127
+ @[deprecated inferInstance (since := "2025-07-12")]
128
+ protected theorem freeAlgebra (ι : Type *) [Finite ι] : FiniteType R (FreeAlgebra R ι) :=
129
+ inferInstance
130
+
123
131
/-- An algebra is finitely generated if and only if it is a quotient
124
132
of a free algebra whose variables are indexed by a finset. -/
125
133
theorem iff_quotient_freeAlgebra :
@@ -130,8 +138,8 @@ theorem iff_quotient_freeAlgebra :
130
138
refine ⟨s, FreeAlgebra.lift _ (↑), ?_⟩
131
139
rw [← Set.range_eq_univ, ← AlgHom.coe_range, ← adjoin_range_eq_range_freeAlgebra_lift,
132
140
Subtype.range_coe_subtype, Finset.setOf_mem, hs, coe_top]
133
- · rintro ⟨s, ⟨ f, hsur⟩ ⟩
134
- exact FiniteType .of_surjective (FiniteType.freeAlgebra R s) f hsur
141
+ · rintro ⟨s, f, hsur⟩
142
+ exact .of_surjective f hsur
135
143
136
144
/-- A commutative algebra is finitely generated if and only if it is a quotient
137
145
of a polynomial ring whose variables are indexed by a finset. -/
@@ -146,44 +154,44 @@ theorem iff_quotient_mvPolynomial :
146
154
rw [← Set.mem_range, ← AlgHom.coe_range, ← adjoin_eq_range]
147
155
simp_rw [← hrw, hs]
148
156
exact Set.mem_univ x
149
- · rintro ⟨s, ⟨ f, hsur⟩ ⟩
150
- exact FiniteType .of_surjective (FiniteType.mvPolynomial R { x // x ∈ s }) f hsur
157
+ · rintro ⟨s, f, hsur⟩
158
+ exact .of_surjective f hsur
151
159
152
160
/-- An algebra is finitely generated if and only if it is a quotient
153
161
of a polynomial ring whose variables are indexed by a fintype. -/
154
162
theorem iff_quotient_freeAlgebra' : FiniteType R A ↔
155
163
∃ (ι : Type uA) (_ : Fintype ι) (f : FreeAlgebra R ι →ₐ[R] A), Surjective f := by
156
164
constructor
157
165
· rw [iff_quotient_freeAlgebra]
158
- rintro ⟨s, ⟨ f, hsur⟩ ⟩
166
+ rintro ⟨s, f, hsur⟩
159
167
use { x : A // x ∈ s }, inferInstance, f
160
- · rintro ⟨ι, ⟨ hfintype, ⟨ f, hsur⟩⟩ ⟩
168
+ · rintro ⟨ι, hfintype, f, hsur⟩
161
169
letI : Fintype ι := hfintype
162
- exact FiniteType .of_surjective (FiniteType.freeAlgebra R ι) f hsur
170
+ exact .of_surjective f hsur
163
171
164
172
/-- A commutative algebra is finitely generated if and only if it is a quotient
165
173
of a polynomial ring whose variables are indexed by a fintype. -/
166
174
theorem iff_quotient_mvPolynomial' : FiniteType R S ↔
167
175
∃ (ι : Type uS) (_ : Fintype ι) (f : MvPolynomial ι R →ₐ[R] S), Surjective f := by
168
176
constructor
169
177
· rw [iff_quotient_mvPolynomial]
170
- rintro ⟨s, ⟨ f, hsur⟩ ⟩
178
+ rintro ⟨s, f, hsur⟩
171
179
use { x : S // x ∈ s }, inferInstance, f
172
- · rintro ⟨ι, ⟨ hfintype, ⟨ f, hsur⟩⟩ ⟩
180
+ · rintro ⟨ι, hfintype, f, hsur⟩
173
181
letI : Fintype ι := hfintype
174
- exact FiniteType .of_surjective (FiniteType.mvPolynomial R ι) f hsur
182
+ exact .of_surjective f hsur
175
183
176
184
/-- A commutative algebra is finitely generated if and only if it is a quotient of a polynomial ring
177
185
in `n` variables. -/
178
186
theorem iff_quotient_mvPolynomial'' :
179
187
FiniteType R S ↔ ∃ (n : ℕ) (f : MvPolynomial (Fin n) R →ₐ[R] S), Surjective f := by
180
188
constructor
181
189
· rw [iff_quotient_mvPolynomial']
182
- rintro ⟨ι, hfintype, ⟨ f, hsur⟩ ⟩
190
+ rintro ⟨ι, hfintype, f, hsur⟩
183
191
have equiv := MvPolynomial.renameEquiv R (Fintype.equivFin ι)
184
192
exact ⟨Fintype.card ι, AlgHom.comp f equiv.symm.toAlgHom, by simpa using hsur⟩
185
- · rintro ⟨n, ⟨ f, hsur⟩ ⟩
186
- exact FiniteType .of_surjective (FiniteType.mvPolynomial R (Fin n)) f hsur
193
+ · rintro ⟨n, f, hsur⟩
194
+ exact .of_surjective f hsur
187
195
188
196
instance prod [hA : FiniteType R A] [hB : FiniteType R B] : FiniteType R (A × B) :=
189
197
⟨by rw [← Subalgebra.prod_top]; exact hA.1 .prod hB.1 ⟩
@@ -232,13 +240,12 @@ end Finite
232
240
namespace FiniteType
233
241
234
242
variable (A) in
235
- theorem id : FiniteType (RingHom.id A) :=
236
- Algebra.FiniteType.self A
243
+ theorem id : FiniteType (RingHom.id A) := by simp [FiniteType]; infer_instance
237
244
238
245
theorem comp_surjective {f : A →+* B} {g : B →+* C} (hf : f.FiniteType) (hg : Surjective g) :
239
246
(g.comp f).FiniteType := by
240
247
algebraize_only [f, g.comp f]
241
- exact Algebra.FiniteType.of_surjective hf
248
+ exact ‹ Algebra.FiniteType _ _› .of_surjective
242
249
{ g with
243
250
toFun := g
244
251
commutes' := fun a => rfl }
@@ -469,7 +476,7 @@ type. -/
469
476
instance finiteType_of_fg [CommRing R] [h : AddMonoid.FG M] :
470
477
FiniteType R R[M] := by
471
478
obtain ⟨S, hS⟩ := h.fg_top
472
- exact (FiniteType.freeAlgebra R (S : Set M)) .of_surjective
479
+ exact .of_surjective
473
480
(FreeAlgebra.lift R fun s : (S : Set M) => of' R M ↑s)
474
481
(freeAlgebra_lift_of_surjective_of_closure hS)
475
482
0 commit comments