Documentation

Mathlib.FieldTheory.Perfect

Perfect fields and rings #

In this file we define perfect fields, together with a generalisation to (commutative) rings in prime characteristic.

Main definitions / statements: #

class PerfectRing (R : Type u_1) (p : ) [CommSemiring R] [ExpChar R p] :

A perfect ring of characteristic p (prime) in the sense of Serre.

NB: This is not related to the concept with the same name introduced by Bass (related to projective covers of modules).

Instances
    theorem PerfectRing.ofSurjective (R : Type u_2) (p : ) [CommRing R] [ExpChar R p] [IsReduced R] (h : Function.Surjective (frobenius R p)) :

    For a reduced ring, surjectivity of the Frobenius map is a sufficient condition for perfection.

    instance PerfectRing.ofFiniteOfIsReduced (p : ) (R : Type u_2) [CommRing R] [ExpChar R p] [Finite R] [IsReduced R] :
    Equations
    • =
    @[simp]
    theorem bijective_frobenius (R : Type u_1) (p : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] :
    @[simp]
    theorem injective_frobenius (R : Type u_1) (p : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] :
    @[simp]
    theorem surjective_frobenius (R : Type u_1) (p : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] :
    @[simp]
    theorem frobeniusEquiv_apply (R : Type u_1) (p : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] (a : R) :
    (frobeniusEquiv R p) a = (frobenius R p) a
    noncomputable def frobeniusEquiv (R : Type u_1) (p : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] :
    R ≃+* R

    The Frobenius automorphism for a perfect ring.

    Equations
    Instances For
      @[simp]
      theorem coe_frobeniusEquiv (R : Type u_1) (p : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] :
      (frobeniusEquiv R p) = (frobenius R p)
      theorem frobeniusEquiv_def (R : Type u_1) (p : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] (x : R) :
      (frobeniusEquiv R p) x = x ^ p
      @[simp]
      theorem iterateFrobeniusEquiv_apply (R : Type u_1) (p : ) (n : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] (a : R) :
      noncomputable def iterateFrobeniusEquiv (R : Type u_1) (p : ) (n : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] :
      R ≃+* R

      The iterated Frobenius automorphism for a perfect ring.

      Equations
      Instances For
        @[simp]
        theorem coe_iterateFrobeniusEquiv (R : Type u_1) (p : ) (n : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] :
        theorem iterateFrobeniusEquiv_def (R : Type u_1) (p : ) (n : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] (x : R) :
        (iterateFrobeniusEquiv R p n) x = x ^ p ^ n
        theorem iterateFrobeniusEquiv_add_apply (R : Type u_1) (p : ) (m : ) (n : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] (x : R) :
        theorem iterateFrobeniusEquiv_zero_apply (R : Type u_1) (p : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] (x : R) :
        theorem iterateFrobeniusEquiv_one_apply (R : Type u_1) (p : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] (x : R) :
        (iterateFrobeniusEquiv R p 1) x = x ^ p
        @[simp]
        theorem frobeniusEquiv_symm_apply_frobenius (R : Type u_1) (p : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] (x : R) :
        @[simp]
        theorem frobenius_apply_frobeniusEquiv_symm (R : Type u_1) (p : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] (x : R) :
        @[simp]
        theorem frobeniusEquiv_symm_pow_p (R : Type u_1) (p : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] (x : R) :
        theorem injective_pow_p (R : Type u_1) (p : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] {x : R} {y : R} (h : x ^ p = y ^ p) :
        x = y
        @[simp]
        theorem not_irreducible_expand (R : Type u_2) (p : ) [CommSemiring R] [Fact (Nat.Prime p)] [CharP R p] [PerfectRing R p] (f : Polynomial R) :
        instance instPerfectRingProd (R : Type u_1) (p : ) [CommSemiring R] [ExpChar R p] [PerfectRing R p] (S : Type u_2) [CommSemiring S] [ExpChar S p] [PerfectRing S p] :
        PerfectRing (R × S) p
        Equations
        • =
        class PerfectField (K : Type u_1) [Field K] :

        A perfect field.

        See also PerfectRing for a generalisation in positive characteristic.

        Instances
          Equations
          • =
          instance PerfectField.ofFinite {K : Type u_1} [Field K] [Finite K] :
          Equations
          • =
          instance PerfectField.toPerfectRing {K : Type u_1} [Field K] [PerfectField K] (p : ) [ExpChar K p] :

          A perfect field of characteristic p (prime) is a perfect ring.

          Equations
          • =

          If L / K is an algebraic extension, K is a perfect field, then L / K is separable.

          theorem Algebra.IsAlgebraic.perfectField {K : Type u_1} {L : Type u_2} [Field K] [Field L] [Algebra K L] [PerfectField K] (halg : Algebra.IsAlgebraic K L) :

          If L / K is an algebraic extension, K is a perfect field, then so is L.

          theorem Polynomial.roots_X_pow_char_pow_sub_C {R : Type u_1} [CommRing R] [IsDomain R] {p : } {n : } [ExpChar R p] [PerfectRing R p] {y : R} :
          Polynomial.roots (Polynomial.X ^ p ^ n - Polynomial.C y) = p ^ n {(RingEquiv.symm (iterateFrobeniusEquiv R p n)) y}
          theorem Polynomial.roots_X_pow_char_pow_sub_C_pow {R : Type u_1} [CommRing R] [IsDomain R] {p : } {n : } [ExpChar R p] [PerfectRing R p] {y : R} {m : } :
          Polynomial.roots ((Polynomial.X ^ p ^ n - Polynomial.C y) ^ m) = (m * p ^ n) {(RingEquiv.symm (iterateFrobeniusEquiv R p n)) y}
          theorem Polynomial.roots_X_pow_char_sub_C {R : Type u_1} [CommRing R] [IsDomain R] {p : } [ExpChar R p] [PerfectRing R p] {y : R} :
          Polynomial.roots (Polynomial.X ^ p - Polynomial.C y) = p {(RingEquiv.symm (frobeniusEquiv R p)) y}
          theorem Polynomial.roots_X_pow_char_sub_C_pow {R : Type u_1} [CommRing R] [IsDomain R] {p : } [ExpChar R p] [PerfectRing R p] {y : R} {m : } :
          Polynomial.roots ((Polynomial.X ^ p - Polynomial.C y) ^ m) = (m * p) {(RingEquiv.symm (frobeniusEquiv R p)) y}
          noncomputable def Polynomial.rootsExpandToRoots {R : Type u_1} [CommRing R] [IsDomain R] (p : ) [ExpChar R p] (f : Polynomial R) [DecidableEq R] :

          If f is a polynomial over an integral domain R of characteristic p, then there is a map from the set of roots of Polynomial.expand R p f to the set of roots of f. It's given by x ↦ x ^ p, see rootsExpandToRoots_apply.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[simp]
            theorem Polynomial.rootsExpandToRoots_apply {R : Type u_1} [CommRing R] [IsDomain R] (p : ) [ExpChar R p] (f : Polynomial R) [DecidableEq R] (x : { x : R // x Multiset.toFinset (Polynomial.roots ((Polynomial.expand R p) f)) }) :
            ((Polynomial.rootsExpandToRoots p f) x) = x ^ p
            noncomputable def Polynomial.rootsExpandPowToRoots {R : Type u_1} [CommRing R] [IsDomain R] (p : ) (n : ) [ExpChar R p] (f : Polynomial R) [DecidableEq R] :

            If f is a polynomial over an integral domain R of characteristic p, then there is a map from the set of roots of Polynomial.expand R (p ^ n) f to the set of roots of f. It's given by x ↦ x ^ (p ^ n), see rootsExpandPowToRoots_apply.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              theorem Polynomial.rootsExpandPowToRoots_apply {R : Type u_1} [CommRing R] [IsDomain R] (p : ) (n : ) [ExpChar R p] (f : Polynomial R) [DecidableEq R] (x : { x : R // x Multiset.toFinset (Polynomial.roots ((Polynomial.expand R (p ^ n)) f)) }) :
              ((Polynomial.rootsExpandPowToRoots p n f) x) = x ^ p ^ n
              noncomputable def Polynomial.rootsExpandEquivRoots {R : Type u_1} [CommRing R] [IsDomain R] (p : ) [ExpChar R p] (f : Polynomial R) [PerfectRing R p] [DecidableEq R] :

              If f is a polynomial over a perfect integral domain R of characteristic p, then there is a bijection from the set of roots of Polynomial.expand R p f to the set of roots of f. It's given by x ↦ x ^ p, see rootsExpandEquivRoots_apply.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                @[simp]
                theorem Polynomial.rootsExpandEquivRoots_apply {R : Type u_1} [CommRing R] [IsDomain R] (p : ) [ExpChar R p] (f : Polynomial R) [PerfectRing R p] [DecidableEq R] (x : { x : R // x Multiset.toFinset (Polynomial.roots ((Polynomial.expand R p) f)) }) :
                noncomputable def Polynomial.rootsExpandPowEquivRoots {R : Type u_1} [CommRing R] [IsDomain R] (p : ) [ExpChar R p] (f : Polynomial R) [PerfectRing R p] [DecidableEq R] (n : ) :

                If f is a polynomial over a perfect integral domain R of characteristic p, then there is a bijection from the set of roots of Polynomial.expand R (p ^ n) f to the set of roots of f. It's given by x ↦ x ^ (p ^ n), see rootsExpandPowEquivRoots_apply.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  @[simp]
                  theorem Polynomial.rootsExpandPowEquivRoots_apply {R : Type u_1} [CommRing R] [IsDomain R] (p : ) [ExpChar R p] (f : Polynomial R) [PerfectRing R p] [DecidableEq R] (n : ) (x : { x : R // x Multiset.toFinset (Polynomial.roots ((Polynomial.expand R (p ^ n)) f)) }) :
                  ((Polynomial.rootsExpandPowEquivRoots p f n) x) = x ^ p ^ n