init and tail #
Given a Witt vector x, we are sometimes interested
in its components before and after an index n.
This file defines those operations, proves that init is polynomial,
and shows how that polynomial interacts with MvPolynomial.bind₁.
Main declarations #
WittVector.init n x: the firstncoefficients ofx, as a Witt vector. All coefficients at indices ≥nare 0.WittVector.tail n x: the complementary part toinit. All coefficients at indices <nare 0, otherwise they are the same as inx.WittVector.coeff_add_of_disjoint: ifxandyare Witt vectors such that for everynthen-th coefficient ofxor ofyis0, then the coefficients ofx + yare justx.coeff n + y.coeff n.
References #
[Hazewinkel, Witt Vectors][Haze09]
[Commelin and Lewis, Formalizing the Ring of Witt Vectors][CL21]
WittVector.select P x, for a predicate P : ℕ → Prop is the Witt vector
whose n-th coefficient is x.coeff n if P n is true, and 0 otherwise.
Equations
- WittVector.select P x = WittVector.mk p fun (n : ℕ) => if P n then x.coeff n else 0
Instances For
The polynomial that witnesses that WittVector.select is a polynomial function.
selectPoly n is X n if P n holds, and 0 otherwise.
Equations
- WittVector.selectPoly P n = if P n then MvPolynomial.X n else 0
Instances For
WittVector.init n x is the Witt vector of which the first n coefficients are those from x
and all other coefficients are 0.
See WittVector.tail for the complementary part.
Equations
- WittVector.init n = WittVector.select fun (i : ℕ) => i < n
Instances For
WittVector.tail n x is the Witt vector of which the first n coefficients are 0
and all other coefficients are those from x.
See WittVector.init for the complementary part.
Equations
- WittVector.tail n = WittVector.select fun (i : ℕ) => n ≤ i
Instances For
init_ring is an auxiliary tactic that discharges goals factoring init over ring operations.
Equations
- One or more equations did not get rendered due to their size.
Instances For
WittVector.init n x is polynomial in the coefficients of x.