Characteristic of semirings #
@[deprecated add_pow_eq_mul_pow_add_pow_div_char]
theorem
add_pow_eq_add_pow_mod_mul_pow_add_pow_div
{R : Type u_1}
[CommSemiring R]
(x : R)
(y : R)
(p : ℕ)
(n : ℕ)
[hp : Fact (Nat.Prime p)]
[CharP R p]
:
Alias of add_pow_eq_mul_pow_add_pow_div_char
.
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]
:
The Frobenius automorphism #
The frobenius map x ↦ x ^ p
.
Equations
- frobenius R p = { toMonoidHom := powMonoidHom p, map_zero' := ⋯, map_add' := ⋯ }
Instances For
The iterated frobenius map x ↦ x ^ p ^ n
.
Equations
- iterateFrobenius R p n = { toMonoidHom := powMonoidHom (p ^ n), map_zero' := ⋯, map_add' := ⋯ }
Instances For
theorem
iterateFrobenius_def
{R : Type u_1}
[CommSemiring R]
(p : ℕ)
(n : ℕ)
[ExpChar R p]
(x : R)
:
(iterateFrobenius R p n) x = x ^ p ^ n
theorem
coe_iterateFrobenius
(R : Type u_1)
[CommSemiring R]
(p : ℕ)
(n : ℕ)
[ExpChar R p]
:
⇑(iterateFrobenius R p n) = (⇑(frobenius R p))^[n]
theorem
iterateFrobenius_one_apply
(R : Type u_1)
[CommSemiring R]
(p : ℕ)
[ExpChar R p]
(x : R)
:
(iterateFrobenius R p 1) x = x ^ p
@[simp]
theorem
iterateFrobenius_one
(R : Type u_1)
[CommSemiring R]
(p : ℕ)
[ExpChar R p]
:
iterateFrobenius R p 1 = frobenius R p
theorem
iterateFrobenius_zero_apply
(R : Type u_1)
[CommSemiring R]
(p : ℕ)
[ExpChar R p]
(x : R)
:
(iterateFrobenius R p 0) x = x
@[simp]
theorem
iterateFrobenius_zero
(R : Type u_1)
[CommSemiring R]
(p : ℕ)
[ExpChar R p]
:
iterateFrobenius R p 0 = RingHom.id R
theorem
iterateFrobenius_add_apply
(R : Type u_1)
[CommSemiring R]
(p : ℕ)
(m : ℕ)
(n : ℕ)
[ExpChar R p]
(x : R)
:
(iterateFrobenius R p (m + n)) x = (iterateFrobenius R p m) ((iterateFrobenius R p n) x)
theorem
iterateFrobenius_add
(R : Type u_1)
[CommSemiring R]
(p : ℕ)
(m : ℕ)
(n : ℕ)
[ExpChar R p]
:
iterateFrobenius R p (m + n) = (iterateFrobenius R p m).comp (iterateFrobenius R p n)
theorem
iterateFrobenius_mul_apply
(R : Type u_1)
[CommSemiring R]
(p : ℕ)
(m : ℕ)
(n : ℕ)
[ExpChar R p]
(x : R)
:
(iterateFrobenius R p (m * n)) x = (⇑(iterateFrobenius R p m))^[n] x
theorem
coe_iterateFrobenius_mul
(R : Type u_1)
[CommSemiring R]
(p : ℕ)
(m : ℕ)
(n : ℕ)
[ExpChar R p]
:
⇑(iterateFrobenius R p (m * n)) = (⇑(iterateFrobenius R p m))^[n]
theorem
MonoidHom.map_frobenius
{R : Type u_1}
[CommSemiring R]
{S : Type u_3}
[CommSemiring S]
(f : R →* S)
(p : ℕ)
[ExpChar R p]
[ExpChar S p]
(x : R)
:
theorem
RingHom.map_frobenius
{R : Type u_1}
[CommSemiring R]
{S : Type u_3}
[CommSemiring S]
(g : R →+* S)
(p : ℕ)
[ExpChar R p]
[ExpChar S p]
(x : R)
:
theorem
multiset_sum_pow_char
{R : Type u_1}
[CommSemiring R]
(p : ℕ)
[ExpChar R p]
(s : Multiset R)
:
s.sum ^ p = (Multiset.map (fun (x : R) => x ^ p) s).sum
theorem
multiset_sum_pow_char_pow
{R : Type u_1}
[CommSemiring R]
(p : ℕ)
[ExpChar R p]
(n : ℕ)
(s : Multiset R)
: