diff --git a/air/src/air/lagrange/mod.rs b/air/src/air/lagrange/mod.rs index a4e5ddfe9..f2ffef129 100644 --- a/air/src/air/lagrange/mod.rs +++ b/air/src/air/lagrange/mod.rs @@ -14,6 +14,7 @@ use crate::{AirContext, LagrangeConstraintsCompositionCoefficients}; pub struct LagrangeKernelConstraints { pub transition: LagrangeKernelTransitionConstraints, pub boundary: LagrangeKernelBoundaryConstraint, + pub lagrange_kernel_col_idx: usize, } impl LagrangeKernelConstraints { @@ -22,6 +23,7 @@ impl LagrangeKernelConstraints { context: &AirContext, lagrange_composition_coefficients: LagrangeConstraintsCompositionCoefficients, lagrange_kernel_rand_elements: &[E], + lagrange_kernel_col_idx: usize, ) -> Self { Self { transition: LagrangeKernelTransitionConstraints::new( @@ -32,6 +34,7 @@ impl LagrangeKernelConstraints { lagrange_composition_coefficients.boundary, lagrange_kernel_rand_elements, ), + lagrange_kernel_col_idx, } } } diff --git a/air/src/air/mod.rs b/air/src/air/mod.rs index 31f716ad1..89fc1423c 100644 --- a/air/src/air/mod.rs +++ b/air/src/air/mod.rs @@ -299,15 +299,14 @@ pub trait Air: Send + Sync { lagrange_composition_coefficients: LagrangeConstraintsCompositionCoefficients, lagrange_kernel_rand_elements: &[E], ) -> Option> { - if self.context().has_lagrange_kernel_aux_column() { - Some(LagrangeKernelConstraints::new( + self.context().lagrange_kernel_aux_column_idx().map(|col_idx| { + LagrangeKernelConstraints::new( self.context(), lagrange_composition_coefficients, lagrange_kernel_rand_elements, - )) - } else { - None - } + col_idx, + ) + }) } /// Returns values for all periodic columns used in the computation. diff --git a/prover/src/constraints/evaluator/default.rs b/prover/src/constraints/evaluator/default.rs index c914156a5..349e6659d 100644 --- a/prover/src/constraints/evaluator/default.rs +++ b/prover/src/constraints/evaluator/default.rs @@ -300,19 +300,9 @@ where trace: &T, domain: &StarkDomain, ) -> Option> { - self.lagrange_constraints_evaluator.as_ref().map(|evaluator| { - let lagrange_kernel_aux_column_idx = self - .air - .context() - .lagrange_kernel_aux_column_idx() - .expect("expected Lagrange kernel aux column index to be present"); - - evaluator.evaluate_lagrange_kernel_constraints( - trace, - lagrange_kernel_aux_column_idx, - domain, - ) - }) + self.lagrange_constraints_evaluator + .as_ref() + .map(|evaluator| evaluator.evaluate_lagrange_kernel_constraints(trace, domain)) } // TRANSITION CONSTRAINT EVALUATORS diff --git a/prover/src/constraints/evaluator/lagrange.rs b/prover/src/constraints/evaluator/lagrange.rs index 42842292f..40dee1796 100644 --- a/prover/src/constraints/evaluator/lagrange.rs +++ b/prover/src/constraints/evaluator/lagrange.rs @@ -46,7 +46,6 @@ impl LagrangeKernelConstraintsBatchEvaluator { pub fn evaluate_lagrange_kernel_constraints( &self, trace: &T, - lagrange_kernel_column_idx: usize, domain: &StarkDomain, ) -> Vec where @@ -68,7 +67,7 @@ impl LagrangeKernelConstraintsBatchEvaluator { // compute Lagrange kernel frame trace.read_lagrange_kernel_frame_into( step << lde_shift, - lagrange_kernel_column_idx, + self.lagrange_kernel_constraints.lagrange_kernel_col_idx, &mut frame, );