@@ -56,10 +56,10 @@ namespace IsWeaklyEisensteinAt
56
56
57
57
section CommSemiring
58
58
59
- variable [CommSemiring R] {𝓟 : Ideal R} {f : R[X]} (hf : f.IsWeaklyEisensteinAt 𝓟)
59
+ variable [CommSemiring R] {𝓟 : Ideal R} {f : R[X]}
60
60
61
-
62
- theorem map {A : Type v} [CommRing A] (φ : R →+* A) : (f.map φ).IsWeaklyEisensteinAt (𝓟.map φ) := by
61
+ theorem map (hf : f.IsWeaklyEisensteinAt 𝓟) {A : Type v} [CommRing A] (φ : R →+* A) :
62
+ (f.map φ).IsWeaklyEisensteinAt (𝓟.map φ) := by
63
63
refine (isWeaklyEisensteinAt_iff _ _).2 fun hn => ?_
64
64
rw [coeff_map]
65
65
exact mem_map_of_mem _ (hf.mem (lt_of_lt_of_le hn (natDegree_map_le _ _)))
@@ -68,7 +68,7 @@ end CommSemiring
68
68
69
69
section CommRing
70
70
71
- variable [CommRing R] {𝓟 : Ideal R} {f : R[X]} (hf : f.IsWeaklyEisensteinAt 𝓟)
71
+ variable [CommRing R] {𝓟 : Ideal R} {f : R[X]}
72
72
variable {S : Type v} [CommRing S] [Algebra R S]
73
73
74
74
section Principal
@@ -118,7 +118,8 @@ end Principal
118
118
119
119
-- Porting note: `Ideal.neg_mem_iff` was `neg_mem_iff` on line 142 but Lean was not able to find
120
120
-- NegMemClass
121
- theorem pow_natDegree_le_of_root_of_monic_mem {x : R} (hroot : IsRoot f x) (hmo : f.Monic) :
121
+ theorem pow_natDegree_le_of_root_of_monic_mem (hf : f.IsWeaklyEisensteinAt 𝓟)
122
+ {x : R} (hroot : IsRoot f x) (hmo : f.Monic) :
122
123
∀ i, f.natDegree ≤ i → x ^ i ∈ 𝓟 := by
123
124
intro i hi
124
125
obtain ⟨k, hk⟩ := exists_add_of_le hi
@@ -130,8 +131,8 @@ theorem pow_natDegree_le_of_root_of_monic_mem {x : R} (hroot : IsRoot f x) (hmo
130
131
rw [eq_neg_of_add_eq_zero_left hroot, Ideal.neg_mem_iff]
131
132
exact Submodule.sum_mem _ fun i _ => mul_mem_right _ _ (hf.mem (Fin.is_lt i))
132
133
133
- theorem pow_natDegree_le_of_aeval_zero_of_monic_mem_map {x : S} (hx : aeval x f = 0 )
134
- (hmo : f.Monic) :
134
+ theorem pow_natDegree_le_of_aeval_zero_of_monic_mem_map (hf : f.IsWeaklyEisensteinAt 𝓟 )
135
+ {x : S} (hx : aeval x f = 0 ) (hmo : f.Monic) :
135
136
∀ i, (f.map (algebraMap R S)).natDegree ≤ i → x ^ i ∈ 𝓟.map (algebraMap R S) := by
136
137
suffices x ^ (f.map (algebraMap R S)).natDegree ∈ 𝓟.map (algebraMap R S) by
137
138
intro i hi
@@ -180,7 +181,7 @@ namespace IsEisensteinAt
180
181
181
182
section CommSemiring
182
183
183
- variable [CommSemiring R] {𝓟 : Ideal R} {f : R[X]} (hf : f.IsEisensteinAt 𝓟)
184
+ variable [CommSemiring R] {𝓟 : Ideal R} {f : R[X]}
184
185
185
186
theorem _root_.Polynomial.Monic.leadingCoeff_not_mem (hf : f.Monic) (h : 𝓟 ≠ ⊤) :
186
187
¬f.leadingCoeff ∈ 𝓟 := hf.leadingCoeff.symm ▸ (Ideal.ne_top_iff_one _).1 h
@@ -192,10 +193,10 @@ theorem _root_.Polynomial.Monic.isEisensteinAt_of_mem_of_not_mem (hf : f.Monic)
192
193
mem := fun hn => hmem hn
193
194
not_mem := hnot_mem }
194
195
195
- theorem isWeaklyEisensteinAt : IsWeaklyEisensteinAt f 𝓟 :=
196
+ theorem isWeaklyEisensteinAt (hf : f.IsEisensteinAt 𝓟) : IsWeaklyEisensteinAt f 𝓟 :=
196
197
⟨fun h => hf.mem h⟩
197
198
198
- theorem coeff_mem {n : ℕ} (hn : n ≠ f.natDegree) : f.coeff n ∈ 𝓟 := by
199
+ theorem coeff_mem (hf : f.IsEisensteinAt 𝓟) {n : ℕ} (hn : n ≠ f.natDegree) : f.coeff n ∈ 𝓟 := by
199
200
cases' ne_iff_lt_or_gt.1 hn with h₁ h₂
200
201
· exact hf.mem h₁
201
202
· rw [coeff_eq_zero_of_natDegree_lt h₂]
@@ -205,12 +206,12 @@ end CommSemiring
205
206
206
207
section IsDomain
207
208
208
- variable [CommRing R] [IsDomain R] {𝓟 : Ideal R} {f : R[X]} (hf : f.IsEisensteinAt 𝓟)
209
+ variable [CommRing R] [IsDomain R] {𝓟 : Ideal R} {f : R[X]}
209
210
210
211
/-- If a primitive `f` satisfies `f.IsEisensteinAt 𝓟`, where `𝓟.IsPrime`,
211
212
then `f` is irreducible. -/
212
- theorem irreducible (hprime : 𝓟.IsPrime ) (hu : f.IsPrimitive ) (hfd0 : 0 < f.natDegree) :
213
- Irreducible f :=
213
+ theorem irreducible (hf : f.IsEisensteinAt 𝓟 ) (hprime : 𝓟.IsPrime ) (hu : f.IsPrimitive)
214
+ (hfd0 : 0 < f.natDegree) : Irreducible f :=
214
215
irreducible_of_eisenstein_criterion hprime hf.leading (fun _ hn => hf.mem (coe_lt_degree.1 hn))
215
216
(natDegree_pos_iff_degree_pos.1 hfd0) hf.not_mem hu
216
217
0 commit comments