Restricting a polynomial to a line #
The expansion stage's line measurements are indexed by the restriction to a line of the
low-degree encoding of the ancilla's measurement outcome. This file is that operation: substitute
the affine parametrization t -> u0 + t . w into a multivariate polynomial and read off the
univariate coefficients.
Two facts are all the consumers need:
eval_lineRestrict--- evaluating the restriction attis evaluating the polynomial at the pointu0 + t . w, so the restriction carries the same information along the line;natDegree_lineRestrict_le--- the restriction has degree at most the total degree, so a multilinear polynomial inmvariables restricts to degree at mostmand the coefficient vector fits in aLinePoly F m.
lineCoeffs packages the coefficients as the LinePoly the games use, and eval_lineCoeffs
is the composite of the two.
The restriction of a multivariate polynomial to the line t ↦ u₀ + t • w, as a
univariate polynomial.
Equations
- MIPRE.LowDegree.lineRestrict u₀ w p = (MvPolynomial.aeval fun (i : Fin m) => Polynomial.C (u₀ i) + Polynomial.X * Polynomial.C (w i)) p
Instances For
Evaluating the restriction is evaluating along the line.
The restriction has degree at most the total degree.
On an axis-parallel line the restriction has degree at most the individual degree in that
coordinate. Along u_0 + t e_j only the j-th variable moves, so every other substitution is a
constant and the degree in t is the degree of p in X_j. This is what makes a multilinear
encoding restrict to an affine function of the line parameter.
The coefficient vector of the restriction, evaluated at t. This is the form the games
use: a polynomial of degree at most n is a vector of n + 1 coefficients, and evaluating that
vector at t is evaluating the polynomial along the line.