Documentation

Mathlib.FieldTheory.Separable

Separable polynomials #

We define a polynomial to be separable if it is coprime with its derivative. We prove basic properties about separable polynomials here.

Main definitions #

A polynomial is separable iff it is coprime with its derivative.

Equations
    Instances For
      theorem Polynomial.Separable.of_dvd {R : Type u} [CommSemiring R] {f g : Polynomial R} (hf : f.Separable) (hfg : g ∣ f) :
      theorem Polynomial.Separable.of_pow {R : Type u} [CommSemiring R] {f : Polynomial R} (hf : Β¬IsUnit f) {n : β„•} (hn : n β‰  0) (hfs : (f ^ n).Separable) :
      theorem Associated.separable {R : Type u} [CommSemiring R] {f g : Polynomial R} (ha : Associated f g) (h : f.Separable) :
      theorem Polynomial.Separable.evalβ‚‚_derivative_ne_zero {R : Type u} [CommSemiring R] {S : Type v} [CommSemiring S] [Nontrivial S] (f : R β†’+* S) {p : Polynomial R} (h : p.Separable) {x : S} (hx : evalβ‚‚ f x p = 0) :
      theorem Polynomial.Separable.aeval_derivative_ne_zero {R : Type u} [CommSemiring R] {S : Type v} [CommSemiring S] [Nontrivial S] [Algebra R S] {p : Polynomial R} (h : p.Separable) {x : S} (hx : (aeval x) p = 0) :

      A separable polynomial is square-free.

      See PerfectField.separable_iff_squarefree for the converse when the coefficients are a perfect field.

      theorem Polynomial.Separable.mul {R : Type u} [CommRing R] {f g : Polynomial R} (hf : f.Separable) (hg : g.Separable) (h : IsCoprime f g) :
      (f * g).Separable
      theorem Polynomial.separable_prod' {R : Type u} [CommRing R] {ΞΉ : Type u_1} {f : ΞΉ β†’ Polynomial R} {s : Finset ΞΉ} :
      (βˆ€ x ∈ s, βˆ€ y ∈ s, x β‰  y β†’ IsCoprime (f x) (f y)) β†’ (βˆ€ x ∈ s, (f x).Separable) β†’ (∏ x ∈ s, f x).Separable
      theorem Polynomial.separable_prod {R : Type u} [CommRing R] {ΞΉ : Type u_1} [Fintype ΞΉ] {f : ΞΉ β†’ Polynomial R} (h1 : Pairwise (Function.onFun IsCoprime f)) (h2 : βˆ€ (x : ΞΉ), (f x).Separable) :
      (∏ x : ι, f x).Separable
      theorem Polynomial.Separable.inj_of_prod_X_sub_C {R : Type u} [CommRing R] [Nontrivial R] {ΞΉ : Type u_1} {f : ΞΉ β†’ R} {s : Finset ΞΉ} (hfs : (∏ i ∈ s, (X - C (f i))).Separable) {x y : ΞΉ} (hx : x ∈ s) (hy : y ∈ s) (hfxy : f x = f y) :
      x = y
      theorem Polynomial.Separable.injective_of_prod_X_sub_C {R : Type u} [CommRing R] [Nontrivial R] {ΞΉ : Type u_1} [Fintype ΞΉ] {f : ΞΉ β†’ R} (hfs : (∏ i : ΞΉ, (X - C (f i))).Separable) :
      theorem Polynomial.separable_X_pow_sub_C_unit {R : Type u} [CommRing R] {n : β„•} (u : RΛ£) (hn : IsUnit ↑n) :
      (X ^ n - C ↑u).Separable

      If IsUnit n in a CommRing R, then X ^ n - u is separable for any unit u.

      theorem Polynomial.separable_C_mul_X_pow_add_C_mul_X_add_C {R : Type u} [CommRing R] {n : β„•} (a b c : R) (hn : ↑n = 0) (hb : IsUnit b) :
      (C a * X ^ n + C b * X + C c).Separable

      If n = 0 in R and b is a unit, then a * X ^ n + b * X + c is separable.

      theorem Polynomial.separable_C_mul_X_pow_add_C_mul_X_add_C' {R : Type u} [CommRing R] (p n : β„•) (a b c : R) [CharP R p] (hn : p ∣ n) (hb : IsUnit b) :
      (C a * X ^ n + C b * X + C c).Separable

      If R is of characteristic p, p ∣ n and b is a unit, then a * X ^ n + b * X + c is separable.

      theorem Polynomial.separable_prod_X_sub_C_iff' {F : Type u} [Field F] {ΞΉ : Type u_1} {f : ΞΉ β†’ F} {s : Finset ΞΉ} :
      (∏ i ∈ s, (X - C (f i))).Separable ↔ βˆ€ x ∈ s, βˆ€ y ∈ s, f x = f y β†’ x = y
      theorem Polynomial.separable_prod_X_sub_C_iff {F : Type u} [Field F] {ΞΉ : Type u_1} [Fintype ΞΉ] {f : ΞΉ β†’ F} :
      (∏ i : ΞΉ, (X - C (f i))).Separable ↔ Function.Injective f
      theorem Polynomial.separable_or {F : Type u} [Field F] (p : β„•) [HF : CharP F p] {f : Polynomial F} (hf : Irreducible f) :
      theorem Polynomial.exists_separable_of_irreducible {F : Type u} [Field F] (p : β„•) [HF : CharP F p] {f : Polynomial F} (hf : Irreducible f) (hp : p β‰  0) :
      βˆƒ (n : β„•) (g : Polynomial F), g.Separable ∧ (expand F (p ^ n)) g = f
      theorem Polynomial.isUnit_or_eq_zero_of_separable_expand {F : Type u} [Field F] (p : β„•) [HF : CharP F p] {f : Polynomial F} (n : β„•) (hp : 0 < p) (hf : ((expand F (p ^ n)) f).Separable) :
      theorem Polynomial.unique_separable_of_irreducible {F : Type u} [Field F] (p : β„•) [HF : CharP F p] {f : Polynomial F} (hf : Irreducible f) (hp : 0 < p) (n₁ : β„•) (g₁ : Polynomial F) (hg₁ : g₁.Separable) (hgf₁ : (expand F (p ^ n₁)) g₁ = f) (nβ‚‚ : β„•) (gβ‚‚ : Polynomial F) (hgβ‚‚ : gβ‚‚.Separable) (hgfβ‚‚ : (expand F (p ^ nβ‚‚)) gβ‚‚ = f) :
      n₁ = nβ‚‚ ∧ g₁ = gβ‚‚
      theorem Polynomial.separable_X_pow_sub_C {F : Type u} [Field F] {n : β„•} (a : F) (hn : ↑n β‰  0) (ha : a β‰  0) :
      (X ^ n - C a).Separable

      If n β‰  0 in F, then X ^ n - a is separable for any a β‰  0.

      theorem Polynomial.separable_X_pow_sub_C' {F : Type u} [Field F] (p n : β„•) (a : F) [CharP F p] (hn : Β¬p ∣ n) (ha : a β‰  0) :
      (X ^ n - C a).Separable

      If F is of characteristic p and p ∀ n, then X ^ n - a is separable for any a β‰  0.

      theorem Polynomial.X_pow_sub_C_separable_iff {F : Type u} [Field F] {n : β„•} {x : F} (hn : 0 < n) (hx : x β‰  0) :
      (X ^ n - C x).Separable ↔ ↑n β‰  0

      In a field F, for any t ∈ F and n > 0, the polynomial X ^ n - t is separable iff ↑n β‰  0. The assumption n > 0 is needed, since for n = 0 the polynomial X ^ n - t is separable iff t β‰  1.

      theorem Polynomial.X_pow_sub_one_separable_iff {F : Type u} [Field F] {n : β„•} :
      (X ^ n - 1).Separable ↔ ↑n β‰  0

      In a field F, X ^ n - 1 is separable iff ↑n β‰  0.

      theorem Polynomial.card_rootSet_eq_natDegree {F : Type u} [Field F] {K : Type v} [Field K] [Algebra F K] {p : Polynomial F} (hsep : p.Separable) (hsplit : (map (algebraMap F K) p).Splits) :

      If a non-zero polynomial splits, then it has no repeated roots on that field if and only if it is separable.

      theorem Polynomial.nodup_aroots_iff_of_splits {F : Type u} [Field F] {K : Type v} [Field K] [Algebra F K] {f : Polynomial F} (hf : f β‰  0) (h : (map (algebraMap F K) f).Splits) :

      If a non-zero polynomial over F splits in K, then it has no repeated roots on K if and only if it is separable.

      theorem Polynomial.eq_X_sub_C_of_separable_of_root_eq {F : Type u} [Field F] {K : Type v} [Field K] {i : F β†’+* K} {x : F} {h : Polynomial F} (h_sep : h.Separable) (h_root : eval x h = 0) (h_splits : (map i h).Splits) (h_roots : βˆ€ y ∈ (map i h).roots, y = i x) :
      h = C h.leadingCoeff * (X - C x)
      theorem Polynomial.exists_finset_of_splits {F : Type u} [Field F] {K : Type v} [Field K] (i : F β†’+* K) {f : Polynomial F} (sep : f.Separable) (sp : (map i f).Splits) :
      βˆƒ (s : Finset K), map i f = C (i f.leadingCoeff) * ∏ a ∈ s, (X - C a)
      def IsSeparable (F : Type u_1) {K : Type u_3} [CommRing F] [Ring K] [Algebra F K] (x : K) :

      An element x of an algebra K over a commutative ring F is said to be separable, if its minimal polynomial over K is separable. Note that the minimal polynomial of any element not integral over F is defined to be 0, which is not a separable polynomial.

      Equations
        Instances For
          class Algebra.IsSeparable (F : Type u_1) (K : Type u_3) [CommRing F] [Ring K] [Algebra F K] :

          Typeclass for separable field extension: K is a separable field extension of F iff the minimal polynomial of every x : K is separable. This implies that K/F is an algebraic extension, because the minimal polynomial of a non-integral element is 0, which is not separable.

          We define this for general (commutative) rings and only assume F and K are fields if this is needed for a proof.

          Instances
            theorem Algebra.isSeparable_def (F : Type u_1) (K : Type u_3) [CommRing F] [Ring K] [Algebra F K] :
            Algebra.IsSeparable F K ↔ βˆ€ (x : K), IsSeparable F x
            theorem IsSeparable.isIntegral {F : Type u_1} {K : Type u_3} [CommRing F] [Ring K] [Algebra F K] {x : K} (h : IsSeparable F x) :

            If the minimal polynomial of x : K over F is separable, then x is integral over F, because the minimal polynomial of a non-integral element is 0, which is not separable.

            theorem isSeparable_map_iff {F : Type u_1} {L : Type u_2} {K : Type u_3} [CommRing F] [Ring K] [Algebra F K] [Ring L] [Algebra F L] {x : K} (f : K →ₐ[F] L) (hf : Function.Injective ⇑f) :
            theorem IsSeparable.map {F : Type u_1} {L : Type u_2} {K : Type u_3} [CommRing F] [Ring K] [Algebra F K] [Ring L] [Algebra F L] {x : K} (f : K →ₐ[F] L) (hf : Function.Injective ⇑f) (H : IsSeparable F x) :
            IsSeparable F (f x)
            theorem Subalgebra.isSeparable_iff {F : Type u_1} {L : Type u_2} [CommRing F] [Ring L] [Algebra F L] {S : Subalgebra F L} :
            Algebra.IsSeparable F β†₯S ↔ βˆ€ x ∈ S, IsSeparable F x
            theorem AlgEquiv.isSeparable_iff {F : Type u_1} {K : Type u_3} [CommRing F] [Ring K] [Algebra F K] {E : Type u_4} [Ring E] [Algebra F E] (e : K ≃ₐ[F] E) {x : K} :

            Transfer IsSeparable across an AlgEquiv.

            theorem AlgEquiv.Algebra.isSeparable {F : Type u_1} {K : Type u_3} [CommRing F] [Ring K] [Algebra F K] {E : Type u_4} [Ring E] [Algebra F E] (e : K ≃ₐ[F] E) [Algebra.IsSeparable F K] :

            Transfer Algebra.IsSeparable across an AlgEquiv.

            theorem IsSeparable.tower_top {F : Type u_1} (L : Type u_2) [CommRing F] {E : Type u_4} [Field L] [Ring E] [Algebra F L] [Algebra F E] [Algebra L E] [IsScalarTower F L E] {x : E} (h : IsSeparable F x) :

            If E / L / F is a scalar tower and x : E is separable over F, then it's also separable over L.

            theorem Algebra.isSeparable_tower_top_of_isSeparable (F : Type u_1) (L : Type u_2) [CommRing F] (E : Type u_4) [Field L] [Ring E] [Algebra F L] [Algebra F E] [Algebra L E] [IsScalarTower F L E] [Algebra.IsSeparable F E] :

            If E / K / F is an extension tower, E is separable over F, then it's also separable over K.

            theorem isSeparable_algebraMap {F : Type u_1} [Field F] {K : Type u_2} [Ring K] [Algebra F K] (x : F) :
            theorem IsSeparable.of_integral (F : Type u_1) [Field F] {K : Type u_2} [Ring K] [Algebra F K] [IsDomain K] [Algebra.IsIntegral F K] [CharZero F] (x : K) :
            @[instance 100]

            An integral field extension in characteristic 0 is separable.

            theorem IsSeparable.tower_bot {F : Type u_1} [Field F] {K : Type u_2} {E : Type u_3} [Field K] [Ring E] [Algebra F K] [Algebra F E] [Algebra K E] [Nontrivial E] [IsScalarTower F K E] {x : K} (h : IsSeparable F ((algebraMap K E) x)) :

            If E / K / F is a scalar tower and algebraMap K E x is separable over F, then x is also separable over F.

            theorem IsSeparable.of_algHom {F : Type u_1} [Field F] {E : Type u_3} {E' : Type u_4} [Field E] [Field E'] [Algebra F E] [Algebra F E'] (f : E →ₐ[F] E') {x : E} (h : IsSeparable F (f x)) :
            theorem Algebra.IsSeparable.of_algHom (F : Type u_1) [Field F] {E : Type u_3} (E' : Type u_4) [Field E] [Field E'] [Algebra F E] [Algebra F E'] (f : E →ₐ[F] E') [Algebra.IsSeparable F E'] :
            theorem IsSeparable.of_equiv_equiv {A₁ : Type u_1} {B₁ : Type u_2} {Aβ‚‚ : Type u_3} {Bβ‚‚ : Type u_4} [Field A₁] [Ring B₁] [Field Aβ‚‚] [Ring Bβ‚‚] [Algebra A₁ B₁] [Algebra Aβ‚‚ Bβ‚‚] (e₁ : A₁ ≃+* Aβ‚‚) (eβ‚‚ : B₁ ≃+* Bβ‚‚) (he : (algebraMap Aβ‚‚ Bβ‚‚).comp ↑e₁ = (↑eβ‚‚).comp (algebraMap A₁ B₁)) {x : B₁} (h : IsSeparable A₁ x) :
            IsSeparable Aβ‚‚ (eβ‚‚ x)
            theorem Algebra.IsSeparable.of_equiv_equiv {A₁ : Type u_1} {B₁ : Type u_2} {Aβ‚‚ : Type u_3} {Bβ‚‚ : Type u_4} [Field A₁] [Ring B₁] [Field Aβ‚‚] [Ring Bβ‚‚] [Algebra A₁ B₁] [Algebra Aβ‚‚ Bβ‚‚] (e₁ : A₁ ≃+* Aβ‚‚) (eβ‚‚ : B₁ ≃+* Bβ‚‚) (he : (algebraMap Aβ‚‚ Bβ‚‚).comp ↑e₁ = (↑eβ‚‚).comp (algebraMap A₁ B₁)) [Algebra.IsSeparable A₁ B₁] :
            Algebra.IsSeparable Aβ‚‚ Bβ‚‚
            theorem AlgHom.natCard_of_powerBasis {S : Type u_2} [CommRing S] {K : Type u_4} {L : Type u_5} [Field K] [Field L] [Algebra K S] [Algebra K L] (pb : PowerBasis K S) (h_sep : IsSeparable K pb.gen) (h_splits : (Polynomial.map (algebraMap K L) (minpoly K pb.gen)).Splits) :
            theorem AlgHom.card_of_powerBasis {S : Type u_2} [CommRing S] {K : Type u_4} {L : Type u_5} [Field K] [Field L] [Algebra K S] [Algebra K L] (pb : PowerBasis K S) (h_sep : IsSeparable K pb.gen) (h_splits : (Polynomial.map (algebraMap K L) (minpoly K pb.gen)).Splits) :