The Frobenius endomorphism #
Tags #
Frobenius endomorphism
Implementation notes #
The definitions of frobenius and iterateFrobenius ring homomorphisms are in
Mathlib/Algebra/CharP/Lemmas.lean as they are needed for some results that in turn are used in
files forbidding to import algebra-related definitions (see Mathlib/Algebra/CharP/Two.lean).
theorem
frobenius_def
{R : Type u_1}
[CommSemiring R]
(p : ℕ)
[ExpChar R p]
(x : R)
:
(frobenius R p) x = x ^ p
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
iterateFrobenius_eq_pow
(R : Type u_1)
[CommSemiring R]
(p n : ℕ)
[ExpChar R p]
:
iterateFrobenius R p n = frobenius R 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]
@[deprecated map_mul (since := "2025-10-28")]
@[deprecated map_one (since := "2025-10-28")]
theorem
MonoidHom.map_frobenius
{R : Type u_1}
[CommSemiring R]
{S : Type u_2}
[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_2}
[CommSemiring S]
(g : R →+* S)
(p : ℕ)
[ExpChar R p]
[ExpChar S p]
(x : R)
:
theorem
MonoidHom.map_iterate_frobenius
{R : Type u_1}
[CommSemiring R]
{S : Type u_2}
[CommSemiring S]
(f : R →* S)
(p : ℕ)
[ExpChar R p]
[ExpChar S p]
(x : R)
(n : ℕ)
:
theorem
MonoidHom.map_iterateFrobenius
{R : Type u_1}
[CommSemiring R]
{S : Type u_2}
[CommSemiring S]
(f : R →* S)
(p : ℕ)
[ExpChar R p]
[ExpChar S p]
(x : R)
(n : ℕ)
:
f ((iterateFrobenius R p n) x) = (iterateFrobenius S p n) (f x)
theorem
RingHom.map_iterate_frobenius
{R : Type u_1}
[CommSemiring R]
{S : Type u_2}
[CommSemiring S]
(g : R →+* S)
(p : ℕ)
[ExpChar R p]
[ExpChar S p]
(x : R)
(n : ℕ)
:
theorem
RingHom.map_iterateFrobenius
{R : Type u_1}
[CommSemiring R]
{S : Type u_2}
[CommSemiring S]
(g : R →+* S)
(p : ℕ)
[ExpChar R p]
[ExpChar S p]
(x : R)
(n : ℕ)
:
g ((iterateFrobenius R p n) x) = (iterateFrobenius S p n) (g x)
theorem
RingHom.frobenius_comm
{R : Type u_1}
[CommSemiring R]
{S : Type u_2}
[CommSemiring S]
(g : R →+* S)
(p : ℕ)
[ExpChar R p]
[ExpChar S p]
:
The Frobenius endomorphism commutes with any ring homomorphism.
theorem
RingHom.iterateFrobenius_comm
{R : Type u_1}
[CommSemiring R]
{S : Type u_2}
[CommSemiring S]
(g : R →+* S)
(p : ℕ)
[ExpChar R p]
[ExpChar S p]
(n : ℕ)
:
g.comp (iterateFrobenius R p n) = (iterateFrobenius S p n).comp g
The iterated Frobenius endomorphism commutes with any ring homomorphism.
def
LinearMap.frobenius
(R : Type u_1)
[CommSemiring R]
(S : Type u_2)
[CommSemiring S]
(p : ℕ)
[ExpChar R p]
[ExpChar S p]
[Algebra R S]
:
The Frobenius map of an algebra as a Frobenius-semilinear map.
Instances For
def
LinearMap.iterateFrobenius
(R : Type u_1)
[CommSemiring R]
(S : Type u_2)
[CommSemiring S]
(p n : ℕ)
[ExpChar R p]
[ExpChar S p]
[Algebra R S]
:
The iterated Frobenius map of an algebra as an iterated-Frobenius-semilinear map.
Instances For
theorem
LinearMap.frobenius_def
(R : Type u_1)
[CommSemiring R]
(S : Type u_2)
[CommSemiring S]
(p : ℕ)
[ExpChar R p]
[ExpChar S p]
[Algebra R S]
(x : S)
:
(frobenius R S p) x = x ^ p
theorem
LinearMap.iterateFrobenius_def
(R : Type u_1)
[CommSemiring R]
(S : Type u_2)
[CommSemiring S]
(p : ℕ)
[ExpChar R p]
[ExpChar S p]
[Algebra R S]
(n : ℕ)
(x : S)
:
(iterateFrobenius R S p n) x = x ^ p ^ n
@[deprecated map_zero (since := "2025-10-28")]
@[deprecated map_add (since := "2025-10-28")]
@[deprecated map_natCast (since := "2025-10-28")]
theorem
frobenius_natCast
(R : Type u_1)
[CommSemiring R]
(p : ℕ)
[ExpChar R p]
(n : ℕ)
:
(frobenius R p) ↑n = ↑n
@[deprecated map_neg (since := "2025-10-28")]
@[deprecated map_sub (since := "2025-10-28")]