pub trait PeriodicEvaluator<F: Field, D: PolynomialSpace<Val = F>> {
// Required methods
fn eval_on_lde(
periodic_table: &[Vec<F>],
trace_domain: &D,
lde_domain: &D,
) -> PeriodicLdeTable<F>;
fn eval_at_point<EF: ExtensionField<F>>(
periodic_table: &[Vec<F>],
trace_domain: &D,
point: EF,
) -> Vec<EF>;
}Expand description
Evaluates periodic polynomials for a given domain system.
Periodic columns are defined by their values over one period. This trait handles interpolation and evaluation, abstracting over the domain-specific math (two-adic multiplicative groups vs circle groups).
§Power-of-Two Requirement
All period lengths must be powers of two. This ensures the periodic subdomain is a valid subgroup of the trace domain. See module-level documentation for details.
§Type Parameters
F: The base field typeD: The polynomial space / domain type
Required Methods§
Sourcefn eval_on_lde(
periodic_table: &[Vec<F>],
trace_domain: &D,
lde_domain: &D,
) -> PeriodicLdeTable<F>
fn eval_on_lde( periodic_table: &[Vec<F>], trace_domain: &D, lde_domain: &D, ) -> PeriodicLdeTable<F>
Evaluate all periodic columns on the LDE domain, returning a compact table.
This is used by the prover to compute periodic column values on the low-degree extension domain for constraint evaluation.
The returned table stores only max_period × blowup rows. All columns are
padded to the maximum period before extrapolation, creating a rectangular
matrix for efficient row-wise access with modular indexing.
§Arguments
periodic_table- Slice of periodic columns, each containing one period of values. The length of each innerVecis the period of that column (must be a power of 2).trace_domain- The original trace domainlde_domain- The low-degree extension domain
§Returns
A PeriodicLdeTable with height = max_period × blowup and width = number of columns.
Sourcefn eval_at_point<EF: ExtensionField<F>>(
periodic_table: &[Vec<F>],
trace_domain: &D,
point: EF,
) -> Vec<EF>
fn eval_at_point<EF: ExtensionField<F>>( periodic_table: &[Vec<F>], trace_domain: &D, point: EF, ) -> Vec<EF>
Evaluate all periodic columns at a single point (for verification).
This is used by the verifier to compute periodic column values at query points during constraint verification.
§Arguments
periodic_table- Slice of periodic columns. Each column’s length (period) must be a power of 2.trace_domain- The original trace domainpoint- The query point (in extension field)
§Returns
Vec<EF> containing the evaluation of each periodic column at point
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
Source§impl<F: Field, D: PolynomialSpace<Val = F>> PeriodicEvaluator<F, D> for ()
Unit type implements PeriodicEvaluator as a no-op.
impl<F: Field, D: PolynomialSpace<Val = F>> PeriodicEvaluator<F, D> for ()
Unit type implements PeriodicEvaluator as a no-op.
This is used internally by prove and verify for AIRs without periodic columns.
Panics if any periodic columns are present.