diff --git a/crates/examples/src/xor/gkr_lookups/mle_eval.rs b/crates/examples/src/xor/gkr_lookups/mle_eval.rs index b5fc2a958..98146cbf5 100644 --- a/crates/examples/src/xor/gkr_lookups/mle_eval.rs +++ b/crates/examples/src/xor/gkr_lookups/mle_eval.rs @@ -846,6 +846,7 @@ mod tests { let components = Components { components: components.iter().map(|&c| c as &dyn Component).collect(), n_preprocessed_columns: 0, + all_preprocessed_columns: false, }; let log_sizes = components.column_log_sizes(); @@ -937,6 +938,7 @@ mod tests { let components = Components { components: vec![&mle_coeffs_col_component, &mle_eval_component], n_preprocessed_columns: 0, + all_preprocessed_columns: false, }; let log_sizes = components.column_log_sizes(); diff --git a/crates/stwo/src/core/air/components.rs b/crates/stwo/src/core/air/components.rs index c6bcab958..f4ba6374a 100644 --- a/crates/stwo/src/core/air/components.rs +++ b/crates/stwo/src/core/air/components.rs @@ -13,6 +13,8 @@ use crate::core::ColumnVec; pub struct Components<'a> { pub components: Vec<&'a dyn Component>, pub n_preprocessed_columns: usize, + /// Whether `maks_points` should include all preprocessed columns, regardles of usage. + pub all_preprocessed_columns: bool, } impl Components<'_> { @@ -36,11 +38,14 @@ impl Components<'_> { ); let preprocessed_mask_points = &mut mask_points[PREPROCESSED_TRACE_IDX]; - *preprocessed_mask_points = vec![vec![]; self.n_preprocessed_columns]; - - for component in &self.components { - for idx in component.preprocessed_column_indices() { - preprocessed_mask_points[idx] = vec![point]; + if self.all_preprocessed_columns { + *preprocessed_mask_points = vec![vec![point]; self.n_preprocessed_columns]; + } else { + *preprocessed_mask_points = vec![vec![]; self.n_preprocessed_columns]; + for component in &self.components { + for idx in component.preprocessed_column_indices() { + preprocessed_mask_points[idx] = vec![point]; + } } } diff --git a/crates/stwo/src/core/verifier.rs b/crates/stwo/src/core/verifier.rs index 5aa1b879a..161611a14 100644 --- a/crates/stwo/src/core/verifier.rs +++ b/crates/stwo/src/core/verifier.rs @@ -28,6 +28,7 @@ pub fn verify( let components = Components { components: components.to_vec(), n_preprocessed_columns, + all_preprocessed_columns: false, }; let composition_log_size = components.composition_log_degree_bound(); tracing::info!( diff --git a/crates/stwo/src/prover/air/component_prover.rs b/crates/stwo/src/prover/air/component_prover.rs index 3bb8ea72a..b10cf9447 100644 --- a/crates/stwo/src/prover/air/component_prover.rs +++ b/crates/stwo/src/prover/air/component_prover.rs @@ -93,6 +93,7 @@ impl ComponentProvers<'_, B> { .map(|c| *c as &dyn Component) .collect_vec(), n_preprocessed_columns: self.n_preprocessed_columns, + all_preprocessed_columns: false, } } pub fn compute_composition_polynomial(