Skip to content

Commit 03c3f5d

Browse files
generalize
1 parent 8e6d79b commit 03c3f5d

File tree

1 file changed

+18
-21
lines changed

1 file changed

+18
-21
lines changed

FLT/MathlibExperiments/FrobeniusRiou.lean

+18-21
Original file line numberDiff line numberDiff line change
@@ -138,16 +138,16 @@ theorem F_monic [Nontrivial B] (b : B) : (F G b).Monic := by
138138
have := Fintype.ofFinite G
139139
rw [Monic, F_spec, finprod_eq_prod_of_fintype, leadingCoeff_prod'] <;> simp
140140

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
143142
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]
147146

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]
151151

152152
theorem F_smul_eq_self (σ : G) (b : B) : σ • (F G b) = F G b := calc
153153
σ • 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
220220
apply le_trans (degree_monomial_le n _) ?_
221221
exact le_degree_of_mem_supp n hn
222222

223-
section
224-
variable [Nontrivial B] [NoZeroDivisors B] [Finite G]
223+
variable [Nontrivial B] [Finite G]
225224

226225
theorem M_coeff_card (b : B) :
227226
(M hFull b).coeff (Nat.card G) = 1 := by
@@ -264,10 +263,8 @@ theorem M_monic (b : B) : (M hFull b).Monic := by
264263
-- then the hypos say deg(M)<=n, coefficient of X^n is 1 in M
265264
have this4 : (M hFull b).natDegree ≤ (F G b).natDegree := natDegree_le_natDegree this1
266265
exact Polynomial.monic_of_natDegree_le_of_coeff_eq_one _ this4 this2
267-
end
268-
269-
variable [Finite G]
270266

267+
omit [Nontrivial B] in
271268
theorem M_spec (b : B) : ((M hFull b : A[X]) : B[X]) = F G b := by
272269
unfold M
273270
ext N
@@ -299,14 +296,16 @@ theorem M_spec' (b : B) : (map (algebraMap A B) (M G hFull b)) = F G b :=
299296
theorem M_monic (b : B) : (M G hFull b).Monic := (F_descent_monic hFull b).choose_spec.2
300297
-/
301298

299+
omit [Nontrivial B] in
302300
theorem coe_poly_as_map (p : A[X]) : (p : B[X]) = map (algebraMap A B) p := rfl
303301

304302

303+
omit [Nontrivial B] in
305304
theorem M_eval_eq_zero (b : B) : (M hFull b).eval₂ (algebraMap A B) b = 0 := by
306305
rw [eval₂_eq_eval_map, ← coe_poly_as_map, M_spec, F_eval_eq_zero]
307306

308307
include hFull in
309-
theorem isIntegral [Nontrivial B] [NoZeroDivisors B] : Algebra.IsIntegral A B where
308+
theorem isIntegral : Algebra.IsIntegral A B where
310309
isIntegral b := ⟨M hFull b, M_monic hFull b, M_eval_eq_zero hFull b⟩
311310

312311
end full_descent
@@ -323,8 +322,7 @@ variable {A : Type*} [CommRing A]
323322
{B : Type*} [CommRing B] [Algebra A B] [Nontrivial B]
324323
{G : Type*} [Group G] [Finite G] [MulSemiringAction G B]
325324

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) :
328326
Algebra.IsIntegral A B where
329327
isIntegral b := ⟨M hFull b, M_monic hFull b, M_eval_eq_zero hFull b⟩
330328

@@ -343,8 +341,8 @@ theorem Nontrivial_of_exists_prime {R : Type*} [CommRing R]
343341
apply Subsingleton.elim
344342

345343
-- (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]
348346
(hPQ : Ideal.comap (algebraMap A B) P = Ideal.comap (algebraMap A B) Q)
349347
(hFull' : ∀ (b : B), (∀ (g : G), g • b = b) → ∃ a : A, b = a) :
350348
∃ g : G, Q = g • P := by
@@ -712,9 +710,8 @@ theorem Algebra.isAlgebraic_of_subring_isAlgebraic {R k K : Type*} [CommRing R]
712710
-- this uses `Algebra.isAlgebraic_of_subring_isAlgebraic` but I think we're going to have
713711
-- to introduce `f` anyway because we need not just that the extension is algebraic but
714712
-- 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)
718715
[Q.IsPrime] (P : Ideal A) [P.IsPrime] [Algebra (A ⧸ P) (B ⧸ Q)]
719716
[IsScalarTower A (A ⧸ P) (B ⧸ Q)] (L : Type*) [Field L] [Algebra (B ⧸ Q) L]
720717
[IsFractionRing (B ⧸ Q) L] [Algebra (A ⧸ P) L] [IsScalarTower (A ⧸ P) (B ⧸ Q) L]

0 commit comments

Comments
 (0)