Skip to content

Commit

Permalink
feat(FieldTheory/Separable): add result on Associated and `Polynomi…
Browse files Browse the repository at this point in the history
…al.Separable` (#10897)

... which states that if two polynomials are associated, then one is separable if and only if another one is. Also a separable polynomial multiplied by a unit is also separable.
  • Loading branch information
acmepjz committed Feb 23, 2024
1 parent 33d32d5 commit 11b3632
Showing 1 changed file with 22 additions and 0 deletions.
22 changes: 22 additions & 0 deletions Mathlib/FieldTheory/Separable.lean
Expand Up @@ -134,6 +134,28 @@ theorem Separable.map {p : R[X]} (h : p.Separable) {f : R →+* S} : (p.map f).S
Polynomial.map_one]⟩
#align polynomial.separable.map Polynomial.Separable.map

theorem _root_.Associated.separable {f g : R[X]}
(ha : Associated f g) (h : f.Separable) : g.Separable := by
obtain ⟨⟨u, v, h1, h2⟩, ha⟩ := ha
obtain ⟨a, b, h⟩ := h
refine ⟨a * v + b * derivative v, b * v, ?_⟩
replace h := congr($h * $(h1))
have h3 := congr(derivative $(h1))
simp only [← ha, derivative_mul, derivative_one] at h3 ⊢
calc
_ = (a * f + b * derivative f) * (u * v)
+ (b * f) * (derivative u * v + u * derivative v) := by ring1
_ = 1 := by rw [h, h3]; ring1

theorem _root_.Associated.separable_iff {f g : R[X]}
(ha : Associated f g) : f.Separable ↔ g.Separable := ⟨ha.separable, ha.symm.separable⟩

theorem Separable.mul_unit {f g : R[X]} (hf : f.Separable) (hg : IsUnit g) : (f * g).Separable :=
(associated_mul_unit_right f g hg).separable hf

theorem Separable.unit_mul {f g : R[X]} (hf : IsUnit f) (hg : g.Separable) : (f * g).Separable :=
(associated_unit_mul_right g f hf).separable hg

theorem Separable.eval₂_derivative_ne_zero [Nontrivial S] (f : R →+* S) {p : R[X]}
(h : p.Separable) {x : S} (hx : p.eval₂ f x = 0) :
(derivative p).eval₂ f x ≠ 0 := by
Expand Down

0 comments on commit 11b3632

Please sign in to comment.