Witt vectors over a domain #
This file builds to the proof WittVector.instIsDomain
,
an instance that says if R
is an integral domain, then so is 𝕎 R
.
It depends on the API around iterated applications
of WittVector.verschiebung
and WittVector.frobenius
found in Identities.lean
.
The proof sketch
goes as follows:
any nonzero $x$ is an iterated application of $V$
to some vector $w_x$ whose 0th component is nonzero (WittVector.verschiebung_nonzero
).
Known identities (WittVector.iterate_verschiebung_mul
) allow us to transform
the product of two such $x$ and $y$
to the form $V^{m+n}\left(F^n(w_x) \cdot F^m(w_y)\right)$,
the 0th component of which must be nonzero.
Main declarations #
WittVector.iterate_verschiebung_mul_coeff
: an identity from [Haze09]WittVector.instIsDomain
WittVector.verschiebung
translates the entries of a Witt vector upward, inserting 0s in the gaps.
WittVector.shift
does the opposite, removing the first entries.
This is mainly useful as an auxiliary construction for WittVector.verschiebung_nonzero
.
Equations
- WittVector.shift x n = { coeff := fun (i : ℕ) => x.coeff (n + i) }
Instances For
Witt vectors over a domain #
If R
is an integral domain, then so is 𝕎 R
.
This argument is adapted from
Equations
- (_ : NoZeroDivisors (WittVector p R)) = (_ : NoZeroDivisors (WittVector p R))
Equations
- (_ : IsDomain (WittVector p R)) = (_ : IsDomain (WittVector p R))