Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit d89bfc4

Browse files
committed
feat(field_theory/minpoly): remove is_integral requirement from unique' (#7064)
`unique'` had an extraneous requirement on `is_integral`, which could be inferred from the other arguments. This is a small step towards #5258, but is a breaking change; `unique'` now needs one less argument, which will break all current code using `unique'`.
1 parent 36649f8 commit d89bfc4

File tree

3 files changed

+7
-8
lines changed

3 files changed

+7
-8
lines changed

src/field_theory/abel_ruffini.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ begin
341341
exact ⟨is_integral β, hpq.2⟩,
342342
end),
343343
have key : minpoly F γ = minpoly F (f ⟨γ, hγ⟩) := minpoly.unique'
344-
(normal.is_integral (splitting_field.normal _) _) (minpoly.irreducible (is_integral γ)) begin
344+
(minpoly.irreducible (is_integral γ)) begin
345345
suffices : aeval (⟨γ, hγ⟩ : F ⟮α, β⟯) (minpoly F γ) = 0,
346346
{ rw [aeval_alg_hom_apply, this, alg_hom.map_zero] },
347347
apply (algebra_map F⟮α, β⟯ (solvable_by_rad F E)).injective,

src/field_theory/fixed.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ theorem is_integral : is_integral (fixed_points G F) x :=
179179

180180
theorem minpoly_eq_minpoly :
181181
minpoly G F x = _root_.minpoly (fixed_points G F) x :=
182-
minpoly.unique' (is_integral G F x) (minpoly.irreducible G F x)
182+
minpoly.unique' (minpoly.irreducible G F x)
183183
(minpoly.eval₂ G F x) (minpoly.monic G F x)
184184

185185
instance normal : normal (fixed_points G F) F :=

src/field_theory/minpoly.lean

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -290,11 +290,10 @@ by { refine minpoly.dvd K x _, rw [← is_scalar_tower.aeval_apply, minpoly.aeva
290290

291291
variables {A x}
292292

293-
theorem unique' [nontrivial B] {p : polynomial A} (hx : is_integral A x)
294-
(hp1 : _root_.irreducible p) (hp2 : polynomial.aeval x p = 0) (hp3 : p.monic) :
295-
p = minpoly A x :=
293+
theorem unique' [nontrivial B] {p : polynomial A} (hp1 : _root_.irreducible p)
294+
(hp2 : polynomial.aeval x p = 0) (hp3 : p.monic) : p = minpoly A x :=
296295
let ⟨q, hq⟩ := dvd A x hp2 in
297-
eq_of_monic_of_associated hp3 (monic hx) $
296+
eq_of_monic_of_associated hp3 (monic ⟨p, ⟨hp3, hp2⟩⟩) $
298297
mul_one (minpoly A x) ▸ hq.symm ▸ associated_mul_mul (associated.refl _) $
299298
associated_one_iff_is_unit.2 $ (hp1.is_unit_or_is_unit hq).resolve_left $ not_is_unit A x
300299

@@ -323,7 +322,7 @@ lemma gcd_domain_eq_field_fractions {A K R : Type*} [integral_domain A]
323322
[algebra A R] [is_scalar_tower A f.codomain R] {x : R} (hx : is_integral A x) :
324323
minpoly f.codomain x = (minpoly A x).map (localization_map.to_ring_hom f) :=
325324
begin
326-
refine (unique' (@is_integral_of_is_scalar_tower A f.codomain R _ _ _ _ _ _ _ x hx) _ _ _).symm,
325+
refine (unique' _ _ _).symm,
327326
{ exact (polynomial.is_primitive.irreducible_iff_irreducible_map_fraction_map f
328327
(polynomial.monic.is_primitive (monic hx))).1 (irreducible hx) },
329328
{ have htower := is_scalar_tower.aeval_apply A f.codomain R x (minpoly A x),
@@ -339,7 +338,7 @@ lemma over_int_eq_over_rat {A : Type*} [integral_domain A] {x : A} [hℚA : alge
339338
(hx : is_integral ℤ x) :
340339
minpoly ℚ x = map (int.cast_ring_hom ℚ) (minpoly ℤ x) :=
341340
begin
342-
refine (unique' (@is_integral_of_is_scalar_tower ℤ ℚ A _ _ _ _ _ _ _ x hx) _ _ _).symm,
341+
refine (unique' _ _ _).symm,
343342
{ exact (is_primitive.int.irreducible_iff_irreducible_map_cast
344343
(polynomial.monic.is_primitive (monic hx))).1 (irreducible hx) },
345344
{ have htower := is_scalar_tower.aeval_apply ℤ ℚ A x (minpoly ℤ x),

0 commit comments

Comments
 (0)