init and tail #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
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 mv_polynomial.bind₁.
Main declarations #
witt_vector.init n x: the firstncoefficients ofx, as a Witt vector. All coefficients at indices ≥nare 0.witt_vector.tail n x: the complementary part toinit. All coefficients at indices <nare 0, otherwise they are the same as inx.witt_vector.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 #
witt_vector.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.
Instances for witt_vector.select
The polynomial that witnesses that witt_vector.select is a polynomial function.
select_poly n is X n if P n holds, and 0 otherwise.
Equations
- witt_vector.select_poly P n = ite (P n) (mv_polynomial.X n) 0
witt_vector.init n x is the Witt vector of which the first n coefficients are those from x
and all other coefficients are 0.
See witt_vector.tail for the complementary part.
Equations
- witt_vector.init n = witt_vector.select (λ (i : ℕ), i < n)
witt_vector.tail n x is the Witt vector of which the first n coefficients are 0
and all other coefficients are those from x.
See witt_vector.init for the complementary part.
Equations
- witt_vector.tail n = witt_vector.select (λ (i : ℕ), n ≤ i)
witt_vector.init n x is polynomial in the coefficients of x.