diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components.cairo index 51669b35b..e3193259f 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/components.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/components.cairo @@ -6,7 +6,6 @@ use stwo_verifier_core::fields::qm31::QM31; pub mod addr_to_id; pub mod genericopcode; pub mod id_to_f252; -pub mod jump_t_t_f_opcode; pub mod range_check; pub mod ret_opcode; pub mod verify_instruction; diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jump_t_t_f_opcode.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_t_t_f_opcode.cairo deleted file mode 100644 index a781e756f..000000000 --- a/stwo_cairo_verifier/crates/cairo_air/src/components/jump_t_t_f_opcode.cairo +++ /dev/null @@ -1,249 +0,0 @@ -use crate::components::CairoComponent; -use crate::utils::U32Impl; -use stwo_constraint_framework::{ - ClaimedPrefixSum, PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, - PreprocessedMaskValuesImpl, -}; -use stwo_verifier_core::channel::{Channel, ChannelImpl}; -use stwo_verifier_core::circle::CirclePoint; -use stwo_verifier_core::fields::qm31::{QM31, QM31Zero, QM31_EXTENSION_DEGREE}; -use stwo_verifier_core::poly::circle::CanonicCosetImpl; -use stwo_verifier_core::utils::ArrayImpl; -use stwo_verifier_core::{ColumnArray, ColumnSpan, TreeArray}; -use super::super::Invertible; - -mod constraints; - -#[derive(Drop, Serde, Copy)] -pub struct Claim { - n_calls: u32, -} - -#[generate_trait] -pub impl ClaimImpl of ClaimTrait { - fn log_size(self: @Claim) -> u32 { - (*self.n_calls).next_power_of_two().ilog2() - } - - fn log_sizes(self: @Claim) -> TreeArray> { - let log_size = self.log_size(); - let preprocessed_log_sizes = array![log_size].span(); - let trace_log_sizes = ArrayImpl::new_repeated(10, log_size).span(); - let interaction_log_sizes = ArrayImpl::new_repeated(QM31_EXTENSION_DEGREE * 3, log_size) - .span(); - array![preprocessed_log_sizes, trace_log_sizes, interaction_log_sizes] - } - - fn mix_into(self: @Claim, ref channel: Channel) { - channel.mix_nonce((*self.n_calls).into()); - } -} - -#[derive(Drop, Serde, Copy)] -pub struct InteractionClaim { - pub total_sum: QM31, - pub claimed_sum: Option, -} - -#[generate_trait] -pub impl InteractionClaimImpl of InteractionClaimTrait { - fn mix_into(self: @InteractionClaim, ref channel: Channel) { - channel.mix_felts([*self.total_sum].span()); - if let Option::Some((sum_at_index, index)) = *self.claimed_sum { - channel.mix_felts([sum_at_index].span()); - channel.mix_nonce(index.into()); - } - } -} - -#[derive(Drop)] -pub struct Component { - pub claim: Claim, - pub interaction_claim: InteractionClaim, - pub memoryaddresstoid_lookup_elements: super::super::MemoryAddressToIdElements, - pub memoryidtobig_lookup_elements: super::super::MemoryIdToBigElements, - pub verifyinstruction_lookup_elements: super::super::VerifyInstructionElements, - pub opcodes_lookup_elements: super::super::OpcodeElements, -} - -pub impl ComponentImpl of CairoComponent { - fn mask_points( - self: @Component, - ref preprocessed_column_set: PreprocessedColumnSet, - ref trace_mask_points: ColumnArray>>, - ref interaction_trace_mask_points: ColumnArray>>, - point: CirclePoint, - ) { - let log_size = self.claim.log_size(); - let trace_gen = CanonicCosetImpl::new(log_size).coset.step_size; - let claimed_sum_offset = *self.claim.n_calls - 1; - constraints::mask_points( - ref preprocessed_column_set, - ref trace_mask_points, - ref interaction_trace_mask_points, - point, - trace_gen, - claimed_sum_offset, - log_size, - ); - } - - fn max_constraint_log_degree_bound(self: @Component) -> u32 { - self.claim.log_size() + 1 - } - - fn evaluate_constraints_at_point( - self: @Component, - ref sum: QM31, - ref preprocessed_mask_values: PreprocessedMaskValues, - ref trace_mask_values: ColumnSpan>, - ref interaction_trace_mask_values: ColumnSpan>, - random_coeff: QM31, - point: CirclePoint, - ) { - let mut MemoryIdToBig_alpha0_powers = self - .memoryidtobig_lookup_elements - .alpha_powers - .span(); - let MemoryIdToBig_alpha0 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha1 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha2 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha3 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha4 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha5 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha6 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha7 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha8 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha9 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha10 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha11 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha12 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha13 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha14 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha15 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha16 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha17 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha18 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha19 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha20 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha21 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha22 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha23 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha24 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha25 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha26 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha27 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - let MemoryIdToBig_alpha28 = *MemoryIdToBig_alpha0_powers.pop_front().unwrap(); - - let mut addr_to_id_alpha_powers = self - .memoryaddresstoid_lookup_elements - .alpha_powers - .span(); - let addr_to_id_alpha_pow_0 = *addr_to_id_alpha_powers.pop_front().unwrap(); - let addr_to_id_alpha_pow_1 = *addr_to_id_alpha_powers.pop_front().unwrap(); - - let mut verify_instruction_alpha_powers = self - .verifyinstruction_lookup_elements - .alpha_powers - .span(); - let verify_instruction_alpha_pow_0 = *verify_instruction_alpha_powers.pop_front().unwrap(); - let verify_instruction_alpha_pow_1 = *verify_instruction_alpha_powers.pop_front().unwrap(); - let verify_instruction_alpha_pow_2 = *verify_instruction_alpha_powers.pop_front().unwrap(); - let verify_instruction_alpha_pow_3 = *verify_instruction_alpha_powers.pop_front().unwrap(); - let verify_instruction_alpha_pow_4 = *verify_instruction_alpha_powers.pop_front().unwrap(); - let verify_instruction_alpha_pow_5 = *verify_instruction_alpha_powers.pop_front().unwrap(); - let verify_instruction_alpha_pow_6 = *verify_instruction_alpha_powers.pop_front().unwrap(); - let verify_instruction_alpha_pow_7 = *verify_instruction_alpha_powers.pop_front().unwrap(); - let verify_instruction_alpha_pow_8 = *verify_instruction_alpha_powers.pop_front().unwrap(); - let verify_instruction_alpha_pow_9 = *verify_instruction_alpha_powers.pop_front().unwrap(); - let verify_instruction_alpha_pow_10 = *verify_instruction_alpha_powers.pop_front().unwrap(); - let verify_instruction_alpha_pow_11 = *verify_instruction_alpha_powers.pop_front().unwrap(); - let verify_instruction_alpha_pow_12 = *verify_instruction_alpha_powers.pop_front().unwrap(); - let verify_instruction_alpha_pow_13 = *verify_instruction_alpha_powers.pop_front().unwrap(); - let verify_instruction_alpha_pow_14 = *verify_instruction_alpha_powers.pop_front().unwrap(); - let verify_instruction_alpha_pow_15 = *verify_instruction_alpha_powers.pop_front().unwrap(); - - let mut Opcodes_alpha_powers = self.opcodes_lookup_elements.alpha_powers.span(); - let Opcodes_alpha0 = *Opcodes_alpha_powers.pop_front().unwrap(); - let Opcodes_alpha1 = *Opcodes_alpha_powers.pop_front().unwrap(); - let Opcodes_alpha2 = *Opcodes_alpha_powers.pop_front().unwrap(); - let Opcodes_z = *self.opcodes_lookup_elements.z; - - let (claimed_sum, _) = (*self.interaction_claim.claimed_sum).unwrap(); - - let log_size = self.claim.log_size(); - - let params = constraints::ConstraintParams { - MemoryAddressToId_alpha0: addr_to_id_alpha_pow_0, - MemoryAddressToId_alpha1: addr_to_id_alpha_pow_1, - MemoryAddressToId_z: *self.memoryaddresstoid_lookup_elements.z, - MemoryIdToBig_alpha0: MemoryIdToBig_alpha0, - MemoryIdToBig_alpha1: MemoryIdToBig_alpha1, - MemoryIdToBig_alpha10: MemoryIdToBig_alpha10, - MemoryIdToBig_alpha11: MemoryIdToBig_alpha11, - MemoryIdToBig_alpha12: MemoryIdToBig_alpha12, - MemoryIdToBig_alpha13: MemoryIdToBig_alpha13, - MemoryIdToBig_alpha14: MemoryIdToBig_alpha14, - MemoryIdToBig_alpha15: MemoryIdToBig_alpha15, - MemoryIdToBig_alpha16: MemoryIdToBig_alpha16, - MemoryIdToBig_alpha17: MemoryIdToBig_alpha17, - MemoryIdToBig_alpha18: MemoryIdToBig_alpha18, - MemoryIdToBig_alpha19: MemoryIdToBig_alpha19, - MemoryIdToBig_alpha2: MemoryIdToBig_alpha2, - MemoryIdToBig_alpha20: MemoryIdToBig_alpha20, - MemoryIdToBig_alpha21: MemoryIdToBig_alpha21, - MemoryIdToBig_alpha22: MemoryIdToBig_alpha22, - MemoryIdToBig_alpha23: MemoryIdToBig_alpha23, - MemoryIdToBig_alpha24: MemoryIdToBig_alpha24, - MemoryIdToBig_alpha25: MemoryIdToBig_alpha25, - MemoryIdToBig_alpha26: MemoryIdToBig_alpha26, - MemoryIdToBig_alpha27: MemoryIdToBig_alpha27, - MemoryIdToBig_alpha28: MemoryIdToBig_alpha28, - MemoryIdToBig_alpha3: MemoryIdToBig_alpha3, - MemoryIdToBig_alpha4: MemoryIdToBig_alpha4, - MemoryIdToBig_alpha5: MemoryIdToBig_alpha5, - MemoryIdToBig_alpha6: MemoryIdToBig_alpha6, - MemoryIdToBig_alpha7: MemoryIdToBig_alpha7, - MemoryIdToBig_alpha8: MemoryIdToBig_alpha8, - MemoryIdToBig_alpha9: MemoryIdToBig_alpha9, - MemoryIdToBig_z: *self.memoryidtobig_lookup_elements.z, - Opcodes_alpha0: Opcodes_alpha0, - Opcodes_alpha1: Opcodes_alpha1, - Opcodes_alpha2: Opcodes_alpha2, - Opcodes_z: Opcodes_z, - VerifyInstruction_alpha0: verify_instruction_alpha_pow_0, - VerifyInstruction_alpha1: verify_instruction_alpha_pow_1, - VerifyInstruction_alpha10: verify_instruction_alpha_pow_10, - VerifyInstruction_alpha11: verify_instruction_alpha_pow_11, - VerifyInstruction_alpha12: verify_instruction_alpha_pow_12, - VerifyInstruction_alpha13: verify_instruction_alpha_pow_13, - VerifyInstruction_alpha14: verify_instruction_alpha_pow_14, - VerifyInstruction_alpha15: verify_instruction_alpha_pow_15, - VerifyInstruction_alpha2: verify_instruction_alpha_pow_2, - VerifyInstruction_alpha3: verify_instruction_alpha_pow_3, - VerifyInstruction_alpha4: verify_instruction_alpha_pow_4, - VerifyInstruction_alpha5: verify_instruction_alpha_pow_5, - VerifyInstruction_alpha6: verify_instruction_alpha_pow_6, - VerifyInstruction_alpha7: verify_instruction_alpha_pow_7, - VerifyInstruction_alpha8: verify_instruction_alpha_pow_8, - VerifyInstruction_alpha9: verify_instruction_alpha_pow_9, - VerifyInstruction_z: *self.verifyinstruction_lookup_elements.z, - claimed_sum: claimed_sum, - preprocessed_is_first: preprocessed_mask_values - .get(PreprocessedColumn::IsFirst(log_size)), - total_sum: *self.interaction_claim.total_sum, - }; - - let trace_domain = CanonicCosetImpl::new(log_size); - let vanish_eval = trace_domain.eval_vanishing(point); - - constraints::evaluate_constraints_at_point( - ref sum, - ref trace_mask_values, - ref interaction_trace_mask_values, - params, - random_coeff, - vanish_eval.inverse(), - ) - } -} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jump_t_t_f_opcode/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_t_t_f_opcode/constraints.cairo deleted file mode 100644 index a3c3cf58c..000000000 --- a/stwo_cairo_verifier/crates/cairo_air/src/components/jump_t_t_f_opcode/constraints.cairo +++ /dev/null @@ -1,365 +0,0 @@ -use stwo_constraint_framework::{ - PreprocessedColumn, PreprocessedColumnSet, PreprocessedColumnSetImpl, -}; -use stwo_verifier_core::circle::{ - CirclePoint, CirclePointIndex, CirclePointIndexImpl, CirclePointQM31AddCirclePointM31Impl, -}; -use stwo_verifier_core::fields::m31::{M31, m31}; -use stwo_verifier_core::fields::qm31::{QM31, QM31Impl, qm31}; -use stwo_verifier_core::{ColumnArray, ColumnSpan}; - - -pub fn mask_points( - ref preprocessed_column_set: PreprocessedColumnSet, - ref trace_mask_points: ColumnArray>>, - ref interaction_trace_mask_points: ColumnArray>>, - point: CirclePoint, - trace_gen: CirclePointIndex, - claimed_sum_offset: usize, - log_size: u32, -) { - let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).to_point()); - let point_offset_claimed_sum = point - .add_circle_point_m31(trace_gen.mul(claimed_sum_offset).to_point()); - trace_mask_points.append(array![point]); - trace_mask_points.append(array![point]); - trace_mask_points.append(array![point]); - trace_mask_points.append(array![point]); - trace_mask_points.append(array![point]); - trace_mask_points.append(array![point]); - trace_mask_points.append(array![point]); - trace_mask_points.append(array![point]); - trace_mask_points.append(array![point]); - trace_mask_points.append(array![point]); - interaction_trace_mask_points.append(array![point]); - interaction_trace_mask_points.append(array![point]); - interaction_trace_mask_points.append(array![point]); - interaction_trace_mask_points.append(array![point]); - interaction_trace_mask_points.append(array![point]); - interaction_trace_mask_points.append(array![point]); - interaction_trace_mask_points.append(array![point]); - interaction_trace_mask_points.append(array![point]); - interaction_trace_mask_points - .append(array![point_offset_neg_1, point, point_offset_claimed_sum]); - interaction_trace_mask_points - .append(array![point_offset_neg_1, point, point_offset_claimed_sum]); - interaction_trace_mask_points - .append(array![point_offset_neg_1, point, point_offset_claimed_sum]); - interaction_trace_mask_points - .append(array![point_offset_neg_1, point, point_offset_claimed_sum]); -} - -#[derive(Drop)] -pub struct ConstraintParams { - pub MemoryAddressToId_alpha0: QM31, - pub MemoryAddressToId_alpha1: QM31, - pub MemoryAddressToId_z: QM31, - pub MemoryIdToBig_alpha0: QM31, - pub MemoryIdToBig_alpha1: QM31, - pub MemoryIdToBig_alpha10: QM31, - pub MemoryIdToBig_alpha11: QM31, - pub MemoryIdToBig_alpha12: QM31, - pub MemoryIdToBig_alpha13: QM31, - pub MemoryIdToBig_alpha14: QM31, - pub MemoryIdToBig_alpha15: QM31, - pub MemoryIdToBig_alpha16: QM31, - pub MemoryIdToBig_alpha17: QM31, - pub MemoryIdToBig_alpha18: QM31, - pub MemoryIdToBig_alpha19: QM31, - pub MemoryIdToBig_alpha2: QM31, - pub MemoryIdToBig_alpha20: QM31, - pub MemoryIdToBig_alpha21: QM31, - pub MemoryIdToBig_alpha22: QM31, - pub MemoryIdToBig_alpha23: QM31, - pub MemoryIdToBig_alpha24: QM31, - pub MemoryIdToBig_alpha25: QM31, - pub MemoryIdToBig_alpha26: QM31, - pub MemoryIdToBig_alpha27: QM31, - pub MemoryIdToBig_alpha28: QM31, - pub MemoryIdToBig_alpha3: QM31, - pub MemoryIdToBig_alpha4: QM31, - pub MemoryIdToBig_alpha5: QM31, - pub MemoryIdToBig_alpha6: QM31, - pub MemoryIdToBig_alpha7: QM31, - pub MemoryIdToBig_alpha8: QM31, - pub MemoryIdToBig_alpha9: QM31, - pub MemoryIdToBig_z: QM31, - pub Opcodes_alpha0: QM31, - pub Opcodes_alpha1: QM31, - pub Opcodes_alpha2: QM31, - pub Opcodes_z: QM31, - pub VerifyInstruction_alpha0: QM31, - pub VerifyInstruction_alpha1: QM31, - pub VerifyInstruction_alpha10: QM31, - pub VerifyInstruction_alpha11: QM31, - pub VerifyInstruction_alpha12: QM31, - pub VerifyInstruction_alpha13: QM31, - pub VerifyInstruction_alpha14: QM31, - pub VerifyInstruction_alpha15: QM31, - pub VerifyInstruction_alpha2: QM31, - pub VerifyInstruction_alpha3: QM31, - pub VerifyInstruction_alpha4: QM31, - pub VerifyInstruction_alpha5: QM31, - pub VerifyInstruction_alpha6: QM31, - pub VerifyInstruction_alpha7: QM31, - pub VerifyInstruction_alpha8: QM31, - pub VerifyInstruction_alpha9: QM31, - pub VerifyInstruction_z: QM31, - pub claimed_sum: QM31, - pub preprocessed_is_first: QM31, - pub total_sum: QM31, -} - -pub fn evaluate_constraints_at_point( - ref sum: QM31, - ref trace_mask_values: ColumnSpan>, - ref interaction_mask_values: ColumnSpan>, - params: ConstraintParams, - random_coeff: QM31, - domain_vanish_at_point_inv: QM31, -) { - let ConstraintParams { - MemoryAddressToId_alpha0, - MemoryAddressToId_alpha1, - MemoryAddressToId_z, - MemoryIdToBig_alpha0, - MemoryIdToBig_alpha1, - MemoryIdToBig_alpha10, - MemoryIdToBig_alpha11, - MemoryIdToBig_alpha12, - MemoryIdToBig_alpha13, - MemoryIdToBig_alpha14, - MemoryIdToBig_alpha15, - MemoryIdToBig_alpha16, - MemoryIdToBig_alpha17, - MemoryIdToBig_alpha18, - MemoryIdToBig_alpha19, - MemoryIdToBig_alpha2, - MemoryIdToBig_alpha20, - MemoryIdToBig_alpha21, - MemoryIdToBig_alpha22, - MemoryIdToBig_alpha23, - MemoryIdToBig_alpha24, - MemoryIdToBig_alpha25, - MemoryIdToBig_alpha26, - MemoryIdToBig_alpha27, - MemoryIdToBig_alpha28, - MemoryIdToBig_alpha3, - MemoryIdToBig_alpha4, - MemoryIdToBig_alpha5, - MemoryIdToBig_alpha6, - MemoryIdToBig_alpha7, - MemoryIdToBig_alpha8, - MemoryIdToBig_alpha9, - MemoryIdToBig_z, - Opcodes_alpha0, - Opcodes_alpha1, - Opcodes_alpha2, - Opcodes_z, - VerifyInstruction_alpha0, - VerifyInstruction_alpha1, - VerifyInstruction_alpha10, - VerifyInstruction_alpha11, - VerifyInstruction_alpha12, - VerifyInstruction_alpha13, - VerifyInstruction_alpha14, - VerifyInstruction_alpha15, - VerifyInstruction_alpha2, - VerifyInstruction_alpha3, - VerifyInstruction_alpha4, - VerifyInstruction_alpha5, - VerifyInstruction_alpha6, - VerifyInstruction_alpha7, - VerifyInstruction_alpha8, - VerifyInstruction_alpha9, - VerifyInstruction_z, - claimed_sum, - preprocessed_is_first, - total_sum, - } = params; - - let mut trace_1_column_0 = trace_mask_values.pop_front().unwrap().span(); - let trace_1_column_0_offset_0 = *trace_1_column_0.pop_front().unwrap(); - let mut trace_1_column_1 = trace_mask_values.pop_front().unwrap().span(); - let trace_1_column_1_offset_0 = *trace_1_column_1.pop_front().unwrap(); - let mut trace_1_column_2 = trace_mask_values.pop_front().unwrap().span(); - let trace_1_column_2_offset_0 = *trace_1_column_2.pop_front().unwrap(); - let mut trace_1_column_3 = trace_mask_values.pop_front().unwrap().span(); - let trace_1_column_3_offset_0 = *trace_1_column_3.pop_front().unwrap(); - let mut trace_1_column_4 = trace_mask_values.pop_front().unwrap().span(); - let trace_1_column_4_offset_0 = *trace_1_column_4.pop_front().unwrap(); - let mut trace_1_column_5 = trace_mask_values.pop_front().unwrap().span(); - let trace_1_column_5_offset_0 = *trace_1_column_5.pop_front().unwrap(); - let mut trace_1_column_6 = trace_mask_values.pop_front().unwrap().span(); - let trace_1_column_6_offset_0 = *trace_1_column_6.pop_front().unwrap(); - let mut trace_1_column_7 = trace_mask_values.pop_front().unwrap().span(); - let trace_1_column_7_offset_0 = *trace_1_column_7.pop_front().unwrap(); - let mut trace_1_column_8 = trace_mask_values.pop_front().unwrap().span(); - let trace_1_column_8_offset_0 = *trace_1_column_8.pop_front().unwrap(); - let mut trace_1_column_9 = trace_mask_values.pop_front().unwrap().span(); - let trace_1_column_9_offset_0 = *trace_1_column_9.pop_front().unwrap(); - let mut trace_2_column_10 = interaction_mask_values.pop_front().unwrap().span(); - let trace_2_column_10_offset_0 = *trace_2_column_10.pop_front().unwrap(); - let mut trace_2_column_11 = interaction_mask_values.pop_front().unwrap().span(); - let trace_2_column_11_offset_0 = *trace_2_column_11.pop_front().unwrap(); - let mut trace_2_column_12 = interaction_mask_values.pop_front().unwrap().span(); - let trace_2_column_12_offset_0 = *trace_2_column_12.pop_front().unwrap(); - let mut trace_2_column_13 = interaction_mask_values.pop_front().unwrap().span(); - let trace_2_column_13_offset_0 = *trace_2_column_13.pop_front().unwrap(); - let mut trace_2_column_14 = interaction_mask_values.pop_front().unwrap().span(); - let trace_2_column_14_offset_0 = *trace_2_column_14.pop_front().unwrap(); - let mut trace_2_column_15 = interaction_mask_values.pop_front().unwrap().span(); - let trace_2_column_15_offset_0 = *trace_2_column_15.pop_front().unwrap(); - let mut trace_2_column_16 = interaction_mask_values.pop_front().unwrap().span(); - let trace_2_column_16_offset_0 = *trace_2_column_16.pop_front().unwrap(); - let mut trace_2_column_17 = interaction_mask_values.pop_front().unwrap().span(); - let trace_2_column_17_offset_0 = *trace_2_column_17.pop_front().unwrap(); - let mut trace_2_column_18 = interaction_mask_values.pop_front().unwrap().span(); - let trace_2_column_18_offset_neg_1 = *trace_2_column_18.pop_front().unwrap(); - let trace_2_column_18_offset_0 = *trace_2_column_18.pop_front().unwrap(); - let trace_2_column_18_offset_claimed_sum = *trace_2_column_18.pop_front().unwrap(); - let mut trace_2_column_19 = interaction_mask_values.pop_front().unwrap().span(); - let trace_2_column_19_offset_neg_1 = *trace_2_column_19.pop_front().unwrap(); - let trace_2_column_19_offset_0 = *trace_2_column_19.pop_front().unwrap(); - let trace_2_column_19_offset_claimed_sum = *trace_2_column_19.pop_front().unwrap(); - let mut trace_2_column_20 = interaction_mask_values.pop_front().unwrap().span(); - let trace_2_column_20_offset_neg_1 = *trace_2_column_20.pop_front().unwrap(); - let trace_2_column_20_offset_0 = *trace_2_column_20.pop_front().unwrap(); - let trace_2_column_20_offset_claimed_sum = *trace_2_column_20.pop_front().unwrap(); - let mut trace_2_column_21 = interaction_mask_values.pop_front().unwrap().span(); - let trace_2_column_21_offset_neg_1 = *trace_2_column_21.pop_front().unwrap(); - let trace_2_column_21_offset_0 = *trace_2_column_21.pop_front().unwrap(); - let trace_2_column_21_offset_claimed_sum = *trace_2_column_21.pop_front().unwrap(); - let intermediate0 = (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) - + (VerifyInstruction_alpha1) * (qm31(32767, 0, 0, 0)) - + (VerifyInstruction_alpha2) * (qm31(32767, 0, 0, 0)) - + (VerifyInstruction_alpha3) * (qm31(32769, 0, 0, 0)) - + VerifyInstruction_alpha4 - + VerifyInstruction_alpha5 - + VerifyInstruction_alpha6 - + VerifyInstruction_alpha12 - + (VerifyInstruction_alpha15) * (trace_1_column_3_offset_0) - - (VerifyInstruction_z); - - let intermediate1 = (MemoryAddressToId_alpha0) * (trace_1_column_0_offset_0 + m31(1).into()) - + (MemoryAddressToId_alpha1) * (trace_1_column_4_offset_0) - - (MemoryAddressToId_z); - - let intermediate2 = (MemoryIdToBig_alpha0) * (trace_1_column_4_offset_0) - + (MemoryIdToBig_alpha1) * (trace_1_column_7_offset_0) - + (MemoryIdToBig_alpha2) * (trace_1_column_8_offset_0) - + (MemoryIdToBig_alpha3) * (trace_1_column_9_offset_0) - + (MemoryIdToBig_alpha4) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha5) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha6) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha7) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha8) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha9) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha10) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha11) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha12) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha13) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha14) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha15) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha16) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha17) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha18) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha19) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha20) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha21) * ((trace_1_column_6_offset_0) * (m31(511).into())) - + (MemoryIdToBig_alpha22) - * ((m31(136).into()) * (trace_1_column_5_offset_0) - (trace_1_column_6_offset_0)) - + (MemoryIdToBig_alpha28) * ((trace_1_column_5_offset_0) * (m31(256).into())) - - (MemoryIdToBig_z); - - let intermediate3 = (Opcodes_alpha0) * (trace_1_column_0_offset_0) - + (Opcodes_alpha1) * (trace_1_column_1_offset_0) - + (Opcodes_alpha2) * (trace_1_column_2_offset_0) - - (Opcodes_z); - - let intermediate4 = (Opcodes_alpha0) - * (trace_1_column_0_offset_0 - + trace_1_column_7_offset_0 - + (trace_1_column_8_offset_0) * (m31(512).into()) - + (trace_1_column_9_offset_0) * (m31(262144).into()) - - (trace_1_column_5_offset_0) - - ((m31(134217728).into()) * (trace_1_column_6_offset_0))) - + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + trace_1_column_3_offset_0) - + (Opcodes_alpha2) * (trace_1_column_2_offset_0) - - (Opcodes_z); - - let constraint_0 = (trace_1_column_5_offset_0) * (trace_1_column_5_offset_0 - (m31(1).into())); - - let constraint_1 = (trace_1_column_6_offset_0) * (trace_1_column_6_offset_0 - (m31(1).into())); - - let constraint_2 = (trace_1_column_6_offset_0) * (trace_1_column_5_offset_0 - (m31(1).into())); - - let constraint_3 = (QM31Impl::from_partial_evals( - [ - trace_2_column_10_offset_0, trace_2_column_11_offset_0, trace_2_column_12_offset_0, - trace_2_column_13_offset_0, - ], - )) - * ((intermediate0) * (intermediate1)) - - (intermediate1 + intermediate0); - - let constraint_4 = (QM31Impl::from_partial_evals( - [ - trace_2_column_14_offset_0, trace_2_column_15_offset_0, trace_2_column_16_offset_0, - trace_2_column_17_offset_0, - ], - ) - - (QM31Impl::from_partial_evals( - [ - trace_2_column_10_offset_0, trace_2_column_11_offset_0, trace_2_column_12_offset_0, - trace_2_column_13_offset_0, - ], - ))) - * ((intermediate2) * (intermediate3)) - - (intermediate3 + intermediate2); - - let constraint_5 = (QM31Impl::from_partial_evals( - [ - trace_2_column_18_offset_claimed_sum, trace_2_column_19_offset_claimed_sum, - trace_2_column_20_offset_claimed_sum, trace_2_column_21_offset_claimed_sum, - ], - ) - - (claimed_sum)) - * (preprocessed_is_first); - - let constraint_6 = (QM31Impl::from_partial_evals( - [ - trace_2_column_18_offset_0, trace_2_column_19_offset_0, trace_2_column_20_offset_0, - trace_2_column_21_offset_0, - ], - ) - - (QM31Impl::from_partial_evals( - [ - trace_2_column_18_offset_neg_1, trace_2_column_19_offset_neg_1, - trace_2_column_20_offset_neg_1, trace_2_column_21_offset_neg_1, - ], - ) - - ((total_sum) * (preprocessed_is_first))) - - (QM31Impl::from_partial_evals( - [ - trace_2_column_14_offset_0, trace_2_column_15_offset_0, trace_2_column_16_offset_0, - trace_2_column_17_offset_0, - ], - ))) - * (intermediate4) - - (qm31(2147483646, 0, 0, 0)); - // TODO: Batch `domain_vanish_at_point_inv` multiplication. - sum = sum * random_coeff + constraint_0 * domain_vanish_at_point_inv; - // TODO: Batch `domain_vanish_at_point_inv` multiplication. - sum = sum * random_coeff + constraint_1 * domain_vanish_at_point_inv; - // TODO: Batch `domain_vanish_at_point_inv` multiplication. - sum = sum * random_coeff + constraint_2 * domain_vanish_at_point_inv; - // TODO: Batch `domain_vanish_at_point_inv` multiplication. - sum = sum * random_coeff + constraint_3 * domain_vanish_at_point_inv; - // TODO: Batch `domain_vanish_at_point_inv` multiplication. - sum = sum * random_coeff + constraint_4 * domain_vanish_at_point_inv; - // TODO: Batch `domain_vanish_at_point_inv` multiplication. - sum = sum * random_coeff + constraint_5 * domain_vanish_at_point_inv; - // TODO: Batch `domain_vanish_at_point_inv` multiplication. - sum = sum * random_coeff + constraint_6 * domain_vanish_at_point_inv; -} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/lib.cairo b/stwo_cairo_verifier/crates/cairo_air/src/lib.cairo index bdba604c5..6acb5855b 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/lib.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/lib.cairo @@ -8,9 +8,6 @@ use components::genericopcode::{ use components::id_to_f252::{ ClaimImpl as IdToF252ClaimImpl, InteractionClaimImpl as IdToF252InteractionClaimImpl, }; -use components::jump_t_t_f_opcode::{ - ClaimImpl as JumpFTClaimImpl, InteractionClaimImpl as JumpFTInteractionClaimImpl, -}; use components::range_check::{ ClaimImpl as RangeCheckClaimImpl, InteractionClaimImpl as RangeCheckInteractionClaimImpl, }; @@ -274,7 +271,7 @@ pub struct OpcodeInteractionClaim { jump_f_f_f: Array::, jump_f_f_t: Array::, jump_t_f_f: Array::, - jump_t_t_f: Array::, + jump_t_t_f: Array::, mul_f_f: Array::, mul_f_t: Array::, ret: Array::, @@ -287,10 +284,6 @@ impl OpcodeInteractionClaimImpl of OpcodeInteractionClaimTrait { interaction_claim.mix_into(ref channel); }; - for interaction_claim in self.jump_t_t_f.span() { - interaction_claim.mix_into(ref channel); - }; - for interaction_claim in self.ret.span() { interaction_claim.mix_into(ref channel); }; @@ -306,13 +299,6 @@ impl OpcodeInteractionClaimImpl of OpcodeInteractionClaimTrait { }; }; - for interaction_claim in self.jump_t_t_f.span() { - sum += match interaction_claim.claimed_sum { - Option::Some((claimed_sum, _)) => *claimed_sum, - Option::None => *interaction_claim.total_sum, - }; - }; - for interaction_claim in self.ret.span() { sum += match interaction_claim.claimed_sum { Option::Some((claimed_sum, _)) => *claimed_sum, @@ -399,7 +385,7 @@ pub struct OpcodeClaim { pub jump_f_f_f: Array::, pub jump_f_f_t: Array::, pub jump_t_f_f: Array::, - pub jump_t_t_f: Array::, + pub jump_t_t_f: Array::, pub mul_f_f: Array::, pub mul_f_t: Array::, pub ret: Array::, @@ -412,10 +398,6 @@ impl OpcodeClaimImpl of OpcodeClaimTrait { generic_opcode_claim.mix_into(ref channel); }; - for jump_t_t_f_opcode_claim in self.jump_t_t_f.span() { - jump_t_t_f_opcode_claim.mix_into(ref channel); - }; - for ret_opcode_claim in self.ret.span() { ret_opcode_claim.mix_into(ref channel); }; @@ -432,10 +414,6 @@ impl OpcodeClaimImpl of OpcodeClaimTrait { log_sizes.append(generic_opcode_claim.log_sizes()); }; - for jump_t_t_f_opcode_claim in self.jump_t_t_f.span() { - log_sizes.append(jump_t_t_f_opcode_claim.log_sizes()); - }; - utils::tree_array_concat_cols(log_sizes) } } @@ -784,7 +762,6 @@ fn preprocessed_trace_mask_points( pub struct OpcodeComponents { generic: Array, ret: Array, - jump_t_t_f: Array, } #[generate_trait] @@ -820,18 +797,7 @@ impl OpcodeComponentsImpl of OpcodeComponentsTrait { // opcodes_lookup_elements: interaction_elements.opcodes.clone(), // }; - let jump_t_t_f_opcode_component = components::jump_t_t_f_opcode::Component { - claim: *claim.jump_t_t_f[0], - interaction_claim: *interaction_claim.jump_t_t_f[0], - memoryaddresstoid_lookup_elements: interaction_elements.memory_addr_to_id.clone(), - memoryidtobig_lookup_elements: interaction_elements.memory_id_to_value.clone(), - verifyinstruction_lookup_elements: interaction_elements.verify_instruction.clone(), - opcodes_lookup_elements: interaction_elements.opcodes.clone(), - }; - - OpcodeComponents { - generic: array![], ret: array![], jump_t_t_f: array![jump_t_t_f_opcode_component], - } + OpcodeComponents { generic: array![], ret: array![] } } fn mask_points( @@ -860,16 +826,6 @@ impl OpcodeComponentsImpl of OpcodeComponentsTrait { point, ); }; - - for component in self.jump_t_t_f.span() { - component - .mask_points( - ref preprocessed_column_set, - ref trace_mask_points, - ref interaction_trace_mask_points, - point, - ); - }; } fn max_constraint_log_degree_bound(self: @OpcodeComponents) -> u32 { @@ -918,17 +874,5 @@ impl OpcodeComponentsImpl of OpcodeComponentsTrait { point, ); }; - - for component in self.jump_t_t_f.span() { - component - .evaluate_constraints_at_point( - ref sum, - ref preprocessed_mask_values, - ref trace_mask_values, - ref interaction_trace_mask_values, - random_coeff, - point, - ); - }; } }