pub(crate) fn fold_wiring_into_beta_mle_identity_gate<F: Field>(
wiring: &[(u32, u32)],
claim_points: &[&[F]],
num_vars_folded_vec: usize,
random_coefficients: &[F],
) -> Vec<F>Expand description
The folding occurs by first iterating through the nonzero gates, and computing the value \beta(g, z) for each output label z and the challenge point g. Instead of computing the \beta value from scratch, we take inspiration from the Rothblum sumcheck trick to just multiply by the inverses and points necessary to go from one beta value to the next. This conserves memory by not having to store the entire table (which is done to achieve linear computation) while continuing to achieve amortized linear computation for each progressive beta value as opposed to the O(log(n)) method used to compute it from scratch.
We have multiple claim_points when using RLC claim agg, and in this case,
we compute the random linear combination of the random_coefficients and
the g variables.