Documentation

Mathlib.FieldTheory.PerfectClosure

The perfect closure of a characteristic p ring #

Main definitions #

Main results #

Tags #

perfect ring, perfect closure

inductive PerfectClosure.R (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] :
× K × KProp

PerfectClosure.R is the relation (n, x) ∼ (n + 1, x ^ p) for n : ℕ and x : K. PerfectClosure K p is the quotient by this relation.

Instances For
    theorem PerfectClosure.r_iff (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (a✝ a✝¹ : × K) :
    R K p a✝ a✝¹ ∃ (n : ) (x : K), a✝ = (n, x) a✝¹ = (n + 1, (frobenius K p) x)
    def PerfectClosure (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] :

    The perfect closure is the smallest extension that makes frobenius surjective.

    Equations
    Instances For
      def PerfectClosure.mk (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (x : × K) :

      PerfectClosure.mk K p (n, x) for n : ℕ and x : K is an element of PerfectClosure K p, viewed as x ^ (p ^ -n). Every element of PerfectClosure K p is of this form (PerfectClosure.mk_surjective).

      Equations
      Instances For
        @[simp]
        theorem PerfectClosure.mk_succ_pow (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (m : ) (x : K) :
        mk K p (m + 1, x ^ p) = mk K p (m, x)
        @[simp]
        theorem PerfectClosure.quot_mk_eq_mk (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (x : × K) :
        Quot.mk (R K p) x = mk K p x
        def PerfectClosure.liftOn {K : Type u} [CommRing K] {p : } [Fact (Nat.Prime p)] [CharP K p] {L : Type u_1} (x : PerfectClosure K p) (f : × KL) (hf : ∀ (x y : × K), R K p x yf x = f y) :
        L

        Lift a function ℕ × K → L to a function on PerfectClosure K p.

        Equations
        Instances For
          @[simp]
          theorem PerfectClosure.liftOn_mk {K : Type u} [CommRing K] {p : } [Fact (Nat.Prime p)] [CharP K p] {L : Type u_1} (f : × KL) (hf : ∀ (x y : × K), R K p x yf x = f y) (x : × K) :
          (mk K p x).liftOn f hf = f x
          theorem PerfectClosure.induction_on {K : Type u} [CommRing K] {p : } [Fact (Nat.Prime p)] [CharP K p] (x : PerfectClosure K p) {q : PerfectClosure K pProp} (h : ∀ (x : × K), q (mk K p x)) :
          q x
          instance PerfectClosure.instMul (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] :
          Equations
          • One or more equations did not get rendered due to their size.
          @[simp]
          theorem PerfectClosure.mk_mul_mk (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (x y : × K) :
          mk K p x * mk K p y = mk K p (x.1 + y.1, (⇑(frobenius K p))^[y.1] x.2 * (⇑(frobenius K p))^[x.1] y.2)
          theorem PerfectClosure.one_def (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] :
          1 = mk K p (0, 1)
          Equations
          instance PerfectClosure.instAdd (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] :
          Equations
          • One or more equations did not get rendered due to their size.
          @[simp]
          theorem PerfectClosure.mk_add_mk (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (x y : × K) :
          mk K p x + mk K p y = mk K p (x.1 + y.1, (⇑(frobenius K p))^[y.1] x.2 + (⇑(frobenius K p))^[x.1] y.2)
          instance PerfectClosure.instNeg (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] :
          Equations
          @[simp]
          theorem PerfectClosure.neg_mk (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (x : × K) :
          -mk K p x = mk K p (x.1, -x.2)
          instance PerfectClosure.instZero (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] :
          Equations
          theorem PerfectClosure.zero_def (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] :
          0 = mk K p (0, 0)
          @[simp]
          theorem PerfectClosure.mk_zero (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] :
          mk K p 0 = 0

          Prior to https://github.com/leanprover-community/mathlib4/pull/15862, this lemma was called mk_zero_zero. See mk_zero_right for the lemma used to be called mk_zero.

          @[deprecated PerfectClosure.mk_zero (since := "2024-08-16")]
          theorem PerfectClosure.mk_zero_zero (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] :
          mk K p 0 = 0

          Alias of PerfectClosure.mk_zero.


          Prior to https://github.com/leanprover-community/mathlib4/pull/15862, this lemma was called mk_zero_zero. See mk_zero_right for the lemma used to be called mk_zero.

          @[simp]
          theorem PerfectClosure.mk_zero_right (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (n : ) :
          mk K p (n, 0) = 0
          theorem PerfectClosure.R.sound (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (m n : ) (x y : K) (H : (⇑(frobenius K p))^[m] x = y) :
          mk K p (n, x) = mk K p (m + n, y)
          theorem PerfectClosure.mk_eq_iff (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (x y : × K) :
          mk K p x = mk K p y ∃ (z : ), (⇑(frobenius K p))^[y.1 + z] x.2 = (⇑(frobenius K p))^[x.1 + z] y.2
          @[simp]
          theorem PerfectClosure.mk_pow (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (x : × K) (n : ) :
          mk K p x ^ n = mk K p (x.1, x.2 ^ n)
          theorem PerfectClosure.natCast (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (n x : ) :
          x = mk K p (n, x)
          @[deprecated PerfectClosure.natCast (since := "2024-04-17")]
          theorem PerfectClosure.nat_cast (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (n x : ) :
          x = mk K p (n, x)

          Alias of PerfectClosure.natCast.

          theorem PerfectClosure.intCast (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (x : ) :
          x = mk K p (0, x)
          @[deprecated PerfectClosure.intCast (since := "2024-04-17")]
          theorem PerfectClosure.int_cast (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (x : ) :
          x = mk K p (0, x)

          Alias of PerfectClosure.intCast.

          theorem PerfectClosure.natCast_eq_iff (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (x y : ) :
          x = y x = y
          @[deprecated PerfectClosure.natCast_eq_iff (since := "2024-04-17")]
          theorem PerfectClosure.nat_cast_eq_iff (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (x y : ) :
          x = y x = y

          Alias of PerfectClosure.natCast_eq_iff.

          instance PerfectClosure.instCharP (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] :
          theorem PerfectClosure.frobenius_mk (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (x : × K) :
          (frobenius (PerfectClosure K p) p) (mk K p x) = mk K p (x.1, x.2 ^ p)
          def PerfectClosure.of (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] :

          Embedding of K into PerfectClosure K p

          Equations
          Instances For
            theorem PerfectClosure.of_apply (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (x : K) :
            (of K p) x = mk K p (0, x)
            @[simp]
            theorem PerfectClosure.iterate_frobenius_mk (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (n : ) (x : K) :
            (⇑(frobenius (PerfectClosure K p) p))^[n] (mk K p (n, x)) = (of K p) x
            noncomputable def PerfectClosure.lift (K : Type u) [CommRing K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (L : Type v) [CommSemiring L] [CharP L p] [PerfectRing L p] :

            Given a ring K of characteristic p and a perfect ring L of the same characteristic, any homomorphism K →+* L can be lifted to PerfectClosure K p.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem PerfectClosure.eq_iff (K : Type u) [CommRing K] [IsReduced K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (x y : × K) :
              mk K p x = mk K p y (⇑(frobenius K p))^[y.1] x.2 = (⇑(frobenius K p))^[x.1] y.2
              instance PerfectClosure.instInv (K : Type u) [Field K] (p : ) [Fact (Nat.Prime p)] [CharP K p] :
              Equations
              @[simp]
              theorem PerfectClosure.mk_inv (K : Type u) [Field K] (p : ) [Fact (Nat.Prime p)] [CharP K p] (x : × K) :
              (mk K p x)⁻¹ = mk K p (x.1, x.2⁻¹)
              Equations
              instance PerfectClosure.instField (K : Type u) [Field K] (p : ) [Fact (Nat.Prime p)] [CharP K p] :
              Equations