Documentation

Mathlib.Algebra.CharP.Lemmas

Characteristic of semirings #

theorem Commute.add_pow_prime_pow_eq' {R : Type u_1} [Semiring R] {p : ℕ} (hp : Nat.Prime p) {x y : R} (h : Commute x y) (n : ℕ) :
(x + y) ^ p ^ n = x ^ p ^ n + y ^ p ^ n + ↑p * ∑ k ∈ Finset.Ioo 0 (p ^ n), x ^ k * y ^ (p ^ n - k) * ↑((p ^ n).choose k / p)
theorem Commute.add_pow_prime_pow_eq {R : Type u_1} [Semiring R] {p : ℕ} (hp : Nat.Prime p) {x y : R} (h : Commute x y) (n : ℕ) :
(x + y) ^ p ^ n = x ^ p ^ n + y ^ p ^ n + ↑p * x * y * ∑ k ∈ Finset.Ioo 0 (p ^ n), x ^ (k - 1) * y ^ (p ^ n - k - 1) * ↑((p ^ n).choose k / p)
theorem Commute.add_pow_prime_eq' {R : Type u_1} [Semiring R] {p : ℕ} (hp : Nat.Prime p) {x y : R} (h : Commute x y) :
(x + y) ^ p = x ^ p + y ^ p + ↑p * ∑ k ∈ Finset.Ioo 0 p, x ^ k * y ^ (p - k) * ↑(p.choose k / p)
theorem Commute.add_pow_prime_eq {R : Type u_1} [Semiring R] {p : ℕ} (hp : Nat.Prime p) {x y : R} (h : Commute x y) :
(x + y) ^ p = x ^ p + y ^ p + ↑p * x * y * ∑ k ∈ Finset.Ioo 0 p, x ^ (k - 1) * y ^ (p - k - 1) * ↑(p.choose k / p)
theorem Commute.exists_add_pow_prime_pow_eq {R : Type u_1} [Semiring R] {p : ℕ} (hp : Nat.Prime p) {x y : R} (h : Commute x y) (n : ℕ) :
∃ (r : R), (x + y) ^ p ^ n = x ^ p ^ n + y ^ p ^ n + ↑p * x * y * r
theorem Commute.exists_add_pow_prime_eq {R : Type u_1} [Semiring R] {p : ℕ} (hp : Nat.Prime p) {x y : R} (h : Commute x y) :
∃ (r : R), (x + y) ^ p = x ^ p + y ^ p + ↑p * x * y * r
theorem add_pow_prime_pow_eq' {R : Type u_1} [CommSemiring R] {p : ℕ} (hp : Nat.Prime p) (x y : R) (n : ℕ) :
(x + y) ^ p ^ n = x ^ p ^ n + y ^ p ^ n + ↑p * ∑ k ∈ Finset.Ioo 0 (p ^ n), x ^ k * y ^ (p ^ n - k) * ↑((p ^ n).choose k / p)
theorem add_pow_prime_pow_eq {R : Type u_1} [CommSemiring R] {p : ℕ} (hp : Nat.Prime p) (x y : R) (n : ℕ) :
(x + y) ^ p ^ n = x ^ p ^ n + y ^ p ^ n + ↑p * x * y * ∑ k ∈ Finset.Ioo 0 (p ^ n), x ^ (k - 1) * y ^ (p ^ n - k - 1) * ↑((p ^ n).choose k / p)
theorem add_pow_prime_eq' {R : Type u_1} [CommSemiring R] {p : ℕ} (hp : Nat.Prime p) (x y : R) :
(x + y) ^ p = x ^ p + y ^ p + ↑p * ∑ k ∈ Finset.Ioo 0 p, x ^ k * y ^ (p - k) * ↑(p.choose k / p)
theorem add_pow_prime_eq {R : Type u_1} [CommSemiring R] {p : ℕ} (hp : Nat.Prime p) (x y : R) :
(x + y) ^ p = x ^ p + y ^ p + ↑p * x * y * ∑ k ∈ Finset.Ioo 0 p, x ^ (k - 1) * y ^ (p - k - 1) * ↑(p.choose k / p)
theorem exists_add_pow_prime_pow_eq {R : Type u_1} [CommSemiring R] {p : ℕ} (hp : Nat.Prime p) (x y : R) (n : ℕ) :
∃ (r : R), (x + y) ^ p ^ n = x ^ p ^ n + y ^ p ^ n + ↑p * x * y * r
theorem exists_add_pow_prime_eq {R : Type u_1} [CommSemiring R] {p : ℕ} (hp : Nat.Prime p) (x y : R) :
∃ (r : R), (x + y) ^ p = x ^ p + y ^ p + ↑p * x * y * r
theorem add_pow_expChar_of_commute {R : Type u_1} [Semiring R] {x y : R} (p : ℕ) [hR : ExpChar R p] (h : Commute x y) :
(x + y) ^ p = x ^ p + y ^ p
theorem add_pow_expChar_pow_of_commute {R : Type u_1} [Semiring R] {x y : R} (p n : ℕ) [hR : ExpChar R p] (h : Commute x y) :
(x + y) ^ p ^ n = x ^ p ^ n + y ^ p ^ n
theorem add_pow_eq_mul_pow_add_pow_div_expChar_of_commute {R : Type u_1} [Semiring R] {x y : R} (p n : ℕ) [hR : ExpChar R p] (h : Commute x y) :
(x + y) ^ n = (x + y) ^ (n % p) * (x ^ p + y ^ p) ^ (n / p)
theorem add_pow_char_of_commute {R : Type u_1} [Semiring R] {x y : R} (p : ℕ) [hp : Fact (Nat.Prime p)] [CharP R p] (h : Commute x y) :
(x + y) ^ p = x ^ p + y ^ p
theorem add_pow_char_pow_of_commute {R : Type u_1} [Semiring R] {x y : R} (p n : ℕ) [hp : Fact (Nat.Prime p)] [CharP R p] (h : Commute x y) :
(x + y) ^ p ^ n = x ^ p ^ n + y ^ p ^ n
theorem add_pow_eq_mul_pow_add_pow_div_char_of_commute {R : Type u_1} [Semiring R] {x y : R} (p n : ℕ) [hp : Fact (Nat.Prime p)] [CharP R p] (h : Commute x y) :
(x + y) ^ n = (x + y) ^ (n % p) * (x ^ p + y ^ p) ^ (n / p)
theorem add_pow_expChar {R : Type u_1} [CommSemiring R] (x y : R) (p : ℕ) [hR : ExpChar R p] :
(x + y) ^ p = x ^ p + y ^ p
theorem add_pow_expChar_pow {R : Type u_1} [CommSemiring R] (x y : R) (p n : ℕ) [hR : ExpChar R p] :
(x + y) ^ p ^ n = x ^ p ^ n + y ^ p ^ n
theorem add_pow_eq_mul_pow_add_pow_div_expChar {R : Type u_1} [CommSemiring R] (x y : R) (p n : ℕ) [hR : ExpChar R p] :
(x + y) ^ n = (x + y) ^ (n % p) * (x ^ p + y ^ p) ^ (n / p)
theorem add_pow_char {R : Type u_1} [CommSemiring R] (x y : R) (p : ℕ) [hp : Fact (Nat.Prime p)] [CharP R p] :
(x + y) ^ p = x ^ p + y ^ p
theorem add_pow_char_pow {R : Type u_1} [CommSemiring R] (x y : R) (p n : ℕ) [hp : Fact (Nat.Prime p)] [CharP R p] :
(x + y) ^ p ^ n = x ^ p ^ n + y ^ p ^ n
theorem add_pow_eq_mul_pow_add_pow_div_char {R : Type u_1} [CommSemiring R] (x y : R) (p n : ℕ) [hp : Fact (Nat.Prime p)] [CharP R p] :
(x + y) ^ n = (x + y) ^ (n % p) * (x ^ p + y ^ p) ^ (n / p)
theorem sub_pow_expChar_of_commute {R : Type u_1} [Ring R] {x y : R} (p : ℕ) [hR : ExpChar R p] (h : Commute x y) :
(x - y) ^ p = x ^ p - y ^ p
theorem sub_pow_expChar_pow_of_commute {R : Type u_1} [Ring R] {x y : R} (p n : ℕ) [hR : ExpChar R p] (h : Commute x y) :
(x - y) ^ p ^ n = x ^ p ^ n - y ^ p ^ n
theorem sub_pow_eq_mul_pow_sub_pow_div_expChar_of_commute {R : Type u_1} [Ring R] {x y : R} (p n : ℕ) [hR : ExpChar R p] (h : Commute x y) :
(x - y) ^ n = (x - y) ^ (n % p) * (x ^ p - y ^ p) ^ (n / p)
theorem neg_one_pow_expChar (R : Type u_1) [Ring R] (p : ℕ) [hR : ExpChar R p] :
(-1) ^ p = -1
theorem neg_one_pow_expChar_pow (R : Type u_1) [Ring R] (p n : ℕ) [hR : ExpChar R p] :
(-1) ^ p ^ n = -1
theorem sub_pow_char_of_commute {R : Type u_1} [Ring R] {x y : R} (p : ℕ) [hp : Fact (Nat.Prime p)] [CharP R p] (h : Commute x y) :
(x - y) ^ p = x ^ p - y ^ p
theorem sub_pow_char_pow_of_commute {R : Type u_1} [Ring R] {x y : R} (p n : ℕ) [hp : Fact (Nat.Prime p)] [CharP R p] (h : Commute x y) :
(x - y) ^ p ^ n = x ^ p ^ n - y ^ p ^ n
theorem neg_one_pow_char (R : Type u_1) [Ring R] (p : ℕ) [hp : Fact (Nat.Prime p)] [CharP R p] :
(-1) ^ p = -1
theorem neg_one_pow_char_pow (R : Type u_1) [Ring R] (p n : ℕ) [hp : Fact (Nat.Prime p)] [CharP R p] :
(-1) ^ p ^ n = -1
theorem sub_pow_eq_mul_pow_sub_pow_div_char_of_commute (R : Type u_1) [Ring R] {x y : R} (p n : ℕ) [hp : Fact (Nat.Prime p)] [CharP R p] (h : Commute x y) :
(x - y) ^ n = (x - y) ^ (n % p) * (x ^ p - y ^ p) ^ (n / p)
theorem sub_pow_expChar {R : Type u_1} [CommRing R] (x y : R) {p : ℕ} [hR : ExpChar R p] :
(x - y) ^ p = x ^ p - y ^ p
theorem sub_pow_expChar_pow {R : Type u_1} [CommRing R] (x y : R) (n : ℕ) {p : ℕ} [hR : ExpChar R p] :
(x - y) ^ p ^ n = x ^ p ^ n - y ^ p ^ n
theorem sub_pow_eq_mul_pow_sub_pow_div_expChar {R : Type u_1} [CommRing R] (x y : R) (n : ℕ) {p : ℕ} [hR : ExpChar R p] :
(x - y) ^ n = (x - y) ^ (n % p) * (x ^ p - y ^ p) ^ (n / p)
theorem sub_pow_char {R : Type u_1} [CommRing R] (x y : R) {p : ℕ} [hp : Fact (Nat.Prime p)] [CharP R p] :
(x - y) ^ p = x ^ p - y ^ p
theorem sub_pow_char_pow {R : Type u_1} [CommRing R] (x y : R) (n : ℕ) {p : ℕ} [hp : Fact (Nat.Prime p)] [CharP R p] :
(x - y) ^ p ^ n = x ^ p ^ n - y ^ p ^ n
theorem sub_pow_eq_mul_pow_sub_pow_div_char {R : Type u_1} [CommRing R] (x y : R) (n : ℕ) {p : ℕ} [hp : Fact (Nat.Prime p)] [CharP R p] :
(x - y) ^ n = (x - y) ^ (n % p) * (x ^ p - y ^ p) ^ (n / p)
theorem Nat.Prime.dvd_add_pow_sub_pow_of_dvd {R : Type u_1} [CommRing R] (x y : R) {p : ℕ} (hpri : Prime p) {r : R} (h₁ : r ∣ x ^ p) (h₂ : r ∣ ↑p * x) :
r ∣ (x + y) ^ p - y ^ p
theorem CharP.char_ne_zero_of_finite (R : Type u_1) [NonAssocRing R] (p : ℕ) [CharP R p] [Finite R] :
p ≠ 0

