@@ -138,16 +138,16 @@ theorem F_monic [Nontrivial B] (b : B) : (F G b).Monic := by
138
138
have := Fintype.ofFinite G
139
139
rw [Monic, F_spec, finprod_eq_prod_of_fintype, leadingCoeff_prod'] <;> simp
140
140
141
- variable (G) in
142
- theorem F_degree [Nontrivial B] [NoZeroDivisors B] (b : B) : (F G b).degree = Nat.card G := by
141
+ theorem F_natdegree [Nontrivial B] (b : B) : (F G b).natDegree = Nat.card G := by
143
142
have := Fintype.ofFinite G
144
- rw [F_spec, finprod_eq_prod_of_fintype, Polynomial.degree_prod ]
145
- simp only [degree_X_sub_C , Finset.sum_const, Finset.card_univ, Fintype.card_eq_nat_card,
146
- nsmul_eq_mul, mul_one]
143
+ rw [F_spec, finprod_eq_prod_of_fintype, natDegree_prod_of_monic _ _ ( fun _ _ => monic_X_sub_C _) ]
144
+ simp only [natDegree_X_sub_C , Finset.sum_const, Finset.card_univ, Fintype.card_eq_nat_card,
145
+ nsmul_eq_mul, mul_one, Nat.cast_id ]
147
146
148
- theorem F_natdegree [Nontrivial B] [NoZeroDivisors B] (b : B) : (F G b).natDegree = Nat.card G := by
149
- rw [← degree_eq_iff_natDegree_eq_of_pos Nat.card_pos]
150
- exact F_degree G b
147
+ variable (G) in
148
+ theorem F_degree [Nontrivial B] (b : B) : (F G b).degree = Nat.card G := by
149
+ have := Fintype.ofFinite G
150
+ rw [degree_eq_iff_natDegree_eq_of_pos Nat.card_pos, F_natdegree]
151
151
152
152
theorem F_smul_eq_self (σ : G) (b : B) : σ • (F G b) = F G b := calc
153
153
σ • F G b = σ • ∏ᶠ τ : G, (X - C (τ • b)) := by rw [F_spec]
@@ -220,8 +220,7 @@ theorem M_deg_le (b : B) : (M hFull b).degree ≤ (F G b).degree := by
220
220
apply le_trans (degree_monomial_le n _) ?_
221
221
exact le_degree_of_mem_supp n hn
222
222
223
- section
224
- variable [Nontrivial B] [NoZeroDivisors B] [Finite G]
223
+ variable [Nontrivial B] [Finite G]
225
224
226
225
theorem M_coeff_card (b : B) :
227
226
(M hFull b).coeff (Nat.card G) = 1 := by
@@ -264,10 +263,8 @@ theorem M_monic (b : B) : (M hFull b).Monic := by
264
263
-- then the hypos say deg(M)<=n, coefficient of X^n is 1 in M
265
264
have this4 : (M hFull b).natDegree ≤ (F G b).natDegree := natDegree_le_natDegree this1
266
265
exact Polynomial.monic_of_natDegree_le_of_coeff_eq_one _ this4 this2
267
- end
268
-
269
- variable [Finite G]
270
266
267
+ omit [Nontrivial B] in
271
268
theorem M_spec (b : B) : ((M hFull b : A[X]) : B[X]) = F G b := by
272
269
unfold M
273
270
ext N
@@ -299,14 +296,16 @@ theorem M_spec' (b : B) : (map (algebraMap A B) (M G hFull b)) = F G b :=
299
296
theorem M_monic (b : B) : (M G hFull b).Monic := (F_descent_monic hFull b).choose_spec.2
300
297
-/
301
298
299
+ omit [Nontrivial B] in
302
300
theorem coe_poly_as_map (p : A[X]) : (p : B[X]) = map (algebraMap A B) p := rfl
303
301
304
302
303
+ omit [Nontrivial B] in
305
304
theorem M_eval_eq_zero (b : B) : (M hFull b).eval₂ (algebraMap A B) b = 0 := by
306
305
rw [eval₂_eq_eval_map, ← coe_poly_as_map, M_spec, F_eval_eq_zero]
307
306
308
307
include hFull in
309
- theorem isIntegral [Nontrivial B] [NoZeroDivisors B] : Algebra.IsIntegral A B where
308
+ theorem isIntegral : Algebra.IsIntegral A B where
310
309
isIntegral b := ⟨M hFull b, M_monic hFull b, M_eval_eq_zero hFull b⟩
311
310
312
311
end full_descent
@@ -323,8 +322,7 @@ variable {A : Type*} [CommRing A]
323
322
{B : Type *} [CommRing B] [Algebra A B] [Nontrivial B]
324
323
{G : Type *} [Group G] [Finite G] [MulSemiringAction G B]
325
324
326
- theorem isIntegral_of_Full [NoZeroDivisors B]
327
- (hFull : ∀ (b : B), (∀ (g : G), g • b = b) → ∃ a : A, b = a) :
325
+ theorem isIntegral_of_Full (hFull : ∀ (b : B), (∀ (g : G), g • b = b) → ∃ a : A, b = a) :
328
326
Algebra.IsIntegral A B where
329
327
isIntegral b := ⟨M hFull b, M_monic hFull b, M_eval_eq_zero hFull b⟩
330
328
@@ -343,8 +341,8 @@ theorem Nontrivial_of_exists_prime {R : Type*} [CommRing R]
343
341
apply Subsingleton.elim
344
342
345
343
-- (Part a of Théorème 2 in section 2 of chapter 5 of Bourbaki Alg Comm)
346
- omit [Nontrivial B] in
347
- theorem part_a [SMulCommClass G A B] [NoZeroDivisors B]
344
+ omit [Nontrivial B] in
345
+ theorem part_a [SMulCommClass G A B]
348
346
(hPQ : Ideal.comap (algebraMap A B) P = Ideal.comap (algebraMap A B) Q)
349
347
(hFull' : ∀ (b : B), (∀ (g : G), g • b = b) → ∃ a : A, b = a) :
350
348
∃ g : G, Q = g • P := by
@@ -712,9 +710,8 @@ theorem Algebra.isAlgebraic_of_subring_isAlgebraic {R k K : Type*} [CommRing R]
712
710
-- this uses `Algebra.isAlgebraic_of_subring_isAlgebraic` but I think we're going to have
713
711
-- to introduce `f` anyway because we need not just that the extension is algebraic but
714
712
-- that every element satisfies a poly of degree <= |G|.
715
- theorem algebraic {A : Type *} [CommRing A] {B : Type *} [Nontrivial B] [CommRing B]
716
- [NoZeroDivisors B] [Algebra A B] [Algebra.IsIntegral A B]
717
- {G : Type *} [Group G] [Finite G] [MulSemiringAction G B] (Q : Ideal B)
713
+ theorem algebraic {A : Type *} [CommRing A] {B : Type *} [Nontrivial B] [CommRing B] [Algebra A B]
714
+ [Algebra.IsIntegral A B] {G : Type *} [Group G] [Finite G] [MulSemiringAction G B] (Q : Ideal B)
718
715
[Q.IsPrime] (P : Ideal A) [P.IsPrime] [Algebra (A ⧸ P) (B ⧸ Q)]
719
716
[IsScalarTower A (A ⧸ P) (B ⧸ Q)] (L : Type *) [Field L] [Algebra (B ⧸ Q) L]
720
717
[IsFractionRing (B ⧸ Q) L] [Algebra (A ⧸ P) L] [IsScalarTower (A ⧸ P) (B ⧸ Q) L]
0 commit comments