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.

Instances For
    theorem Polynomial.separable_def' {R : Type u} [CommSemiring R] (f : Polynomial R) :
    f.Separable ↔ βˆƒ (a : Polynomial R) (b : Polynomial R), a * f + b * derivative f = 1
    theorem Polynomial.Separable.ne_zero {R : Type u} [CommSemiring R] [Nontrivial R] {f : Polynomial R} (h : f.Separable) :
    f β‰  0
    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} {n : β„•} (_h : (f ^ n).Separable) :
    IsUnit f ∨ f.Separable ∧ n = 1 ∨ n = 0
    theorem Polynomial.Separable.of_pow {R : Type u} [CommSemiring R] {f : Polynomial R} (hf : Β¬IsUnit f) {n : β„•} (hn : n β‰  0) (hfs : (f ^ n).Separable) :
    f.Separable ∧ n = 1
    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) :
    evalβ‚‚ f x (derivative 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) :
    (aeval x) (derivative 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) :
    Function.Injective f
    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.count_roots_le_one {R : Type u} [CommRing R] [IsDomain R] [DecidableEq R] {p : Polynomial R} (hsep : p.Separable) (x : R) :
    theorem Polynomial.separable_map {F : Type u} [Field F] {S : Type u_1} [CommRing S] [Nontrivial S] (f : F β†’+* S) {p : Polynomial F} :
    (map f p).Separable ↔ p.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) :
    f.Separable ∨ Β¬f.Separable ∧ βˆƒ (g : Polynomial F), Irreducible g ∧ (expand F p) g = 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) :
    IsUnit f ∨ n = 0
    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) :
    theorem Polynomial.nodup_roots_iff_of_splits {F : Type u} [Field F] {f : Polynomial F} (hf : f β‰  0) (h : f.Splits) :
    f.roots.Nodup ↔ f.Separable

    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) :
    (f.aroots K).Nodup ↔ f.Separable

    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.card_rootSet_eq_natDegree_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) :
    Fintype.card ↑(f.rootSet K) = f.natDegree ↔ f.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.

    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 Algebra.isSeparable_iff {F : Type u_1} {K : Type u_3} [CommRing F] [Ring K] [Algebra F K] :
        Algebra.IsSeparable F K ↔ βˆ€ (x : K), IsIntegral F x ∧ IsSeparable F x
        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) :
        IsSeparable F (f x) ↔ IsSeparable F x
        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} :
        IsSeparable F (e x) ↔ IsSeparable F x

        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 AlgEquiv.Algebra.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) :
        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) :