Documentation

Mathlib.RingTheory.WittVector.Identities

Identities between operations on the ring of Witt vectors #

In this file we derive common identities between the Frobenius and Verschiebung operators.

Main declarations #

References #

theorem WittVector.frobenius_verschiebung {p : } {R : Type u_1} [hp : Fact (Nat.Prime p)] [CommRing R] (x : WittVector p R) :
WittVector.frobenius (WittVector.verschiebung x) = x * p

The composition of Frobenius and Verschiebung is multiplication by p.

theorem WittVector.verschiebung_zmod {p : } [hp : Fact (Nat.Prime p)] (x : WittVector p (ZMod p)) :
WittVector.verschiebung x = x * p

Verschiebung is the same as multiplication by p on the ring of Witt vectors of ZMod p.

theorem WittVector.coeff_p_pow (p : ) (R : Type u_1) [hp : Fact (Nat.Prime p)] [CommRing R] [CharP R p] (i : ) :
(p ^ i).coeff i = 1
theorem WittVector.coeff_p_pow_eq_zero (p : ) (R : Type u_1) [hp : Fact (Nat.Prime p)] [CommRing R] [CharP R p] {i j : } (hj : j i) :
(p ^ i).coeff j = 0
theorem WittVector.coeff_p (p : ) (R : Type u_1) [hp : Fact (Nat.Prime p)] [CommRing R] [CharP R p] (i : ) :
(↑p).coeff i = if i = 1 then 1 else 0
@[simp]
theorem WittVector.coeff_p_zero (p : ) (R : Type u_1) [hp : Fact (Nat.Prime p)] [CommRing R] [CharP R p] :
(↑p).coeff 0 = 0
@[simp]
theorem WittVector.coeff_p_one (p : ) (R : Type u_1) [hp : Fact (Nat.Prime p)] [CommRing R] [CharP R p] :
(↑p).coeff 1 = 1
theorem WittVector.p_nonzero (p : ) (R : Type u_1) [hp : Fact (Nat.Prime p)] [CommRing R] [Nontrivial R] [CharP R p] :
p 0
theorem WittVector.FractionRing.p_nonzero (p : ) (R : Type u_1) [hp : Fact (Nat.Prime p)] [CommRing R] [Nontrivial R] [CharP R p] :
p 0
theorem WittVector.verschiebung_mul_frobenius {p : } {R : Type u_1} [hp : Fact (Nat.Prime p)] [CommRing R] (x y : WittVector p R) :
WittVector.verschiebung (x * WittVector.frobenius y) = WittVector.verschiebung x * y

The “projection formula” for Frobenius and Verschiebung.

theorem WittVector.mul_charP_coeff_zero {p : } {R : Type u_1} [hp : Fact (Nat.Prime p)] [CommRing R] [CharP R p] (x : WittVector p R) :
(x * p).coeff 0 = 0
theorem WittVector.mul_charP_coeff_succ {p : } {R : Type u_1} [hp : Fact (Nat.Prime p)] [CommRing R] [CharP R p] (x : WittVector p R) (i : ) :
(x * p).coeff (i + 1) = x.coeff i ^ p
theorem WittVector.verschiebung_frobenius {p : } {R : Type u_1} [hp : Fact (Nat.Prime p)] [CommRing R] [CharP R p] (x : WittVector p R) :
WittVector.verschiebung (WittVector.frobenius x) = x * p
theorem WittVector.verschiebung_frobenius_comm {p : } {R : Type u_1} [hp : Fact (Nat.Prime p)] [CommRing R] [CharP R p] :
Function.Commute WittVector.verschiebung WittVector.frobenius

Iteration lemmas #

theorem WittVector.iterate_verschiebung_coeff {p : } {R : Type u_1} [hp : Fact (Nat.Prime p)] [CommRing R] (x : WittVector p R) (n k : ) :
((⇑WittVector.verschiebung)^[n] x).coeff (k + n) = x.coeff k
theorem WittVector.iterate_verschiebung_mul_left {p : } {R : Type u_1} [hp : Fact (Nat.Prime p)] [CommRing R] (x y : WittVector p R) (i : ) :
(⇑WittVector.verschiebung)^[i] x * y = (⇑WittVector.verschiebung)^[i] (x * (⇑WittVector.frobenius)^[i] y)
theorem WittVector.iterate_verschiebung_mul {p : } {R : Type u_1} [hp : Fact (Nat.Prime p)] [CommRing R] [CharP R p] (x y : WittVector p R) (i j : ) :
(⇑WittVector.verschiebung)^[i] x * (⇑WittVector.verschiebung)^[j] y = (⇑WittVector.verschiebung)^[i + j] ((⇑WittVector.frobenius)^[j] x * (⇑WittVector.frobenius)^[i] y)
theorem WittVector.iterate_frobenius_coeff {p : } {R : Type u_1} [hp : Fact (Nat.Prime p)] [CommRing R] [CharP R p] (x : WittVector p R) (i k : ) :
((⇑WittVector.frobenius)^[i] x).coeff k = x.coeff k ^ p ^ i
theorem WittVector.iterate_verschiebung_mul_coeff {p : } {R : Type u_1} [hp : Fact (Nat.Prime p)] [CommRing R] [CharP R p] (x y : WittVector p R) (i j : ) :
((⇑WittVector.verschiebung)^[i] x * (⇑WittVector.verschiebung)^[j] y).coeff (i + j) = x.coeff 0 ^ p ^ j * y.coeff 0 ^ p ^ i

This is a slightly specialized form of Hazewinkel, Witt Vectors 6.2 equation 5.