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 firstn
coefficients ofx
, as a Witt vector. All coefficients at indices ≥n
are 0.witt_vector.tail n x
: the complementary part toinit
. All coefficients at indices <n
are 0, otherwise they are the same as inx
.witt_vector.coeff_add_of_disjoint
: ifx
andy
are Witt vectors such that for everyn
then
-th coefficient ofx
or ofy
is0
, then the coefficients ofx + y
are 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
.