pub trait FoldTrace<From, To> {
const FOLDING_FACTOR: usize;
// Required method
fn fold_trace_mle(
mle: &DenseMultilinearExtension<From>,
) -> DenseMultilinearExtension<To>;
// Provided method
fn fold_eval_claim<F, A>(
bar_u_coeffs: &[F],
alphas: &[A],
folding_challenges: &[F],
field_cfg: &F::Config,
) -> F
where F: PrimeField + for<'a> FromWithConfig<&'a A> { ... }
}Expand description
Fold a trace of one type into a trace of another (similar but smaller) type.
Note that folding will increase number of variables for MLEs by
ilog2(Self::FOLDING_FACTOR).
Required Associated Constants§
Sourceconst FOLDING_FACTOR: usize
const FOLDING_FACTOR: usize
Folding factor, a positive power of 2.
Required Methods§
fn fold_trace_mle( mle: &DenseMultilinearExtension<From>, ) -> DenseMultilinearExtension<To>
Provided Methods§
Sourcefn fold_eval_claim<F, A>(
bar_u_coeffs: &[F],
alphas: &[A],
folding_challenges: &[F],
field_cfg: &F::Config,
) -> Fwhere
F: PrimeField + for<'a> FromWithConfig<&'a A>,
fn fold_eval_claim<F, A>(
bar_u_coeffs: &[F],
alphas: &[A],
folding_challenges: &[F],
field_cfg: &F::Config,
) -> Fwhere
F: PrimeField + for<'a> FromWithConfig<&'a A>,
Verifier-side: compute one column’s contribution to the folded PCS
eval-claim at the extended evaluation point
r_0 || gamma_1 || ... || gamma_k, where k = log2(FOLDING_FACTOR).
§Inputs:
bar_u_coeffs: the column’s unfolded lifted-eval coefficients inF_q[X], of formal lengthD. May be shorter thanDif trailing zero coefficients were trimmed.alphas: per-poly PCS alphas, of lengthD / FOLDING_FACTOR, matching the folded entry size.folding_challenges:kfield-typed challenges sampled by the verifier, in sampling order (gamma_1first,gamma_klast).
Returns the value <alphas, bar_u_folded> where bar_u_folded is the
column’s lifted-eval polynomial after applying k chained 2x splits
and pinning the appended boolean variables to (gamma_1, ..., gamma_k).
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.