Comparison isomorphism between WittVector p (ZMod p) and ℤ_[p] #
We construct a ring isomorphism between WittVector p (ZMod p) and ℤ_[p].
This isomorphism follows from the fact that both satisfy the universal property
of the inverse limit of ZMod (p^n).
Main declarations #
WittVector.toZModPow: a family of compatible ring homs𝕎 (ZMod p) → ZMod (p^k)WittVector.equiv: the isomorphism
References #
[Hazewinkel, Witt Vectors][Haze09]
[Commelin and Lewis, Formalizing the Ring of Witt Vectors][CL21]
The unique isomorphism between ZMod p^n and TruncatedWittVector p n (ZMod p).
This isomorphism exists, because TruncatedWittVector p n (ZMod p) is a finite ring
with characteristic and cardinality p^n.
Equations
- TruncatedWittVector.zmodEquivTrunc p n = ZMod.ringEquiv (TruncatedWittVector p n (ZMod p)) ⋯
Instances For
The following diagram commutes:
ZMod (p^n) ----------------------------> ZMod (p^m)
| |
| |
v v
TruncatedWittVector p n (ZMod p) ----> TruncatedWittVector p m (ZMod p)
Here the vertical arrows are TruncatedWittVector.zmodEquivTrunc,
the horizontal arrow at the top is ZMod.castHom,
and the horizontal arrow at the bottom is TruncatedWittVector.truncate.
The following diagram commutes:
TruncatedWittVector p n (ZMod p) ----> TruncatedWittVector p m (ZMod p)
| |
| |
v v
ZMod (p^n) ----------------------------> ZMod (p^m)
Here the vertical arrows are (TruncatedWittVector.zmodEquivTrunc p _).symm,
the horizontal arrow at the top is ZMod.castHom,
and the horizontal arrow at the bottom is TruncatedWittVector.truncate.
toZModPow is a family of compatible ring homs. We get this family by composing
TruncatedWittVector.zmodEquivTrunc (in right-to-left direction) with WittVector.truncate.
Equations
Instances For
toPadicInt lifts toZModPow : 𝕎 (ZMod p) →+* ZMod (p ^ k) to a ring hom to ℤ_[p]
using PadicInt.lift, the universal property of ℤ_[p].
Equations
Instances For
fromPadicInt uses WittVector.lift to lift TruncatedWittVector.zmodEquivTrunc
composed with PadicInt.toZModPow to a ring hom ℤ_[p] →+* 𝕎 (ZMod p).
Equations
- WittVector.fromPadicInt p = WittVector.lift (fun (k : ℕ) => (TruncatedWittVector.zmodEquivTrunc p k).toRingHom.comp (PadicInt.toZModPow k)) ⋯
Instances For
The ring of Witt vectors over ZMod p is isomorphic to the ring of p-adic integers. This
equivalence is witnessed by WittVector.toPadicInt with inverse WittVector.fromPadicInt.
Equations
- WittVector.equiv p = { toFun := ⇑(WittVector.toPadicInt p), invFun := ⇑(WittVector.fromPadicInt p), left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯ }