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
- WittVector.toZModPow p k = (TruncatedWittVector.zmodEquivTrunc p k).symm.toRingHom.comp (WittVector.truncate k)
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' := ⋯ }