The characteristic of a finite ring cannot be zero.

theorem CharP.char_is_prime (R : Type u_1) [Ring R] [NoZeroDivisors R] [Nontrivial R] [Finite R] (p : ℕ) [CharP R p] :
def frobenius (R : Type u_2) [CommSemiring R] (p : ℕ) [ExpChar R p] :
R →+* R

The Frobenius map x ↦ x ^ p.

Equations
Instances For
    def iterateFrobenius (R : Type u_2) [CommSemiring R] (p n : ℕ) [ExpChar R p] :
    R →+* R

    The iterated Frobenius map x ↦ x ^ p ^ n.

    Equations
    Instances For
      theorem list_sum_pow_char {R : Type u_2} [CommSemiring R] (p : ℕ) [ExpChar R p] (l : List R) :
      l.sum ^ p = (List.map (fun (x : R) => x ^ p) l).sum
      theorem multiset_sum_pow_char {R : Type u_2} [CommSemiring R] (p : ℕ) [ExpChar R p] (s : Multiset R) :
      s.sum ^ p = (Multiset.map (fun (x : R) => x ^ p) s).sum
      theorem sum_pow_char {R : Type u_2} [CommSemiring R] (p : ℕ) [ExpChar R p] {ι : Type u_3} (s : Finset ι) (f : ι → R) :
      (∑ i ∈ s, f i) ^ p = ∑ i ∈ s, f i ^ p
      theorem list_sum_pow_char_pow {R : Type u_2} [CommSemiring R] (p n : ℕ) [ExpChar R p] (l : List R) :
      l.sum ^ p ^ n = (List.map (fun (x : R) => x ^ p ^ n) l).sum
      theorem multiset_sum_pow_char_pow {R : Type u_2} [CommSemiring R] (p n : ℕ) [ExpChar R p] (s : Multiset R) :
      s.sum ^ p ^ n = (Multiset.map (fun (x : R) => x ^ p ^ n) s).sum
      theorem sum_pow_char_pow {R : Type u_2} [CommSemiring R] (p n : ℕ) [ExpChar R p] {ι : Type u_3} (s : Finset ι) (f : ι → R) :
      (∑ i ∈ s, f i) ^ p ^ n = ∑ i ∈ s, f i ^ p ^ n