diff --git a/air/src/air/context.rs b/air/src/air/context.rs index f8d9c505c..a90c6637e 100644 --- a/air/src/air/context.rs +++ b/air/src/air/context.rs @@ -265,11 +265,6 @@ impl AirContext { self.logup_gkr } - /// Returns true if the auxiliary trace segment contains a Lagrange kernel column - pub fn is_with_logup_gkr(&self) -> bool { - self.logup_gkr - } - /// Returns the total number of assertions defined for a computation, excluding the Lagrange /// kernel assertion, which is managed separately. /// diff --git a/air/src/air/mod.rs b/air/src/air/mod.rs index 156f59f58..f104eb6cc 100644 --- a/air/src/air/mod.rs +++ b/air/src/air/mod.rs @@ -37,7 +37,7 @@ pub use lagrange::{ mod logup_gkr; pub use logup_gkr::{ - LogUpGkrEvaluator, LogUpGkrOracle, PhantomLogUpGkrEval, LAGRANGE_KERNEL_OFFSET, S_COLUMN_OFFSET, + LogUpGkrEvaluator, LogUpGkrOracle, LAGRANGE_KERNEL_OFFSET, S_COLUMN_OFFSET, }; mod coefficients; diff --git a/air/src/lib.rs b/air/src/lib.rs index 6c82362a9..050801a4e 100644 --- a/air/src/lib.rs +++ b/air/src/lib.rs @@ -47,7 +47,7 @@ pub use air::{ DeepCompositionCoefficients, EvaluationFrame, GkrData, LagrangeConstraintsCompositionCoefficients, LagrangeKernelBoundaryConstraint, LagrangeKernelConstraints, LagrangeKernelEvaluationFrame, LagrangeKernelRandElements, - LagrangeKernelTransitionConstraints, LogUpGkrEvaluator, LogUpGkrOracle, PhantomLogUpGkrEval, + LagrangeKernelTransitionConstraints, LogUpGkrEvaluator, LogUpGkrOracle, TraceInfo, TransitionConstraintDegree, TransitionConstraints, LAGRANGE_KERNEL_OFFSET, S_COLUMN_OFFSET, }; diff --git a/prover/src/constraints/evaluator/logup_gkr.rs b/prover/src/constraints/evaluator/logup_gkr.rs index 0ed5b2c75..46d27846b 100644 --- a/prover/src/constraints/evaluator/logup_gkr.rs +++ b/prover/src/constraints/evaluator/logup_gkr.rs @@ -71,7 +71,7 @@ where let mut lagrange_frame = LagrangeKernelEvaluationFrame::new_empty(); - let evaluator = self.air.get_logup_gkr_evaluator::(); + let evaluator = self.air.get_logup_gkr_evaluator(); let s_col_constraint_divisor = compute_s_col_divisor::(domain.ce_domain_size(), domain, self.air.trace_length()); let s_col_idx = trace.trace_info().aux_segment_width() - S_COLUMN_OFFSET; diff --git a/prover/src/lib.rs b/prover/src/lib.rs index 45b133146..a94306fab 100644 --- a/prover/src/lib.rs +++ b/prover/src/lib.rs @@ -208,7 +208,7 @@ pub trait Prover { fn build_aux_trace( &self, main_trace: &Self::Trace, - aux_rand_elements: &AuxRandElements, + aux_rand_elements: &[E], ) -> ColMatrix where E: FieldElement, diff --git a/prover/src/logup_gkr/prover.rs b/prover/src/logup_gkr/prover.rs index eac7c3470..9fc8fe175 100644 --- a/prover/src/logup_gkr/prover.rs +++ b/prover/src/logup_gkr/prover.rs @@ -79,7 +79,7 @@ pub fn prove_gkr( build_mls_from_main_trace_segment(evaluator.get_oracles(), main_trace.main_segment())?; let final_layer_proof = - prove_input_layer(evaluator, logup_randomness, &mut main_trace_mls, gkr_claim, public_coin)?; + prove_input_layer(evaluator, logup_randomness, main_trace_mls, gkr_claim, public_coin)?; Ok(GkrCircuitProof { circuit_outputs: CircuitOutput { numerators, denominators }, diff --git a/prover/src/tests/mod.rs b/prover/src/tests/mod.rs index cc3c39ae1..d42ebdcfe 100644 --- a/prover/src/tests/mod.rs +++ b/prover/src/tests/mod.rs @@ -6,7 +6,7 @@ use alloc::vec::Vec; use air::{ - Air, AirContext, Assertion, EvaluationFrame, FieldExtension, PhantomLogUpGkrEval, ProofOptions, + Air, AirContext, Assertion, EvaluationFrame, FieldExtension, ProofOptions, TraceInfo, TransitionConstraintDegree, }; use math::{fields::f64::BaseElement, FieldElement, StarkField}; @@ -104,13 +104,6 @@ impl Air for MockAir { fn get_periodic_column_values(&self) -> Vec> { self.periodic_columns.clone() } - - fn get_logup_gkr_evaluator( - &self, - ) -> impl air::LogUpGkrEvaluator - { - PhantomLogUpGkrEval::default() - } } // HELPER FUNCTIONS diff --git a/verifier/src/evaluator.rs b/verifier/src/evaluator.rs index b66eb931f..2ca0c8181 100644 --- a/verifier/src/evaluator.rs +++ b/verifier/src/evaluator.rs @@ -132,8 +132,8 @@ pub fn evaluate_constraints>( .mul_base(E::BaseField::ONE / E::BaseField::from(air.trace_length() as u32)); let mut query = - vec![E::ZERO; air.get_logup_gkr_evaluator::().get_oracles().len()]; - air.get_logup_gkr_evaluator::().build_query( + vec![E::ZERO; air.get_logup_gkr_evaluator().get_oracles().len()]; + air.get_logup_gkr_evaluator().build_query( main_trace_frame, &[], &mut query, diff --git a/verifier/src/logup_gkr/mod.rs b/verifier/src/logup_gkr/mod.rs index 1a4324bf3..e317e0ab1 100644 --- a/verifier/src/logup_gkr/mod.rs +++ b/verifier/src/logup_gkr/mod.rs @@ -113,38 +113,3 @@ pub enum VerifierError { #[error("failed to verify the sum-check proof")] FailedToVerifySumCheck(#[from] SumCheckVerifierError), } - -// UNIVARIATE IOP FOR MULTI-LINEAR EVALUATION -// =============================================================================================== - -/// Generates the batching randomness used to batch a number of multi-linear evaluation claims. -/// -/// This is the $\lambda$ randomness in section 5.2 in [1] but using different random values for -/// each term instead of powers of a single random element. -/// -/// [1]: https://eprint.iacr.org/2023/1284 -pub fn generate_gkr_randomness< - E: FieldElement, - C: RandomCoin, - H: ElementHasher, ->( - final_opening_claim: FinalOpeningClaim, - oracles: &[LogUpGkrOracle], - public_coin: &mut C, -) -> GkrData { - let FinalOpeningClaim { eval_point, openings } = final_opening_claim; - - public_coin.reseed(H::hash_elements(&openings)); - - let mut batching_randomness = Vec::with_capacity(openings.len() - 1); - for _ in 0..openings.len() - 1 { - batching_randomness.push(public_coin.draw().expect("failed to generate randomness")) - } - - GkrData::new( - LagrangeKernelRandElements::new(eval_point), - batching_randomness, - openings, - oracles.to_vec(), - ) -}