Witt vectors #
This file verifies that the ring operations on WittVector p R
satisfy the axioms of a commutative ring.
Main definitions #
- WittVector.map: lifts a ring homomorphism- R →+* Sto a ring homomorphism- 𝕎 R →+* 𝕎 S.
- WittVector.ghostComponent n x: evaluates the- nth Witt polynomial on the first- ncoefficients of- x, producing a value in- R. This is a ring homomorphism.
- WittVector.ghostMap: a ring homomorphism- 𝕎 R →+* (ℕ → R), obtained by packaging all the ghost components together. If- pis invertible in- R, then the ghost map is an equivalence, which we use to define the ring operations on- 𝕎 R.
- WittVector.CommRing: the ring structure induced by the ghost components.
Notation #
We use notation 𝕎 R, entered \bbW, for the Witt vectors over R.
Implementation details #
As we prove that the ghost components respect the ring operations, we face a number of repetitive proofs. To avoid duplicating code we factor these proofs into a custom tactic, only slightly more powerful than a tactic macro. This tactic is not particularly useful outside of its applications in this file.
References #
- 
[Hazewinkel, Witt Vectors][Haze09] 
- 
[Commelin and Lewis, Formalizing the Ring of Witt Vectors][CL21] 
f : α → β induces a map from 𝕎 α to 𝕎 β by applying f componentwise.
If f is a ring homomorphism, then so is f, see WittVector.map f.
Equations
- WittVector.mapFun f x = WittVector.mk p (f ∘ x.coeff)
Instances For
Auxiliary tactic for showing that mapFun respects the ring operations.
Equations
- WittVector.mapFun.tacticMap_fun_tac = Lean.ParserDescr.node `WittVector.mapFun.tacticMap_fun_tac 1024 (Lean.ParserDescr.nonReservedSymbol "map_fun_tac" false)
Instances For
An auxiliary tactic for proving that ghostFun respects the ring operations.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The commutative ring structure on 𝕎 R.
Equations
- One or more equations did not get rendered due to their size.
WittVector.map f is the ring homomorphism 𝕎 R →+* 𝕎 S naturally induced
by a ring homomorphism f : R →+* S. It acts coefficientwise.
Equations
- One or more equations did not get rendered due to their size.
Instances For
WittVector.ghostMap is a ring homomorphism that maps each Witt vector
to the sequence of its ghost components.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Evaluates the nth Witt polynomial on the first n coefficients of x,
producing a value in R.
Equations
- WittVector.ghostComponent n = RingHom.comp (Pi.evalRingHom (fun (a : ℕ) => R) n) WittVector.ghostMap
Instances For
WittVector.ghostMap is a ring isomorphism when p is invertible in R.
Equations
- One or more equations did not get rendered due to their size.
Instances For
WittVector.coeff x 0 as a RingHom
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- (_ : Nontrivial (WittVector p R)) = (_ : Nontrivial (WittVector p R))