File tree Expand file tree Collapse file tree 3 files changed +321
-49
lines changed Expand file tree Collapse file tree 3 files changed +321
-49
lines changed Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ Copyright (c) 2022 Riccardo Brasca. All rights reserved.
3
3
Released under Apache 2.0 license as described in the file LICENSE.
4
4
Authors: Riccardo Brasca
5
5
-/
6
+ import Mathlib.RingTheory.Ideal.BigOperators
6
7
import Mathlib.RingTheory.Polynomial.Eisenstein.Criterion
7
8
import Mathlib.RingTheory.Polynomial.ScaleRoots
8
9
@@ -56,14 +57,29 @@ namespace IsWeaklyEisensteinAt
56
57
57
58
section CommSemiring
58
59
59
- variable [CommSemiring R] {𝓟 : Ideal R} {f : R[X]}
60
+ variable [CommSemiring R] {𝓟 : Ideal R} {f f' : R[X]}
60
61
61
62
theorem map (hf : f.IsWeaklyEisensteinAt 𝓟) {A : Type v} [CommSemiring A] (φ : R →+* A) :
62
63
(f.map φ).IsWeaklyEisensteinAt (𝓟.map φ) := by
63
64
refine (isWeaklyEisensteinAt_iff _ _).2 fun hn => ?_
64
65
rw [coeff_map]
65
66
exact mem_map_of_mem _ (hf.mem (lt_of_lt_of_le hn natDegree_map_le))
66
67
68
+ theorem mul (hf : f.IsWeaklyEisensteinAt 𝓟) (hf' : f'.IsWeaklyEisensteinAt 𝓟) :
69
+ (f * f').IsWeaklyEisensteinAt 𝓟 := by
70
+ rw [isWeaklyEisensteinAt_iff] at hf hf' ⊢
71
+ intro n hn
72
+ rw [coeff_mul]
73
+ refine sum_mem _ fun x hx ↦ ?_
74
+ rcases lt_or_le x.1 f.natDegree with hx1 | hx1
75
+ · exact mul_mem_right _ _ (hf hx1)
76
+ replace hx1 : x.2 < f'.natDegree := by
77
+ by_contra!
78
+ rw [HasAntidiagonal.mem_antidiagonal] at hx
79
+ replace hn := hn.trans_le natDegree_mul_le
80
+ linarith
81
+ exact mul_mem_left _ _ (hf' hx1)
82
+
67
83
end CommSemiring
68
84
69
85
section CommRing
Original file line number Diff line number Diff line change @@ -31,6 +31,10 @@ structure Polynomial.IsDistinguishedAt (f : R[X]) (I : Ideal R) : Prop
31
31
32
32
namespace Polynomial.IsDistinguishedAt
33
33
34
+ lemma mul {f f' : R[X]} {I : Ideal R} (hf : f.IsDistinguishedAt I) (hf' : f'.IsDistinguishedAt I) :
35
+ (f * f').IsDistinguishedAt I :=
36
+ ⟨hf.toIsWeaklyEisensteinAt.mul hf'.toIsWeaklyEisensteinAt, hf.monic.mul hf'.monic⟩
37
+
34
38
lemma map_eq_X_pow {f : R[X]} {I : Ideal R} (distinguish : f.IsDistinguishedAt I) :
35
39
f.map (Ideal.Quotient.mk I) = Polynomial.X ^ f.natDegree := by
36
40
ext i
You can’t perform that action at this time.
0 commit comments