diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components.cairo index 00442c747..28aa7819d 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/components.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/components.cairo @@ -3,9 +3,32 @@ use stwo_verifier_core::ColumnSpan; use stwo_verifier_core::circle::CirclePoint; use stwo_verifier_core::fields::qm31::QM31; +pub mod add_ap_opcode; +pub mod add_ap_opcode_imm; +pub mod add_ap_opcode_op_1_base_fp; +pub mod add_opcode; +pub mod add_opcode_imm; +pub mod add_opcode_small; +pub mod add_opcode_small_imm; +pub mod assert_eq_opcode; +pub mod assert_eq_opcode_double_deref; +pub mod assert_eq_opcode_imm; +pub mod call_opcode; +pub mod call_opcode_op_1_base_fp; +pub mod call_opcode_rel; +// pub mod generic_opcode; +pub mod jnz_opcode; +pub mod jnz_opcode_dst_base_fp; +pub mod jnz_opcode_taken; +pub mod jnz_opcode_taken_dst_base_fp; +pub mod jump_opcode; +pub mod jump_opcode_double_deref; +pub mod jump_opcode_rel; +pub mod jump_opcode_rel_imm; pub mod memory_address_to_id; -pub mod generic_opcode; pub mod memory_id_to_big; +pub mod mul_opcode; +pub mod mul_opcode_imm; pub mod range_check_vector; pub mod ret_opcode; pub mod verify_instruction; diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode.cairo new file mode 100644 index 000000000..b9ce6f45e --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode.cairo @@ -0,0 +1,240 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha8, + VerifyInstruction_alpha14, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_alpha10, + MemoryIdToBig_alpha11, + MemoryIdToBig_alpha12, + MemoryIdToBig_alpha13, + MemoryIdToBig_alpha14, + MemoryIdToBig_alpha15, + MemoryIdToBig_alpha16, + MemoryIdToBig_alpha17, + MemoryIdToBig_alpha18, + MemoryIdToBig_alpha19, + MemoryIdToBig_alpha20, + MemoryIdToBig_alpha21, + MemoryIdToBig_alpha22, + MemoryIdToBig_alpha28, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode/constraints.cairo new file mode 100644 index 000000000..94d557810 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode/constraints.cairo @@ -0,0 +1,753 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_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_alpha14: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha4: QM31, + pub VerifyInstruction_alpha5: QM31, + pub VerifyInstruction_alpha8: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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_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_alpha14, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha8, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_11_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_12_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_13_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_14_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_15_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_16_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_17_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_18_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_19_offset_neg_1, trace_2_column_19_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_20_offset_neg_1, trace_2_column_20_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_21_offset_neg_1, trace_2_column_21_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_22_offset_neg_1, trace_2_column_22_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + 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_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_alpha14, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha8, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_10_offset_0) * (trace_1_column_10_offset_0) + - (trace_1_column_10_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = ((trace_1_column_5_offset_0) + * (trace_1_column_5_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = ((trace_1_column_6_offset_0) + * (trace_1_column_6_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((trace_1_column_6_offset_0) + * (trace_1_column_5_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_11_offset_0, trace_2_column_12_offset_0, trace_2_column_13_offset_0, + trace_2_column_14_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_15_offset_0, trace_2_column_16_offset_0, trace_2_column_17_offset_0, + trace_2_column_18_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_11_offset_0, trace_2_column_12_offset_0, trace_2_column_13_offset_0, + trace_2_column_14_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + (intermediate2) * (trace_1_column_10_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_19_offset_0, trace_2_column_20_offset_0, trace_2_column_21_offset_0, + trace_2_column_22_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_19_offset_neg_1, trace_2_column_20_offset_neg_1, + trace_2_column_21_offset_neg_1, trace_2_column_22_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_15_offset_0, trace_2_column_16_offset_0, trace_2_column_17_offset_0, + trace_2_column_18_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate4) + + trace_1_column_10_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha14: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha14, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha8, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_1_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + ); + + let intermediate2 = intermediate2( + 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_alpha28, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_z, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate3 = intermediate3( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate4 = intermediate4( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + array![intermediate0, intermediate1, intermediate2, intermediate3, intermediate4] +} + + +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha14: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (qm31(32767, 0, 0, 0)) + + (VerifyInstruction_alpha2) * (qm31(32767, 0, 0, 0)) + + (VerifyInstruction_alpha3) * (trace_1_column_3_offset_0) + + VerifyInstruction_alpha4 + + VerifyInstruction_alpha5 + + VerifyInstruction_alpha8 + + VerifyInstruction_alpha14 + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_1_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_4_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate3( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate4( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) * (trace_1_column_0_offset_0 + m31(1).into()) + + (Opcodes_alpha1) + * (trace_1_column_1_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_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode_imm.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode_imm.cairo new file mode 100644 index 000000000..943ae2976 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode_imm.cairo @@ -0,0 +1,240 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(9, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha14, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_alpha10, + MemoryIdToBig_alpha11, + MemoryIdToBig_alpha12, + MemoryIdToBig_alpha13, + MemoryIdToBig_alpha14, + MemoryIdToBig_alpha15, + MemoryIdToBig_alpha16, + MemoryIdToBig_alpha17, + MemoryIdToBig_alpha18, + MemoryIdToBig_alpha19, + MemoryIdToBig_alpha20, + MemoryIdToBig_alpha21, + MemoryIdToBig_alpha22, + MemoryIdToBig_alpha28, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode_imm/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode_imm/constraints.cairo new file mode 100644 index 000000000..145dece50 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode_imm/constraints.cairo @@ -0,0 +1,737 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_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_alpha14: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha4: QM31, + pub VerifyInstruction_alpha5: QM31, + pub VerifyInstruction_alpha6: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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_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_alpha14, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_10_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_11_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_12_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_13_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_14_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_15_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_16_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_17_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_18_offset_neg_1, trace_2_column_18_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_19_offset_neg_1, trace_2_column_19_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_20_offset_neg_1, trace_2_column_20_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_21_offset_neg_1, trace_2_column_21_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + 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_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_alpha14, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_9_offset_0) * (trace_1_column_9_offset_0) + - (trace_1_column_9_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = ((trace_1_column_4_offset_0) + * (trace_1_column_4_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = ((trace_1_column_5_offset_0) + * (trace_1_column_5_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((trace_1_column_5_offset_0) + * (trace_1_column_4_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((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)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((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) * (trace_1_column_9_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((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, + ], + )) + - (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, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate4) + + trace_1_column_9_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha14: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, +) -> Array { + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha14, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + ); + + let intermediate2 = intermediate2( + 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_alpha28, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_z, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + ); + + let intermediate3 = intermediate3( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate4 = intermediate4( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + ); + array![intermediate0, intermediate1, intermediate2, intermediate3, intermediate4] +} + + +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha14: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, +) -> QM31 { + (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_alpha14 + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) * (trace_1_column_0_offset_0 + m31(1).into()) + + (MemoryAddressToId_alpha1) * (trace_1_column_3_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_3_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_6_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_7_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_8_offset_0) + + (MemoryIdToBig_alpha4) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha5) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha6) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha7) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha8) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha9) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha10) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha11) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha12) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha13) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha14) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha15) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha16) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha17) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha18) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha19) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha20) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha21) * ((trace_1_column_5_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha22) + * ((m31(136).into()) * (trace_1_column_4_offset_0) - (trace_1_column_5_offset_0)) + + (MemoryIdToBig_alpha28) * ((trace_1_column_4_offset_0) * (m31(256).into())) + - (MemoryIdToBig_z) +} + +pub fn intermediate3( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate4( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) * (trace_1_column_0_offset_0 + m31(2).into()) + + (Opcodes_alpha1) + * (trace_1_column_1_offset_0 + + trace_1_column_6_offset_0 + + (trace_1_column_7_offset_0) * (m31(512).into()) + + (trace_1_column_8_offset_0) * (m31(262144).into()) + - (trace_1_column_4_offset_0) + - ((m31(134217728).into()) * (trace_1_column_5_offset_0))) + + (Opcodes_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode_op_1_base_fp.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode_op_1_base_fp.cairo new file mode 100644 index 000000000..b1b2116b4 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode_op_1_base_fp.cairo @@ -0,0 +1,240 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha14, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_alpha10, + MemoryIdToBig_alpha11, + MemoryIdToBig_alpha12, + MemoryIdToBig_alpha13, + MemoryIdToBig_alpha14, + MemoryIdToBig_alpha15, + MemoryIdToBig_alpha16, + MemoryIdToBig_alpha17, + MemoryIdToBig_alpha18, + MemoryIdToBig_alpha19, + MemoryIdToBig_alpha20, + MemoryIdToBig_alpha21, + MemoryIdToBig_alpha22, + MemoryIdToBig_alpha28, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode_op_1_base_fp/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode_op_1_base_fp/constraints.cairo new file mode 100644 index 000000000..3246c108a --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/add_ap_opcode_op_1_base_fp/constraints.cairo @@ -0,0 +1,753 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_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_alpha14: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha4: QM31, + pub VerifyInstruction_alpha5: QM31, + pub VerifyInstruction_alpha7: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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_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_alpha14, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_11_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_12_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_13_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_14_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_15_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_16_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_17_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_18_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_19_offset_neg_1, trace_2_column_19_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_20_offset_neg_1, trace_2_column_20_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_21_offset_neg_1, trace_2_column_21_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_22_offset_neg_1, trace_2_column_22_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + 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_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_alpha14, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_10_offset_0) * (trace_1_column_10_offset_0) + - (trace_1_column_10_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = ((trace_1_column_5_offset_0) + * (trace_1_column_5_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = ((trace_1_column_6_offset_0) + * (trace_1_column_6_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((trace_1_column_6_offset_0) + * (trace_1_column_5_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_11_offset_0, trace_2_column_12_offset_0, trace_2_column_13_offset_0, + trace_2_column_14_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_15_offset_0, trace_2_column_16_offset_0, trace_2_column_17_offset_0, + trace_2_column_18_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_11_offset_0, trace_2_column_12_offset_0, trace_2_column_13_offset_0, + trace_2_column_14_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + (intermediate2) * (trace_1_column_10_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_19_offset_0, trace_2_column_20_offset_0, trace_2_column_21_offset_0, + trace_2_column_22_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_19_offset_neg_1, trace_2_column_20_offset_neg_1, + trace_2_column_21_offset_neg_1, trace_2_column_22_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_15_offset_0, trace_2_column_16_offset_0, trace_2_column_17_offset_0, + trace_2_column_18_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate4) + + trace_1_column_10_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha14: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha14, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + ); + + let intermediate2 = intermediate2( + 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_alpha28, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_z, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate3 = intermediate3( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate4 = intermediate4( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + array![intermediate0, intermediate1, intermediate2, intermediate3, intermediate4] +} + + +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha14: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (qm31(32767, 0, 0, 0)) + + (VerifyInstruction_alpha2) * (qm31(32767, 0, 0, 0)) + + (VerifyInstruction_alpha3) * (trace_1_column_3_offset_0) + + VerifyInstruction_alpha4 + + VerifyInstruction_alpha5 + + VerifyInstruction_alpha7 + + VerifyInstruction_alpha14 + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_2_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_4_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate3( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate4( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) * (trace_1_column_0_offset_0 + m31(1).into()) + + (Opcodes_alpha1) + * (trace_1_column_1_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_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode.cairo new file mode 100644 index 000000000..eaf71ac18 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode.cairo @@ -0,0 +1,248 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(102, log_size).span(); + let interaction_log_sizes = ArrayImpl::new_repeated(QM31_EXTENSION_DEGREE * 5, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_alpha9, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_alpha10, + MemoryIdToBig_alpha11, + MemoryIdToBig_alpha12, + MemoryIdToBig_alpha13, + MemoryIdToBig_alpha14, + MemoryIdToBig_alpha15, + MemoryIdToBig_alpha16, + MemoryIdToBig_alpha17, + MemoryIdToBig_alpha18, + MemoryIdToBig_alpha19, + MemoryIdToBig_alpha20, + MemoryIdToBig_alpha21, + MemoryIdToBig_alpha22, + MemoryIdToBig_alpha23, + MemoryIdToBig_alpha24, + MemoryIdToBig_alpha25, + MemoryIdToBig_alpha26, + MemoryIdToBig_alpha27, + MemoryIdToBig_alpha28, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode/constraints.cairo new file mode 100644 index 000000000..b3e246744 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode/constraints.cairo @@ -0,0 +1,3125 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_alpha15: QM31, + pub VerifyInstruction_alpha18: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha4: QM31, + pub VerifyInstruction_alpha5: QM31, + pub VerifyInstruction_alpha7: QM31, + pub VerifyInstruction_alpha8: QM31, + pub VerifyInstruction_alpha9: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_alpha9, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_13_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_14_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_15_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_16_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_17_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_18_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_19_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_20_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_21_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_22_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_23_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_24_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_25_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_26_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_27_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_28_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_29_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_30_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_31_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_32_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_33_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_34_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_35_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_36_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_37_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_38_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_39_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_40_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_41_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_42_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_43_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_44_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_45_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_46_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_47_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_48_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_49_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_50_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_51_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_52_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_53_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_54_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_55_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_56_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_57_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_58_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_59_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_60_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_61_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_62_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_63_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_64_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_65_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_66_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_67_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_68_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_69_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_70_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_71_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_72_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_73_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_74_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_75_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_76_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_77_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_78_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_79_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_80_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_81_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_82_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_83_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_84_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_85_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_86_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_87_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_88_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_89_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_90_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_91_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_92_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_93_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_94_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_95_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_96_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_97_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_98_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_99_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_100_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_101_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_102_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_103_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_104_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_105_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_106_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_107_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_108_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_109_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_110_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_111_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_112_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_113_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_114_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_115_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_116_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_117_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_118_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_119_offset_neg_1, trace_2_column_119_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_120_offset_neg_1, trace_2_column_120_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_121_offset_neg_1, trace_2_column_121_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_122_offset_neg_1, trace_2_column_122_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + 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_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_alpha9, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_1_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_2_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_34_offset_0, + trace_1_column_35_offset_0, + trace_1_column_36_offset_0, + trace_1_column_37_offset_0, + trace_1_column_38_offset_0, + trace_1_column_39_offset_0, + trace_1_column_3_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_4_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_5_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_6_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_7_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_8_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + let intermediate5 = *intermediates.pop_front().unwrap(); + let intermediate6 = *intermediates.pop_front().unwrap(); + let intermediate7 = *intermediates.pop_front().unwrap(); + let intermediate8 = *intermediates.pop_front().unwrap(); + let intermediate9 = *intermediates.pop_front().unwrap(); + let intermediate10 = *intermediates.pop_front().unwrap(); + let intermediate11 = *intermediates.pop_front().unwrap(); + let intermediate12 = *intermediates.pop_front().unwrap(); + let intermediate13 = *intermediates.pop_front().unwrap(); + let intermediate14 = *intermediates.pop_front().unwrap(); + let intermediate15 = *intermediates.pop_front().unwrap(); + let intermediate16 = *intermediates.pop_front().unwrap(); + let intermediate17 = *intermediates.pop_front().unwrap(); + let intermediate18 = *intermediates.pop_front().unwrap(); + let intermediate19 = *intermediates.pop_front().unwrap(); + let intermediate20 = *intermediates.pop_front().unwrap(); + let intermediate21 = *intermediates.pop_front().unwrap(); + let intermediate22 = *intermediates.pop_front().unwrap(); + let intermediate23 = *intermediates.pop_front().unwrap(); + let intermediate24 = *intermediates.pop_front().unwrap(); + let intermediate25 = *intermediates.pop_front().unwrap(); + let intermediate26 = *intermediates.pop_front().unwrap(); + let intermediate27 = *intermediates.pop_front().unwrap(); + let intermediate28 = *intermediates.pop_front().unwrap(); + let intermediate29 = *intermediates.pop_front().unwrap(); + let intermediate30 = *intermediates.pop_front().unwrap(); + let intermediate31 = *intermediates.pop_front().unwrap(); + let intermediate32 = *intermediates.pop_front().unwrap(); + let intermediate33 = *intermediates.pop_front().unwrap(); + let intermediate34 = *intermediates.pop_front().unwrap(); + let intermediate35 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_102_offset_0) * (trace_1_column_102_offset_0) + - (trace_1_column_102_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = (trace_1_column_11_offset_0 + - ((trace_1_column_6_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_6_offset_0)) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = (trace_1_column_12_offset_0 + - ((trace_1_column_7_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_7_offset_0)) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = (trace_1_column_8_offset_0 + + trace_1_column_9_offset_0 + - (m31(1).into())) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = (trace_1_column_13_offset_0 + - ((trace_1_column_8_offset_0) * (trace_1_column_2_offset_0) + + (trace_1_column_9_offset_0) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((trace_1_column_101_offset_0) + * (trace_1_column_101_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((intermediate7) + * ((intermediate7) * (intermediate7) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 7 + let constraint_quotient = ((intermediate8) + * ((intermediate8) * (intermediate8) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 8 + let constraint_quotient = ((intermediate9) + * ((intermediate9) * (intermediate9) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 9 + let constraint_quotient = ((intermediate10) + * ((intermediate10) * (intermediate10) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 10 + let constraint_quotient = ((intermediate11) + * ((intermediate11) * (intermediate11) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 11 + let constraint_quotient = ((intermediate12) + * ((intermediate12) * (intermediate12) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 12 + let constraint_quotient = ((intermediate13) + * ((intermediate13) * (intermediate13) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 13 + let constraint_quotient = ((intermediate14) + * ((intermediate14) * (intermediate14) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 14 + let constraint_quotient = ((intermediate15) + * ((intermediate15) * (intermediate15) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 15 + let constraint_quotient = ((intermediate16) + * ((intermediate16) * (intermediate16) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 16 + let constraint_quotient = ((intermediate17) + * ((intermediate17) * (intermediate17) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 17 + let constraint_quotient = ((intermediate18) + * ((intermediate18) * (intermediate18) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 18 + let constraint_quotient = ((intermediate19) + * ((intermediate19) * (intermediate19) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 19 + let constraint_quotient = ((intermediate20) + * ((intermediate20) * (intermediate20) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 20 + let constraint_quotient = ((intermediate21) + * ((intermediate21) * (intermediate21) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 21 + let constraint_quotient = ((intermediate22) + * ((intermediate22) * (intermediate22) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 22 + let constraint_quotient = ((intermediate23) + * ((intermediate23) * (intermediate23) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 23 + let constraint_quotient = ((intermediate24) + * ((intermediate24) * (intermediate24) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 24 + let constraint_quotient = ((intermediate25) + * ((intermediate25) * (intermediate25) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 25 + let constraint_quotient = ((intermediate26) + * ((intermediate26) * (intermediate26) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 26 + let constraint_quotient = ((intermediate27) + * ((intermediate27) * (intermediate27) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 27 + let constraint_quotient = ((intermediate28) + * ((intermediate28) * (intermediate28) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 28 + let constraint_quotient = ((intermediate29) + * ((intermediate29) * (intermediate29) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 29 + let constraint_quotient = ((intermediate30) + * ((intermediate30) * (intermediate30) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 30 + let constraint_quotient = ((intermediate31) + * ((intermediate31) * (intermediate31) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 31 + let constraint_quotient = ((intermediate32) + * ((intermediate32) * (intermediate32) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 32 + let constraint_quotient = ((intermediate33) + * ((intermediate33) * (intermediate33) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 33 + let constraint_quotient = (trace_1_column_71_offset_0 + + trace_1_column_100_offset_0 + + intermediate33 + - (trace_1_column_42_offset_0) + - ((m31(256).into()) * (trace_1_column_101_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 34 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_103_offset_0, trace_2_column_104_offset_0, trace_2_column_105_offset_0, + trace_2_column_106_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 35 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_107_offset_0, trace_2_column_108_offset_0, trace_2_column_109_offset_0, + trace_2_column_110_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_103_offset_0, trace_2_column_104_offset_0, + trace_2_column_105_offset_0, trace_2_column_106_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + intermediate2)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 36 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_111_offset_0, trace_2_column_112_offset_0, trace_2_column_113_offset_0, + trace_2_column_114_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_107_offset_0, trace_2_column_108_offset_0, + trace_2_column_109_offset_0, trace_2_column_110_offset_0, + ], + ))) + * ((intermediate4) * (intermediate5)) + - (intermediate5 + intermediate4)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 37 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_115_offset_0, trace_2_column_116_offset_0, trace_2_column_117_offset_0, + trace_2_column_118_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_111_offset_0, trace_2_column_112_offset_0, + trace_2_column_113_offset_0, trace_2_column_114_offset_0, + ], + ))) + * ((intermediate6) * (intermediate34)) + - (intermediate34 + (intermediate6) * (trace_1_column_102_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 38 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_119_offset_0, trace_2_column_120_offset_0, trace_2_column_121_offset_0, + trace_2_column_122_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_119_offset_neg_1, trace_2_column_120_offset_neg_1, + trace_2_column_121_offset_neg_1, trace_2_column_122_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_115_offset_0, trace_2_column_116_offset_0, + trace_2_column_117_offset_0, trace_2_column_118_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate35) + + trace_1_column_102_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_alpha9: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_34_offset_0: QM31, + trace_1_column_35_offset_0: QM31, + trace_1_column_36_offset_0: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_38_offset_0: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate7 = intermediate7( + trace_1_column_101_offset_0, + trace_1_column_15_offset_0, + trace_1_column_44_offset_0, + trace_1_column_73_offset_0, + ); + + let intermediate8 = intermediate8( + intermediate7, + trace_1_column_16_offset_0, + trace_1_column_45_offset_0, + trace_1_column_74_offset_0, + ); + + let intermediate9 = intermediate9( + intermediate8, + trace_1_column_17_offset_0, + trace_1_column_46_offset_0, + trace_1_column_75_offset_0, + ); + + let intermediate10 = intermediate10( + intermediate9, + trace_1_column_18_offset_0, + trace_1_column_47_offset_0, + trace_1_column_76_offset_0, + ); + + let intermediate11 = intermediate11( + intermediate10, + trace_1_column_19_offset_0, + trace_1_column_48_offset_0, + trace_1_column_77_offset_0, + ); + + let intermediate12 = intermediate12( + intermediate11, + trace_1_column_20_offset_0, + trace_1_column_49_offset_0, + trace_1_column_78_offset_0, + ); + + let intermediate13 = intermediate13( + intermediate12, + trace_1_column_21_offset_0, + trace_1_column_50_offset_0, + trace_1_column_79_offset_0, + ); + + let intermediate14 = intermediate14( + intermediate13, + trace_1_column_22_offset_0, + trace_1_column_51_offset_0, + trace_1_column_80_offset_0, + ); + + let intermediate15 = intermediate15( + intermediate14, + trace_1_column_23_offset_0, + trace_1_column_52_offset_0, + trace_1_column_81_offset_0, + ); + + let intermediate16 = intermediate16( + intermediate15, + trace_1_column_24_offset_0, + trace_1_column_53_offset_0, + trace_1_column_82_offset_0, + ); + + let intermediate17 = intermediate17( + intermediate16, + trace_1_column_25_offset_0, + trace_1_column_54_offset_0, + trace_1_column_83_offset_0, + ); + + let intermediate18 = intermediate18( + intermediate17, + trace_1_column_26_offset_0, + trace_1_column_55_offset_0, + trace_1_column_84_offset_0, + ); + + let intermediate19 = intermediate19( + intermediate18, + trace_1_column_27_offset_0, + trace_1_column_56_offset_0, + trace_1_column_85_offset_0, + ); + + let intermediate20 = intermediate20( + intermediate19, + trace_1_column_28_offset_0, + trace_1_column_57_offset_0, + trace_1_column_86_offset_0, + ); + + let intermediate21 = intermediate21( + intermediate20, + trace_1_column_29_offset_0, + trace_1_column_58_offset_0, + trace_1_column_87_offset_0, + ); + + let intermediate22 = intermediate22( + intermediate21, + trace_1_column_30_offset_0, + trace_1_column_59_offset_0, + trace_1_column_88_offset_0, + ); + + let intermediate23 = intermediate23( + intermediate22, + trace_1_column_31_offset_0, + trace_1_column_60_offset_0, + trace_1_column_89_offset_0, + ); + + let intermediate24 = intermediate24( + intermediate23, + trace_1_column_32_offset_0, + trace_1_column_61_offset_0, + trace_1_column_90_offset_0, + ); + + let intermediate25 = intermediate25( + intermediate24, + trace_1_column_33_offset_0, + trace_1_column_62_offset_0, + trace_1_column_91_offset_0, + ); + + let intermediate26 = intermediate26( + intermediate25, + trace_1_column_34_offset_0, + trace_1_column_63_offset_0, + trace_1_column_92_offset_0, + ); + + let intermediate27 = intermediate27( + intermediate26, + trace_1_column_35_offset_0, + trace_1_column_64_offset_0, + trace_1_column_93_offset_0, + ); + + let intermediate28 = intermediate28( + intermediate27, + trace_1_column_101_offset_0, + trace_1_column_36_offset_0, + trace_1_column_65_offset_0, + trace_1_column_94_offset_0, + ); + + let intermediate29 = intermediate29( + intermediate28, + trace_1_column_37_offset_0, + trace_1_column_66_offset_0, + trace_1_column_95_offset_0, + ); + + let intermediate30 = intermediate30( + intermediate29, + trace_1_column_38_offset_0, + trace_1_column_67_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate31 = intermediate31( + intermediate30, + trace_1_column_39_offset_0, + trace_1_column_68_offset_0, + trace_1_column_97_offset_0, + ); + + let intermediate32 = intermediate32( + intermediate31, + trace_1_column_40_offset_0, + trace_1_column_69_offset_0, + trace_1_column_98_offset_0, + ); + + let intermediate33 = intermediate33( + intermediate32, + trace_1_column_41_offset_0, + trace_1_column_70_offset_0, + trace_1_column_99_offset_0, + ); + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_alpha9, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_11_offset_0, + trace_1_column_14_offset_0, + trace_1_column_3_offset_0, + ); + + let intermediate2 = intermediate2( + 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, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_34_offset_0, + trace_1_column_35_offset_0, + trace_1_column_36_offset_0, + trace_1_column_37_offset_0, + trace_1_column_38_offset_0, + trace_1_column_39_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + ); + + let intermediate3 = intermediate3( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_12_offset_0, + trace_1_column_43_offset_0, + trace_1_column_4_offset_0, + ); + + let intermediate4 = intermediate4( + 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, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + ); + + let intermediate5 = intermediate5( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_13_offset_0, + trace_1_column_5_offset_0, + trace_1_column_72_offset_0, + ); + + let intermediate6 = intermediate6( + 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, + trace_1_column_100_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate34 = intermediate34( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate35 = intermediate35( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + array![ + intermediate0, + intermediate1, + intermediate2, + intermediate3, + intermediate4, + intermediate5, + intermediate6, + intermediate7, + intermediate8, + intermediate9, + intermediate10, + intermediate11, + intermediate12, + intermediate13, + intermediate14, + intermediate15, + intermediate16, + intermediate17, + intermediate18, + intermediate19, + intermediate20, + intermediate21, + intermediate22, + intermediate23, + intermediate24, + intermediate25, + intermediate26, + intermediate27, + intermediate28, + intermediate29, + intermediate30, + intermediate31, + intermediate32, + intermediate33, + intermediate34, + intermediate35, + ] +} + +pub fn intermediate7( + trace_1_column_101_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_73_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0 + + trace_1_column_73_offset_0 + - (trace_1_column_15_offset_0) + - (trace_1_column_101_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate8( + intermediate7: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_74_offset_0: QM31, +) -> QM31 { + (trace_1_column_45_offset_0 + + trace_1_column_74_offset_0 + + intermediate7 + - (trace_1_column_16_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate9( + intermediate8: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_75_offset_0: QM31, +) -> QM31 { + (trace_1_column_46_offset_0 + + trace_1_column_75_offset_0 + + intermediate8 + - (trace_1_column_17_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate10( + intermediate9: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_76_offset_0: QM31, +) -> QM31 { + (trace_1_column_47_offset_0 + + trace_1_column_76_offset_0 + + intermediate9 + - (trace_1_column_18_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate11( + intermediate10: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_77_offset_0: QM31, +) -> QM31 { + (trace_1_column_48_offset_0 + + trace_1_column_77_offset_0 + + intermediate10 + - (trace_1_column_19_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate12( + intermediate11: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_78_offset_0: QM31, +) -> QM31 { + (trace_1_column_49_offset_0 + + trace_1_column_78_offset_0 + + intermediate11 + - (trace_1_column_20_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate13( + intermediate12: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_79_offset_0: QM31, +) -> QM31 { + (trace_1_column_50_offset_0 + + trace_1_column_79_offset_0 + + intermediate12 + - (trace_1_column_21_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate14( + intermediate13: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_80_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0 + + trace_1_column_80_offset_0 + + intermediate13 + - (trace_1_column_22_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate15( + intermediate14: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_81_offset_0: QM31, +) -> QM31 { + (trace_1_column_52_offset_0 + + trace_1_column_81_offset_0 + + intermediate14 + - (trace_1_column_23_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate16( + intermediate15: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_82_offset_0: QM31, +) -> QM31 { + (trace_1_column_53_offset_0 + + trace_1_column_82_offset_0 + + intermediate15 + - (trace_1_column_24_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate17( + intermediate16: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_83_offset_0: QM31, +) -> QM31 { + (trace_1_column_54_offset_0 + + trace_1_column_83_offset_0 + + intermediate16 + - (trace_1_column_25_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate18( + intermediate17: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_84_offset_0: QM31, +) -> QM31 { + (trace_1_column_55_offset_0 + + trace_1_column_84_offset_0 + + intermediate17 + - (trace_1_column_26_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate19( + intermediate18: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_85_offset_0: QM31, +) -> QM31 { + (trace_1_column_56_offset_0 + + trace_1_column_85_offset_0 + + intermediate18 + - (trace_1_column_27_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate20( + intermediate19: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_86_offset_0: QM31, +) -> QM31 { + (trace_1_column_57_offset_0 + + trace_1_column_86_offset_0 + + intermediate19 + - (trace_1_column_28_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate21( + intermediate20: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_87_offset_0: QM31, +) -> QM31 { + (trace_1_column_58_offset_0 + + trace_1_column_87_offset_0 + + intermediate20 + - (trace_1_column_29_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate22( + intermediate21: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_88_offset_0: QM31, +) -> QM31 { + (trace_1_column_59_offset_0 + + trace_1_column_88_offset_0 + + intermediate21 + - (trace_1_column_30_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate23( + intermediate22: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_89_offset_0: QM31, +) -> QM31 { + (trace_1_column_60_offset_0 + + trace_1_column_89_offset_0 + + intermediate22 + - (trace_1_column_31_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate24( + intermediate23: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_90_offset_0: QM31, +) -> QM31 { + (trace_1_column_61_offset_0 + + trace_1_column_90_offset_0 + + intermediate23 + - (trace_1_column_32_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate25( + intermediate24: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_91_offset_0: QM31, +) -> QM31 { + (trace_1_column_62_offset_0 + + trace_1_column_91_offset_0 + + intermediate24 + - (trace_1_column_33_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate26( + intermediate25: QM31, + trace_1_column_34_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_92_offset_0: QM31, +) -> QM31 { + (trace_1_column_63_offset_0 + + trace_1_column_92_offset_0 + + intermediate25 + - (trace_1_column_34_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate27( + intermediate26: QM31, + trace_1_column_35_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_93_offset_0: QM31, +) -> QM31 { + (trace_1_column_64_offset_0 + + trace_1_column_93_offset_0 + + intermediate26 + - (trace_1_column_35_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate28( + intermediate27: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_36_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_94_offset_0: QM31, +) -> QM31 { + (trace_1_column_65_offset_0 + + trace_1_column_94_offset_0 + + intermediate27 + - (trace_1_column_36_offset_0) + - ((m31(136).into()) * (trace_1_column_101_offset_0))) + * (m31(4194304).into()) +} + +pub fn intermediate29( + intermediate28: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_95_offset_0: QM31, +) -> QM31 { + (trace_1_column_66_offset_0 + + trace_1_column_95_offset_0 + + intermediate28 + - (trace_1_column_37_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate30( + intermediate29: QM31, + trace_1_column_38_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_67_offset_0 + + trace_1_column_96_offset_0 + + intermediate29 + - (trace_1_column_38_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate31( + intermediate30: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_97_offset_0: QM31, +) -> QM31 { + (trace_1_column_68_offset_0 + + trace_1_column_97_offset_0 + + intermediate30 + - (trace_1_column_39_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate32( + intermediate31: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_98_offset_0: QM31, +) -> QM31 { + (trace_1_column_69_offset_0 + + trace_1_column_98_offset_0 + + intermediate31 + - (trace_1_column_40_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate33( + intermediate32: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_70_offset_0 + + trace_1_column_99_offset_0 + + intermediate32 + - (trace_1_column_41_offset_0)) + * (m31(4194304).into()) +} +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_alpha9: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (trace_1_column_3_offset_0) + + (VerifyInstruction_alpha2) * (trace_1_column_4_offset_0) + + (VerifyInstruction_alpha3) * (trace_1_column_5_offset_0) + + (VerifyInstruction_alpha4) * (trace_1_column_6_offset_0) + + (VerifyInstruction_alpha5) * (trace_1_column_7_offset_0) + + (VerifyInstruction_alpha7) * (trace_1_column_8_offset_0) + + (VerifyInstruction_alpha8) * (trace_1_column_9_offset_0) + + VerifyInstruction_alpha9 + + (VerifyInstruction_alpha15) * (trace_1_column_10_offset_0) + + VerifyInstruction_alpha18 + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_3_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_11_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_14_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_34_offset_0: QM31, + trace_1_column_35_offset_0: QM31, + trace_1_column_36_offset_0: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_38_offset_0: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_14_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_15_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_16_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_17_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_18_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_19_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_20_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_21_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_22_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_23_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_24_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_25_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_26_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_27_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_28_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_29_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_30_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_31_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_32_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_33_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_34_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_35_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_36_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_37_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_38_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_39_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_40_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_41_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_42_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate3( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_12_offset_0 + trace_1_column_4_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_43_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate4( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_43_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_44_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_45_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_46_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_47_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_48_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_49_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_50_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_51_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_52_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_53_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_54_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_55_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_56_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_57_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_58_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_59_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_60_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_61_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_62_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_63_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_64_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_65_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_66_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_67_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_68_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_69_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_70_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_71_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate5( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_72_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_13_offset_0 + trace_1_column_5_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_72_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate6( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_100_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_72_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_73_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_74_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_75_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_76_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_77_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_78_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_79_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_80_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_81_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_82_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_83_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_84_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_85_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_86_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_87_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_88_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_89_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_90_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_91_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_92_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_93_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_94_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_95_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_96_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_97_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_98_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_99_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_100_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate34( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate35( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) * (trace_1_column_0_offset_0 + m31(1).into()) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + trace_1_column_10_offset_0) + + (Opcodes_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_imm.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_imm.cairo new file mode 100644 index 000000000..098685fcd --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_imm.cairo @@ -0,0 +1,247 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(98, log_size).span(); + let interaction_log_sizes = ArrayImpl::new_repeated(QM31_EXTENSION_DEGREE * 5, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha9, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_alpha10, + MemoryIdToBig_alpha11, + MemoryIdToBig_alpha12, + MemoryIdToBig_alpha13, + MemoryIdToBig_alpha14, + MemoryIdToBig_alpha15, + MemoryIdToBig_alpha16, + MemoryIdToBig_alpha17, + MemoryIdToBig_alpha18, + MemoryIdToBig_alpha19, + MemoryIdToBig_alpha20, + MemoryIdToBig_alpha21, + MemoryIdToBig_alpha22, + MemoryIdToBig_alpha23, + MemoryIdToBig_alpha24, + MemoryIdToBig_alpha25, + MemoryIdToBig_alpha26, + MemoryIdToBig_alpha27, + MemoryIdToBig_alpha28, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_imm/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_imm/constraints.cairo new file mode 100644 index 000000000..50a0b4c86 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_imm/constraints.cairo @@ -0,0 +1,3051 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_alpha15: QM31, + pub VerifyInstruction_alpha18: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha4: QM31, + pub VerifyInstruction_alpha5: QM31, + pub VerifyInstruction_alpha6: QM31, + pub VerifyInstruction_alpha9: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha9, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_13_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_14_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_15_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_16_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_17_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_18_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_19_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_20_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_21_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_22_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_23_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_24_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_25_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_26_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_27_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_28_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_29_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_30_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_31_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_32_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_33_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_34_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_35_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_36_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_37_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_38_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_39_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_40_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_41_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_42_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_43_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_44_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_45_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_46_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_47_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_48_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_49_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_50_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_51_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_52_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_53_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_54_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_55_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_56_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_57_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_58_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_59_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_60_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_61_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_62_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_63_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_64_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_65_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_66_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_67_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_68_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_69_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_70_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_71_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_72_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_73_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_74_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_75_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_76_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_77_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_78_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_79_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_80_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_81_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_82_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_83_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_84_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_85_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_86_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_87_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_88_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_89_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_90_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_91_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_92_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_93_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_94_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_95_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_96_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_97_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_98_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_99_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_100_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_101_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_102_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_103_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_104_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_105_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_106_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_107_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_108_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_109_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_110_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_111_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_112_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_113_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_114_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_115_offset_neg_1, trace_2_column_115_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_116_offset_neg_1, trace_2_column_116_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_117_offset_neg_1, trace_2_column_117_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_118_offset_neg_1, trace_2_column_118_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + 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_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha9, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_1_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_2_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_34_offset_0, + trace_1_column_35_offset_0, + trace_1_column_36_offset_0, + trace_1_column_37_offset_0, + trace_1_column_38_offset_0, + trace_1_column_39_offset_0, + trace_1_column_3_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_4_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_5_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_6_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_7_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_8_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + let intermediate5 = *intermediates.pop_front().unwrap(); + let intermediate6 = *intermediates.pop_front().unwrap(); + let intermediate7 = *intermediates.pop_front().unwrap(); + let intermediate8 = *intermediates.pop_front().unwrap(); + let intermediate9 = *intermediates.pop_front().unwrap(); + let intermediate10 = *intermediates.pop_front().unwrap(); + let intermediate11 = *intermediates.pop_front().unwrap(); + let intermediate12 = *intermediates.pop_front().unwrap(); + let intermediate13 = *intermediates.pop_front().unwrap(); + let intermediate14 = *intermediates.pop_front().unwrap(); + let intermediate15 = *intermediates.pop_front().unwrap(); + let intermediate16 = *intermediates.pop_front().unwrap(); + let intermediate17 = *intermediates.pop_front().unwrap(); + let intermediate18 = *intermediates.pop_front().unwrap(); + let intermediate19 = *intermediates.pop_front().unwrap(); + let intermediate20 = *intermediates.pop_front().unwrap(); + let intermediate21 = *intermediates.pop_front().unwrap(); + let intermediate22 = *intermediates.pop_front().unwrap(); + let intermediate23 = *intermediates.pop_front().unwrap(); + let intermediate24 = *intermediates.pop_front().unwrap(); + let intermediate25 = *intermediates.pop_front().unwrap(); + let intermediate26 = *intermediates.pop_front().unwrap(); + let intermediate27 = *intermediates.pop_front().unwrap(); + let intermediate28 = *intermediates.pop_front().unwrap(); + let intermediate29 = *intermediates.pop_front().unwrap(); + let intermediate30 = *intermediates.pop_front().unwrap(); + let intermediate31 = *intermediates.pop_front().unwrap(); + let intermediate32 = *intermediates.pop_front().unwrap(); + let intermediate33 = *intermediates.pop_front().unwrap(); + let intermediate34 = *intermediates.pop_front().unwrap(); + let intermediate35 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_98_offset_0) * (trace_1_column_98_offset_0) + - (trace_1_column_98_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = (trace_1_column_8_offset_0 + - ((trace_1_column_5_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_5_offset_0)) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = (trace_1_column_9_offset_0 + - ((trace_1_column_6_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_6_offset_0)) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((trace_1_column_97_offset_0) + * (trace_1_column_97_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((intermediate7) + * ((intermediate7) * (intermediate7) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((intermediate8) + * ((intermediate8) * (intermediate8) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((intermediate9) + * ((intermediate9) * (intermediate9) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 7 + let constraint_quotient = ((intermediate10) + * ((intermediate10) * (intermediate10) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 8 + let constraint_quotient = ((intermediate11) + * ((intermediate11) * (intermediate11) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 9 + let constraint_quotient = ((intermediate12) + * ((intermediate12) * (intermediate12) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 10 + let constraint_quotient = ((intermediate13) + * ((intermediate13) * (intermediate13) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 11 + let constraint_quotient = ((intermediate14) + * ((intermediate14) * (intermediate14) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 12 + let constraint_quotient = ((intermediate15) + * ((intermediate15) * (intermediate15) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 13 + let constraint_quotient = ((intermediate16) + * ((intermediate16) * (intermediate16) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 14 + let constraint_quotient = ((intermediate17) + * ((intermediate17) * (intermediate17) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 15 + let constraint_quotient = ((intermediate18) + * ((intermediate18) * (intermediate18) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 16 + let constraint_quotient = ((intermediate19) + * ((intermediate19) * (intermediate19) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 17 + let constraint_quotient = ((intermediate20) + * ((intermediate20) * (intermediate20) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 18 + let constraint_quotient = ((intermediate21) + * ((intermediate21) * (intermediate21) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 19 + let constraint_quotient = ((intermediate22) + * ((intermediate22) * (intermediate22) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 20 + let constraint_quotient = ((intermediate23) + * ((intermediate23) * (intermediate23) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 21 + let constraint_quotient = ((intermediate24) + * ((intermediate24) * (intermediate24) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 22 + let constraint_quotient = ((intermediate25) + * ((intermediate25) * (intermediate25) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 23 + let constraint_quotient = ((intermediate26) + * ((intermediate26) * (intermediate26) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 24 + let constraint_quotient = ((intermediate27) + * ((intermediate27) * (intermediate27) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 25 + let constraint_quotient = ((intermediate28) + * ((intermediate28) * (intermediate28) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 26 + let constraint_quotient = ((intermediate29) + * ((intermediate29) * (intermediate29) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 27 + let constraint_quotient = ((intermediate30) + * ((intermediate30) * (intermediate30) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 28 + let constraint_quotient = ((intermediate31) + * ((intermediate31) * (intermediate31) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 29 + let constraint_quotient = ((intermediate32) + * ((intermediate32) * (intermediate32) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 30 + let constraint_quotient = ((intermediate33) + * ((intermediate33) * (intermediate33) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 31 + let constraint_quotient = (trace_1_column_67_offset_0 + + trace_1_column_96_offset_0 + + intermediate33 + - (trace_1_column_38_offset_0) + - ((m31(256).into()) * (trace_1_column_97_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 32 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_99_offset_0, trace_2_column_100_offset_0, trace_2_column_101_offset_0, + trace_2_column_102_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 33 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_103_offset_0, trace_2_column_104_offset_0, trace_2_column_105_offset_0, + trace_2_column_106_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_99_offset_0, trace_2_column_100_offset_0, + trace_2_column_101_offset_0, trace_2_column_102_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + intermediate2)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 34 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_107_offset_0, trace_2_column_108_offset_0, trace_2_column_109_offset_0, + trace_2_column_110_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_103_offset_0, trace_2_column_104_offset_0, + trace_2_column_105_offset_0, trace_2_column_106_offset_0, + ], + ))) + * ((intermediate4) * (intermediate5)) + - (intermediate5 + intermediate4)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 35 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_111_offset_0, trace_2_column_112_offset_0, trace_2_column_113_offset_0, + trace_2_column_114_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_107_offset_0, trace_2_column_108_offset_0, + trace_2_column_109_offset_0, trace_2_column_110_offset_0, + ], + ))) + * ((intermediate6) * (intermediate34)) + - (intermediate34 + (intermediate6) * (trace_1_column_98_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 36 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_115_offset_0, trace_2_column_116_offset_0, trace_2_column_117_offset_0, + trace_2_column_118_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_115_offset_neg_1, trace_2_column_116_offset_neg_1, + trace_2_column_117_offset_neg_1, trace_2_column_118_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_111_offset_0, trace_2_column_112_offset_0, + trace_2_column_113_offset_0, trace_2_column_114_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate35) + + trace_1_column_98_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_alpha9: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_34_offset_0: QM31, + trace_1_column_35_offset_0: QM31, + trace_1_column_36_offset_0: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_38_offset_0: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate7 = intermediate7( + trace_1_column_11_offset_0, + trace_1_column_40_offset_0, + trace_1_column_69_offset_0, + trace_1_column_97_offset_0, + ); + + let intermediate8 = intermediate8( + intermediate7, + trace_1_column_12_offset_0, + trace_1_column_41_offset_0, + trace_1_column_70_offset_0, + ); + + let intermediate9 = intermediate9( + intermediate8, + trace_1_column_13_offset_0, + trace_1_column_42_offset_0, + trace_1_column_71_offset_0, + ); + + let intermediate10 = intermediate10( + intermediate9, + trace_1_column_14_offset_0, + trace_1_column_43_offset_0, + trace_1_column_72_offset_0, + ); + + let intermediate11 = intermediate11( + intermediate10, + trace_1_column_15_offset_0, + trace_1_column_44_offset_0, + trace_1_column_73_offset_0, + ); + + let intermediate12 = intermediate12( + intermediate11, + trace_1_column_16_offset_0, + trace_1_column_45_offset_0, + trace_1_column_74_offset_0, + ); + + let intermediate13 = intermediate13( + intermediate12, + trace_1_column_17_offset_0, + trace_1_column_46_offset_0, + trace_1_column_75_offset_0, + ); + + let intermediate14 = intermediate14( + intermediate13, + trace_1_column_18_offset_0, + trace_1_column_47_offset_0, + trace_1_column_76_offset_0, + ); + + let intermediate15 = intermediate15( + intermediate14, + trace_1_column_19_offset_0, + trace_1_column_48_offset_0, + trace_1_column_77_offset_0, + ); + + let intermediate16 = intermediate16( + intermediate15, + trace_1_column_20_offset_0, + trace_1_column_49_offset_0, + trace_1_column_78_offset_0, + ); + + let intermediate17 = intermediate17( + intermediate16, + trace_1_column_21_offset_0, + trace_1_column_50_offset_0, + trace_1_column_79_offset_0, + ); + + let intermediate18 = intermediate18( + intermediate17, + trace_1_column_22_offset_0, + trace_1_column_51_offset_0, + trace_1_column_80_offset_0, + ); + + let intermediate19 = intermediate19( + intermediate18, + trace_1_column_23_offset_0, + trace_1_column_52_offset_0, + trace_1_column_81_offset_0, + ); + + let intermediate20 = intermediate20( + intermediate19, + trace_1_column_24_offset_0, + trace_1_column_53_offset_0, + trace_1_column_82_offset_0, + ); + + let intermediate21 = intermediate21( + intermediate20, + trace_1_column_25_offset_0, + trace_1_column_54_offset_0, + trace_1_column_83_offset_0, + ); + + let intermediate22 = intermediate22( + intermediate21, + trace_1_column_26_offset_0, + trace_1_column_55_offset_0, + trace_1_column_84_offset_0, + ); + + let intermediate23 = intermediate23( + intermediate22, + trace_1_column_27_offset_0, + trace_1_column_56_offset_0, + trace_1_column_85_offset_0, + ); + + let intermediate24 = intermediate24( + intermediate23, + trace_1_column_28_offset_0, + trace_1_column_57_offset_0, + trace_1_column_86_offset_0, + ); + + let intermediate25 = intermediate25( + intermediate24, + trace_1_column_29_offset_0, + trace_1_column_58_offset_0, + trace_1_column_87_offset_0, + ); + + let intermediate26 = intermediate26( + intermediate25, + trace_1_column_30_offset_0, + trace_1_column_59_offset_0, + trace_1_column_88_offset_0, + ); + + let intermediate27 = intermediate27( + intermediate26, + trace_1_column_31_offset_0, + trace_1_column_60_offset_0, + trace_1_column_89_offset_0, + ); + + let intermediate28 = intermediate28( + intermediate27, + trace_1_column_32_offset_0, + trace_1_column_61_offset_0, + trace_1_column_90_offset_0, + trace_1_column_97_offset_0, + ); + + let intermediate29 = intermediate29( + intermediate28, + trace_1_column_33_offset_0, + trace_1_column_62_offset_0, + trace_1_column_91_offset_0, + ); + + let intermediate30 = intermediate30( + intermediate29, + trace_1_column_34_offset_0, + trace_1_column_63_offset_0, + trace_1_column_92_offset_0, + ); + + let intermediate31 = intermediate31( + intermediate30, + trace_1_column_35_offset_0, + trace_1_column_64_offset_0, + trace_1_column_93_offset_0, + ); + + let intermediate32 = intermediate32( + intermediate31, + trace_1_column_36_offset_0, + trace_1_column_65_offset_0, + trace_1_column_94_offset_0, + ); + + let intermediate33 = intermediate33( + intermediate32, + trace_1_column_37_offset_0, + trace_1_column_66_offset_0, + trace_1_column_95_offset_0, + ); + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha9, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_10_offset_0, + trace_1_column_3_offset_0, + trace_1_column_8_offset_0, + ); + + let intermediate2 = intermediate2( + 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, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_34_offset_0, + trace_1_column_35_offset_0, + trace_1_column_36_offset_0, + trace_1_column_37_offset_0, + trace_1_column_38_offset_0, + ); + + let intermediate3 = intermediate3( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_39_offset_0, + trace_1_column_4_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate4 = intermediate4( + 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, + trace_1_column_39_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + ); + + let intermediate5 = intermediate5( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_0_offset_0, + trace_1_column_68_offset_0, + ); + + let intermediate6 = intermediate6( + 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, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate34 = intermediate34( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate35 = intermediate35( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_7_offset_0, + ); + array![ + intermediate0, + intermediate1, + intermediate2, + intermediate3, + intermediate4, + intermediate5, + intermediate6, + intermediate7, + intermediate8, + intermediate9, + intermediate10, + intermediate11, + intermediate12, + intermediate13, + intermediate14, + intermediate15, + intermediate16, + intermediate17, + intermediate18, + intermediate19, + intermediate20, + intermediate21, + intermediate22, + intermediate23, + intermediate24, + intermediate25, + intermediate26, + intermediate27, + intermediate28, + intermediate29, + intermediate30, + intermediate31, + intermediate32, + intermediate33, + intermediate34, + intermediate35, + ] +} + +pub fn intermediate7( + trace_1_column_11_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_97_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0 + + trace_1_column_69_offset_0 + - (trace_1_column_11_offset_0) + - (trace_1_column_97_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate8( + intermediate7: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_70_offset_0: QM31, +) -> QM31 { + (trace_1_column_41_offset_0 + + trace_1_column_70_offset_0 + + intermediate7 + - (trace_1_column_12_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate9( + intermediate8: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_71_offset_0: QM31, +) -> QM31 { + (trace_1_column_42_offset_0 + + trace_1_column_71_offset_0 + + intermediate8 + - (trace_1_column_13_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate10( + intermediate9: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_72_offset_0: QM31, +) -> QM31 { + (trace_1_column_43_offset_0 + + trace_1_column_72_offset_0 + + intermediate9 + - (trace_1_column_14_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate11( + intermediate10: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_73_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0 + + trace_1_column_73_offset_0 + + intermediate10 + - (trace_1_column_15_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate12( + intermediate11: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_74_offset_0: QM31, +) -> QM31 { + (trace_1_column_45_offset_0 + + trace_1_column_74_offset_0 + + intermediate11 + - (trace_1_column_16_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate13( + intermediate12: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_75_offset_0: QM31, +) -> QM31 { + (trace_1_column_46_offset_0 + + trace_1_column_75_offset_0 + + intermediate12 + - (trace_1_column_17_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate14( + intermediate13: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_76_offset_0: QM31, +) -> QM31 { + (trace_1_column_47_offset_0 + + trace_1_column_76_offset_0 + + intermediate13 + - (trace_1_column_18_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate15( + intermediate14: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_77_offset_0: QM31, +) -> QM31 { + (trace_1_column_48_offset_0 + + trace_1_column_77_offset_0 + + intermediate14 + - (trace_1_column_19_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate16( + intermediate15: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_78_offset_0: QM31, +) -> QM31 { + (trace_1_column_49_offset_0 + + trace_1_column_78_offset_0 + + intermediate15 + - (trace_1_column_20_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate17( + intermediate16: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_79_offset_0: QM31, +) -> QM31 { + (trace_1_column_50_offset_0 + + trace_1_column_79_offset_0 + + intermediate16 + - (trace_1_column_21_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate18( + intermediate17: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_80_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0 + + trace_1_column_80_offset_0 + + intermediate17 + - (trace_1_column_22_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate19( + intermediate18: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_81_offset_0: QM31, +) -> QM31 { + (trace_1_column_52_offset_0 + + trace_1_column_81_offset_0 + + intermediate18 + - (trace_1_column_23_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate20( + intermediate19: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_82_offset_0: QM31, +) -> QM31 { + (trace_1_column_53_offset_0 + + trace_1_column_82_offset_0 + + intermediate19 + - (trace_1_column_24_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate21( + intermediate20: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_83_offset_0: QM31, +) -> QM31 { + (trace_1_column_54_offset_0 + + trace_1_column_83_offset_0 + + intermediate20 + - (trace_1_column_25_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate22( + intermediate21: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_84_offset_0: QM31, +) -> QM31 { + (trace_1_column_55_offset_0 + + trace_1_column_84_offset_0 + + intermediate21 + - (trace_1_column_26_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate23( + intermediate22: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_85_offset_0: QM31, +) -> QM31 { + (trace_1_column_56_offset_0 + + trace_1_column_85_offset_0 + + intermediate22 + - (trace_1_column_27_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate24( + intermediate23: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_86_offset_0: QM31, +) -> QM31 { + (trace_1_column_57_offset_0 + + trace_1_column_86_offset_0 + + intermediate23 + - (trace_1_column_28_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate25( + intermediate24: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_87_offset_0: QM31, +) -> QM31 { + (trace_1_column_58_offset_0 + + trace_1_column_87_offset_0 + + intermediate24 + - (trace_1_column_29_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate26( + intermediate25: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_88_offset_0: QM31, +) -> QM31 { + (trace_1_column_59_offset_0 + + trace_1_column_88_offset_0 + + intermediate25 + - (trace_1_column_30_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate27( + intermediate26: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_89_offset_0: QM31, +) -> QM31 { + (trace_1_column_60_offset_0 + + trace_1_column_89_offset_0 + + intermediate26 + - (trace_1_column_31_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate28( + intermediate27: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_97_offset_0: QM31, +) -> QM31 { + (trace_1_column_61_offset_0 + + trace_1_column_90_offset_0 + + intermediate27 + - (trace_1_column_32_offset_0) + - ((m31(136).into()) * (trace_1_column_97_offset_0))) + * (m31(4194304).into()) +} + +pub fn intermediate29( + intermediate28: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_91_offset_0: QM31, +) -> QM31 { + (trace_1_column_62_offset_0 + + trace_1_column_91_offset_0 + + intermediate28 + - (trace_1_column_33_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate30( + intermediate29: QM31, + trace_1_column_34_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_92_offset_0: QM31, +) -> QM31 { + (trace_1_column_63_offset_0 + + trace_1_column_92_offset_0 + + intermediate29 + - (trace_1_column_34_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate31( + intermediate30: QM31, + trace_1_column_35_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_93_offset_0: QM31, +) -> QM31 { + (trace_1_column_64_offset_0 + + trace_1_column_93_offset_0 + + intermediate30 + - (trace_1_column_35_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate32( + intermediate31: QM31, + trace_1_column_36_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_94_offset_0: QM31, +) -> QM31 { + (trace_1_column_65_offset_0 + + trace_1_column_94_offset_0 + + intermediate31 + - (trace_1_column_36_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate33( + intermediate32: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_95_offset_0: QM31, +) -> QM31 { + (trace_1_column_66_offset_0 + + trace_1_column_95_offset_0 + + intermediate32 + - (trace_1_column_37_offset_0)) + * (m31(4194304).into()) +} +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_alpha9: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (trace_1_column_3_offset_0) + + (VerifyInstruction_alpha2) * (trace_1_column_4_offset_0) + + (VerifyInstruction_alpha3) * (qm31(32769, 0, 0, 0)) + + (VerifyInstruction_alpha4) * (trace_1_column_5_offset_0) + + (VerifyInstruction_alpha5) * (trace_1_column_6_offset_0) + + VerifyInstruction_alpha6 + + VerifyInstruction_alpha9 + + (VerifyInstruction_alpha15) * (trace_1_column_7_offset_0) + + VerifyInstruction_alpha18 + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_8_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_8_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_10_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_34_offset_0: QM31, + trace_1_column_35_offset_0: QM31, + trace_1_column_36_offset_0: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_38_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_10_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_11_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_12_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_13_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_14_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_15_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_16_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_17_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_18_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_19_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_20_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_21_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_22_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_23_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_24_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_25_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_26_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_27_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_28_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_29_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_30_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_31_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_32_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_33_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_34_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_35_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_36_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_37_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_38_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate3( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_9_offset_0 + trace_1_column_4_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_39_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate4( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_39_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_40_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_41_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_42_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_43_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_44_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_45_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_46_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_47_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_48_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_49_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_50_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_51_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_52_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_53_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_54_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_55_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_56_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_57_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_58_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_59_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_60_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_61_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_62_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_63_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_64_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_65_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_66_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_67_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate5( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_68_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) * (trace_1_column_0_offset_0 + m31(1).into()) + + (MemoryAddressToId_alpha1) * (trace_1_column_68_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate6( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_68_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_69_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_70_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_71_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_72_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_73_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_74_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_75_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_76_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_77_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_78_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_79_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_80_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_81_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_82_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_83_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_84_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_85_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_86_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_87_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_88_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_89_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_90_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_91_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_92_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_93_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_94_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_95_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_96_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate34( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate35( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_7_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) * (trace_1_column_0_offset_0 + m31(2).into()) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + trace_1_column_7_offset_0) + + (Opcodes_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_small.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_small.cairo new file mode 100644 index 000000000..1cdc25eca --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_small.cairo @@ -0,0 +1,243 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(32, log_size).span(); + let interaction_log_sizes = ArrayImpl::new_repeated(QM31_EXTENSION_DEGREE * 5, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_alpha9, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_alpha10, + MemoryIdToBig_alpha11, + MemoryIdToBig_alpha12, + MemoryIdToBig_alpha13, + MemoryIdToBig_alpha14, + MemoryIdToBig_alpha15, + MemoryIdToBig_alpha16, + MemoryIdToBig_alpha17, + MemoryIdToBig_alpha18, + MemoryIdToBig_alpha19, + MemoryIdToBig_alpha20, + MemoryIdToBig_alpha21, + MemoryIdToBig_alpha22, + MemoryIdToBig_alpha28, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_small/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_small/constraints.cairo new file mode 100644 index 000000000..43805cf02 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_small/constraints.cairo @@ -0,0 +1,1457 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + 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]); + 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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_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_alpha15: QM31, + pub VerifyInstruction_alpha18: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha4: QM31, + pub VerifyInstruction_alpha5: QM31, + pub VerifyInstruction_alpha7: QM31, + pub VerifyInstruction_alpha8: QM31, + pub VerifyInstruction_alpha9: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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_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_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_alpha9, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_13_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_14_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_15_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_16_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_17_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_18_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_19_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_20_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_21_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_22_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_23_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_24_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_25_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_26_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_27_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_28_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_29_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_30_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_31_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_32_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_33_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_34_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_35_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_36_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_37_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_38_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_39_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_40_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_41_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_42_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_43_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_44_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_45_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_46_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_47_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_48_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_49_offset_neg_1, trace_2_column_49_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_50_offset_neg_1, trace_2_column_50_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_51_offset_neg_1, trace_2_column_51_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_52_offset_neg_1, trace_2_column_52_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + 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_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_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_alpha9, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_1_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_2_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + let intermediate5 = *intermediates.pop_front().unwrap(); + let intermediate6 = *intermediates.pop_front().unwrap(); + let intermediate7 = *intermediates.pop_front().unwrap(); + let intermediate8 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_32_offset_0) * (trace_1_column_32_offset_0) + - (trace_1_column_32_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = (trace_1_column_11_offset_0 + - ((trace_1_column_6_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_6_offset_0)) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = (trace_1_column_12_offset_0 + - ((trace_1_column_7_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_7_offset_0)) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = (trace_1_column_8_offset_0 + + trace_1_column_9_offset_0 + - (m31(1).into())) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = (trace_1_column_13_offset_0 + - ((trace_1_column_8_offset_0) * (trace_1_column_2_offset_0) + + (trace_1_column_9_offset_0) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((trace_1_column_15_offset_0) + * (trace_1_column_15_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((trace_1_column_16_offset_0) + * (trace_1_column_16_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 7 + let constraint_quotient = ((trace_1_column_16_offset_0) + * (trace_1_column_15_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 8 + let constraint_quotient = ((trace_1_column_21_offset_0) + * (trace_1_column_21_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 9 + let constraint_quotient = ((trace_1_column_22_offset_0) + * (trace_1_column_22_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 10 + let constraint_quotient = ((trace_1_column_22_offset_0) + * (trace_1_column_21_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 11 + let constraint_quotient = ((trace_1_column_27_offset_0) + * (trace_1_column_27_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 12 + let constraint_quotient = ((trace_1_column_28_offset_0) + * (trace_1_column_28_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 13 + let constraint_quotient = ((trace_1_column_28_offset_0) + * (trace_1_column_27_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 14 + let constraint_quotient = (trace_1_column_17_offset_0 + + (trace_1_column_18_offset_0) * (m31(512).into()) + + (trace_1_column_19_offset_0) * (m31(262144).into()) + - (trace_1_column_15_offset_0) + - ((m31(134217728).into()) * (trace_1_column_16_offset_0)) + - (trace_1_column_23_offset_0 + + (trace_1_column_24_offset_0) * (m31(512).into()) + + (trace_1_column_25_offset_0) * (m31(262144).into()) + - (trace_1_column_21_offset_0) + - ((m31(134217728).into()) * (trace_1_column_22_offset_0)) + + trace_1_column_29_offset_0 + + (trace_1_column_30_offset_0) * (m31(512).into()) + + (trace_1_column_31_offset_0) * (m31(262144).into()) + - (trace_1_column_27_offset_0) + - ((m31(134217728).into()) * (trace_1_column_28_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 15 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_33_offset_0, trace_2_column_34_offset_0, trace_2_column_35_offset_0, + trace_2_column_36_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 16 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_37_offset_0, trace_2_column_38_offset_0, trace_2_column_39_offset_0, + trace_2_column_40_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_33_offset_0, trace_2_column_34_offset_0, trace_2_column_35_offset_0, + trace_2_column_36_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + intermediate2)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 17 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_41_offset_0, trace_2_column_42_offset_0, trace_2_column_43_offset_0, + trace_2_column_44_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_37_offset_0, trace_2_column_38_offset_0, trace_2_column_39_offset_0, + trace_2_column_40_offset_0, + ], + ))) + * ((intermediate4) * (intermediate5)) + - (intermediate5 + intermediate4)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 18 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_45_offset_0, trace_2_column_46_offset_0, trace_2_column_47_offset_0, + trace_2_column_48_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_41_offset_0, trace_2_column_42_offset_0, trace_2_column_43_offset_0, + trace_2_column_44_offset_0, + ], + ))) + * ((intermediate6) * (intermediate7)) + - (intermediate7 + (intermediate6) * (trace_1_column_32_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 19 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_49_offset_0, trace_2_column_50_offset_0, trace_2_column_51_offset_0, + trace_2_column_52_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_49_offset_neg_1, trace_2_column_50_offset_neg_1, + trace_2_column_51_offset_neg_1, trace_2_column_52_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_45_offset_0, trace_2_column_46_offset_0, trace_2_column_47_offset_0, + trace_2_column_48_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate8) + + trace_1_column_32_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_alpha9: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_alpha9, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_11_offset_0, + trace_1_column_14_offset_0, + trace_1_column_3_offset_0, + ); + + let intermediate2 = intermediate2( + 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_alpha28, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_z, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + ); + + let intermediate3 = intermediate3( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_12_offset_0, + trace_1_column_20_offset_0, + trace_1_column_4_offset_0, + ); + + let intermediate4 = intermediate4( + 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_alpha28, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_z, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + ); + + let intermediate5 = intermediate5( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_13_offset_0, + trace_1_column_26_offset_0, + trace_1_column_5_offset_0, + ); + + let intermediate6 = intermediate6( + 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_alpha28, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_z, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + ); + + let intermediate7 = intermediate7( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate8 = intermediate8( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + array![ + intermediate0, + intermediate1, + intermediate2, + intermediate3, + intermediate4, + intermediate5, + intermediate6, + intermediate7, + intermediate8, + ] +} + + +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_alpha9: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (trace_1_column_3_offset_0) + + (VerifyInstruction_alpha2) * (trace_1_column_4_offset_0) + + (VerifyInstruction_alpha3) * (trace_1_column_5_offset_0) + + (VerifyInstruction_alpha4) * (trace_1_column_6_offset_0) + + (VerifyInstruction_alpha5) * (trace_1_column_7_offset_0) + + (VerifyInstruction_alpha7) * (trace_1_column_8_offset_0) + + (VerifyInstruction_alpha8) * (trace_1_column_9_offset_0) + + VerifyInstruction_alpha9 + + (VerifyInstruction_alpha15) * (trace_1_column_10_offset_0) + + VerifyInstruction_alpha18 + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_3_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_11_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_14_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_14_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_17_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_18_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_19_offset_0) + + (MemoryIdToBig_alpha4) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha5) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha6) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha7) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha8) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha9) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha10) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha11) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha12) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha13) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha14) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha15) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha16) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha17) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha18) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha19) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha20) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha21) * ((trace_1_column_16_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha22) + * ((m31(136).into()) * (trace_1_column_15_offset_0) - (trace_1_column_16_offset_0)) + + (MemoryIdToBig_alpha28) * ((trace_1_column_15_offset_0) * (m31(256).into())) + - (MemoryIdToBig_z) +} + +pub fn intermediate3( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_12_offset_0 + trace_1_column_4_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_20_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate4( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_20_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_23_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_24_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_25_offset_0) + + (MemoryIdToBig_alpha4) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha5) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha6) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha7) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha8) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha9) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha10) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha11) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha12) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha13) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha14) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha15) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha16) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha17) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha18) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha19) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha20) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha21) * ((trace_1_column_22_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha22) + * ((m31(136).into()) * (trace_1_column_21_offset_0) - (trace_1_column_22_offset_0)) + + (MemoryIdToBig_alpha28) * ((trace_1_column_21_offset_0) * (m31(256).into())) + - (MemoryIdToBig_z) +} + +pub fn intermediate5( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_5_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_13_offset_0 + trace_1_column_5_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_26_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate6( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_26_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_29_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_30_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_31_offset_0) + + (MemoryIdToBig_alpha4) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha5) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha6) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha7) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha8) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha9) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha10) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha11) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha12) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha13) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha14) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha15) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha16) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha17) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha18) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha19) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha20) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha21) * ((trace_1_column_28_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha22) + * ((m31(136).into()) * (trace_1_column_27_offset_0) - (trace_1_column_28_offset_0)) + + (MemoryIdToBig_alpha28) * ((trace_1_column_27_offset_0) * (m31(256).into())) + - (MemoryIdToBig_z) +} + +pub fn intermediate7( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate8( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) * (trace_1_column_0_offset_0 + m31(1).into()) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + trace_1_column_10_offset_0) + + (Opcodes_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_small_imm.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_small_imm.cairo new file mode 100644 index 000000000..59c3dfa89 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_small_imm.cairo @@ -0,0 +1,242 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(28, log_size).span(); + let interaction_log_sizes = ArrayImpl::new_repeated(QM31_EXTENSION_DEGREE * 5, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha9, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_alpha10, + MemoryIdToBig_alpha11, + MemoryIdToBig_alpha12, + MemoryIdToBig_alpha13, + MemoryIdToBig_alpha14, + MemoryIdToBig_alpha15, + MemoryIdToBig_alpha16, + MemoryIdToBig_alpha17, + MemoryIdToBig_alpha18, + MemoryIdToBig_alpha19, + MemoryIdToBig_alpha20, + MemoryIdToBig_alpha21, + MemoryIdToBig_alpha22, + MemoryIdToBig_alpha28, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_small_imm/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_small_imm/constraints.cairo new file mode 100644 index 000000000..3e3854ddb --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/add_opcode_small_imm/constraints.cairo @@ -0,0 +1,1383 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + 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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_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_alpha15: QM31, + pub VerifyInstruction_alpha18: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha4: QM31, + pub VerifyInstruction_alpha5: QM31, + pub VerifyInstruction_alpha6: QM31, + pub VerifyInstruction_alpha9: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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_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_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha9, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_13_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_14_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_15_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_16_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_17_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_18_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_19_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_20_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_21_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_22_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_23_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_24_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_25_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_26_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_27_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_28_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_29_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_30_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_31_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_32_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_33_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_34_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_35_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_36_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_37_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_38_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_39_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_40_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_41_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_42_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_43_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_44_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_45_offset_neg_1, trace_2_column_45_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_46_offset_neg_1, trace_2_column_46_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_47_offset_neg_1, trace_2_column_47_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_48_offset_neg_1, trace_2_column_48_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + 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_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_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha9, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_1_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + let intermediate5 = *intermediates.pop_front().unwrap(); + let intermediate6 = *intermediates.pop_front().unwrap(); + let intermediate7 = *intermediates.pop_front().unwrap(); + let intermediate8 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_28_offset_0) * (trace_1_column_28_offset_0) + - (trace_1_column_28_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = (trace_1_column_8_offset_0 + - ((trace_1_column_5_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_5_offset_0)) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = (trace_1_column_9_offset_0 + - ((trace_1_column_6_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_6_offset_0)) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((trace_1_column_11_offset_0) + * (trace_1_column_11_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((trace_1_column_12_offset_0) + * (trace_1_column_12_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((trace_1_column_12_offset_0) + * (trace_1_column_11_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((trace_1_column_17_offset_0) + * (trace_1_column_17_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 7 + let constraint_quotient = ((trace_1_column_18_offset_0) + * (trace_1_column_18_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 8 + let constraint_quotient = ((trace_1_column_18_offset_0) + * (trace_1_column_17_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 9 + let constraint_quotient = ((trace_1_column_23_offset_0) + * (trace_1_column_23_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 10 + let constraint_quotient = ((trace_1_column_24_offset_0) + * (trace_1_column_24_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 11 + let constraint_quotient = ((trace_1_column_24_offset_0) + * (trace_1_column_23_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 12 + let constraint_quotient = (trace_1_column_13_offset_0 + + (trace_1_column_14_offset_0) * (m31(512).into()) + + (trace_1_column_15_offset_0) * (m31(262144).into()) + - (trace_1_column_11_offset_0) + - ((m31(134217728).into()) * (trace_1_column_12_offset_0)) + - (trace_1_column_19_offset_0 + + (trace_1_column_20_offset_0) * (m31(512).into()) + + (trace_1_column_21_offset_0) * (m31(262144).into()) + - (trace_1_column_17_offset_0) + - ((m31(134217728).into()) * (trace_1_column_18_offset_0)) + + trace_1_column_25_offset_0 + + (trace_1_column_26_offset_0) * (m31(512).into()) + + (trace_1_column_27_offset_0) * (m31(262144).into()) + - (trace_1_column_23_offset_0) + - ((m31(134217728).into()) * (trace_1_column_24_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 13 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_29_offset_0, trace_2_column_30_offset_0, trace_2_column_31_offset_0, + trace_2_column_32_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 14 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_33_offset_0, trace_2_column_34_offset_0, trace_2_column_35_offset_0, + trace_2_column_36_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_29_offset_0, trace_2_column_30_offset_0, trace_2_column_31_offset_0, + trace_2_column_32_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + intermediate2)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 15 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_37_offset_0, trace_2_column_38_offset_0, trace_2_column_39_offset_0, + trace_2_column_40_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_33_offset_0, trace_2_column_34_offset_0, trace_2_column_35_offset_0, + trace_2_column_36_offset_0, + ], + ))) + * ((intermediate4) * (intermediate5)) + - (intermediate5 + intermediate4)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 16 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_41_offset_0, trace_2_column_42_offset_0, trace_2_column_43_offset_0, + trace_2_column_44_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_37_offset_0, trace_2_column_38_offset_0, trace_2_column_39_offset_0, + trace_2_column_40_offset_0, + ], + ))) + * ((intermediate6) * (intermediate7)) + - (intermediate7 + (intermediate6) * (trace_1_column_28_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 17 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_45_offset_0, trace_2_column_46_offset_0, trace_2_column_47_offset_0, + trace_2_column_48_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_45_offset_neg_1, trace_2_column_46_offset_neg_1, + trace_2_column_47_offset_neg_1, trace_2_column_48_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_41_offset_0, trace_2_column_42_offset_0, trace_2_column_43_offset_0, + trace_2_column_44_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate8) + + trace_1_column_28_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_alpha9: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha9, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_10_offset_0, + trace_1_column_3_offset_0, + trace_1_column_8_offset_0, + ); + + let intermediate2 = intermediate2( + 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_alpha28, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_z, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + ); + + let intermediate3 = intermediate3( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_16_offset_0, + trace_1_column_4_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate4 = intermediate4( + 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_alpha28, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_z, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + ); + + let intermediate5 = intermediate5( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_0_offset_0, + trace_1_column_22_offset_0, + ); + + let intermediate6 = intermediate6( + 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_alpha28, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_z, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + ); + + let intermediate7 = intermediate7( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate8 = intermediate8( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_7_offset_0, + ); + array![ + intermediate0, + intermediate1, + intermediate2, + intermediate3, + intermediate4, + intermediate5, + intermediate6, + intermediate7, + intermediate8, + ] +} + + +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_alpha9: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (trace_1_column_3_offset_0) + + (VerifyInstruction_alpha2) * (trace_1_column_4_offset_0) + + (VerifyInstruction_alpha3) * (qm31(32769, 0, 0, 0)) + + (VerifyInstruction_alpha4) * (trace_1_column_5_offset_0) + + (VerifyInstruction_alpha5) * (trace_1_column_6_offset_0) + + VerifyInstruction_alpha6 + + VerifyInstruction_alpha9 + + (VerifyInstruction_alpha15) * (trace_1_column_7_offset_0) + + VerifyInstruction_alpha18 + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_8_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_8_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_10_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_10_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_13_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_14_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_15_offset_0) + + (MemoryIdToBig_alpha4) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha5) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha6) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha7) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha8) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha9) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha10) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha11) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha12) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha13) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha14) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha15) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha16) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha17) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha18) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha19) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha20) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha21) * ((trace_1_column_12_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha22) + * ((m31(136).into()) * (trace_1_column_11_offset_0) - (trace_1_column_12_offset_0)) + + (MemoryIdToBig_alpha28) * ((trace_1_column_11_offset_0) * (m31(256).into())) + - (MemoryIdToBig_z) +} + +pub fn intermediate3( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_9_offset_0 + trace_1_column_4_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_16_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate4( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_16_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_19_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_20_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_21_offset_0) + + (MemoryIdToBig_alpha4) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha5) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha6) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha7) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha8) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha9) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha10) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha11) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha12) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha13) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha14) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha15) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha16) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha17) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha18) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha19) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha20) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha21) * ((trace_1_column_18_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha22) + * ((m31(136).into()) * (trace_1_column_17_offset_0) - (trace_1_column_18_offset_0)) + + (MemoryIdToBig_alpha28) * ((trace_1_column_17_offset_0) * (m31(256).into())) + - (MemoryIdToBig_z) +} + +pub fn intermediate5( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_22_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) * (trace_1_column_0_offset_0 + m31(1).into()) + + (MemoryAddressToId_alpha1) * (trace_1_column_22_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate6( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_22_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_25_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_26_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_27_offset_0) + + (MemoryIdToBig_alpha4) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha5) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha6) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha7) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha8) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha9) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha10) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha11) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha12) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha13) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha14) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha15) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha16) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha17) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha18) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha19) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha20) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha21) * ((trace_1_column_24_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha22) + * ((m31(136).into()) * (trace_1_column_23_offset_0) - (trace_1_column_24_offset_0)) + + (MemoryIdToBig_alpha28) * ((trace_1_column_23_offset_0) * (m31(256).into())) + - (MemoryIdToBig_z) +} + +pub fn intermediate7( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate8( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_7_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) * (trace_1_column_0_offset_0 + m31(2).into()) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + trace_1_column_7_offset_0) + + (Opcodes_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode.cairo new file mode 100644 index 000000000..2c275367d --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode.cairo @@ -0,0 +1,181 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(12, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode/constraints.cairo new file mode 100644 index 000000000..ea5894d5b --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode/constraints.cairo @@ -0,0 +1,616 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[derive(Drop)] +pub struct ConstraintParams { + pub MemoryAddressToId_alpha0: QM31, + pub MemoryAddressToId_alpha1: QM31, + pub MemoryAddressToId_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_alpha15: QM31, + pub VerifyInstruction_alpha18: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha4: QM31, + pub VerifyInstruction_alpha5: QM31, + pub VerifyInstruction_alpha7: QM31, + pub VerifyInstruction_alpha8: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_13_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_14_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_15_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_16_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_17_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_18_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_19_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_20_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_21_offset_neg_1, trace_2_column_21_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_22_offset_neg_1, trace_2_column_22_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_23_offset_neg_1, trace_2_column_23_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_24_offset_neg_1, trace_2_column_24_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_12_offset_0) * (trace_1_column_12_offset_0) + - (trace_1_column_12_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = (trace_1_column_9_offset_0 + - ((trace_1_column_5_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_5_offset_0)) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = (trace_1_column_6_offset_0 + + trace_1_column_7_offset_0 + - (m31(1).into())) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = (trace_1_column_10_offset_0 + - ((trace_1_column_6_offset_0) * (trace_1_column_2_offset_0) + + (trace_1_column_7_offset_0) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_13_offset_0, trace_2_column_14_offset_0, trace_2_column_15_offset_0, + trace_2_column_16_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_17_offset_0, trace_2_column_18_offset_0, trace_2_column_19_offset_0, + trace_2_column_20_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_13_offset_0, trace_2_column_14_offset_0, trace_2_column_15_offset_0, + trace_2_column_16_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + (intermediate2) * (trace_1_column_12_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_21_offset_0, trace_2_column_22_offset_0, trace_2_column_23_offset_0, + trace_2_column_24_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_21_offset_neg_1, trace_2_column_22_offset_neg_1, + trace_2_column_23_offset_neg_1, trace_2_column_24_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_17_offset_0, trace_2_column_18_offset_0, trace_2_column_19_offset_0, + trace_2_column_20_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate4) + + trace_1_column_12_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_11_offset_0, + trace_1_column_3_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate2 = intermediate2( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_4_offset_0, + ); + + let intermediate3 = intermediate3( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate4 = intermediate4( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_8_offset_0, + ); + array![intermediate0, intermediate1, intermediate2, intermediate3, intermediate4] +} + + +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (trace_1_column_3_offset_0) + + (VerifyInstruction_alpha2) * (qm31(32767, 0, 0, 0)) + + (VerifyInstruction_alpha3) * (trace_1_column_4_offset_0) + + (VerifyInstruction_alpha4) * (trace_1_column_5_offset_0) + + VerifyInstruction_alpha5 + + (VerifyInstruction_alpha7) * (trace_1_column_6_offset_0) + + (VerifyInstruction_alpha8) * (trace_1_column_7_offset_0) + + (VerifyInstruction_alpha15) * (trace_1_column_8_offset_0) + + VerifyInstruction_alpha18 + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_9_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_11_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_10_offset_0 + trace_1_column_4_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_11_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate3( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate4( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_8_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) * (trace_1_column_0_offset_0 + m31(1).into()) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + trace_1_column_8_offset_0) + + (Opcodes_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode_double_deref.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode_double_deref.cairo new file mode 100644 index 000000000..8ec361925 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode_double_deref.cairo @@ -0,0 +1,220 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(16, log_size).span(); + let interaction_log_sizes = ArrayImpl::new_repeated(QM31_EXTENSION_DEGREE * 4, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode_double_deref/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode_double_deref/constraints.cairo new file mode 100644 index 000000000..00805b434 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode_double_deref/constraints.cairo @@ -0,0 +1,784 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_alpha2: QM31, + pub MemoryIdToBig_alpha3: 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_alpha15: QM31, + pub VerifyInstruction_alpha18: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha4: QM31, + pub VerifyInstruction_alpha5: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_13_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_14_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_15_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_16_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_17_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_18_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_19_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_20_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_21_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_22_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_23_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_24_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_25_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_26_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_27_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_28_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_29_offset_neg_1, trace_2_column_29_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_30_offset_neg_1, trace_2_column_30_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_31_offset_neg_1, trace_2_column_31_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_32_offset_neg_1, trace_2_column_32_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + let intermediate5 = *intermediates.pop_front().unwrap(); + let intermediate6 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_16_offset_0) * (trace_1_column_16_offset_0) + - (trace_1_column_16_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = (trace_1_column_9_offset_0 + - ((trace_1_column_6_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_6_offset_0)) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = (trace_1_column_10_offset_0 + - ((trace_1_column_7_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_7_offset_0)) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_17_offset_0, trace_2_column_18_offset_0, trace_2_column_19_offset_0, + trace_2_column_20_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_21_offset_0, trace_2_column_22_offset_0, trace_2_column_23_offset_0, + trace_2_column_24_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_17_offset_0, trace_2_column_18_offset_0, trace_2_column_19_offset_0, + trace_2_column_20_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + intermediate2)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_25_offset_0, trace_2_column_26_offset_0, trace_2_column_27_offset_0, + trace_2_column_28_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_21_offset_0, trace_2_column_22_offset_0, trace_2_column_23_offset_0, + trace_2_column_24_offset_0, + ], + ))) + * ((intermediate4) * (intermediate5)) + - (intermediate5 + (intermediate4) * (trace_1_column_16_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_29_offset_0, trace_2_column_30_offset_0, trace_2_column_31_offset_0, + trace_2_column_32_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_29_offset_neg_1, trace_2_column_30_offset_neg_1, + trace_2_column_31_offset_neg_1, trace_2_column_32_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_25_offset_0, trace_2_column_26_offset_0, trace_2_column_27_offset_0, + trace_2_column_28_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate6) + + trace_1_column_16_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_4_offset_0, + ); + + let intermediate2 = intermediate2( + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + ); + + let intermediate3 = intermediate3( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_15_offset_0, + trace_1_column_3_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate4 = intermediate4( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_5_offset_0, + ); + + let intermediate5 = intermediate5( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate6 = intermediate6( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_8_offset_0, + ); + array![ + intermediate0, + intermediate1, + intermediate2, + intermediate3, + intermediate4, + intermediate5, + intermediate6, + ] +} + + +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (trace_1_column_3_offset_0) + + (VerifyInstruction_alpha2) * (trace_1_column_4_offset_0) + + (VerifyInstruction_alpha3) * (trace_1_column_5_offset_0) + + (VerifyInstruction_alpha4) * (trace_1_column_6_offset_0) + + (VerifyInstruction_alpha5) * (trace_1_column_7_offset_0) + + (VerifyInstruction_alpha15) * (trace_1_column_8_offset_0) + + VerifyInstruction_alpha18 + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_10_offset_0 + trace_1_column_4_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_11_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_11_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_12_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_13_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_14_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate3( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_9_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_15_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate4( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_5_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_12_offset_0 + + (trace_1_column_13_offset_0) * (m31(512).into()) + + (trace_1_column_14_offset_0) * (m31(262144).into()) + + trace_1_column_5_offset_0 + - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_15_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate5( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate6( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_8_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) * (trace_1_column_0_offset_0 + m31(1).into()) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + trace_1_column_8_offset_0) + + (Opcodes_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode_imm.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode_imm.cairo new file mode 100644 index 000000000..21086b1c1 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode_imm.cairo @@ -0,0 +1,180 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(8, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode_imm/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode_imm/constraints.cairo new file mode 100644 index 000000000..ea7640f02 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/assert_eq_opcode_imm/constraints.cairo @@ -0,0 +1,542 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[derive(Drop)] +pub struct ConstraintParams { + pub MemoryAddressToId_alpha0: QM31, + pub MemoryAddressToId_alpha1: QM31, + pub MemoryAddressToId_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_alpha15: QM31, + pub VerifyInstruction_alpha18: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha4: QM31, + pub VerifyInstruction_alpha5: QM31, + pub VerifyInstruction_alpha6: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_9_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_10_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_11_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_12_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_13_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_14_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_15_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_16_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_17_offset_neg_1, trace_2_column_17_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_18_offset_neg_1, trace_2_column_18_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_19_offset_neg_1, trace_2_column_19_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_20_offset_neg_1, trace_2_column_20_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_8_offset_0) * (trace_1_column_8_offset_0) + - (trace_1_column_8_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = (trace_1_column_6_offset_0 + - ((trace_1_column_4_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_4_offset_0)) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_9_offset_0, trace_2_column_10_offset_0, trace_2_column_11_offset_0, + trace_2_column_12_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_13_offset_0, trace_2_column_14_offset_0, trace_2_column_15_offset_0, + trace_2_column_16_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_9_offset_0, trace_2_column_10_offset_0, trace_2_column_11_offset_0, + trace_2_column_12_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + (intermediate2) * (trace_1_column_8_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_17_offset_0, trace_2_column_18_offset_0, trace_2_column_19_offset_0, + trace_2_column_20_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_17_offset_neg_1, trace_2_column_18_offset_neg_1, + trace_2_column_19_offset_neg_1, trace_2_column_20_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_13_offset_0, trace_2_column_14_offset_0, trace_2_column_15_offset_0, + trace_2_column_16_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate4) + + trace_1_column_8_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, +) -> Array { + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_3_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + ); + + let intermediate2 = intermediate2( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_0_offset_0, + trace_1_column_7_offset_0, + ); + + let intermediate3 = intermediate3( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate4 = intermediate4( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_5_offset_0, + ); + array![intermediate0, intermediate1, intermediate2, intermediate3, intermediate4] +} + + +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (trace_1_column_3_offset_0) + + (VerifyInstruction_alpha2) * (qm31(32767, 0, 0, 0)) + + (VerifyInstruction_alpha3) * (qm31(32769, 0, 0, 0)) + + (VerifyInstruction_alpha4) * (trace_1_column_4_offset_0) + + VerifyInstruction_alpha5 + + VerifyInstruction_alpha6 + + (VerifyInstruction_alpha15) * (trace_1_column_5_offset_0) + + VerifyInstruction_alpha18 + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_6_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_7_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_7_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) * (trace_1_column_0_offset_0 + m31(1).into()) + + (MemoryAddressToId_alpha1) * (trace_1_column_7_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate3( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate4( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_5_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) * (trace_1_column_0_offset_0 + m31(2).into()) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + trace_1_column_5_offset_0) + + (Opcodes_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode.cairo new file mode 100644 index 000000000..042fe4324 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode.cairo @@ -0,0 +1,219 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(16, log_size).span(); + let interaction_log_sizes = ArrayImpl::new_repeated(QM31_EXTENSION_DEGREE * 5, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha8, + VerifyInstruction_alpha11, + VerifyInstruction_alpha16, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode/constraints.cairo new file mode 100644 index 000000000..f9ff11361 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode/constraints.cairo @@ -0,0 +1,876 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_alpha2: QM31, + pub MemoryIdToBig_alpha3: 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_alpha11: QM31, + pub VerifyInstruction_alpha16: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha8: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha11, + VerifyInstruction_alpha16, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha8, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_13_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_14_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_15_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_16_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_17_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_18_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_19_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_20_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_21_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_22_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_23_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_24_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_25_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_26_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_27_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_28_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_29_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_30_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_31_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_32_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_33_offset_neg_1, trace_2_column_33_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_34_offset_neg_1, trace_2_column_34_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_35_offset_neg_1, trace_2_column_35_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_36_offset_neg_1, trace_2_column_36_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha11, + VerifyInstruction_alpha16, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha8, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + let intermediate5 = *intermediates.pop_front().unwrap(); + let intermediate6 = *intermediates.pop_front().unwrap(); + let intermediate7 = *intermediates.pop_front().unwrap(); + let intermediate8 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_16_offset_0) * (trace_1_column_16_offset_0) + - (trace_1_column_16_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = (trace_1_column_5_offset_0 + + (trace_1_column_6_offset_0) * (m31(512).into()) + + (trace_1_column_7_offset_0) * (m31(262144).into()) + - (trace_1_column_2_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = (trace_1_column_9_offset_0 + + (trace_1_column_10_offset_0) * (m31(512).into()) + + (trace_1_column_11_offset_0) * (m31(262144).into()) + - (trace_1_column_0_offset_0 + m31(1).into())) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_17_offset_0, trace_2_column_18_offset_0, trace_2_column_19_offset_0, + trace_2_column_20_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_21_offset_0, trace_2_column_22_offset_0, trace_2_column_23_offset_0, + trace_2_column_24_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_17_offset_0, trace_2_column_18_offset_0, trace_2_column_19_offset_0, + trace_2_column_20_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + intermediate2)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_25_offset_0, trace_2_column_26_offset_0, trace_2_column_27_offset_0, + trace_2_column_28_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_21_offset_0, trace_2_column_22_offset_0, trace_2_column_23_offset_0, + trace_2_column_24_offset_0, + ], + ))) + * ((intermediate4) * (intermediate5)) + - (intermediate5 + intermediate4)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_29_offset_0, trace_2_column_30_offset_0, trace_2_column_31_offset_0, + trace_2_column_32_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_25_offset_0, trace_2_column_26_offset_0, trace_2_column_27_offset_0, + trace_2_column_28_offset_0, + ], + ))) + * ((intermediate6) * (intermediate7)) + - (intermediate7 + (intermediate6) * (trace_1_column_16_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 7 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_33_offset_0, trace_2_column_34_offset_0, trace_2_column_35_offset_0, + trace_2_column_36_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_33_offset_neg_1, trace_2_column_34_offset_neg_1, + trace_2_column_35_offset_neg_1, trace_2_column_36_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_29_offset_0, trace_2_column_30_offset_0, trace_2_column_31_offset_0, + trace_2_column_32_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate8) + + trace_1_column_16_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha11: QM31, + VerifyInstruction_alpha16: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha11, + VerifyInstruction_alpha16, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha8, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_1_offset_0, + trace_1_column_4_offset_0, + ); + + let intermediate2 = intermediate2( + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + ); + + let intermediate3 = intermediate3( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_1_offset_0, + trace_1_column_8_offset_0, + ); + + let intermediate4 = intermediate4( + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate5 = intermediate5( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_12_offset_0, + trace_1_column_1_offset_0, + trace_1_column_3_offset_0, + ); + + let intermediate6 = intermediate6( + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + ); + + let intermediate7 = intermediate7( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate8 = intermediate8( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_1_offset_0, + ); + array![ + intermediate0, + intermediate1, + intermediate2, + intermediate3, + intermediate4, + intermediate5, + intermediate6, + intermediate7, + intermediate8, + ] +} + + +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha11: QM31, + VerifyInstruction_alpha16: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (qm31(32768, 0, 0, 0)) + + (VerifyInstruction_alpha2) * (qm31(32769, 0, 0, 0)) + + (VerifyInstruction_alpha3) * (trace_1_column_3_offset_0) + + VerifyInstruction_alpha8 + + VerifyInstruction_alpha11 + + VerifyInstruction_alpha16 + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) * (trace_1_column_1_offset_0) + + (MemoryAddressToId_alpha1) * (trace_1_column_4_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_4_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_5_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_6_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_7_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate3( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_8_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) * (trace_1_column_1_offset_0 + m31(1).into()) + + (MemoryAddressToId_alpha1) * (trace_1_column_8_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate4( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_8_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_9_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_10_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_11_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate5( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_3_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_1_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_12_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate6( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_12_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_13_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_14_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_15_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate7( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate8( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_1_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) + * (trace_1_column_13_offset_0 + + (trace_1_column_14_offset_0) * (m31(512).into()) + + (trace_1_column_15_offset_0) * (m31(262144).into())) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + m31(2).into()) + + (Opcodes_alpha2) * (trace_1_column_1_offset_0 + m31(2).into()) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode_op_1_base_fp.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode_op_1_base_fp.cairo new file mode 100644 index 000000000..d73337946 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode_op_1_base_fp.cairo @@ -0,0 +1,219 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(16, log_size).span(); + let interaction_log_sizes = ArrayImpl::new_repeated(QM31_EXTENSION_DEGREE * 5, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha7, + VerifyInstruction_alpha11, + VerifyInstruction_alpha16, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode_op_1_base_fp/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode_op_1_base_fp/constraints.cairo new file mode 100644 index 000000000..08bca4077 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode_op_1_base_fp/constraints.cairo @@ -0,0 +1,876 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_alpha2: QM31, + pub MemoryIdToBig_alpha3: 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_alpha11: QM31, + pub VerifyInstruction_alpha16: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha7: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha11, + VerifyInstruction_alpha16, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha7, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_13_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_14_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_15_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_16_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_17_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_18_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_19_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_20_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_21_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_22_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_23_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_24_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_25_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_26_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_27_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_28_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_29_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_30_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_31_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_32_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_33_offset_neg_1, trace_2_column_33_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_34_offset_neg_1, trace_2_column_34_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_35_offset_neg_1, trace_2_column_35_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_36_offset_neg_1, trace_2_column_36_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha11, + VerifyInstruction_alpha16, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha7, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + let intermediate5 = *intermediates.pop_front().unwrap(); + let intermediate6 = *intermediates.pop_front().unwrap(); + let intermediate7 = *intermediates.pop_front().unwrap(); + let intermediate8 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_16_offset_0) * (trace_1_column_16_offset_0) + - (trace_1_column_16_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = (trace_1_column_5_offset_0 + + (trace_1_column_6_offset_0) * (m31(512).into()) + + (trace_1_column_7_offset_0) * (m31(262144).into()) + - (trace_1_column_2_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = (trace_1_column_9_offset_0 + + (trace_1_column_10_offset_0) * (m31(512).into()) + + (trace_1_column_11_offset_0) * (m31(262144).into()) + - (trace_1_column_0_offset_0 + m31(1).into())) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_17_offset_0, trace_2_column_18_offset_0, trace_2_column_19_offset_0, + trace_2_column_20_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_21_offset_0, trace_2_column_22_offset_0, trace_2_column_23_offset_0, + trace_2_column_24_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_17_offset_0, trace_2_column_18_offset_0, trace_2_column_19_offset_0, + trace_2_column_20_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + intermediate2)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_25_offset_0, trace_2_column_26_offset_0, trace_2_column_27_offset_0, + trace_2_column_28_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_21_offset_0, trace_2_column_22_offset_0, trace_2_column_23_offset_0, + trace_2_column_24_offset_0, + ], + ))) + * ((intermediate4) * (intermediate5)) + - (intermediate5 + intermediate4)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_29_offset_0, trace_2_column_30_offset_0, trace_2_column_31_offset_0, + trace_2_column_32_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_25_offset_0, trace_2_column_26_offset_0, trace_2_column_27_offset_0, + trace_2_column_28_offset_0, + ], + ))) + * ((intermediate6) * (intermediate7)) + - (intermediate7 + (intermediate6) * (trace_1_column_16_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 7 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_33_offset_0, trace_2_column_34_offset_0, trace_2_column_35_offset_0, + trace_2_column_36_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_33_offset_neg_1, trace_2_column_34_offset_neg_1, + trace_2_column_35_offset_neg_1, trace_2_column_36_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_29_offset_0, trace_2_column_30_offset_0, trace_2_column_31_offset_0, + trace_2_column_32_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate8) + + trace_1_column_16_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha11: QM31, + VerifyInstruction_alpha16: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha11, + VerifyInstruction_alpha16, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha7, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_1_offset_0, + trace_1_column_4_offset_0, + ); + + let intermediate2 = intermediate2( + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + ); + + let intermediate3 = intermediate3( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_1_offset_0, + trace_1_column_8_offset_0, + ); + + let intermediate4 = intermediate4( + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate5 = intermediate5( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_12_offset_0, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + ); + + let intermediate6 = intermediate6( + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + ); + + let intermediate7 = intermediate7( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate8 = intermediate8( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_1_offset_0, + ); + array![ + intermediate0, + intermediate1, + intermediate2, + intermediate3, + intermediate4, + intermediate5, + intermediate6, + intermediate7, + intermediate8, + ] +} + + +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha11: QM31, + VerifyInstruction_alpha16: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (qm31(32768, 0, 0, 0)) + + (VerifyInstruction_alpha2) * (qm31(32769, 0, 0, 0)) + + (VerifyInstruction_alpha3) * (trace_1_column_3_offset_0) + + VerifyInstruction_alpha7 + + VerifyInstruction_alpha11 + + VerifyInstruction_alpha16 + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) * (trace_1_column_1_offset_0) + + (MemoryAddressToId_alpha1) * (trace_1_column_4_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_4_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_5_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_6_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_7_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate3( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_8_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) * (trace_1_column_1_offset_0 + m31(1).into()) + + (MemoryAddressToId_alpha1) * (trace_1_column_8_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate4( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_8_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_9_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_10_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_11_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate5( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_2_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_12_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate6( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_12_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_13_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_14_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_15_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate7( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate8( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_1_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) + * (trace_1_column_13_offset_0 + + (trace_1_column_14_offset_0) * (m31(512).into()) + + (trace_1_column_15_offset_0) * (m31(262144).into())) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + m31(2).into()) + + (Opcodes_alpha2) * (trace_1_column_1_offset_0 + m31(2).into()) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode_rel.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode_rel.cairo new file mode 100644 index 000000000..a91d26234 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode_rel.cairo @@ -0,0 +1,239 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(17, log_size).span(); + let interaction_log_sizes = ArrayImpl::new_repeated(QM31_EXTENSION_DEGREE * 5, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha6, + VerifyInstruction_alpha12, + VerifyInstruction_alpha16, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_alpha10, + MemoryIdToBig_alpha11, + MemoryIdToBig_alpha12, + MemoryIdToBig_alpha13, + MemoryIdToBig_alpha14, + MemoryIdToBig_alpha15, + MemoryIdToBig_alpha16, + MemoryIdToBig_alpha17, + MemoryIdToBig_alpha18, + MemoryIdToBig_alpha19, + MemoryIdToBig_alpha20, + MemoryIdToBig_alpha21, + MemoryIdToBig_alpha22, + MemoryIdToBig_alpha28, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode_rel/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode_rel/constraints.cairo new file mode 100644 index 000000000..218c1e112 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/call_opcode_rel/constraints.cairo @@ -0,0 +1,1054 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_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_alpha12: QM31, + pub VerifyInstruction_alpha16: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha6: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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_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_alpha12, + VerifyInstruction_alpha16, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha6, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_13_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_14_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_15_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_16_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_17_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_18_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_19_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_20_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_21_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_22_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_23_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_24_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_25_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_26_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_27_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_28_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_29_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_30_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_31_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_32_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_33_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_34_offset_neg_1, trace_2_column_34_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_35_offset_neg_1, trace_2_column_35_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_36_offset_neg_1, trace_2_column_36_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_37_offset_neg_1, trace_2_column_37_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + 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_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_alpha12, + VerifyInstruction_alpha16, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + let intermediate5 = *intermediates.pop_front().unwrap(); + let intermediate6 = *intermediates.pop_front().unwrap(); + let intermediate7 = *intermediates.pop_front().unwrap(); + let intermediate8 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_17_offset_0) * (trace_1_column_17_offset_0) + - (trace_1_column_17_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = (trace_1_column_4_offset_0 + + (trace_1_column_5_offset_0) * (m31(512).into()) + + (trace_1_column_6_offset_0) * (m31(262144).into()) + - (trace_1_column_2_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = (trace_1_column_8_offset_0 + + (trace_1_column_9_offset_0) * (m31(512).into()) + + (trace_1_column_10_offset_0) * (m31(262144).into()) + - (trace_1_column_0_offset_0 + m31(2).into())) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((trace_1_column_12_offset_0) + * (trace_1_column_12_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((trace_1_column_13_offset_0) + * (trace_1_column_13_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((trace_1_column_13_offset_0) + * (trace_1_column_12_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((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, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 7 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_22_offset_0, trace_2_column_23_offset_0, trace_2_column_24_offset_0, + trace_2_column_25_offset_0, + ], + ) + - (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, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + intermediate2)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 8 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_26_offset_0, trace_2_column_27_offset_0, trace_2_column_28_offset_0, + trace_2_column_29_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_22_offset_0, trace_2_column_23_offset_0, trace_2_column_24_offset_0, + trace_2_column_25_offset_0, + ], + ))) + * ((intermediate4) * (intermediate5)) + - (intermediate5 + intermediate4)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 9 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_30_offset_0, trace_2_column_31_offset_0, trace_2_column_32_offset_0, + trace_2_column_33_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_26_offset_0, trace_2_column_27_offset_0, trace_2_column_28_offset_0, + trace_2_column_29_offset_0, + ], + ))) + * ((intermediate6) * (intermediate7)) + - (intermediate7 + (intermediate6) * (trace_1_column_17_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 10 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_34_offset_0, trace_2_column_35_offset_0, trace_2_column_36_offset_0, + trace_2_column_37_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_34_offset_neg_1, trace_2_column_35_offset_neg_1, + trace_2_column_36_offset_neg_1, trace_2_column_37_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_30_offset_0, trace_2_column_31_offset_0, trace_2_column_32_offset_0, + trace_2_column_33_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate8) + + trace_1_column_17_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha12: QM31, + VerifyInstruction_alpha16: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha12, + VerifyInstruction_alpha16, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_1_offset_0, + trace_1_column_3_offset_0, + ); + + let intermediate2 = intermediate2( + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + ); + + let intermediate3 = intermediate3( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_1_offset_0, + trace_1_column_7_offset_0, + ); + + let intermediate4 = intermediate4( + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + trace_1_column_10_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate5 = intermediate5( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_0_offset_0, + trace_1_column_11_offset_0, + ); + + let intermediate6 = intermediate6( + 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_alpha28, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_z, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + ); + + let intermediate7 = intermediate7( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate8 = intermediate8( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_1_offset_0, + ); + array![ + intermediate0, + intermediate1, + intermediate2, + intermediate3, + intermediate4, + intermediate5, + intermediate6, + intermediate7, + intermediate8, + ] +} + + +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha12: QM31, + VerifyInstruction_alpha16: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (qm31(32768, 0, 0, 0)) + + (VerifyInstruction_alpha2) * (qm31(32769, 0, 0, 0)) + + (VerifyInstruction_alpha3) * (qm31(32769, 0, 0, 0)) + + VerifyInstruction_alpha6 + + VerifyInstruction_alpha12 + + VerifyInstruction_alpha16 + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_3_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) * (trace_1_column_1_offset_0) + + (MemoryAddressToId_alpha1) * (trace_1_column_3_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_3_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_4_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_5_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_6_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate3( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_7_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) * (trace_1_column_1_offset_0 + m31(1).into()) + + (MemoryAddressToId_alpha1) * (trace_1_column_7_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate4( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_7_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_8_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_9_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_10_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate5( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_11_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) * (trace_1_column_0_offset_0 + m31(1).into()) + + (MemoryAddressToId_alpha1) * (trace_1_column_11_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate6( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_11_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_14_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_15_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_16_offset_0) + + (MemoryIdToBig_alpha4) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha5) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha6) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha7) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha8) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha9) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha10) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha11) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha12) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha13) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha14) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha15) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha16) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha17) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha18) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha19) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha20) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha21) * ((trace_1_column_13_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha22) + * ((m31(136).into()) * (trace_1_column_12_offset_0) - (trace_1_column_13_offset_0)) + + (MemoryIdToBig_alpha28) * ((trace_1_column_12_offset_0) * (m31(256).into())) + - (MemoryIdToBig_z) +} + +pub fn intermediate7( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate8( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_1_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) + * (trace_1_column_0_offset_0 + + trace_1_column_14_offset_0 + + (trace_1_column_15_offset_0) * (m31(512).into()) + + (trace_1_column_16_offset_0) * (m31(262144).into()) + - (trace_1_column_12_offset_0) + - ((m31(134217728).into()) * (trace_1_column_13_offset_0))) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + m31(2).into()) + + (Opcodes_alpha2) * (trace_1_column_1_offset_0 + m31(2).into()) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/generic_opcode.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/generic_opcode copy.cairo similarity index 96% rename from stwo_cairo_verifier/crates/cairo_air/src/components/generic_opcode.cairo rename to stwo_cairo_verifier/crates/cairo_air/src/components/generic_opcode copy.cairo index 6a5b2a4fd..e44d9780d 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/components/generic_opcode.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/generic_opcode copy.cairo @@ -1,15 +1,15 @@ use crate::components::CairoComponent; use crate::utils::U32Impl; use stwo_constraint_framework::{ - PreprocessedColumnSet, PreprocessedColumn, PreprocessedMaskValues, PreprocessedMaskValuesImpl, + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, }; use stwo_verifier_core::channel::{Channel, ChannelImpl}; use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; 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 stwo_verifier_core::fields::Invertible; mod constraints; @@ -222,6 +222,16 @@ pub impl ComponentImpl of CairoComponent { VerifyInstruction_alpha16, VerifyInstruction_alpha17, VerifyInstruction_alpha18, + VerifyInstruction_alpha19, + VerifyInstruction_alpha20, + VerifyInstruction_alpha21, + VerifyInstruction_alpha22, + VerifyInstruction_alpha23, + VerifyInstruction_alpha24, + VerifyInstruction_alpha25, + VerifyInstruction_alpha26, + VerifyInstruction_alpha27, + VerifyInstruction_alpha28, MemoryAddressToId_z, MemoryAddressToId_alpha0, MemoryAddressToId_alpha1, @@ -260,6 +270,7 @@ pub impl ComponentImpl of CairoComponent { RangeCheck_9_9_alpha1, RangeCheck_19_z, RangeCheck_19_alpha0, + RangeCheck_19_alpha1, Opcodes_z, Opcodes_alpha0, Opcodes_alpha1, diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/generic_opcode/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/generic_opcode/constraints.cairo index 4eaff7867..df3695732 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/components/generic_opcode/constraints.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/generic_opcode/constraints.cairo @@ -1,12 +1,12 @@ use stwo_constraint_framework::{ PreprocessedColumn, PreprocessedColumnSet, PreprocessedColumnSetImpl, }; -use stwo_verifier_core::{ColumnSpan, ColumnArray}; use stwo_verifier_core::circle::{ CirclePoint, CirclePointIndex, CirclePointIndexImpl, CirclePointQM31AddCirclePointM31Impl, }; -use stwo_verifier_core::fields::m31::{m31, M31}; +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( @@ -456,4 +456,13450 @@ pub fn evaluate_constraints_at_point( 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, + RangeCheck_19_alpha0, + RangeCheck_19_z, + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha10, + VerifyInstruction_alpha11, + VerifyInstruction_alpha12, + VerifyInstruction_alpha13, + VerifyInstruction_alpha14, + VerifyInstruction_alpha15, + VerifyInstruction_alpha16, + VerifyInstruction_alpha17, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_alpha9, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_13_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_14_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_15_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_16_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_17_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_18_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_19_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_20_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_21_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_22_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_23_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_24_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_25_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_26_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_27_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_28_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_29_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_30_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_31_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_32_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_33_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_34_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_35_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_36_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_37_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_38_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_39_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_40_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_41_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_42_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_43_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_44_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_45_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_46_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_47_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_48_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_49_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_50_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_51_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_52_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_53_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_54_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_55_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_56_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_57_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_58_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_59_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_60_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_61_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_62_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_63_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_64_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_65_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_66_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_67_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_68_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_69_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_70_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_71_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_72_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_73_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_74_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_75_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_76_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_77_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_78_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_79_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_80_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_81_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_82_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_83_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_84_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_85_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_86_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_87_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_88_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_89_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_90_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_91_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_92_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_93_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_94_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_95_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_96_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_97_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_98_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_99_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_100_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_101_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_102_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_103_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_104_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_105_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_106_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_107_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_108_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_109_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_110_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_111_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_112_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_113_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_114_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_115_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_116_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_117_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_118_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_119_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_120_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_121_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_122_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_123_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_124_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_125_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_126_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_127_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_128_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_129_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_130_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_131_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_132_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_133_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_134_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_135_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_136_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_137_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_138_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_139_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_140_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_141_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_142_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_143_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_144_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_145_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_146_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_147_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_148_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_149_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_150_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_151_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_152_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_153_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_154_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_155_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_156_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_157_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_158_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_159_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_160_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_161_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_162_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_163_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_164_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_165_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_166_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_167_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_168_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_169_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_170_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_171_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_172_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_173_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_174_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_175_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_176_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_177_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_178_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_179_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_180_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_181_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_182_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_183_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_184_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_185_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_186_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_187_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_188_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_189_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_190_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_191_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_192_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_193_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_194_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_195_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_196_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_197_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_198_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_199_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_200_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_201_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_202_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_203_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_204_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_205_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_206_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_207_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_208_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_209_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_210_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_211_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_212_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_213_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_214_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_215_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_216_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_217_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_218_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_219_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_220_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_221_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_222_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_223_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_224_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_225_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_226_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_227_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_228_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_229_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_230_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_231_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_232_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_233_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_234_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_235_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_236_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_237_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_238_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_239_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_240_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_241_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_242_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_243_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_244_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_245_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_246_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_247_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_248_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_249_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_250_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_251_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_252_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_253_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_254_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_255_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_256_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_257_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_258_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_259_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_260_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_261_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_262_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_263_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_264_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_265_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_266_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_267_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_268_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_269_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_270_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_271_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_272_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_273_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_274_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_275_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_276_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_277_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_278_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_279_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_280_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_281_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_282_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_283_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_284_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_285_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_286_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_287_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_288_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_289_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_290_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_291_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_292_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_293_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_294_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_295_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_296_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_297_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_298_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_299_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_300_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_301_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_302_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_303_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_304_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_305_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_306_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_307_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_308_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_309_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_310_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_311_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_312_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_313_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_314_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_315_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_316_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_317_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_318_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_319_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_320_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_321_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_322_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_323_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_324_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_325_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_326_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_327_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_328_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_329_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_330_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_331_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_332_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_333_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_334_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_335_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_336_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_337_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_338_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_339_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_340_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_341_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_342_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_343_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_344_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_345_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_346_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_347_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_348_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_349_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_350_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_351_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_352_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_353_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_354_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_355_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_356_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_357_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_358_offset_neg_1, trace_2_column_358_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_359_offset_neg_1, trace_2_column_359_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_360_offset_neg_1, trace_2_column_360_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_361_offset_neg_1, trace_2_column_361_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + 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, + RangeCheck_19_alpha0, + RangeCheck_19_z, + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha10, + VerifyInstruction_alpha11, + VerifyInstruction_alpha12, + VerifyInstruction_alpha13, + VerifyInstruction_alpha14, + VerifyInstruction_alpha15, + VerifyInstruction_alpha16, + VerifyInstruction_alpha17, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_alpha9, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_108_offset_0, + trace_1_column_109_offset_0, + trace_1_column_10_offset_0, + trace_1_column_110_offset_0, + trace_1_column_111_offset_0, + trace_1_column_112_offset_0, + trace_1_column_113_offset_0, + trace_1_column_114_offset_0, + trace_1_column_115_offset_0, + trace_1_column_116_offset_0, + trace_1_column_117_offset_0, + trace_1_column_118_offset_0, + trace_1_column_119_offset_0, + trace_1_column_11_offset_0, + trace_1_column_120_offset_0, + trace_1_column_121_offset_0, + trace_1_column_122_offset_0, + trace_1_column_123_offset_0, + trace_1_column_124_offset_0, + trace_1_column_125_offset_0, + trace_1_column_126_offset_0, + trace_1_column_127_offset_0, + trace_1_column_128_offset_0, + trace_1_column_129_offset_0, + trace_1_column_12_offset_0, + trace_1_column_130_offset_0, + trace_1_column_131_offset_0, + trace_1_column_132_offset_0, + trace_1_column_133_offset_0, + trace_1_column_134_offset_0, + trace_1_column_135_offset_0, + trace_1_column_136_offset_0, + trace_1_column_137_offset_0, + trace_1_column_138_offset_0, + trace_1_column_139_offset_0, + trace_1_column_13_offset_0, + trace_1_column_140_offset_0, + trace_1_column_141_offset_0, + trace_1_column_142_offset_0, + trace_1_column_143_offset_0, + trace_1_column_144_offset_0, + trace_1_column_145_offset_0, + trace_1_column_146_offset_0, + trace_1_column_147_offset_0, + trace_1_column_148_offset_0, + trace_1_column_149_offset_0, + trace_1_column_14_offset_0, + trace_1_column_150_offset_0, + trace_1_column_151_offset_0, + trace_1_column_152_offset_0, + trace_1_column_153_offset_0, + trace_1_column_154_offset_0, + trace_1_column_155_offset_0, + trace_1_column_156_offset_0, + trace_1_column_157_offset_0, + trace_1_column_158_offset_0, + trace_1_column_159_offset_0, + trace_1_column_15_offset_0, + trace_1_column_160_offset_0, + trace_1_column_161_offset_0, + trace_1_column_162_offset_0, + trace_1_column_163_offset_0, + trace_1_column_164_offset_0, + trace_1_column_165_offset_0, + trace_1_column_166_offset_0, + trace_1_column_167_offset_0, + trace_1_column_168_offset_0, + trace_1_column_169_offset_0, + trace_1_column_16_offset_0, + trace_1_column_170_offset_0, + trace_1_column_171_offset_0, + trace_1_column_172_offset_0, + trace_1_column_173_offset_0, + trace_1_column_174_offset_0, + trace_1_column_175_offset_0, + trace_1_column_176_offset_0, + trace_1_column_177_offset_0, + trace_1_column_178_offset_0, + trace_1_column_179_offset_0, + trace_1_column_17_offset_0, + trace_1_column_180_offset_0, + trace_1_column_181_offset_0, + trace_1_column_182_offset_0, + trace_1_column_183_offset_0, + trace_1_column_184_offset_0, + trace_1_column_185_offset_0, + trace_1_column_186_offset_0, + trace_1_column_187_offset_0, + trace_1_column_188_offset_0, + trace_1_column_189_offset_0, + trace_1_column_18_offset_0, + trace_1_column_190_offset_0, + trace_1_column_191_offset_0, + trace_1_column_192_offset_0, + trace_1_column_193_offset_0, + trace_1_column_194_offset_0, + trace_1_column_195_offset_0, + trace_1_column_19_offset_0, + trace_1_column_1_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_221_offset_0, + trace_1_column_222_offset_0, + trace_1_column_228_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_2_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_34_offset_0, + trace_1_column_35_offset_0, + trace_1_column_36_offset_0, + trace_1_column_37_offset_0, + trace_1_column_38_offset_0, + trace_1_column_39_offset_0, + trace_1_column_3_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_4_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_5_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_6_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_7_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_8_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + let intermediate5 = *intermediates.pop_front().unwrap(); + let intermediate6 = *intermediates.pop_front().unwrap(); + let intermediate7 = *intermediates.pop_front().unwrap(); + let intermediate8 = *intermediates.pop_front().unwrap(); + let intermediate9 = *intermediates.pop_front().unwrap(); + let intermediate10 = *intermediates.pop_front().unwrap(); + let intermediate11 = *intermediates.pop_front().unwrap(); + let intermediate12 = *intermediates.pop_front().unwrap(); + let intermediate13 = *intermediates.pop_front().unwrap(); + let intermediate14 = *intermediates.pop_front().unwrap(); + let intermediate15 = *intermediates.pop_front().unwrap(); + let intermediate16 = *intermediates.pop_front().unwrap(); + let intermediate17 = *intermediates.pop_front().unwrap(); + let intermediate18 = *intermediates.pop_front().unwrap(); + let intermediate19 = *intermediates.pop_front().unwrap(); + let intermediate20 = *intermediates.pop_front().unwrap(); + let intermediate21 = *intermediates.pop_front().unwrap(); + let intermediate22 = *intermediates.pop_front().unwrap(); + let intermediate23 = *intermediates.pop_front().unwrap(); + let intermediate24 = *intermediates.pop_front().unwrap(); + let intermediate25 = *intermediates.pop_front().unwrap(); + let intermediate26 = *intermediates.pop_front().unwrap(); + let intermediate27 = *intermediates.pop_front().unwrap(); + let intermediate28 = *intermediates.pop_front().unwrap(); + let intermediate29 = *intermediates.pop_front().unwrap(); + let intermediate30 = *intermediates.pop_front().unwrap(); + let intermediate31 = *intermediates.pop_front().unwrap(); + let intermediate32 = *intermediates.pop_front().unwrap(); + let intermediate33 = *intermediates.pop_front().unwrap(); + let intermediate34 = *intermediates.pop_front().unwrap(); + let intermediate35 = *intermediates.pop_front().unwrap(); + let intermediate36 = *intermediates.pop_front().unwrap(); + let intermediate37 = *intermediates.pop_front().unwrap(); + let intermediate38 = *intermediates.pop_front().unwrap(); + let intermediate39 = *intermediates.pop_front().unwrap(); + let intermediate40 = *intermediates.pop_front().unwrap(); + let intermediate41 = *intermediates.pop_front().unwrap(); + let intermediate42 = *intermediates.pop_front().unwrap(); + let intermediate43 = *intermediates.pop_front().unwrap(); + let intermediate44 = *intermediates.pop_front().unwrap(); + let intermediate45 = *intermediates.pop_front().unwrap(); + let intermediate46 = *intermediates.pop_front().unwrap(); + let intermediate47 = *intermediates.pop_front().unwrap(); + let intermediate48 = *intermediates.pop_front().unwrap(); + let intermediate49 = *intermediates.pop_front().unwrap(); + let intermediate50 = *intermediates.pop_front().unwrap(); + let intermediate51 = *intermediates.pop_front().unwrap(); + let intermediate52 = *intermediates.pop_front().unwrap(); + let intermediate53 = *intermediates.pop_front().unwrap(); + let intermediate54 = *intermediates.pop_front().unwrap(); + let intermediate55 = *intermediates.pop_front().unwrap(); + let intermediate56 = *intermediates.pop_front().unwrap(); + let intermediate57 = *intermediates.pop_front().unwrap(); + let intermediate58 = *intermediates.pop_front().unwrap(); + let intermediate59 = *intermediates.pop_front().unwrap(); + let intermediate60 = *intermediates.pop_front().unwrap(); + let intermediate61 = *intermediates.pop_front().unwrap(); + let intermediate62 = *intermediates.pop_front().unwrap(); + let intermediate63 = *intermediates.pop_front().unwrap(); + let intermediate64 = *intermediates.pop_front().unwrap(); + let intermediate65 = *intermediates.pop_front().unwrap(); + let intermediate66 = *intermediates.pop_front().unwrap(); + let intermediate67 = *intermediates.pop_front().unwrap(); + let intermediate68 = *intermediates.pop_front().unwrap(); + let intermediate69 = *intermediates.pop_front().unwrap(); + let intermediate70 = *intermediates.pop_front().unwrap(); + let intermediate71 = *intermediates.pop_front().unwrap(); + let intermediate72 = *intermediates.pop_front().unwrap(); + let intermediate73 = *intermediates.pop_front().unwrap(); + let intermediate74 = *intermediates.pop_front().unwrap(); + let intermediate75 = *intermediates.pop_front().unwrap(); + let intermediate76 = *intermediates.pop_front().unwrap(); + let intermediate77 = *intermediates.pop_front().unwrap(); + let intermediate78 = *intermediates.pop_front().unwrap(); + let intermediate79 = *intermediates.pop_front().unwrap(); + let intermediate80 = *intermediates.pop_front().unwrap(); + let intermediate81 = *intermediates.pop_front().unwrap(); + let intermediate82 = *intermediates.pop_front().unwrap(); + let intermediate83 = *intermediates.pop_front().unwrap(); + let intermediate84 = *intermediates.pop_front().unwrap(); + let intermediate85 = *intermediates.pop_front().unwrap(); + let intermediate86 = *intermediates.pop_front().unwrap(); + let intermediate87 = *intermediates.pop_front().unwrap(); + let intermediate88 = *intermediates.pop_front().unwrap(); + let intermediate89 = *intermediates.pop_front().unwrap(); + let intermediate90 = *intermediates.pop_front().unwrap(); + let intermediate91 = *intermediates.pop_front().unwrap(); + let intermediate92 = *intermediates.pop_front().unwrap(); + let intermediate93 = *intermediates.pop_front().unwrap(); + let intermediate94 = *intermediates.pop_front().unwrap(); + let intermediate95 = *intermediates.pop_front().unwrap(); + let intermediate96 = *intermediates.pop_front().unwrap(); + let intermediate97 = *intermediates.pop_front().unwrap(); + let intermediate98 = *intermediates.pop_front().unwrap(); + let intermediate99 = *intermediates.pop_front().unwrap(); + let intermediate100 = *intermediates.pop_front().unwrap(); + let intermediate101 = *intermediates.pop_front().unwrap(); + let intermediate102 = *intermediates.pop_front().unwrap(); + let intermediate103 = *intermediates.pop_front().unwrap(); + let intermediate104 = *intermediates.pop_front().unwrap(); + let intermediate105 = *intermediates.pop_front().unwrap(); + let intermediate106 = *intermediates.pop_front().unwrap(); + let intermediate107 = *intermediates.pop_front().unwrap(); + let intermediate108 = *intermediates.pop_front().unwrap(); + let intermediate109 = *intermediates.pop_front().unwrap(); + let intermediate110 = *intermediates.pop_front().unwrap(); + let intermediate111 = *intermediates.pop_front().unwrap(); + let intermediate112 = *intermediates.pop_front().unwrap(); + let intermediate113 = *intermediates.pop_front().unwrap(); + let intermediate114 = *intermediates.pop_front().unwrap(); + let intermediate115 = *intermediates.pop_front().unwrap(); + let intermediate116 = *intermediates.pop_front().unwrap(); + let intermediate117 = *intermediates.pop_front().unwrap(); + let intermediate118 = *intermediates.pop_front().unwrap(); + let intermediate119 = *intermediates.pop_front().unwrap(); + let intermediate120 = *intermediates.pop_front().unwrap(); + let intermediate121 = *intermediates.pop_front().unwrap(); + let intermediate122 = *intermediates.pop_front().unwrap(); + let intermediate123 = *intermediates.pop_front().unwrap(); + let intermediate124 = *intermediates.pop_front().unwrap(); + let intermediate125 = *intermediates.pop_front().unwrap(); + let intermediate126 = *intermediates.pop_front().unwrap(); + let intermediate127 = *intermediates.pop_front().unwrap(); + let intermediate128 = *intermediates.pop_front().unwrap(); + let intermediate129 = *intermediates.pop_front().unwrap(); + let intermediate130 = *intermediates.pop_front().unwrap(); + let intermediate131 = *intermediates.pop_front().unwrap(); + let intermediate132 = *intermediates.pop_front().unwrap(); + let intermediate133 = *intermediates.pop_front().unwrap(); + let intermediate134 = *intermediates.pop_front().unwrap(); + let intermediate135 = *intermediates.pop_front().unwrap(); + let intermediate136 = *intermediates.pop_front().unwrap(); + let intermediate137 = *intermediates.pop_front().unwrap(); + let intermediate138 = *intermediates.pop_front().unwrap(); + let intermediate139 = *intermediates.pop_front().unwrap(); + let intermediate140 = *intermediates.pop_front().unwrap(); + let intermediate141 = *intermediates.pop_front().unwrap(); + let intermediate142 = *intermediates.pop_front().unwrap(); + let intermediate143 = *intermediates.pop_front().unwrap(); + let intermediate144 = *intermediates.pop_front().unwrap(); + let intermediate145 = *intermediates.pop_front().unwrap(); + let intermediate146 = *intermediates.pop_front().unwrap(); + let intermediate147 = *intermediates.pop_front().unwrap(); + let intermediate148 = *intermediates.pop_front().unwrap(); + let intermediate149 = *intermediates.pop_front().unwrap(); + let intermediate150 = *intermediates.pop_front().unwrap(); + let intermediate151 = *intermediates.pop_front().unwrap(); + let intermediate152 = *intermediates.pop_front().unwrap(); + let intermediate153 = *intermediates.pop_front().unwrap(); + let intermediate154 = *intermediates.pop_front().unwrap(); + let intermediate155 = *intermediates.pop_front().unwrap(); + let intermediate156 = *intermediates.pop_front().unwrap(); + let intermediate157 = *intermediates.pop_front().unwrap(); + let intermediate158 = *intermediates.pop_front().unwrap(); + let intermediate159 = *intermediates.pop_front().unwrap(); + let intermediate160 = *intermediates.pop_front().unwrap(); + let intermediate161 = *intermediates.pop_front().unwrap(); + let intermediate162 = *intermediates.pop_front().unwrap(); + let intermediate163 = *intermediates.pop_front().unwrap(); + let intermediate164 = *intermediates.pop_front().unwrap(); + let intermediate165 = *intermediates.pop_front().unwrap(); + let intermediate166 = *intermediates.pop_front().unwrap(); + let intermediate167 = *intermediates.pop_front().unwrap(); + let intermediate168 = *intermediates.pop_front().unwrap(); + let intermediate169 = *intermediates.pop_front().unwrap(); + let intermediate170 = *intermediates.pop_front().unwrap(); + let intermediate171 = *intermediates.pop_front().unwrap(); + let intermediate172 = *intermediates.pop_front().unwrap(); + let intermediate173 = *intermediates.pop_front().unwrap(); + let intermediate174 = *intermediates.pop_front().unwrap(); + let intermediate175 = *intermediates.pop_front().unwrap(); + let intermediate176 = *intermediates.pop_front().unwrap(); + let intermediate177 = *intermediates.pop_front().unwrap(); + let intermediate178 = *intermediates.pop_front().unwrap(); + let intermediate179 = *intermediates.pop_front().unwrap(); + let intermediate180 = *intermediates.pop_front().unwrap(); + let intermediate181 = *intermediates.pop_front().unwrap(); + let intermediate182 = *intermediates.pop_front().unwrap(); + let intermediate183 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_229_offset_0) * (trace_1_column_229_offset_0) + - (trace_1_column_229_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = ((intermediate1) * (m31(1).into() - (intermediate1))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = ((intermediate2) * (m31(1).into() - (intermediate2))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((intermediate3) * (m31(1).into() - (intermediate3))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((intermediate4) * (m31(1).into() - (intermediate4))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((intermediate5) * (m31(1).into() - (intermediate5))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((intermediate1) * (trace_1_column_54_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 7 + let constraint_quotient = ((intermediate1) * (trace_1_column_55_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 8 + let constraint_quotient = ((intermediate1) * (trace_1_column_56_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 9 + let constraint_quotient = ((intermediate1) * (trace_1_column_57_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 10 + let constraint_quotient = ((intermediate1) * (trace_1_column_58_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 11 + let constraint_quotient = ((intermediate1) * (trace_1_column_59_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 12 + let constraint_quotient = ((intermediate1) * (trace_1_column_60_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 13 + let constraint_quotient = ((intermediate1) * (trace_1_column_61_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 14 + let constraint_quotient = ((intermediate1) * (trace_1_column_62_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 15 + let constraint_quotient = ((intermediate1) * (trace_1_column_63_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 16 + let constraint_quotient = ((intermediate1) * (trace_1_column_64_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 17 + let constraint_quotient = ((intermediate1) * (trace_1_column_65_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 18 + let constraint_quotient = ((intermediate1) * (trace_1_column_66_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 19 + let constraint_quotient = ((intermediate1) * (trace_1_column_67_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 20 + let constraint_quotient = ((intermediate1) * (trace_1_column_68_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 21 + let constraint_quotient = ((intermediate1) * (trace_1_column_69_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 22 + let constraint_quotient = ((intermediate1) * (trace_1_column_70_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 23 + let constraint_quotient = ((intermediate1) * (trace_1_column_71_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 24 + let constraint_quotient = ((intermediate1) * (trace_1_column_72_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 25 + let constraint_quotient = ((intermediate1) * (trace_1_column_73_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 26 + let constraint_quotient = ((intermediate1) * (trace_1_column_74_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 27 + let constraint_quotient = ((intermediate1) * (trace_1_column_75_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 28 + let constraint_quotient = ((intermediate1) * (trace_1_column_76_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 29 + let constraint_quotient = ((intermediate1) * (trace_1_column_77_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 30 + let constraint_quotient = ((intermediate1) * (trace_1_column_78_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 31 + let constraint_quotient = ((trace_1_column_136_offset_0) + * (trace_1_column_136_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 32 + let constraint_quotient = ((intermediate26) + * ((intermediate26) * (intermediate26) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 33 + let constraint_quotient = ((intermediate27) + * ((intermediate27) * (intermediate27) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 34 + let constraint_quotient = ((intermediate28) + * ((intermediate28) * (intermediate28) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 35 + let constraint_quotient = ((intermediate29) + * ((intermediate29) * (intermediate29) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 36 + let constraint_quotient = ((intermediate30) + * ((intermediate30) * (intermediate30) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 37 + let constraint_quotient = ((intermediate31) + * ((intermediate31) * (intermediate31) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 38 + let constraint_quotient = ((intermediate32) + * ((intermediate32) * (intermediate32) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 39 + let constraint_quotient = ((intermediate33) + * ((intermediate33) * (intermediate33) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 40 + let constraint_quotient = ((intermediate34) + * ((intermediate34) * (intermediate34) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 41 + let constraint_quotient = ((intermediate35) + * ((intermediate35) * (intermediate35) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 42 + let constraint_quotient = ((intermediate36) + * ((intermediate36) * (intermediate36) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 43 + let constraint_quotient = ((intermediate37) + * ((intermediate37) * (intermediate37) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 44 + let constraint_quotient = ((intermediate38) + * ((intermediate38) * (intermediate38) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 45 + let constraint_quotient = ((intermediate39) + * ((intermediate39) * (intermediate39) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 46 + let constraint_quotient = ((intermediate40) + * ((intermediate40) * (intermediate40) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 47 + let constraint_quotient = ((intermediate41) + * ((intermediate41) * (intermediate41) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 48 + let constraint_quotient = ((intermediate42) + * ((intermediate42) * (intermediate42) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 49 + let constraint_quotient = ((intermediate43) + * ((intermediate43) * (intermediate43) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 50 + let constraint_quotient = ((intermediate44) + * ((intermediate44) * (intermediate44) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 51 + let constraint_quotient = ((intermediate45) + * ((intermediate45) * (intermediate45) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 52 + let constraint_quotient = ((intermediate46) + * ((intermediate46) * (intermediate46) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 53 + let constraint_quotient = ((intermediate47) + * ((intermediate47) * (intermediate47) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 54 + let constraint_quotient = ((intermediate48) + * ((intermediate48) * (intermediate48) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 55 + let constraint_quotient = ((intermediate49) + * ((intermediate49) * (intermediate49) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 56 + let constraint_quotient = ((intermediate50) + * ((intermediate50) * (intermediate50) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 57 + let constraint_quotient = ((intermediate51) + * ((intermediate51) * (intermediate51) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 58 + let constraint_quotient = ((intermediate52) + * ((intermediate52) * (intermediate52) - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 59 + let constraint_quotient = (trace_1_column_78_offset_0 + + trace_1_column_107_offset_0 + + intermediate52 + - (trace_1_column_135_offset_0) + - ((m31(256).into()) * (trace_1_column_136_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 60 + let constraint_quotient = ((trace_1_column_166_offset_0) * (m31(512).into()) + - (intermediate122 - (trace_1_column_165_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 61 + let constraint_quotient = ((trace_1_column_167_offset_0) * (m31(512).into()) + - (intermediate123 + trace_1_column_166_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 62 + let constraint_quotient = ((trace_1_column_168_offset_0) * (m31(512).into()) + - (intermediate124 + trace_1_column_167_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 63 + let constraint_quotient = ((trace_1_column_169_offset_0) * (m31(512).into()) + - (intermediate125 + trace_1_column_168_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 64 + let constraint_quotient = ((trace_1_column_170_offset_0) * (m31(512).into()) + - (intermediate126 + trace_1_column_169_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 65 + let constraint_quotient = ((trace_1_column_171_offset_0) * (m31(512).into()) + - (intermediate127 + trace_1_column_170_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 66 + let constraint_quotient = ((trace_1_column_172_offset_0) * (m31(512).into()) + - (intermediate128 + trace_1_column_171_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 67 + let constraint_quotient = ((trace_1_column_173_offset_0) * (m31(512).into()) + - (intermediate129 + trace_1_column_172_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 68 + let constraint_quotient = ((trace_1_column_174_offset_0) * (m31(512).into()) + - (intermediate130 + trace_1_column_173_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 69 + let constraint_quotient = ((trace_1_column_175_offset_0) * (m31(512).into()) + - (intermediate131 + trace_1_column_174_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 70 + let constraint_quotient = ((trace_1_column_176_offset_0) * (m31(512).into()) + - (intermediate132 + trace_1_column_175_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 71 + let constraint_quotient = ((trace_1_column_177_offset_0) * (m31(512).into()) + - (intermediate133 + trace_1_column_176_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 72 + let constraint_quotient = ((trace_1_column_178_offset_0) * (m31(512).into()) + - (intermediate134 + trace_1_column_177_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 73 + let constraint_quotient = ((trace_1_column_179_offset_0) * (m31(512).into()) + - (intermediate135 + trace_1_column_178_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 74 + let constraint_quotient = ((trace_1_column_180_offset_0) * (m31(512).into()) + - (intermediate136 + trace_1_column_179_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 75 + let constraint_quotient = ((trace_1_column_181_offset_0) * (m31(512).into()) + - (intermediate137 + trace_1_column_180_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 76 + let constraint_quotient = ((trace_1_column_182_offset_0) * (m31(512).into()) + - (intermediate138 + trace_1_column_181_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 77 + let constraint_quotient = ((trace_1_column_183_offset_0) * (m31(512).into()) + - (intermediate139 + trace_1_column_182_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 78 + let constraint_quotient = ((trace_1_column_184_offset_0) * (m31(512).into()) + - (intermediate140 + trace_1_column_183_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 79 + let constraint_quotient = ((trace_1_column_185_offset_0) * (m31(512).into()) + - (intermediate141 + trace_1_column_184_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 80 + let constraint_quotient = ((trace_1_column_186_offset_0) * (m31(512).into()) + - (intermediate142 + trace_1_column_185_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 81 + let constraint_quotient = ((trace_1_column_187_offset_0) * (m31(512).into()) + - (intermediate143 + - ((m31(136).into()) * (trace_1_column_165_offset_0)) + + trace_1_column_186_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 82 + let constraint_quotient = ((trace_1_column_188_offset_0) * (m31(512).into()) + - (intermediate144 + trace_1_column_187_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 83 + let constraint_quotient = ((trace_1_column_189_offset_0) * (m31(512).into()) + - (intermediate145 + trace_1_column_188_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 84 + let constraint_quotient = ((trace_1_column_190_offset_0) * (m31(512).into()) + - (intermediate146 + trace_1_column_189_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 85 + let constraint_quotient = ((trace_1_column_191_offset_0) * (m31(512).into()) + - (intermediate147 + trace_1_column_190_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 86 + let constraint_quotient = ((trace_1_column_192_offset_0) * (m31(512).into()) + - (intermediate148 + trace_1_column_191_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 87 + let constraint_quotient = (intermediate149 + - ((m31(256).into()) * (trace_1_column_165_offset_0)) + + trace_1_column_192_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 88 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_193_offset_0 - (trace_1_column_80_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_193_offset_0 - (trace_1_column_108_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_193_offset_0 - (trace_1_column_137_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 89 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_194_offset_0 - (trace_1_column_81_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_194_offset_0 - (trace_1_column_109_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_194_offset_0 - (trace_1_column_138_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 90 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_195_offset_0 - (trace_1_column_82_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_195_offset_0 - (trace_1_column_110_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_195_offset_0 - (trace_1_column_139_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 91 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_196_offset_0 - (trace_1_column_83_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_196_offset_0 - (trace_1_column_111_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_196_offset_0 - (trace_1_column_140_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 92 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_197_offset_0 - (trace_1_column_84_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_197_offset_0 - (trace_1_column_112_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_197_offset_0 - (trace_1_column_141_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 93 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_198_offset_0 - (trace_1_column_85_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_198_offset_0 - (trace_1_column_113_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_198_offset_0 - (trace_1_column_142_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 94 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_199_offset_0 - (trace_1_column_86_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_199_offset_0 - (trace_1_column_114_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_199_offset_0 - (trace_1_column_143_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 95 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_200_offset_0 - (trace_1_column_87_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_200_offset_0 - (trace_1_column_115_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_200_offset_0 - (trace_1_column_144_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 96 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_201_offset_0 - (trace_1_column_88_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_201_offset_0 - (trace_1_column_116_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_201_offset_0 - (trace_1_column_145_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 97 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_202_offset_0 - (trace_1_column_89_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_202_offset_0 - (trace_1_column_117_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_202_offset_0 - (trace_1_column_146_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 98 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_203_offset_0 - (trace_1_column_90_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_203_offset_0 - (trace_1_column_118_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_203_offset_0 - (trace_1_column_147_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 99 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_204_offset_0 - (trace_1_column_91_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_204_offset_0 - (trace_1_column_119_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_204_offset_0 - (trace_1_column_148_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 100 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_205_offset_0 - (trace_1_column_92_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_205_offset_0 - (trace_1_column_120_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_205_offset_0 - (trace_1_column_149_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 101 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_206_offset_0 - (trace_1_column_93_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_206_offset_0 - (trace_1_column_121_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_206_offset_0 - (trace_1_column_150_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 102 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_207_offset_0 - (trace_1_column_94_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_207_offset_0 - (trace_1_column_122_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_207_offset_0 - (trace_1_column_151_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 103 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_208_offset_0 - (trace_1_column_95_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_208_offset_0 - (trace_1_column_123_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_208_offset_0 - (trace_1_column_152_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 104 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_209_offset_0 - (trace_1_column_96_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_209_offset_0 - (trace_1_column_124_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_209_offset_0 - (trace_1_column_153_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 105 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_210_offset_0 - (trace_1_column_97_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_210_offset_0 - (trace_1_column_125_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_210_offset_0 - (trace_1_column_154_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 106 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_211_offset_0 - (trace_1_column_98_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_211_offset_0 - (trace_1_column_126_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_211_offset_0 - (trace_1_column_155_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 107 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_212_offset_0 - (trace_1_column_99_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_212_offset_0 - (trace_1_column_127_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_212_offset_0 - (trace_1_column_156_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 108 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_213_offset_0 - (trace_1_column_100_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_213_offset_0 - (trace_1_column_128_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_213_offset_0 - (trace_1_column_157_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 109 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_214_offset_0 - (trace_1_column_101_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_214_offset_0 - (trace_1_column_129_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_214_offset_0 - (trace_1_column_158_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 110 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_215_offset_0 - (trace_1_column_102_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_215_offset_0 - (trace_1_column_130_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_215_offset_0 - (trace_1_column_159_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 111 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_216_offset_0 - (trace_1_column_103_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_216_offset_0 - (trace_1_column_131_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_216_offset_0 - (trace_1_column_160_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 112 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_217_offset_0 - (trace_1_column_104_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_217_offset_0 - (trace_1_column_132_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_217_offset_0 - (trace_1_column_161_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 113 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_218_offset_0 - (trace_1_column_105_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_218_offset_0 - (trace_1_column_133_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_218_offset_0 - (trace_1_column_162_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 114 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_219_offset_0 - (trace_1_column_106_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_219_offset_0 - (trace_1_column_134_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_219_offset_0 - (trace_1_column_163_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 115 + let constraint_quotient = ((intermediate178) + * ((intermediate2) * (trace_1_column_220_offset_0 - (trace_1_column_107_offset_0)) + + (trace_1_column_11_offset_0) + * (trace_1_column_220_offset_0 - (trace_1_column_135_offset_0)) + + (trace_1_column_12_offset_0) + * (trace_1_column_220_offset_0 - (trace_1_column_164_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 116 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_193_offset_0 - (trace_1_column_22_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 117 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_194_offset_0 - (trace_1_column_23_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 118 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_195_offset_0 - (trace_1_column_24_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 119 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_196_offset_0 - (trace_1_column_25_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 120 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_197_offset_0 - (trace_1_column_26_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 121 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_198_offset_0 - (trace_1_column_27_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 122 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_199_offset_0 - (trace_1_column_28_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 123 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_200_offset_0 - (trace_1_column_29_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 124 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_201_offset_0 - (trace_1_column_30_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 125 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_202_offset_0 - (trace_1_column_31_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 126 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_203_offset_0 - (trace_1_column_32_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 127 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_204_offset_0 - (trace_1_column_33_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 128 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_205_offset_0 - (trace_1_column_34_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 129 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_206_offset_0 - (trace_1_column_35_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 130 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_207_offset_0 - (trace_1_column_36_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 131 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_208_offset_0 - (trace_1_column_37_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 132 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_209_offset_0 - (trace_1_column_38_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 133 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_210_offset_0 - (trace_1_column_39_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 134 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_211_offset_0 - (trace_1_column_40_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 135 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_212_offset_0 - (trace_1_column_41_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 136 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_213_offset_0 - (trace_1_column_42_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 137 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_214_offset_0 - (trace_1_column_43_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 138 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_215_offset_0 - (trace_1_column_44_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 139 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_216_offset_0 - (trace_1_column_45_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 140 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_217_offset_0 - (trace_1_column_46_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 141 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_218_offset_0 - (trace_1_column_47_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 142 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_219_offset_0 - (trace_1_column_48_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 143 + let constraint_quotient = ((trace_1_column_20_offset_0) + * (trace_1_column_220_offset_0 - (trace_1_column_49_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 144 + let constraint_quotient = ((trace_1_column_19_offset_0) + * (trace_1_column_3_offset_0 - (m31(32768).into()) + m31(2).into())) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 145 + let constraint_quotient = ((trace_1_column_19_offset_0) + * (trace_1_column_5_offset_0 - (m31(32768).into()) + m31(1).into())) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 146 + let constraint_quotient = ((trace_1_column_19_offset_0) + * (m31(4).into() + - (trace_1_column_13_offset_0) + - (trace_1_column_6_offset_0) + - (trace_1_column_9_offset_0) + - (intermediate2))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 147 + let constraint_quotient = ((trace_1_column_18_offset_0) + * (trace_1_column_3_offset_0 - (m31(32768).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 148 + let constraint_quotient = ((trace_1_column_18_offset_0) + * (m31(1).into() - (trace_1_column_4_offset_0 - (m31(32768).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 149 + let constraint_quotient = ((trace_1_column_18_offset_0) + * (trace_1_column_7_offset_0 + trace_1_column_6_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 150 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_25_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 151 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_26_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 152 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_27_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 153 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_28_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 154 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_29_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 155 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_30_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 156 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_31_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 157 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_32_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 158 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_33_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 159 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_34_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 160 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_35_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 161 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_36_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 162 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_37_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 163 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_38_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 164 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_39_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 165 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_40_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 166 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_41_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 167 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_42_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 168 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_43_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 169 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_44_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 170 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_45_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 171 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_46_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 172 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_47_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 173 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_48_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 174 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_49_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 175 + let constraint_quotient = ((trace_1_column_18_offset_0) + * (trace_1_column_22_offset_0 + + (trace_1_column_23_offset_0) * (m31(512).into()) + + (trace_1_column_24_offset_0) * (m31(262144).into()) + - (trace_1_column_2_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 176 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_54_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 177 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_55_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 178 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_56_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 179 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_57_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 180 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_58_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 181 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_59_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 182 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_60_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 183 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_61_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 184 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_62_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 185 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_63_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 186 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_64_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 187 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_65_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 188 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_66_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 189 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_67_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 190 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_68_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 191 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_69_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 192 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_70_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 193 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_71_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 194 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_72_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 195 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_73_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 196 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_74_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 197 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_75_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 198 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_76_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 199 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_77_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 200 + let constraint_quotient = ((trace_1_column_18_offset_0) * (trace_1_column_78_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 201 + let constraint_quotient = ((trace_1_column_18_offset_0) + * (trace_1_column_51_offset_0 + + (trace_1_column_52_offset_0) * (m31(512).into()) + + (trace_1_column_53_offset_0) * (m31(262144).into()) + - (trace_1_column_0_offset_0 + m31(1).into() + trace_1_column_8_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 202 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_196_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 203 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_197_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 204 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_198_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 205 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_199_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 206 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_200_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 207 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_201_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 208 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_202_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 209 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_203_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 210 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_204_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 211 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_205_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 212 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_206_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 213 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_207_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 214 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_208_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 215 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_209_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 216 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_210_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 217 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_211_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 218 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_212_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 219 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_213_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 220 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_214_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 221 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_215_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 222 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_216_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 223 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_217_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 224 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_218_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 225 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_219_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 226 + let constraint_quotient = ((trace_1_column_13_offset_0) * (trace_1_column_220_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 227 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_25_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 228 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_26_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 229 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_27_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 230 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_28_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 231 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_29_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 232 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_30_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 233 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_31_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 234 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_32_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 235 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_33_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 236 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_34_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 237 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_35_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 238 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_36_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 239 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_37_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 240 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_38_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 241 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_39_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 242 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_40_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 243 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_41_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 244 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_42_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 245 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_43_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 246 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_44_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 247 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_45_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 248 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_46_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 249 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_47_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 250 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_48_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 251 + let constraint_quotient = ((trace_1_column_19_offset_0) * (trace_1_column_49_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 252 + let constraint_quotient = ((trace_1_column_221_offset_0) + * (trace_1_column_221_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 253 + let constraint_quotient = ((trace_1_column_222_offset_0) + * (trace_1_column_222_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 254 + let constraint_quotient = (((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_222_offset_0)) + * (trace_1_column_221_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 255 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_196_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 256 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_197_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 257 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_198_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 258 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_199_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 259 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_200_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 260 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_201_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 261 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_202_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 262 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_203_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 263 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_204_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 264 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_205_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 265 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_206_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 266 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_207_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 267 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_208_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 268 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_209_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 269 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_210_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 270 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_211_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 271 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_212_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 272 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_213_offset_0 - ((trace_1_column_222_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 273 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_214_offset_0 + - ((m31(136).into()) * (trace_1_column_221_offset_0) - (trace_1_column_222_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 274 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_215_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 275 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_216_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 276 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_217_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 277 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_218_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 278 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_219_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 279 + let constraint_quotient = ((trace_1_column_14_offset_0 + trace_1_column_16_offset_0) + * (trace_1_column_220_offset_0 - ((trace_1_column_221_offset_0) * (m31(256).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 280 + let constraint_quotient = (((intermediate179) * (intermediate179) + + trace_1_column_23_offset_0 + + trace_1_column_24_offset_0 + + trace_1_column_25_offset_0 + + trace_1_column_26_offset_0 + + trace_1_column_27_offset_0 + + trace_1_column_28_offset_0 + + trace_1_column_29_offset_0 + + trace_1_column_30_offset_0 + + trace_1_column_31_offset_0 + + trace_1_column_32_offset_0 + + trace_1_column_33_offset_0 + + trace_1_column_34_offset_0 + + trace_1_column_35_offset_0 + + trace_1_column_36_offset_0 + + trace_1_column_37_offset_0 + + trace_1_column_38_offset_0 + + trace_1_column_39_offset_0 + + trace_1_column_40_offset_0 + + trace_1_column_41_offset_0 + + trace_1_column_42_offset_0 + + (intermediate180) * (intermediate180) + + trace_1_column_44_offset_0 + + trace_1_column_45_offset_0 + + trace_1_column_46_offset_0 + + trace_1_column_47_offset_0 + + trace_1_column_48_offset_0 + + (intermediate181) * (intermediate181)) + * (trace_1_column_223_offset_0) + - (m31(1).into())) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 281 + let constraint_quotient = (trace_1_column_225_offset_0 + - ((trace_1_column_15_offset_0) + * (trace_1_column_22_offset_0 + + trace_1_column_23_offset_0 + + trace_1_column_24_offset_0 + + trace_1_column_25_offset_0 + + trace_1_column_26_offset_0 + + trace_1_column_27_offset_0 + + trace_1_column_28_offset_0 + + trace_1_column_29_offset_0 + + trace_1_column_30_offset_0 + + trace_1_column_31_offset_0 + + trace_1_column_32_offset_0 + + trace_1_column_33_offset_0 + + trace_1_column_34_offset_0 + + trace_1_column_35_offset_0 + + trace_1_column_36_offset_0 + + trace_1_column_37_offset_0 + + trace_1_column_38_offset_0 + + trace_1_column_39_offset_0 + + trace_1_column_40_offset_0 + + trace_1_column_41_offset_0 + + trace_1_column_42_offset_0 + + trace_1_column_43_offset_0 + + trace_1_column_44_offset_0 + + trace_1_column_45_offset_0 + + trace_1_column_46_offset_0 + + trace_1_column_47_offset_0 + + trace_1_column_48_offset_0 + + trace_1_column_49_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 282 + let constraint_quotient = ((trace_1_column_226_offset_0) + * (trace_1_column_226_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 283 + let constraint_quotient = ((trace_1_column_227_offset_0) + * (trace_1_column_227_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 284 + let constraint_quotient = (((trace_1_column_225_offset_0) * (trace_1_column_227_offset_0)) + * (trace_1_column_226_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 285 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_83_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 286 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_84_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 287 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_85_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 288 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_86_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 289 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_87_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 290 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_88_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 291 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_89_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 292 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_90_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 293 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_91_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 294 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_92_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 295 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_93_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 296 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_94_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 297 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_95_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 298 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_96_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 299 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_97_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 300 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_98_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 301 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_99_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 302 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_100_offset_0 - ((trace_1_column_227_offset_0) * (m31(511).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 303 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_101_offset_0 + - ((m31(136).into()) * (trace_1_column_226_offset_0) - (trace_1_column_227_offset_0)))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 304 + let constraint_quotient = ((trace_1_column_225_offset_0) * (trace_1_column_102_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 305 + let constraint_quotient = ((trace_1_column_225_offset_0) * (trace_1_column_103_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 306 + let constraint_quotient = ((trace_1_column_225_offset_0) * (trace_1_column_104_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 307 + let constraint_quotient = ((trace_1_column_225_offset_0) * (trace_1_column_105_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 308 + let constraint_quotient = ((trace_1_column_225_offset_0) * (trace_1_column_106_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 309 + let constraint_quotient = ((trace_1_column_225_offset_0) + * (trace_1_column_107_offset_0 - ((trace_1_column_226_offset_0) * (m31(256).into())))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 310 + let constraint_quotient = ((trace_1_column_228_offset_0 + - (trace_1_column_0_offset_0 + + trace_1_column_80_offset_0 + + (trace_1_column_81_offset_0) * (m31(512).into()) + + (trace_1_column_82_offset_0) * (m31(262144).into()) + - (trace_1_column_226_offset_0) + - ((m31(134217728).into()) * (trace_1_column_227_offset_0)))) + * (trace_1_column_22_offset_0 + + trace_1_column_23_offset_0 + + trace_1_column_24_offset_0 + + trace_1_column_25_offset_0 + + trace_1_column_26_offset_0 + + trace_1_column_27_offset_0 + + trace_1_column_28_offset_0 + + trace_1_column_29_offset_0 + + trace_1_column_30_offset_0 + + trace_1_column_31_offset_0 + + trace_1_column_32_offset_0 + + trace_1_column_33_offset_0 + + trace_1_column_34_offset_0 + + trace_1_column_35_offset_0 + + trace_1_column_36_offset_0 + + trace_1_column_37_offset_0 + + trace_1_column_38_offset_0 + + trace_1_column_39_offset_0 + + trace_1_column_40_offset_0 + + trace_1_column_41_offset_0 + + trace_1_column_42_offset_0 + + trace_1_column_43_offset_0 + + trace_1_column_44_offset_0 + + trace_1_column_45_offset_0 + + trace_1_column_46_offset_0 + + trace_1_column_47_offset_0 + + trace_1_column_48_offset_0 + + trace_1_column_49_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 311 + let constraint_quotient = ((trace_1_column_228_offset_0 + - (trace_1_column_0_offset_0 + m31(1).into() + trace_1_column_8_offset_0)) + * ((trace_1_column_22_offset_0 + + trace_1_column_23_offset_0 + + trace_1_column_24_offset_0 + + trace_1_column_25_offset_0 + + trace_1_column_26_offset_0 + + trace_1_column_27_offset_0 + + trace_1_column_28_offset_0 + + trace_1_column_29_offset_0 + + trace_1_column_30_offset_0 + + trace_1_column_31_offset_0 + + trace_1_column_32_offset_0 + + trace_1_column_33_offset_0 + + trace_1_column_34_offset_0 + + trace_1_column_35_offset_0 + + trace_1_column_36_offset_0 + + trace_1_column_37_offset_0 + + trace_1_column_38_offset_0 + + trace_1_column_39_offset_0 + + trace_1_column_40_offset_0 + + trace_1_column_41_offset_0 + + trace_1_column_42_offset_0 + + trace_1_column_43_offset_0 + + trace_1_column_44_offset_0 + + trace_1_column_45_offset_0 + + trace_1_column_46_offset_0 + + trace_1_column_47_offset_0 + + trace_1_column_48_offset_0 + + trace_1_column_49_offset_0) + * (trace_1_column_224_offset_0) + - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 312 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_230_offset_0, trace_2_column_231_offset_0, trace_2_column_232_offset_0, + trace_2_column_233_offset_0, + ], + )) + * ((intermediate0) * (intermediate6)) + - (intermediate6 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 313 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_234_offset_0, trace_2_column_235_offset_0, trace_2_column_236_offset_0, + trace_2_column_237_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_230_offset_0, trace_2_column_231_offset_0, + trace_2_column_232_offset_0, trace_2_column_233_offset_0, + ], + ))) + * ((intermediate7) * (intermediate8)) + - (intermediate8 + intermediate7)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 314 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_238_offset_0, trace_2_column_239_offset_0, trace_2_column_240_offset_0, + trace_2_column_241_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_234_offset_0, trace_2_column_235_offset_0, + trace_2_column_236_offset_0, trace_2_column_237_offset_0, + ], + ))) + * ((intermediate9) * (intermediate10)) + - (intermediate10 + intermediate9)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 315 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_242_offset_0, trace_2_column_243_offset_0, trace_2_column_244_offset_0, + trace_2_column_245_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_238_offset_0, trace_2_column_239_offset_0, + trace_2_column_240_offset_0, trace_2_column_241_offset_0, + ], + ))) + * ((intermediate11) * (intermediate12)) + - (intermediate12 + intermediate11)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 316 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_246_offset_0, trace_2_column_247_offset_0, trace_2_column_248_offset_0, + trace_2_column_249_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_242_offset_0, trace_2_column_243_offset_0, + trace_2_column_244_offset_0, trace_2_column_245_offset_0, + ], + ))) + * ((intermediate13) * (intermediate14)) + - (intermediate14 + intermediate13)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 317 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_250_offset_0, trace_2_column_251_offset_0, trace_2_column_252_offset_0, + trace_2_column_253_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_246_offset_0, trace_2_column_247_offset_0, + trace_2_column_248_offset_0, trace_2_column_249_offset_0, + ], + ))) + * ((intermediate15) * (intermediate16)) + - (intermediate16 + intermediate15)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 318 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_254_offset_0, trace_2_column_255_offset_0, trace_2_column_256_offset_0, + trace_2_column_257_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_250_offset_0, trace_2_column_251_offset_0, + trace_2_column_252_offset_0, trace_2_column_253_offset_0, + ], + ))) + * ((intermediate17) * (intermediate18)) + - (intermediate18 + intermediate17)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 319 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_258_offset_0, trace_2_column_259_offset_0, trace_2_column_260_offset_0, + trace_2_column_261_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_254_offset_0, trace_2_column_255_offset_0, + trace_2_column_256_offset_0, trace_2_column_257_offset_0, + ], + ))) + * ((intermediate19) * (intermediate20)) + - (intermediate20 + intermediate19)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 320 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_262_offset_0, trace_2_column_263_offset_0, trace_2_column_264_offset_0, + trace_2_column_265_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_258_offset_0, trace_2_column_259_offset_0, + trace_2_column_260_offset_0, trace_2_column_261_offset_0, + ], + ))) + * ((intermediate21) * (intermediate22)) + - (intermediate22 + intermediate21)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 321 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_266_offset_0, trace_2_column_267_offset_0, trace_2_column_268_offset_0, + trace_2_column_269_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_262_offset_0, trace_2_column_263_offset_0, + trace_2_column_264_offset_0, trace_2_column_265_offset_0, + ], + ))) + * ((intermediate23) * (intermediate24)) + - (intermediate24 + intermediate23)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 322 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_270_offset_0, trace_2_column_271_offset_0, trace_2_column_272_offset_0, + trace_2_column_273_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_266_offset_0, trace_2_column_267_offset_0, + trace_2_column_268_offset_0, trace_2_column_269_offset_0, + ], + ))) + * ((intermediate25) * (intermediate53)) + - (intermediate53 + intermediate25)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 323 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_274_offset_0, trace_2_column_275_offset_0, trace_2_column_276_offset_0, + trace_2_column_277_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_270_offset_0, trace_2_column_271_offset_0, + trace_2_column_272_offset_0, trace_2_column_273_offset_0, + ], + ))) + * ((intermediate54) * (intermediate55)) + - (intermediate55 + intermediate54)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 324 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_278_offset_0, trace_2_column_279_offset_0, trace_2_column_280_offset_0, + trace_2_column_281_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_274_offset_0, trace_2_column_275_offset_0, + trace_2_column_276_offset_0, trace_2_column_277_offset_0, + ], + ))) + * ((intermediate56) * (intermediate57)) + - (intermediate57 + intermediate56)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 325 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_282_offset_0, trace_2_column_283_offset_0, trace_2_column_284_offset_0, + trace_2_column_285_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_278_offset_0, trace_2_column_279_offset_0, + trace_2_column_280_offset_0, trace_2_column_281_offset_0, + ], + ))) + * ((intermediate58) * (intermediate59)) + - (intermediate59 + intermediate58)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 326 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_286_offset_0, trace_2_column_287_offset_0, trace_2_column_288_offset_0, + trace_2_column_289_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_282_offset_0, trace_2_column_283_offset_0, + trace_2_column_284_offset_0, trace_2_column_285_offset_0, + ], + ))) + * ((intermediate60) * (intermediate61)) + - (intermediate61 + intermediate60)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 327 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_290_offset_0, trace_2_column_291_offset_0, trace_2_column_292_offset_0, + trace_2_column_293_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_286_offset_0, trace_2_column_287_offset_0, + trace_2_column_288_offset_0, trace_2_column_289_offset_0, + ], + ))) + * ((intermediate62) * (intermediate63)) + - (intermediate63 + intermediate62)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 328 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_294_offset_0, trace_2_column_295_offset_0, trace_2_column_296_offset_0, + trace_2_column_297_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_290_offset_0, trace_2_column_291_offset_0, + trace_2_column_292_offset_0, trace_2_column_293_offset_0, + ], + ))) + * ((intermediate64) * (intermediate65)) + - (intermediate65 + intermediate64)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 329 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_298_offset_0, trace_2_column_299_offset_0, trace_2_column_300_offset_0, + trace_2_column_301_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_294_offset_0, trace_2_column_295_offset_0, + trace_2_column_296_offset_0, trace_2_column_297_offset_0, + ], + ))) + * ((intermediate66) * (intermediate150)) + - (intermediate150 + intermediate66)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 330 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_302_offset_0, trace_2_column_303_offset_0, trace_2_column_304_offset_0, + trace_2_column_305_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_298_offset_0, trace_2_column_299_offset_0, + trace_2_column_300_offset_0, trace_2_column_301_offset_0, + ], + ))) + * ((intermediate151) * (intermediate152)) + - (intermediate152 + intermediate151)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 331 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_306_offset_0, trace_2_column_307_offset_0, trace_2_column_308_offset_0, + trace_2_column_309_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_302_offset_0, trace_2_column_303_offset_0, + trace_2_column_304_offset_0, trace_2_column_305_offset_0, + ], + ))) + * ((intermediate153) * (intermediate154)) + - (intermediate154 + intermediate153)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 332 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_310_offset_0, trace_2_column_311_offset_0, trace_2_column_312_offset_0, + trace_2_column_313_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_306_offset_0, trace_2_column_307_offset_0, + trace_2_column_308_offset_0, trace_2_column_309_offset_0, + ], + ))) + * ((intermediate155) * (intermediate156)) + - (intermediate156 + intermediate155)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 333 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_314_offset_0, trace_2_column_315_offset_0, trace_2_column_316_offset_0, + trace_2_column_317_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_310_offset_0, trace_2_column_311_offset_0, + trace_2_column_312_offset_0, trace_2_column_313_offset_0, + ], + ))) + * ((intermediate157) * (intermediate158)) + - (intermediate158 + intermediate157)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 334 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_318_offset_0, trace_2_column_319_offset_0, trace_2_column_320_offset_0, + trace_2_column_321_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_314_offset_0, trace_2_column_315_offset_0, + trace_2_column_316_offset_0, trace_2_column_317_offset_0, + ], + ))) + * ((intermediate159) * (intermediate160)) + - (intermediate160 + intermediate159)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 335 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_322_offset_0, trace_2_column_323_offset_0, trace_2_column_324_offset_0, + trace_2_column_325_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_318_offset_0, trace_2_column_319_offset_0, + trace_2_column_320_offset_0, trace_2_column_321_offset_0, + ], + ))) + * ((intermediate161) * (intermediate162)) + - (intermediate162 + intermediate161)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 336 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_326_offset_0, trace_2_column_327_offset_0, trace_2_column_328_offset_0, + trace_2_column_329_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_322_offset_0, trace_2_column_323_offset_0, + trace_2_column_324_offset_0, trace_2_column_325_offset_0, + ], + ))) + * ((intermediate163) * (intermediate164)) + - (intermediate164 + intermediate163)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 337 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_330_offset_0, trace_2_column_331_offset_0, trace_2_column_332_offset_0, + trace_2_column_333_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_326_offset_0, trace_2_column_327_offset_0, + trace_2_column_328_offset_0, trace_2_column_329_offset_0, + ], + ))) + * ((intermediate165) * (intermediate166)) + - (intermediate166 + intermediate165)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 338 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_334_offset_0, trace_2_column_335_offset_0, trace_2_column_336_offset_0, + trace_2_column_337_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_330_offset_0, trace_2_column_331_offset_0, + trace_2_column_332_offset_0, trace_2_column_333_offset_0, + ], + ))) + * ((intermediate167) * (intermediate168)) + - (intermediate168 + intermediate167)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 339 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_338_offset_0, trace_2_column_339_offset_0, trace_2_column_340_offset_0, + trace_2_column_341_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_334_offset_0, trace_2_column_335_offset_0, + trace_2_column_336_offset_0, trace_2_column_337_offset_0, + ], + ))) + * ((intermediate169) * (intermediate170)) + - (intermediate170 + intermediate169)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 340 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_342_offset_0, trace_2_column_343_offset_0, trace_2_column_344_offset_0, + trace_2_column_345_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_338_offset_0, trace_2_column_339_offset_0, + trace_2_column_340_offset_0, trace_2_column_341_offset_0, + ], + ))) + * ((intermediate171) * (intermediate172)) + - (intermediate172 + intermediate171)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 341 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_346_offset_0, trace_2_column_347_offset_0, trace_2_column_348_offset_0, + trace_2_column_349_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_342_offset_0, trace_2_column_343_offset_0, + trace_2_column_344_offset_0, trace_2_column_345_offset_0, + ], + ))) + * ((intermediate173) * (intermediate174)) + - (intermediate174 + intermediate173)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 342 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_350_offset_0, trace_2_column_351_offset_0, trace_2_column_352_offset_0, + trace_2_column_353_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_346_offset_0, trace_2_column_347_offset_0, + trace_2_column_348_offset_0, trace_2_column_349_offset_0, + ], + ))) + * ((intermediate175) * (intermediate176)) + - (intermediate176 + intermediate175)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 343 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_354_offset_0, trace_2_column_355_offset_0, trace_2_column_356_offset_0, + trace_2_column_357_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_350_offset_0, trace_2_column_351_offset_0, + trace_2_column_352_offset_0, trace_2_column_353_offset_0, + ], + ))) + * ((intermediate177) * (intermediate182)) + - (intermediate182 + (intermediate177) * (trace_1_column_229_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 344 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_358_offset_0, trace_2_column_359_offset_0, trace_2_column_360_offset_0, + trace_2_column_361_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_358_offset_neg_1, trace_2_column_359_offset_neg_1, + trace_2_column_360_offset_neg_1, trace_2_column_361_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_354_offset_0, trace_2_column_355_offset_0, + trace_2_column_356_offset_0, trace_2_column_357_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate183) + + trace_1_column_229_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + RangeCheck_19_alpha0: QM31, + RangeCheck_19_z: QM31, + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha10: QM31, + VerifyInstruction_alpha11: QM31, + VerifyInstruction_alpha12: QM31, + VerifyInstruction_alpha13: QM31, + VerifyInstruction_alpha14: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha16: QM31, + VerifyInstruction_alpha17: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_alpha9: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_108_offset_0: QM31, + trace_1_column_109_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_110_offset_0: QM31, + trace_1_column_111_offset_0: QM31, + trace_1_column_112_offset_0: QM31, + trace_1_column_113_offset_0: QM31, + trace_1_column_114_offset_0: QM31, + trace_1_column_115_offset_0: QM31, + trace_1_column_116_offset_0: QM31, + trace_1_column_117_offset_0: QM31, + trace_1_column_118_offset_0: QM31, + trace_1_column_119_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_120_offset_0: QM31, + trace_1_column_121_offset_0: QM31, + trace_1_column_122_offset_0: QM31, + trace_1_column_123_offset_0: QM31, + trace_1_column_124_offset_0: QM31, + trace_1_column_125_offset_0: QM31, + trace_1_column_126_offset_0: QM31, + trace_1_column_127_offset_0: QM31, + trace_1_column_128_offset_0: QM31, + trace_1_column_129_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_130_offset_0: QM31, + trace_1_column_131_offset_0: QM31, + trace_1_column_132_offset_0: QM31, + trace_1_column_133_offset_0: QM31, + trace_1_column_134_offset_0: QM31, + trace_1_column_135_offset_0: QM31, + trace_1_column_136_offset_0: QM31, + trace_1_column_137_offset_0: QM31, + trace_1_column_138_offset_0: QM31, + trace_1_column_139_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_140_offset_0: QM31, + trace_1_column_141_offset_0: QM31, + trace_1_column_142_offset_0: QM31, + trace_1_column_143_offset_0: QM31, + trace_1_column_144_offset_0: QM31, + trace_1_column_145_offset_0: QM31, + trace_1_column_146_offset_0: QM31, + trace_1_column_147_offset_0: QM31, + trace_1_column_148_offset_0: QM31, + trace_1_column_149_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_150_offset_0: QM31, + trace_1_column_151_offset_0: QM31, + trace_1_column_152_offset_0: QM31, + trace_1_column_153_offset_0: QM31, + trace_1_column_154_offset_0: QM31, + trace_1_column_155_offset_0: QM31, + trace_1_column_156_offset_0: QM31, + trace_1_column_157_offset_0: QM31, + trace_1_column_158_offset_0: QM31, + trace_1_column_159_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_160_offset_0: QM31, + trace_1_column_161_offset_0: QM31, + trace_1_column_162_offset_0: QM31, + trace_1_column_163_offset_0: QM31, + trace_1_column_164_offset_0: QM31, + trace_1_column_165_offset_0: QM31, + trace_1_column_166_offset_0: QM31, + trace_1_column_167_offset_0: QM31, + trace_1_column_168_offset_0: QM31, + trace_1_column_169_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_170_offset_0: QM31, + trace_1_column_171_offset_0: QM31, + trace_1_column_172_offset_0: QM31, + trace_1_column_173_offset_0: QM31, + trace_1_column_174_offset_0: QM31, + trace_1_column_175_offset_0: QM31, + trace_1_column_176_offset_0: QM31, + trace_1_column_177_offset_0: QM31, + trace_1_column_178_offset_0: QM31, + trace_1_column_179_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_180_offset_0: QM31, + trace_1_column_181_offset_0: QM31, + trace_1_column_182_offset_0: QM31, + trace_1_column_183_offset_0: QM31, + trace_1_column_184_offset_0: QM31, + trace_1_column_185_offset_0: QM31, + trace_1_column_186_offset_0: QM31, + trace_1_column_187_offset_0: QM31, + trace_1_column_188_offset_0: QM31, + trace_1_column_189_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_190_offset_0: QM31, + trace_1_column_191_offset_0: QM31, + trace_1_column_192_offset_0: QM31, + trace_1_column_193_offset_0: QM31, + trace_1_column_194_offset_0: QM31, + trace_1_column_195_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_221_offset_0: QM31, + trace_1_column_222_offset_0: QM31, + trace_1_column_228_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_34_offset_0: QM31, + trace_1_column_35_offset_0: QM31, + trace_1_column_36_offset_0: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_38_offset_0: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate1 = intermediate1( + trace_1_column_10_offset_0, trace_1_column_8_offset_0, trace_1_column_9_offset_0, + ); + + let intermediate2 = intermediate2( + trace_1_column_11_offset_0, trace_1_column_12_offset_0, trace_1_column_15_offset_0, + ); + + let intermediate3 = intermediate3( + trace_1_column_13_offset_0, trace_1_column_14_offset_0, trace_1_column_15_offset_0, + ); + + let intermediate4 = intermediate4( + trace_1_column_16_offset_0, trace_1_column_17_offset_0, trace_1_column_18_offset_0, + ); + + let intermediate5 = intermediate5(trace_1_column_18_offset_0, trace_1_column_19_offset_0); + + let intermediate26 = intermediate26( + trace_1_column_108_offset_0, + trace_1_column_136_offset_0, + trace_1_column_51_offset_0, + trace_1_column_80_offset_0, + ); + + let intermediate27 = intermediate27( + intermediate26, + trace_1_column_109_offset_0, + trace_1_column_52_offset_0, + trace_1_column_81_offset_0, + ); + + let intermediate28 = intermediate28( + intermediate27, + trace_1_column_110_offset_0, + trace_1_column_53_offset_0, + trace_1_column_82_offset_0, + ); + + let intermediate29 = intermediate29( + intermediate28, + trace_1_column_111_offset_0, + trace_1_column_54_offset_0, + trace_1_column_83_offset_0, + ); + + let intermediate30 = intermediate30( + intermediate29, + trace_1_column_112_offset_0, + trace_1_column_55_offset_0, + trace_1_column_84_offset_0, + ); + + let intermediate31 = intermediate31( + intermediate30, + trace_1_column_113_offset_0, + trace_1_column_56_offset_0, + trace_1_column_85_offset_0, + ); + + let intermediate32 = intermediate32( + intermediate31, + trace_1_column_114_offset_0, + trace_1_column_57_offset_0, + trace_1_column_86_offset_0, + ); + + let intermediate33 = intermediate33( + intermediate32, + trace_1_column_115_offset_0, + trace_1_column_58_offset_0, + trace_1_column_87_offset_0, + ); + + let intermediate34 = intermediate34( + intermediate33, + trace_1_column_116_offset_0, + trace_1_column_59_offset_0, + trace_1_column_88_offset_0, + ); + + let intermediate35 = intermediate35( + intermediate34, + trace_1_column_117_offset_0, + trace_1_column_60_offset_0, + trace_1_column_89_offset_0, + ); + + let intermediate36 = intermediate36( + intermediate35, + trace_1_column_118_offset_0, + trace_1_column_61_offset_0, + trace_1_column_90_offset_0, + ); + + let intermediate37 = intermediate37( + intermediate36, + trace_1_column_119_offset_0, + trace_1_column_62_offset_0, + trace_1_column_91_offset_0, + ); + + let intermediate38 = intermediate38( + intermediate37, + trace_1_column_120_offset_0, + trace_1_column_63_offset_0, + trace_1_column_92_offset_0, + ); + + let intermediate39 = intermediate39( + intermediate38, + trace_1_column_121_offset_0, + trace_1_column_64_offset_0, + trace_1_column_93_offset_0, + ); + + let intermediate40 = intermediate40( + intermediate39, + trace_1_column_122_offset_0, + trace_1_column_65_offset_0, + trace_1_column_94_offset_0, + ); + + let intermediate41 = intermediate41( + intermediate40, + trace_1_column_123_offset_0, + trace_1_column_66_offset_0, + trace_1_column_95_offset_0, + ); + + let intermediate42 = intermediate42( + intermediate41, + trace_1_column_124_offset_0, + trace_1_column_67_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate43 = intermediate43( + intermediate42, + trace_1_column_125_offset_0, + trace_1_column_68_offset_0, + trace_1_column_97_offset_0, + ); + + let intermediate44 = intermediate44( + intermediate43, + trace_1_column_126_offset_0, + trace_1_column_69_offset_0, + trace_1_column_98_offset_0, + ); + + let intermediate45 = intermediate45( + intermediate44, + trace_1_column_127_offset_0, + trace_1_column_70_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate46 = intermediate46( + intermediate45, + trace_1_column_100_offset_0, + trace_1_column_128_offset_0, + trace_1_column_71_offset_0, + ); + + let intermediate47 = intermediate47( + intermediate46, + trace_1_column_101_offset_0, + trace_1_column_129_offset_0, + trace_1_column_136_offset_0, + trace_1_column_72_offset_0, + ); + + let intermediate48 = intermediate48( + intermediate47, + trace_1_column_102_offset_0, + trace_1_column_130_offset_0, + trace_1_column_73_offset_0, + ); + + let intermediate49 = intermediate49( + intermediate48, + trace_1_column_103_offset_0, + trace_1_column_131_offset_0, + trace_1_column_74_offset_0, + ); + + let intermediate50 = intermediate50( + intermediate49, + trace_1_column_104_offset_0, + trace_1_column_132_offset_0, + trace_1_column_75_offset_0, + ); + + let intermediate51 = intermediate51( + intermediate50, + trace_1_column_105_offset_0, + trace_1_column_133_offset_0, + trace_1_column_76_offset_0, + ); + + let intermediate52 = intermediate52( + intermediate51, + trace_1_column_106_offset_0, + trace_1_column_134_offset_0, + trace_1_column_77_offset_0, + ); + + let intermediate67 = intermediate67( + trace_1_column_137_offset_0, trace_1_column_51_offset_0, trace_1_column_80_offset_0, + ); + + let intermediate68 = intermediate68( + trace_1_column_138_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + ); + + let intermediate69 = intermediate69( + trace_1_column_139_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + ); + + let intermediate70 = intermediate70( + trace_1_column_140_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + ); + + let intermediate71 = intermediate71( + trace_1_column_141_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + ); + + let intermediate72 = intermediate72( + trace_1_column_142_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + ); + + let intermediate73 = intermediate73( + trace_1_column_143_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + ); + + let intermediate74 = intermediate74( + trace_1_column_144_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + ); + + let intermediate75 = intermediate75( + trace_1_column_145_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + ); + + let intermediate76 = intermediate76( + trace_1_column_146_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + ); + + let intermediate77 = intermediate77( + trace_1_column_147_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + ); + + let intermediate78 = intermediate78( + trace_1_column_148_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + ); + + let intermediate79 = intermediate79( + trace_1_column_149_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + ); + + let intermediate80 = intermediate80( + trace_1_column_150_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + ); + + let intermediate81 = intermediate81( + trace_1_column_151_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + ); + + let intermediate82 = intermediate82( + trace_1_column_152_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + ); + + let intermediate83 = intermediate83( + trace_1_column_153_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate84 = intermediate84( + trace_1_column_154_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + ); + + let intermediate85 = intermediate85( + trace_1_column_155_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + ); + + let intermediate86 = intermediate86( + trace_1_column_156_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate87 = intermediate87( + trace_1_column_100_offset_0, + trace_1_column_157_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate88 = intermediate88( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_158_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate89 = intermediate89( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_159_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate90 = intermediate90( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_160_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate91 = intermediate91( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_161_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate92 = intermediate92( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_162_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate93 = intermediate93( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_163_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate94 = intermediate94( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_164_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate95 = intermediate95( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate96 = intermediate96( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate97 = intermediate97( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate98 = intermediate98( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate99 = intermediate99( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate100 = intermediate100( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate101 = intermediate101( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate102 = intermediate102( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate103 = intermediate103( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate104 = intermediate104( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate105 = intermediate105( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate106 = intermediate106( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate107 = intermediate107( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate108 = intermediate108( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate109 = intermediate109( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate110 = intermediate110( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate111 = intermediate111( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate112 = intermediate112( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate113 = intermediate113( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate114 = intermediate114( + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + ); + + let intermediate115 = intermediate115( + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + ); + + let intermediate116 = intermediate116( + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + ); + + let intermediate117 = intermediate117( + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + ); + + let intermediate118 = intermediate118( + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + ); + + let intermediate119 = intermediate119( + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + ); + + let intermediate120 = intermediate120( + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + ); + + let intermediate121 = intermediate121(trace_1_column_107_offset_0, trace_1_column_78_offset_0); + + let intermediate122 = intermediate122(intermediate116, intermediate67, intermediate88); + + let intermediate123 = intermediate123( + intermediate117, intermediate67, intermediate68, intermediate89, + ); + + let intermediate124 = intermediate124( + intermediate118, intermediate68, intermediate69, intermediate90, + ); + + let intermediate125 = intermediate125( + intermediate119, intermediate69, intermediate70, intermediate91, + ); + + let intermediate126 = intermediate126( + intermediate120, intermediate70, intermediate71, intermediate92, + ); + + let intermediate127 = intermediate127( + intermediate121, intermediate71, intermediate72, intermediate93, + ); + + let intermediate128 = intermediate128(intermediate72, intermediate73, intermediate94); + + let intermediate129 = intermediate129( + intermediate67, intermediate73, intermediate74, intermediate95, + ); + + let intermediate130 = intermediate130( + intermediate68, intermediate74, intermediate75, intermediate96, + ); + + let intermediate131 = intermediate131( + intermediate69, intermediate75, intermediate76, intermediate97, + ); + + let intermediate132 = intermediate132( + intermediate70, intermediate76, intermediate77, intermediate98, + ); + + let intermediate133 = intermediate133( + intermediate71, intermediate77, intermediate78, intermediate99, + ); + + let intermediate134 = intermediate134( + intermediate100, intermediate72, intermediate78, intermediate79, + ); + + let intermediate135 = intermediate135( + intermediate101, intermediate73, intermediate79, intermediate80, + ); + + let intermediate136 = intermediate136( + intermediate102, intermediate74, intermediate80, intermediate81, + ); + + let intermediate137 = intermediate137( + intermediate103, intermediate75, intermediate81, intermediate82, + ); + + let intermediate138 = intermediate138( + intermediate104, intermediate76, intermediate82, intermediate83, + ); + + let intermediate139 = intermediate139( + intermediate105, intermediate77, intermediate83, intermediate84, + ); + + let intermediate140 = intermediate140( + intermediate106, intermediate78, intermediate84, intermediate85, + ); + + let intermediate141 = intermediate141( + intermediate107, intermediate79, intermediate85, intermediate86, + ); + + let intermediate142 = intermediate142( + intermediate108, intermediate80, intermediate86, intermediate87, + ); + + let intermediate143 = intermediate143( + intermediate109, intermediate116, intermediate81, intermediate87, + ); + + let intermediate144 = intermediate144( + intermediate110, intermediate116, intermediate117, intermediate82, + ); + + let intermediate145 = intermediate145( + intermediate111, intermediate117, intermediate118, intermediate83, + ); + + let intermediate146 = intermediate146( + intermediate112, intermediate118, intermediate119, intermediate84, + ); + + let intermediate147 = intermediate147( + intermediate113, intermediate119, intermediate120, intermediate85, + ); + + let intermediate148 = intermediate148( + intermediate114, intermediate120, intermediate121, intermediate86, + ); + + let intermediate149 = intermediate149(intermediate115, intermediate121, intermediate87); + + let intermediate178 = intermediate178(trace_1_column_15_offset_0); + + let intermediate179 = intermediate179(trace_1_column_22_offset_0); + + let intermediate180 = intermediate180(trace_1_column_43_offset_0); + + let intermediate181 = intermediate181(trace_1_column_49_offset_0); + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha10, + VerifyInstruction_alpha11, + VerifyInstruction_alpha12, + VerifyInstruction_alpha13, + VerifyInstruction_alpha14, + VerifyInstruction_alpha15, + VerifyInstruction_alpha16, + VerifyInstruction_alpha17, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_alpha9, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_20_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate6 = intermediate6( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_1_offset_0, + trace_1_column_21_offset_0, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_6_offset_0, + ); + + let intermediate7 = intermediate7( + 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, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_34_offset_0, + trace_1_column_35_offset_0, + trace_1_column_36_offset_0, + trace_1_column_37_offset_0, + trace_1_column_38_offset_0, + trace_1_column_39_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + ); + + let intermediate8 = intermediate8( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_4_offset_0, + trace_1_column_50_offset_0, + trace_1_column_7_offset_0, + ); + + let intermediate9 = intermediate9( + 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, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + ); + + let intermediate10 = intermediate10( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + intermediate1, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_5_offset_0, + trace_1_column_79_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate11 = intermediate11( + 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, + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate12 = intermediate12( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_108_offset_0, + trace_1_column_109_offset_0, + ); + + let intermediate13 = intermediate13( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_110_offset_0, + trace_1_column_111_offset_0, + ); + + let intermediate14 = intermediate14( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_112_offset_0, + trace_1_column_113_offset_0, + ); + + let intermediate15 = intermediate15( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_114_offset_0, + trace_1_column_115_offset_0, + ); + + let intermediate16 = intermediate16( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_116_offset_0, + trace_1_column_117_offset_0, + ); + + let intermediate17 = intermediate17( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_118_offset_0, + trace_1_column_119_offset_0, + ); + + let intermediate18 = intermediate18( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_120_offset_0, + trace_1_column_121_offset_0, + ); + + let intermediate19 = intermediate19( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_122_offset_0, + trace_1_column_123_offset_0, + ); + + let intermediate20 = intermediate20( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_124_offset_0, + trace_1_column_125_offset_0, + ); + + let intermediate21 = intermediate21( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_126_offset_0, + trace_1_column_127_offset_0, + ); + + let intermediate22 = intermediate22( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_128_offset_0, + trace_1_column_129_offset_0, + ); + + let intermediate23 = intermediate23( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_130_offset_0, + trace_1_column_131_offset_0, + ); + + let intermediate24 = intermediate24( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_132_offset_0, + trace_1_column_133_offset_0, + ); + + let intermediate25 = intermediate25( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_134_offset_0, + trace_1_column_135_offset_0, + ); + + let intermediate53 = intermediate53( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_137_offset_0, + trace_1_column_138_offset_0, + ); + + let intermediate54 = intermediate54( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_139_offset_0, + trace_1_column_140_offset_0, + ); + + let intermediate55 = intermediate55( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_141_offset_0, + trace_1_column_142_offset_0, + ); + + let intermediate56 = intermediate56( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_143_offset_0, + trace_1_column_144_offset_0, + ); + + let intermediate57 = intermediate57( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_145_offset_0, + trace_1_column_146_offset_0, + ); + + let intermediate58 = intermediate58( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_147_offset_0, + trace_1_column_148_offset_0, + ); + + let intermediate59 = intermediate59( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_149_offset_0, + trace_1_column_150_offset_0, + ); + + let intermediate60 = intermediate60( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_151_offset_0, + trace_1_column_152_offset_0, + ); + + let intermediate61 = intermediate61( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_153_offset_0, + trace_1_column_154_offset_0, + ); + + let intermediate62 = intermediate62( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_155_offset_0, + trace_1_column_156_offset_0, + ); + + let intermediate63 = intermediate63( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_157_offset_0, + trace_1_column_158_offset_0, + ); + + let intermediate64 = intermediate64( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_159_offset_0, + trace_1_column_160_offset_0, + ); + + let intermediate65 = intermediate65( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_161_offset_0, + trace_1_column_162_offset_0, + ); + + let intermediate66 = intermediate66( + RangeCheck_9_9_alpha0, + RangeCheck_9_9_alpha1, + RangeCheck_9_9_z, + trace_1_column_163_offset_0, + trace_1_column_164_offset_0, + ); + + let intermediate150 = intermediate150( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_165_offset_0, + ); + + let intermediate151 = intermediate151( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_166_offset_0, + ); + + let intermediate152 = intermediate152( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_167_offset_0, + ); + + let intermediate153 = intermediate153( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_168_offset_0, + ); + + let intermediate154 = intermediate154( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_169_offset_0, + ); + + let intermediate155 = intermediate155( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_170_offset_0, + ); + + let intermediate156 = intermediate156( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_171_offset_0, + ); + + let intermediate157 = intermediate157( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_172_offset_0, + ); + + let intermediate158 = intermediate158( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_173_offset_0, + ); + + let intermediate159 = intermediate159( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_174_offset_0, + ); + + let intermediate160 = intermediate160( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_175_offset_0, + ); + + let intermediate161 = intermediate161( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_176_offset_0, + ); + + let intermediate162 = intermediate162( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_177_offset_0, + ); + + let intermediate163 = intermediate163( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_178_offset_0, + ); + + let intermediate164 = intermediate164( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_179_offset_0, + ); + + let intermediate165 = intermediate165( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_180_offset_0, + ); + + let intermediate166 = intermediate166( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_181_offset_0, + ); + + let intermediate167 = intermediate167( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_182_offset_0, + ); + + let intermediate168 = intermediate168( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_183_offset_0, + ); + + let intermediate169 = intermediate169( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_184_offset_0, + ); + + let intermediate170 = intermediate170( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_185_offset_0, + ); + + let intermediate171 = intermediate171( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_186_offset_0, + ); + + let intermediate172 = intermediate172( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_187_offset_0, + ); + + let intermediate173 = intermediate173( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_188_offset_0, + ); + + let intermediate174 = intermediate174( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_189_offset_0, + ); + + let intermediate175 = intermediate175( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_190_offset_0, + ); + + let intermediate176 = intermediate176( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_191_offset_0, + ); + + let intermediate177 = intermediate177( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_192_offset_0, + ); + + let intermediate182 = intermediate182( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate183 = intermediate183( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + intermediate3, + intermediate5, + trace_1_column_0_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_193_offset_0, + trace_1_column_194_offset_0, + trace_1_column_195_offset_0, + trace_1_column_19_offset_0, + trace_1_column_1_offset_0, + trace_1_column_221_offset_0, + trace_1_column_222_offset_0, + trace_1_column_228_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_2_offset_0, + trace_1_column_8_offset_0, + ); + array![ + intermediate0, + intermediate1, + intermediate2, + intermediate3, + intermediate4, + intermediate5, + intermediate6, + intermediate7, + intermediate8, + intermediate9, + intermediate10, + intermediate11, + intermediate12, + intermediate13, + intermediate14, + intermediate15, + intermediate16, + intermediate17, + intermediate18, + intermediate19, + intermediate20, + intermediate21, + intermediate22, + intermediate23, + intermediate24, + intermediate25, + intermediate26, + intermediate27, + intermediate28, + intermediate29, + intermediate30, + intermediate31, + intermediate32, + intermediate33, + intermediate34, + intermediate35, + intermediate36, + intermediate37, + intermediate38, + intermediate39, + intermediate40, + intermediate41, + intermediate42, + intermediate43, + intermediate44, + intermediate45, + intermediate46, + intermediate47, + intermediate48, + intermediate49, + intermediate50, + intermediate51, + intermediate52, + intermediate53, + intermediate54, + intermediate55, + intermediate56, + intermediate57, + intermediate58, + intermediate59, + intermediate60, + intermediate61, + intermediate62, + intermediate63, + intermediate64, + intermediate65, + intermediate66, + intermediate67, + intermediate68, + intermediate69, + intermediate70, + intermediate71, + intermediate72, + intermediate73, + intermediate74, + intermediate75, + intermediate76, + intermediate77, + intermediate78, + intermediate79, + intermediate80, + intermediate81, + intermediate82, + intermediate83, + intermediate84, + intermediate85, + intermediate86, + intermediate87, + intermediate88, + intermediate89, + intermediate90, + intermediate91, + intermediate92, + intermediate93, + intermediate94, + intermediate95, + intermediate96, + intermediate97, + intermediate98, + intermediate99, + intermediate100, + intermediate101, + intermediate102, + intermediate103, + intermediate104, + intermediate105, + intermediate106, + intermediate107, + intermediate108, + intermediate109, + intermediate110, + intermediate111, + intermediate112, + intermediate113, + intermediate114, + intermediate115, + intermediate116, + intermediate117, + intermediate118, + intermediate119, + intermediate120, + intermediate121, + intermediate122, + intermediate123, + intermediate124, + intermediate125, + intermediate126, + intermediate127, + intermediate128, + intermediate129, + intermediate130, + intermediate131, + intermediate132, + intermediate133, + intermediate134, + intermediate135, + intermediate136, + intermediate137, + intermediate138, + intermediate139, + intermediate140, + intermediate141, + intermediate142, + intermediate143, + intermediate144, + intermediate145, + intermediate146, + intermediate147, + intermediate148, + intermediate149, + intermediate150, + intermediate151, + intermediate152, + intermediate153, + intermediate154, + intermediate155, + intermediate156, + intermediate157, + intermediate158, + intermediate159, + intermediate160, + intermediate161, + intermediate162, + intermediate163, + intermediate164, + intermediate165, + intermediate166, + intermediate167, + intermediate168, + intermediate169, + intermediate170, + intermediate171, + intermediate172, + intermediate173, + intermediate174, + intermediate175, + intermediate176, + intermediate177, + intermediate178, + intermediate179, + intermediate180, + intermediate181, + intermediate182, + intermediate183, + ] +} + +pub fn intermediate1( + trace_1_column_10_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + m31(1).into() + - (trace_1_column_8_offset_0) + - (trace_1_column_9_offset_0) + - (trace_1_column_10_offset_0) +} + +pub fn intermediate2( + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_15_offset_0: QM31, +) -> QM31 { + m31(1).into() + - (trace_1_column_11_offset_0) + - (trace_1_column_12_offset_0) + - (trace_1_column_15_offset_0) +} + +pub fn intermediate3( + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, +) -> QM31 { + m31(1).into() + - (trace_1_column_13_offset_0) + - (trace_1_column_14_offset_0) + - (trace_1_column_15_offset_0) +} + +pub fn intermediate4( + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, +) -> QM31 { + m31(1).into() + - (trace_1_column_16_offset_0) + - (trace_1_column_17_offset_0) + - (trace_1_column_18_offset_0) +} + +pub fn intermediate5(trace_1_column_18_offset_0: QM31, trace_1_column_19_offset_0: QM31) -> QM31 { + m31(1).into() - (trace_1_column_18_offset_0) - (trace_1_column_19_offset_0) +} + +pub fn intermediate26( + trace_1_column_108_offset_0: QM31, + trace_1_column_136_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_80_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0 + + trace_1_column_80_offset_0 + - (trace_1_column_108_offset_0) + - (trace_1_column_136_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate27( + intermediate26: QM31, + trace_1_column_109_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_81_offset_0: QM31, +) -> QM31 { + (trace_1_column_52_offset_0 + + trace_1_column_81_offset_0 + + intermediate26 + - (trace_1_column_109_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate28( + intermediate27: QM31, + trace_1_column_110_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_82_offset_0: QM31, +) -> QM31 { + (trace_1_column_53_offset_0 + + trace_1_column_82_offset_0 + + intermediate27 + - (trace_1_column_110_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate29( + intermediate28: QM31, + trace_1_column_111_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_83_offset_0: QM31, +) -> QM31 { + (trace_1_column_54_offset_0 + + trace_1_column_83_offset_0 + + intermediate28 + - (trace_1_column_111_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate30( + intermediate29: QM31, + trace_1_column_112_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_84_offset_0: QM31, +) -> QM31 { + (trace_1_column_55_offset_0 + + trace_1_column_84_offset_0 + + intermediate29 + - (trace_1_column_112_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate31( + intermediate30: QM31, + trace_1_column_113_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_85_offset_0: QM31, +) -> QM31 { + (trace_1_column_56_offset_0 + + trace_1_column_85_offset_0 + + intermediate30 + - (trace_1_column_113_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate32( + intermediate31: QM31, + trace_1_column_114_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_86_offset_0: QM31, +) -> QM31 { + (trace_1_column_57_offset_0 + + trace_1_column_86_offset_0 + + intermediate31 + - (trace_1_column_114_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate33( + intermediate32: QM31, + trace_1_column_115_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_87_offset_0: QM31, +) -> QM31 { + (trace_1_column_58_offset_0 + + trace_1_column_87_offset_0 + + intermediate32 + - (trace_1_column_115_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate34( + intermediate33: QM31, + trace_1_column_116_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_88_offset_0: QM31, +) -> QM31 { + (trace_1_column_59_offset_0 + + trace_1_column_88_offset_0 + + intermediate33 + - (trace_1_column_116_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate35( + intermediate34: QM31, + trace_1_column_117_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_89_offset_0: QM31, +) -> QM31 { + (trace_1_column_60_offset_0 + + trace_1_column_89_offset_0 + + intermediate34 + - (trace_1_column_117_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate36( + intermediate35: QM31, + trace_1_column_118_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_90_offset_0: QM31, +) -> QM31 { + (trace_1_column_61_offset_0 + + trace_1_column_90_offset_0 + + intermediate35 + - (trace_1_column_118_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate37( + intermediate36: QM31, + trace_1_column_119_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_91_offset_0: QM31, +) -> QM31 { + (trace_1_column_62_offset_0 + + trace_1_column_91_offset_0 + + intermediate36 + - (trace_1_column_119_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate38( + intermediate37: QM31, + trace_1_column_120_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_92_offset_0: QM31, +) -> QM31 { + (trace_1_column_63_offset_0 + + trace_1_column_92_offset_0 + + intermediate37 + - (trace_1_column_120_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate39( + intermediate38: QM31, + trace_1_column_121_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_93_offset_0: QM31, +) -> QM31 { + (trace_1_column_64_offset_0 + + trace_1_column_93_offset_0 + + intermediate38 + - (trace_1_column_121_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate40( + intermediate39: QM31, + trace_1_column_122_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_94_offset_0: QM31, +) -> QM31 { + (trace_1_column_65_offset_0 + + trace_1_column_94_offset_0 + + intermediate39 + - (trace_1_column_122_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate41( + intermediate40: QM31, + trace_1_column_123_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_95_offset_0: QM31, +) -> QM31 { + (trace_1_column_66_offset_0 + + trace_1_column_95_offset_0 + + intermediate40 + - (trace_1_column_123_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate42( + intermediate41: QM31, + trace_1_column_124_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_67_offset_0 + + trace_1_column_96_offset_0 + + intermediate41 + - (trace_1_column_124_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate43( + intermediate42: QM31, + trace_1_column_125_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_97_offset_0: QM31, +) -> QM31 { + (trace_1_column_68_offset_0 + + trace_1_column_97_offset_0 + + intermediate42 + - (trace_1_column_125_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate44( + intermediate43: QM31, + trace_1_column_126_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_98_offset_0: QM31, +) -> QM31 { + (trace_1_column_69_offset_0 + + trace_1_column_98_offset_0 + + intermediate43 + - (trace_1_column_126_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate45( + intermediate44: QM31, + trace_1_column_127_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_70_offset_0 + + trace_1_column_99_offset_0 + + intermediate44 + - (trace_1_column_127_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate46( + intermediate45: QM31, + trace_1_column_100_offset_0: QM31, + trace_1_column_128_offset_0: QM31, + trace_1_column_71_offset_0: QM31, +) -> QM31 { + (trace_1_column_71_offset_0 + + trace_1_column_100_offset_0 + + intermediate45 + - (trace_1_column_128_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate47( + intermediate46: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_129_offset_0: QM31, + trace_1_column_136_offset_0: QM31, + trace_1_column_72_offset_0: QM31, +) -> QM31 { + (trace_1_column_72_offset_0 + + trace_1_column_101_offset_0 + + intermediate46 + - (trace_1_column_129_offset_0) + - ((m31(136).into()) * (trace_1_column_136_offset_0))) + * (m31(4194304).into()) +} + +pub fn intermediate48( + intermediate47: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_130_offset_0: QM31, + trace_1_column_73_offset_0: QM31, +) -> QM31 { + (trace_1_column_73_offset_0 + + trace_1_column_102_offset_0 + + intermediate47 + - (trace_1_column_130_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate49( + intermediate48: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_131_offset_0: QM31, + trace_1_column_74_offset_0: QM31, +) -> QM31 { + (trace_1_column_74_offset_0 + + trace_1_column_103_offset_0 + + intermediate48 + - (trace_1_column_131_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate50( + intermediate49: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_132_offset_0: QM31, + trace_1_column_75_offset_0: QM31, +) -> QM31 { + (trace_1_column_75_offset_0 + + trace_1_column_104_offset_0 + + intermediate49 + - (trace_1_column_132_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate51( + intermediate50: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_133_offset_0: QM31, + trace_1_column_76_offset_0: QM31, +) -> QM31 { + (trace_1_column_76_offset_0 + + trace_1_column_105_offset_0 + + intermediate50 + - (trace_1_column_133_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate52( + intermediate51: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_134_offset_0: QM31, + trace_1_column_77_offset_0: QM31, +) -> QM31 { + (trace_1_column_77_offset_0 + + trace_1_column_106_offset_0 + + intermediate51 + - (trace_1_column_134_offset_0)) + * (m31(4194304).into()) +} + +pub fn intermediate67( + trace_1_column_137_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_80_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_80_offset_0) - (trace_1_column_137_offset_0) +} + +pub fn intermediate68( + trace_1_column_138_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_81_offset_0) + - (trace_1_column_138_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate69( + trace_1_column_139_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_82_offset_0) + - (trace_1_column_139_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate70( + trace_1_column_140_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_83_offset_0) + - (trace_1_column_140_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate71( + trace_1_column_141_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_84_offset_0) + - (trace_1_column_141_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate72( + trace_1_column_142_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_85_offset_0) + - (trace_1_column_142_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate73( + trace_1_column_143_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_86_offset_0) + - (trace_1_column_143_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate74( + trace_1_column_144_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_87_offset_0) + - (trace_1_column_144_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate75( + trace_1_column_145_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_88_offset_0) + - (trace_1_column_145_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate76( + trace_1_column_146_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_89_offset_0) + - (trace_1_column_146_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate77( + trace_1_column_147_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_90_offset_0) + - (trace_1_column_147_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate78( + trace_1_column_148_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_91_offset_0) + - (trace_1_column_148_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate79( + trace_1_column_149_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_92_offset_0) + - (trace_1_column_149_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate80( + trace_1_column_150_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_93_offset_0) + - (trace_1_column_150_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate81( + trace_1_column_151_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_94_offset_0) + - (trace_1_column_151_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate82( + trace_1_column_152_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_95_offset_0) + - (trace_1_column_152_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate83( + trace_1_column_153_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_96_offset_0) + - (trace_1_column_153_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate84( + trace_1_column_154_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_97_offset_0) + - (trace_1_column_154_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate85( + trace_1_column_155_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_98_offset_0) + - (trace_1_column_155_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate86( + trace_1_column_156_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_99_offset_0) + - (trace_1_column_156_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate87( + trace_1_column_100_offset_0: QM31, + trace_1_column_157_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_100_offset_0) + - (trace_1_column_157_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate88( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_158_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_101_offset_0) + - (trace_1_column_158_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate89( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_159_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_102_offset_0) + - (trace_1_column_159_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate90( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_160_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_103_offset_0) + - (trace_1_column_160_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate91( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_161_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_104_offset_0) + - (trace_1_column_161_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate92( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_162_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_105_offset_0) + - (trace_1_column_162_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate93( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_163_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_106_offset_0) + - (trace_1_column_163_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate94( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_164_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_107_offset_0) + - (trace_1_column_164_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate95( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_52_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_81_offset_0) +} + +pub fn intermediate96( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_53_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_82_offset_0) +} + +pub fn intermediate97( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_54_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_83_offset_0) +} + +pub fn intermediate98( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_55_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_84_offset_0) +} + +pub fn intermediate99( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_56_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_85_offset_0) +} + +pub fn intermediate100( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_57_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_86_offset_0) +} + +pub fn intermediate101( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_58_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_87_offset_0) +} + +pub fn intermediate102( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_59_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_88_offset_0) +} + +pub fn intermediate103( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_60_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_89_offset_0) +} + +pub fn intermediate104( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_61_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_90_offset_0) +} + +pub fn intermediate105( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_62_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_91_offset_0) +} + +pub fn intermediate106( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_63_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_92_offset_0) +} + +pub fn intermediate107( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_64_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_93_offset_0) +} + +pub fn intermediate108( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_65_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_94_offset_0) +} + +pub fn intermediate109( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_66_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_95_offset_0) +} + +pub fn intermediate110( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_67_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_96_offset_0) +} + +pub fn intermediate111( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_68_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_97_offset_0) +} + +pub fn intermediate112( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_69_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_98_offset_0) +} + +pub fn intermediate113( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_70_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_99_offset_0) +} + +pub fn intermediate114( + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, +) -> QM31 { + (trace_1_column_71_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_72_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_101_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_100_offset_0) +} + +pub fn intermediate115( + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, +) -> QM31 { + (trace_1_column_72_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_73_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_102_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_101_offset_0) +} + +pub fn intermediate116( + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, +) -> QM31 { + (trace_1_column_73_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_74_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_103_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_102_offset_0) +} + +pub fn intermediate117( + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, +) -> QM31 { + (trace_1_column_74_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_75_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_104_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_103_offset_0) +} + +pub fn intermediate118( + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, +) -> QM31 { + (trace_1_column_75_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_76_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_105_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_104_offset_0) +} + +pub fn intermediate119( + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, +) -> QM31 { + (trace_1_column_76_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_77_offset_0) * (trace_1_column_106_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_105_offset_0) +} + +pub fn intermediate120( + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, +) -> QM31 { + (trace_1_column_77_offset_0) * (trace_1_column_107_offset_0) + + (trace_1_column_78_offset_0) * (trace_1_column_106_offset_0) +} + +pub fn intermediate121( + trace_1_column_107_offset_0: QM31, trace_1_column_78_offset_0: QM31, +) -> QM31 { + (trace_1_column_78_offset_0) * (trace_1_column_107_offset_0) +} + +pub fn intermediate122(intermediate116: QM31, intermediate67: QM31, intermediate88: QM31) -> QM31 { + (m31(32).into()) * (intermediate67) + - ((m31(4).into()) * (intermediate88)) + + (m31(8).into()) * (intermediate116) +} + +pub fn intermediate123( + intermediate117: QM31, intermediate67: QM31, intermediate68: QM31, intermediate89: QM31, +) -> QM31 { + intermediate67 + + (m31(32).into()) * (intermediate68) + - ((m31(4).into()) * (intermediate89)) + + (m31(8).into()) * (intermediate117) +} + +pub fn intermediate124( + intermediate118: QM31, intermediate68: QM31, intermediate69: QM31, intermediate90: QM31, +) -> QM31 { + intermediate68 + + (m31(32).into()) * (intermediate69) + - ((m31(4).into()) * (intermediate90)) + + (m31(8).into()) * (intermediate118) +} + +pub fn intermediate125( + intermediate119: QM31, intermediate69: QM31, intermediate70: QM31, intermediate91: QM31, +) -> QM31 { + intermediate69 + + (m31(32).into()) * (intermediate70) + - ((m31(4).into()) * (intermediate91)) + + (m31(8).into()) * (intermediate119) +} + +pub fn intermediate126( + intermediate120: QM31, intermediate70: QM31, intermediate71: QM31, intermediate92: QM31, +) -> QM31 { + intermediate70 + + (m31(32).into()) * (intermediate71) + - ((m31(4).into()) * (intermediate92)) + + (m31(8).into()) * (intermediate120) +} + +pub fn intermediate127( + intermediate121: QM31, intermediate71: QM31, intermediate72: QM31, intermediate93: QM31, +) -> QM31 { + intermediate71 + + (m31(32).into()) * (intermediate72) + - ((m31(4).into()) * (intermediate93)) + + (m31(8).into()) * (intermediate121) +} + +pub fn intermediate128(intermediate72: QM31, intermediate73: QM31, intermediate94: QM31) -> QM31 { + intermediate72 + (m31(32).into()) * (intermediate73) - ((m31(4).into()) * (intermediate94)) +} + +pub fn intermediate129( + intermediate67: QM31, intermediate73: QM31, intermediate74: QM31, intermediate95: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate67) + + intermediate73 + + (m31(32).into()) * (intermediate74) + - ((m31(4).into()) * (intermediate95)) +} + +pub fn intermediate130( + intermediate68: QM31, intermediate74: QM31, intermediate75: QM31, intermediate96: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate68) + + intermediate74 + + (m31(32).into()) * (intermediate75) + - ((m31(4).into()) * (intermediate96)) +} + +pub fn intermediate131( + intermediate69: QM31, intermediate75: QM31, intermediate76: QM31, intermediate97: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate69) + + intermediate75 + + (m31(32).into()) * (intermediate76) + - ((m31(4).into()) * (intermediate97)) +} + +pub fn intermediate132( + intermediate70: QM31, intermediate76: QM31, intermediate77: QM31, intermediate98: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate70) + + intermediate76 + + (m31(32).into()) * (intermediate77) + - ((m31(4).into()) * (intermediate98)) +} + +pub fn intermediate133( + intermediate71: QM31, intermediate77: QM31, intermediate78: QM31, intermediate99: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate71) + + intermediate77 + + (m31(32).into()) * (intermediate78) + - ((m31(4).into()) * (intermediate99)) +} + +pub fn intermediate134( + intermediate100: QM31, intermediate72: QM31, intermediate78: QM31, intermediate79: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate72) + + intermediate78 + + (m31(32).into()) * (intermediate79) + - ((m31(4).into()) * (intermediate100)) +} + +pub fn intermediate135( + intermediate101: QM31, intermediate73: QM31, intermediate79: QM31, intermediate80: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate73) + + intermediate79 + + (m31(32).into()) * (intermediate80) + - ((m31(4).into()) * (intermediate101)) +} + +pub fn intermediate136( + intermediate102: QM31, intermediate74: QM31, intermediate80: QM31, intermediate81: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate74) + + intermediate80 + + (m31(32).into()) * (intermediate81) + - ((m31(4).into()) * (intermediate102)) +} + +pub fn intermediate137( + intermediate103: QM31, intermediate75: QM31, intermediate81: QM31, intermediate82: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate75) + + intermediate81 + + (m31(32).into()) * (intermediate82) + - ((m31(4).into()) * (intermediate103)) +} + +pub fn intermediate138( + intermediate104: QM31, intermediate76: QM31, intermediate82: QM31, intermediate83: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate76) + + intermediate82 + + (m31(32).into()) * (intermediate83) + - ((m31(4).into()) * (intermediate104)) +} + +pub fn intermediate139( + intermediate105: QM31, intermediate77: QM31, intermediate83: QM31, intermediate84: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate77) + + intermediate83 + + (m31(32).into()) * (intermediate84) + - ((m31(4).into()) * (intermediate105)) +} + +pub fn intermediate140( + intermediate106: QM31, intermediate78: QM31, intermediate84: QM31, intermediate85: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate78) + + intermediate84 + + (m31(32).into()) * (intermediate85) + - ((m31(4).into()) * (intermediate106)) +} + +pub fn intermediate141( + intermediate107: QM31, intermediate79: QM31, intermediate85: QM31, intermediate86: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate79) + + intermediate85 + + (m31(32).into()) * (intermediate86) + - ((m31(4).into()) * (intermediate107)) +} + +pub fn intermediate142( + intermediate108: QM31, intermediate80: QM31, intermediate86: QM31, intermediate87: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate80) + + intermediate86 + + (m31(32).into()) * (intermediate87) + - ((m31(4).into()) * (intermediate108)) +} + +pub fn intermediate143( + intermediate109: QM31, intermediate116: QM31, intermediate81: QM31, intermediate87: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate81) + + intermediate87 + - ((m31(4).into()) * (intermediate109)) + + (m31(64).into()) * (intermediate116) +} + +pub fn intermediate144( + intermediate110: QM31, intermediate116: QM31, intermediate117: QM31, intermediate82: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate82) + - ((m31(4).into()) * (intermediate110)) + + (m31(2).into()) * (intermediate116) + + (m31(64).into()) * (intermediate117) +} + +pub fn intermediate145( + intermediate111: QM31, intermediate117: QM31, intermediate118: QM31, intermediate83: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate83) + - ((m31(4).into()) * (intermediate111)) + + (m31(2).into()) * (intermediate117) + + (m31(64).into()) * (intermediate118) +} + +pub fn intermediate146( + intermediate112: QM31, intermediate118: QM31, intermediate119: QM31, intermediate84: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate84) + - ((m31(4).into()) * (intermediate112)) + + (m31(2).into()) * (intermediate118) + + (m31(64).into()) * (intermediate119) +} + +pub fn intermediate147( + intermediate113: QM31, intermediate119: QM31, intermediate120: QM31, intermediate85: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate85) + - ((m31(4).into()) * (intermediate113)) + + (m31(2).into()) * (intermediate119) + + (m31(64).into()) * (intermediate120) +} + +pub fn intermediate148( + intermediate114: QM31, intermediate120: QM31, intermediate121: QM31, intermediate86: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate86) + - ((m31(4).into()) * (intermediate114)) + + (m31(2).into()) * (intermediate120) + + (m31(64).into()) * (intermediate121) +} + +pub fn intermediate149(intermediate115: QM31, intermediate121: QM31, intermediate87: QM31) -> QM31 { + (m31(2).into()) * (intermediate87) + - ((m31(4).into()) * (intermediate115)) + + (m31(2).into()) * (intermediate121) +} + +pub fn intermediate178(trace_1_column_15_offset_0: QM31) -> QM31 { + m31(1).into() - (trace_1_column_15_offset_0) +} + +pub fn intermediate179(trace_1_column_22_offset_0: QM31) -> QM31 { + trace_1_column_22_offset_0 - (m31(1).into()) +} + +pub fn intermediate180(trace_1_column_43_offset_0: QM31) -> QM31 { + trace_1_column_43_offset_0 - (m31(136).into()) +} + +pub fn intermediate181(trace_1_column_49_offset_0: QM31) -> QM31 { + trace_1_column_49_offset_0 - (m31(256).into()) +} +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha10: QM31, + VerifyInstruction_alpha11: QM31, + VerifyInstruction_alpha12: QM31, + VerifyInstruction_alpha13: QM31, + VerifyInstruction_alpha14: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha16: QM31, + VerifyInstruction_alpha17: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_alpha9: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (trace_1_column_3_offset_0) + + (VerifyInstruction_alpha2) * (trace_1_column_4_offset_0) + + (VerifyInstruction_alpha3) * (trace_1_column_5_offset_0) + + (VerifyInstruction_alpha4) * (trace_1_column_6_offset_0) + + (VerifyInstruction_alpha5) * (trace_1_column_7_offset_0) + + (VerifyInstruction_alpha6) * (trace_1_column_8_offset_0) + + (VerifyInstruction_alpha7) * (trace_1_column_9_offset_0) + + (VerifyInstruction_alpha8) * (trace_1_column_10_offset_0) + + (VerifyInstruction_alpha9) * (trace_1_column_11_offset_0) + + (VerifyInstruction_alpha10) * (trace_1_column_12_offset_0) + + (VerifyInstruction_alpha11) * (trace_1_column_13_offset_0) + + (VerifyInstruction_alpha12) * (trace_1_column_14_offset_0) + + (VerifyInstruction_alpha13) * (trace_1_column_15_offset_0) + + (VerifyInstruction_alpha14) * (trace_1_column_16_offset_0) + + (VerifyInstruction_alpha15) * (trace_1_column_17_offset_0) + + (VerifyInstruction_alpha16) * (trace_1_column_18_offset_0) + + (VerifyInstruction_alpha17) * (trace_1_column_19_offset_0) + + (VerifyInstruction_alpha18) * (trace_1_column_20_offset_0) + - (VerifyInstruction_z) +} + +pub fn intermediate6( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_6_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * ((trace_1_column_6_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_6_offset_0)) * (trace_1_column_1_offset_0) + + trace_1_column_3_offset_0 + - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_21_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate7( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_34_offset_0: QM31, + trace_1_column_35_offset_0: QM31, + trace_1_column_36_offset_0: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_38_offset_0: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_21_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_22_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_23_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_24_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_25_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_26_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_27_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_28_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_29_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_30_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_31_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_32_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_33_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_34_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_35_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_36_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_37_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_38_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_39_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_40_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_41_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_42_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_43_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_44_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_45_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_46_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_47_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_48_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_49_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate8( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_7_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * ((trace_1_column_7_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_7_offset_0)) * (trace_1_column_1_offset_0) + + trace_1_column_4_offset_0 + - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_50_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate9( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_50_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_51_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_52_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_53_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_54_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_55_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_56_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_57_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_58_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_59_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_60_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_61_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_62_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_63_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_64_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_65_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_66_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_67_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_68_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_69_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_70_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_71_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_72_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_73_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_74_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_75_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_76_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_77_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_78_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate10( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + intermediate1: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * ((trace_1_column_9_offset_0) * (trace_1_column_2_offset_0) + + (trace_1_column_10_offset_0) * (trace_1_column_1_offset_0) + + (trace_1_column_8_offset_0) * (trace_1_column_0_offset_0) + + (intermediate1) + * (trace_1_column_51_offset_0 + + (trace_1_column_52_offset_0) * (m31(512).into()) + + (trace_1_column_53_offset_0) * (m31(262144).into())) + + trace_1_column_5_offset_0 + - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_79_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate11( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_79_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_80_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_81_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_82_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_83_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_84_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_85_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_86_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_87_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_88_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_89_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_90_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_91_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_92_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_93_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_94_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_95_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_96_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_97_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_98_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_99_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_100_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_101_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_102_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_103_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_104_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_105_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_106_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_107_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate12( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_108_offset_0: QM31, + trace_1_column_109_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_108_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_109_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate13( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_110_offset_0: QM31, + trace_1_column_111_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_110_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_111_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate14( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_112_offset_0: QM31, + trace_1_column_113_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_112_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_113_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate15( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_114_offset_0: QM31, + trace_1_column_115_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_114_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_115_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate16( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_116_offset_0: QM31, + trace_1_column_117_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_116_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_117_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate17( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_118_offset_0: QM31, + trace_1_column_119_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_118_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_119_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate18( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_120_offset_0: QM31, + trace_1_column_121_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_120_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_121_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate19( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_122_offset_0: QM31, + trace_1_column_123_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_122_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_123_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate20( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_124_offset_0: QM31, + trace_1_column_125_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_124_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_125_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate21( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_126_offset_0: QM31, + trace_1_column_127_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_126_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_127_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate22( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_128_offset_0: QM31, + trace_1_column_129_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_128_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_129_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate23( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_130_offset_0: QM31, + trace_1_column_131_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_130_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_131_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate24( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_132_offset_0: QM31, + trace_1_column_133_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_132_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_133_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate25( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_134_offset_0: QM31, + trace_1_column_135_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_134_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_135_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate53( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_137_offset_0: QM31, + trace_1_column_138_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_137_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_138_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate54( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_139_offset_0: QM31, + trace_1_column_140_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_139_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_140_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate55( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_141_offset_0: QM31, + trace_1_column_142_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_141_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_142_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate56( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_143_offset_0: QM31, + trace_1_column_144_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_143_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_144_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate57( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_145_offset_0: QM31, + trace_1_column_146_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_145_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_146_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate58( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_147_offset_0: QM31, + trace_1_column_148_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_147_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_148_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate59( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_149_offset_0: QM31, + trace_1_column_150_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_149_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_150_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate60( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_151_offset_0: QM31, + trace_1_column_152_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_151_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_152_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate61( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_153_offset_0: QM31, + trace_1_column_154_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_153_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_154_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate62( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_155_offset_0: QM31, + trace_1_column_156_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_155_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_156_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate63( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_157_offset_0: QM31, + trace_1_column_158_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_157_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_158_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate64( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_159_offset_0: QM31, + trace_1_column_160_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_159_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_160_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate65( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_161_offset_0: QM31, + trace_1_column_162_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_161_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_162_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate66( + RangeCheck_9_9_alpha0: QM31, + RangeCheck_9_9_alpha1: QM31, + RangeCheck_9_9_z: QM31, + trace_1_column_163_offset_0: QM31, + trace_1_column_164_offset_0: QM31, +) -> QM31 { + (RangeCheck_9_9_alpha0) * (trace_1_column_163_offset_0) + + (RangeCheck_9_9_alpha1) * (trace_1_column_164_offset_0) + - (RangeCheck_9_9_z) +} + +pub fn intermediate150( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_165_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_165_offset_0 + m31(262144).into()) - (RangeCheck_19_z) +} + +pub fn intermediate151( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_166_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_166_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate152( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_167_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_167_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate153( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_168_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_168_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate154( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_169_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_169_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate155( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_170_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_170_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate156( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_171_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_171_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate157( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_172_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_172_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate158( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_173_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_173_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate159( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_174_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_174_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate160( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_175_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_175_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate161( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_176_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_176_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate162( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_177_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_177_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate163( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_178_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_178_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate164( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_179_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_179_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate165( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_180_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_180_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate166( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_181_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_181_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate167( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_182_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_182_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate168( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_183_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_183_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate169( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_184_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_184_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate170( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_185_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_185_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate171( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_186_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_186_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate172( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_187_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_187_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate173( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_188_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_188_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate174( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_189_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_189_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate175( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_190_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_190_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate176( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_191_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_191_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate177( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_192_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_192_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate182( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate183( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + intermediate3: QM31, + intermediate5: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_193_offset_0: QM31, + trace_1_column_194_offset_0: QM31, + trace_1_column_195_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_221_offset_0: QM31, + trace_1_column_222_offset_0: QM31, + trace_1_column_228_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_8_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) + * ((intermediate3) * (trace_1_column_0_offset_0 + m31(1).into() + trace_1_column_8_offset_0) + + (trace_1_column_13_offset_0) + * (trace_1_column_193_offset_0 + + (trace_1_column_194_offset_0) * (m31(512).into()) + + (trace_1_column_195_offset_0) * (m31(262144).into())) + + (trace_1_column_14_offset_0) + * (trace_1_column_0_offset_0 + + trace_1_column_193_offset_0 + + (trace_1_column_194_offset_0) * (m31(512).into()) + + (trace_1_column_195_offset_0) * (m31(262144).into()) + - (trace_1_column_221_offset_0) + - ((m31(134217728).into()) * (trace_1_column_222_offset_0))) + + (trace_1_column_15_offset_0) * (trace_1_column_228_offset_0)) + + (Opcodes_alpha1) + * (trace_1_column_1_offset_0 + + (trace_1_column_16_offset_0) + * (trace_1_column_193_offset_0 + + (trace_1_column_194_offset_0) * (m31(512).into()) + + (trace_1_column_195_offset_0) * (m31(262144).into()) + - (trace_1_column_221_offset_0) + - ((m31(134217728).into()) * (trace_1_column_222_offset_0))) + + trace_1_column_17_offset_0 + + (trace_1_column_18_offset_0) * (m31(2).into())) + + (Opcodes_alpha2) + * ((intermediate5) * (trace_1_column_2_offset_0) + + (trace_1_column_19_offset_0) + * (trace_1_column_22_offset_0 + + (trace_1_column_23_offset_0) * (m31(512).into()) + + (trace_1_column_24_offset_0) * (m31(262144).into())) + + (trace_1_column_18_offset_0) * (trace_1_column_1_offset_0 + m31(2).into())) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode.cairo new file mode 100644 index 000000000..75135a6dc --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode.cairo @@ -0,0 +1,245 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(34, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha13, + VerifyInstruction_alpha15, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_alpha10, + MemoryIdToBig_alpha11, + MemoryIdToBig_alpha12, + MemoryIdToBig_alpha13, + MemoryIdToBig_alpha14, + MemoryIdToBig_alpha15, + MemoryIdToBig_alpha16, + MemoryIdToBig_alpha17, + MemoryIdToBig_alpha18, + MemoryIdToBig_alpha19, + MemoryIdToBig_alpha20, + MemoryIdToBig_alpha21, + MemoryIdToBig_alpha22, + MemoryIdToBig_alpha23, + MemoryIdToBig_alpha24, + MemoryIdToBig_alpha25, + MemoryIdToBig_alpha26, + MemoryIdToBig_alpha27, + MemoryIdToBig_alpha28, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode/constraints.cairo new file mode 100644 index 000000000..7ebced3c6 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode/constraints.cairo @@ -0,0 +1,1099 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + 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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_alpha13: QM31, + pub VerifyInstruction_alpha15: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha5: QM31, + pub VerifyInstruction_alpha6: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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_alpha13, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_13_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_14_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_15_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_16_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_17_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_18_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_19_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_20_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_21_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_22_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_23_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_24_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_25_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_26_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_27_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_28_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_29_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_30_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_31_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_32_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_33_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_34_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_35_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_36_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_37_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_38_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_39_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_40_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_41_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_42_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_43_offset_neg_1, trace_2_column_43_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_44_offset_neg_1, trace_2_column_44_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_45_offset_neg_1, trace_2_column_45_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_46_offset_neg_1, trace_2_column_46_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + 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_alpha13, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_1_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_2_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_34_offset_0) * (trace_1_column_34_offset_0) + - (trace_1_column_34_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = (trace_1_column_6_offset_0 + + trace_1_column_7_offset_0 + + trace_1_column_8_offset_0 + + trace_1_column_9_offset_0 + + trace_1_column_10_offset_0 + + trace_1_column_11_offset_0 + + trace_1_column_12_offset_0 + + trace_1_column_13_offset_0 + + trace_1_column_14_offset_0 + + trace_1_column_15_offset_0 + + trace_1_column_16_offset_0 + + trace_1_column_17_offset_0 + + trace_1_column_18_offset_0 + + trace_1_column_19_offset_0 + + trace_1_column_20_offset_0 + + trace_1_column_21_offset_0 + + trace_1_column_22_offset_0 + + trace_1_column_23_offset_0 + + trace_1_column_24_offset_0 + + trace_1_column_25_offset_0 + + trace_1_column_26_offset_0 + + trace_1_column_27_offset_0 + + trace_1_column_28_offset_0 + + trace_1_column_29_offset_0 + + trace_1_column_30_offset_0 + + trace_1_column_31_offset_0 + + trace_1_column_32_offset_0 + + trace_1_column_33_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_35_offset_0, trace_2_column_36_offset_0, trace_2_column_37_offset_0, + trace_2_column_38_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_39_offset_0, trace_2_column_40_offset_0, trace_2_column_41_offset_0, + trace_2_column_42_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_35_offset_0, trace_2_column_36_offset_0, trace_2_column_37_offset_0, + trace_2_column_38_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + (intermediate2) * (trace_1_column_34_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_43_offset_0, trace_2_column_44_offset_0, trace_2_column_45_offset_0, + trace_2_column_46_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_43_offset_neg_1, trace_2_column_44_offset_neg_1, + trace_2_column_45_offset_neg_1, trace_2_column_46_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_39_offset_0, trace_2_column_40_offset_0, trace_2_column_41_offset_0, + trace_2_column_42_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate4) + + trace_1_column_34_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha13: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha13, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_1_offset_0, + trace_1_column_3_offset_0, + trace_1_column_5_offset_0, + ); + + let intermediate2 = intermediate2( + 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, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate3 = intermediate3( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate4 = intermediate4( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_4_offset_0, + ); + array![intermediate0, intermediate1, intermediate2, intermediate3, intermediate4] +} + + +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha13: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (trace_1_column_3_offset_0) + + (VerifyInstruction_alpha2) * (qm31(32767, 0, 0, 0)) + + (VerifyInstruction_alpha3) * (qm31(32769, 0, 0, 0)) + + VerifyInstruction_alpha5 + + VerifyInstruction_alpha6 + + VerifyInstruction_alpha13 + + (VerifyInstruction_alpha15) * (trace_1_column_4_offset_0) + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_5_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_1_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_5_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_5_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_6_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_7_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_8_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_9_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_10_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_11_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_12_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_13_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_14_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_15_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_16_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_17_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_18_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_19_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_20_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_21_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_22_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_23_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_24_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_25_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_26_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_27_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_28_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_29_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_30_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_31_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_32_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_33_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate3( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate4( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) * (trace_1_column_0_offset_0 + m31(2).into()) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + trace_1_column_4_offset_0) + + (Opcodes_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_dst_base_fp.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_dst_base_fp.cairo new file mode 100644 index 000000000..1321464ad --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_dst_base_fp.cairo @@ -0,0 +1,246 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(34, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha13, + VerifyInstruction_alpha15, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_alpha10, + MemoryIdToBig_alpha11, + MemoryIdToBig_alpha12, + MemoryIdToBig_alpha13, + MemoryIdToBig_alpha14, + MemoryIdToBig_alpha15, + MemoryIdToBig_alpha16, + MemoryIdToBig_alpha17, + MemoryIdToBig_alpha18, + MemoryIdToBig_alpha19, + MemoryIdToBig_alpha20, + MemoryIdToBig_alpha21, + MemoryIdToBig_alpha22, + MemoryIdToBig_alpha23, + MemoryIdToBig_alpha24, + MemoryIdToBig_alpha25, + MemoryIdToBig_alpha26, + MemoryIdToBig_alpha27, + MemoryIdToBig_alpha28, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_dst_base_fp/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_dst_base_fp/constraints.cairo new file mode 100644 index 000000000..1b2fbf790 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_dst_base_fp/constraints.cairo @@ -0,0 +1,1106 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + 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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_alpha13: 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_z: QM31, + pub claimed_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_alpha13, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_13_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_14_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_15_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_16_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_17_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_18_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_19_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_20_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_21_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_22_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_23_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_24_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_25_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_26_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_27_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_28_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_29_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_30_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_31_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_32_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_33_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_34_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_35_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_36_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_37_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_38_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_39_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_40_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_41_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_42_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_43_offset_neg_1, trace_2_column_43_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_44_offset_neg_1, trace_2_column_44_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_45_offset_neg_1, trace_2_column_45_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_46_offset_neg_1, trace_2_column_46_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + 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_alpha13, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_1_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_2_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_34_offset_0) * (trace_1_column_34_offset_0) + - (trace_1_column_34_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = (trace_1_column_6_offset_0 + + trace_1_column_7_offset_0 + + trace_1_column_8_offset_0 + + trace_1_column_9_offset_0 + + trace_1_column_10_offset_0 + + trace_1_column_11_offset_0 + + trace_1_column_12_offset_0 + + trace_1_column_13_offset_0 + + trace_1_column_14_offset_0 + + trace_1_column_15_offset_0 + + trace_1_column_16_offset_0 + + trace_1_column_17_offset_0 + + trace_1_column_18_offset_0 + + trace_1_column_19_offset_0 + + trace_1_column_20_offset_0 + + trace_1_column_21_offset_0 + + trace_1_column_22_offset_0 + + trace_1_column_23_offset_0 + + trace_1_column_24_offset_0 + + trace_1_column_25_offset_0 + + trace_1_column_26_offset_0 + + trace_1_column_27_offset_0 + + trace_1_column_28_offset_0 + + trace_1_column_29_offset_0 + + trace_1_column_30_offset_0 + + trace_1_column_31_offset_0 + + trace_1_column_32_offset_0 + + trace_1_column_33_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_35_offset_0, trace_2_column_36_offset_0, trace_2_column_37_offset_0, + trace_2_column_38_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_39_offset_0, trace_2_column_40_offset_0, trace_2_column_41_offset_0, + trace_2_column_42_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_35_offset_0, trace_2_column_36_offset_0, trace_2_column_37_offset_0, + trace_2_column_38_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + (intermediate2) * (trace_1_column_34_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_43_offset_0, trace_2_column_44_offset_0, trace_2_column_45_offset_0, + trace_2_column_46_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_43_offset_neg_1, trace_2_column_44_offset_neg_1, + trace_2_column_45_offset_neg_1, trace_2_column_46_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_39_offset_0, trace_2_column_40_offset_0, trace_2_column_41_offset_0, + trace_2_column_42_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate4) + + trace_1_column_34_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha13: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha13, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_5_offset_0, + ); + + let intermediate2 = intermediate2( + 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, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate3 = intermediate3( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate4 = intermediate4( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_4_offset_0, + ); + array![intermediate0, intermediate1, intermediate2, intermediate3, intermediate4] +} + + +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha13: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (trace_1_column_3_offset_0) + + (VerifyInstruction_alpha2) * (qm31(32767, 0, 0, 0)) + + (VerifyInstruction_alpha3) * (qm31(32769, 0, 0, 0)) + + VerifyInstruction_alpha4 + + VerifyInstruction_alpha5 + + VerifyInstruction_alpha6 + + VerifyInstruction_alpha13 + + (VerifyInstruction_alpha15) * (trace_1_column_4_offset_0) + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_5_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_2_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_5_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_5_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_6_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_7_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_8_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_9_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_10_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_11_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_12_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_13_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_14_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_15_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_16_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_17_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_18_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_19_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_20_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_21_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_22_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_23_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_24_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_25_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_26_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_27_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_28_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_29_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_30_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_31_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_32_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_33_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate3( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate4( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) * (trace_1_column_0_offset_0 + m31(2).into()) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + trace_1_column_4_offset_0) + + (Opcodes_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_taken.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_taken.cairo new file mode 100644 index 000000000..d5f422d9f --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_taken.cairo @@ -0,0 +1,245 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(42, log_size).span(); + let interaction_log_sizes = ArrayImpl::new_repeated(QM31_EXTENSION_DEGREE * 4, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha13, + VerifyInstruction_alpha15, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_alpha10, + MemoryIdToBig_alpha11, + MemoryIdToBig_alpha12, + MemoryIdToBig_alpha13, + MemoryIdToBig_alpha14, + MemoryIdToBig_alpha15, + MemoryIdToBig_alpha16, + MemoryIdToBig_alpha17, + MemoryIdToBig_alpha18, + MemoryIdToBig_alpha19, + MemoryIdToBig_alpha20, + MemoryIdToBig_alpha21, + MemoryIdToBig_alpha22, + MemoryIdToBig_alpha23, + MemoryIdToBig_alpha24, + MemoryIdToBig_alpha25, + MemoryIdToBig_alpha26, + MemoryIdToBig_alpha27, + MemoryIdToBig_alpha28, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_taken/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_taken/constraints.cairo new file mode 100644 index 000000000..b971294c6 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_taken/constraints.cairo @@ -0,0 +1,1453 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + 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]); + 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]); + 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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_alpha13: QM31, + pub VerifyInstruction_alpha15: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha5: QM31, + pub VerifyInstruction_alpha6: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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_alpha13, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_13_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_14_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_15_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_16_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_17_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_18_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_19_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_20_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_21_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_22_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_23_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_24_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_25_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_26_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_27_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_28_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_29_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_30_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_31_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_32_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_33_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_34_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_35_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_36_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_37_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_38_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_39_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_40_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_41_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_42_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_43_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_44_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_45_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_46_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_47_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_48_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_49_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_50_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_51_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_52_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_53_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_54_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_55_offset_neg_1, trace_2_column_55_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_56_offset_neg_1, trace_2_column_56_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_57_offset_neg_1, trace_2_column_57_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_58_offset_neg_1, trace_2_column_58_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + 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_alpha13, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_1_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_2_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_36_offset_0, + trace_1_column_37_offset_0, + trace_1_column_38_offset_0, + trace_1_column_39_offset_0, + trace_1_column_3_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + let intermediate5 = *intermediates.pop_front().unwrap(); + let intermediate6 = *intermediates.pop_front().unwrap(); + let intermediate7 = *intermediates.pop_front().unwrap(); + let intermediate8 = *intermediates.pop_front().unwrap(); + let intermediate9 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_42_offset_0) * (trace_1_column_42_offset_0) + - (trace_1_column_42_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = ((trace_1_column_6_offset_0 + + trace_1_column_7_offset_0 + + trace_1_column_8_offset_0 + + trace_1_column_9_offset_0 + + trace_1_column_10_offset_0 + + trace_1_column_11_offset_0 + + trace_1_column_12_offset_0 + + trace_1_column_13_offset_0 + + trace_1_column_14_offset_0 + + trace_1_column_15_offset_0 + + trace_1_column_16_offset_0 + + trace_1_column_17_offset_0 + + trace_1_column_18_offset_0 + + trace_1_column_19_offset_0 + + trace_1_column_20_offset_0 + + trace_1_column_21_offset_0 + + trace_1_column_22_offset_0 + + trace_1_column_23_offset_0 + + trace_1_column_24_offset_0 + + trace_1_column_25_offset_0 + + trace_1_column_26_offset_0 + + trace_1_column_27_offset_0 + + trace_1_column_28_offset_0 + + trace_1_column_29_offset_0 + + trace_1_column_30_offset_0 + + trace_1_column_31_offset_0 + + trace_1_column_32_offset_0 + + trace_1_column_33_offset_0) + * (trace_1_column_34_offset_0) + - (m31(1).into())) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = (((intermediate3) * (intermediate3) + + trace_1_column_7_offset_0 + + trace_1_column_8_offset_0 + + trace_1_column_9_offset_0 + + trace_1_column_10_offset_0 + + trace_1_column_11_offset_0 + + trace_1_column_12_offset_0 + + trace_1_column_13_offset_0 + + trace_1_column_14_offset_0 + + trace_1_column_15_offset_0 + + trace_1_column_16_offset_0 + + trace_1_column_17_offset_0 + + trace_1_column_18_offset_0 + + trace_1_column_19_offset_0 + + trace_1_column_20_offset_0 + + trace_1_column_21_offset_0 + + trace_1_column_22_offset_0 + + trace_1_column_23_offset_0 + + trace_1_column_24_offset_0 + + trace_1_column_25_offset_0 + + trace_1_column_26_offset_0 + + (intermediate4) * (intermediate4) + + trace_1_column_28_offset_0 + + trace_1_column_29_offset_0 + + trace_1_column_30_offset_0 + + trace_1_column_31_offset_0 + + trace_1_column_32_offset_0 + + (intermediate5) * (intermediate5)) + * (trace_1_column_35_offset_0) + - (m31(1).into())) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((trace_1_column_37_offset_0) + * (trace_1_column_37_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((trace_1_column_38_offset_0) + * (trace_1_column_38_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((trace_1_column_38_offset_0) + * (trace_1_column_37_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_43_offset_0, trace_2_column_44_offset_0, trace_2_column_45_offset_0, + trace_2_column_46_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 7 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_47_offset_0, trace_2_column_48_offset_0, trace_2_column_49_offset_0, + trace_2_column_50_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_43_offset_0, trace_2_column_44_offset_0, trace_2_column_45_offset_0, + trace_2_column_46_offset_0, + ], + ))) + * ((intermediate2) * (intermediate6)) + - (intermediate6 + intermediate2)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 8 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_51_offset_0, trace_2_column_52_offset_0, trace_2_column_53_offset_0, + trace_2_column_54_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_47_offset_0, trace_2_column_48_offset_0, trace_2_column_49_offset_0, + trace_2_column_50_offset_0, + ], + ))) + * ((intermediate7) * (intermediate8)) + - (intermediate8 + (intermediate7) * (trace_1_column_42_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 9 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_55_offset_0, trace_2_column_56_offset_0, trace_2_column_57_offset_0, + trace_2_column_58_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_55_offset_neg_1, trace_2_column_56_offset_neg_1, + trace_2_column_57_offset_neg_1, trace_2_column_58_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_51_offset_0, trace_2_column_52_offset_0, trace_2_column_53_offset_0, + trace_2_column_54_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate9) + + trace_1_column_42_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha13: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_36_offset_0: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_38_offset_0: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate3 = intermediate3(trace_1_column_6_offset_0); + + let intermediate4 = intermediate4(trace_1_column_27_offset_0); + + let intermediate5 = intermediate5(trace_1_column_33_offset_0); + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha13, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_1_offset_0, + trace_1_column_3_offset_0, + trace_1_column_5_offset_0, + ); + + let intermediate2 = intermediate2( + 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, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate6 = intermediate6( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_0_offset_0, + trace_1_column_36_offset_0, + ); + + let intermediate7 = intermediate7( + 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_alpha28, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_z, + trace_1_column_36_offset_0, + trace_1_column_37_offset_0, + trace_1_column_38_offset_0, + trace_1_column_39_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + ); + + let intermediate8 = intermediate8( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate9 = intermediate9( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_37_offset_0, + trace_1_column_38_offset_0, + trace_1_column_39_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_4_offset_0, + ); + array![ + intermediate0, + intermediate1, + intermediate2, + intermediate3, + intermediate4, + intermediate5, + intermediate6, + intermediate7, + intermediate8, + intermediate9, + ] +} + +pub fn intermediate3(trace_1_column_6_offset_0: QM31) -> QM31 { + trace_1_column_6_offset_0 - (m31(1).into()) +} + +pub fn intermediate4(trace_1_column_27_offset_0: QM31) -> QM31 { + trace_1_column_27_offset_0 - (m31(136).into()) +} + +pub fn intermediate5(trace_1_column_33_offset_0: QM31) -> QM31 { + trace_1_column_33_offset_0 - (m31(256).into()) +} +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha13: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (trace_1_column_3_offset_0) + + (VerifyInstruction_alpha2) * (qm31(32767, 0, 0, 0)) + + (VerifyInstruction_alpha3) * (qm31(32769, 0, 0, 0)) + + VerifyInstruction_alpha5 + + VerifyInstruction_alpha6 + + VerifyInstruction_alpha13 + + (VerifyInstruction_alpha15) * (trace_1_column_4_offset_0) + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_5_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_1_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_5_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_5_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_6_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_7_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_8_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_9_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_10_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_11_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_12_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_13_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_14_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_15_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_16_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_17_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_18_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_19_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_20_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_21_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_22_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_23_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_24_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_25_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_26_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_27_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_28_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_29_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_30_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_31_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_32_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_33_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate6( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_36_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) * (trace_1_column_0_offset_0 + m31(1).into()) + + (MemoryAddressToId_alpha1) * (trace_1_column_36_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate7( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_36_offset_0: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_38_offset_0: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_36_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_39_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_40_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_41_offset_0) + + (MemoryIdToBig_alpha4) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha5) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha6) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha7) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha8) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha9) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha10) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha11) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha12) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha13) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha14) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha15) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha16) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha17) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha18) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha19) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha20) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha21) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha22) + * ((m31(136).into()) * (trace_1_column_37_offset_0) - (trace_1_column_38_offset_0)) + + (MemoryIdToBig_alpha28) * ((trace_1_column_37_offset_0) * (m31(256).into())) + - (MemoryIdToBig_z) +} + +pub fn intermediate8( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate9( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_38_offset_0: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) + * (trace_1_column_0_offset_0 + + trace_1_column_39_offset_0 + + (trace_1_column_40_offset_0) * (m31(512).into()) + + (trace_1_column_41_offset_0) * (m31(262144).into()) + - (trace_1_column_37_offset_0) + - ((m31(134217728).into()) * (trace_1_column_38_offset_0))) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + trace_1_column_4_offset_0) + + (Opcodes_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_taken_dst_base_fp.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_taken_dst_base_fp.cairo new file mode 100644 index 000000000..bda390291 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_taken_dst_base_fp.cairo @@ -0,0 +1,246 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(42, log_size).span(); + let interaction_log_sizes = ArrayImpl::new_repeated(QM31_EXTENSION_DEGREE * 4, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha13, + VerifyInstruction_alpha15, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_alpha10, + MemoryIdToBig_alpha11, + MemoryIdToBig_alpha12, + MemoryIdToBig_alpha13, + MemoryIdToBig_alpha14, + MemoryIdToBig_alpha15, + MemoryIdToBig_alpha16, + MemoryIdToBig_alpha17, + MemoryIdToBig_alpha18, + MemoryIdToBig_alpha19, + MemoryIdToBig_alpha20, + MemoryIdToBig_alpha21, + MemoryIdToBig_alpha22, + MemoryIdToBig_alpha23, + MemoryIdToBig_alpha24, + MemoryIdToBig_alpha25, + MemoryIdToBig_alpha26, + MemoryIdToBig_alpha27, + MemoryIdToBig_alpha28, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_taken_dst_base_fp/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_taken_dst_base_fp/constraints.cairo new file mode 100644 index 000000000..b8b2c0cab --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/jnz_opcode_taken_dst_base_fp/constraints.cairo @@ -0,0 +1,1460 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + 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]); + 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]); + 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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_alpha13: 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_z: QM31, + pub claimed_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_alpha13, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_13_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_14_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_15_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_16_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_17_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_18_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_19_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_20_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_21_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_22_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_23_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_24_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_25_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_26_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_27_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_28_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_29_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_30_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_31_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_32_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_33_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_34_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_35_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_36_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_37_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_38_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_39_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_40_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_41_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_42_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_43_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_44_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_45_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_46_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_47_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_48_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_49_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_50_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_51_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_52_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_53_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_54_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_55_offset_neg_1, trace_2_column_55_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_56_offset_neg_1, trace_2_column_56_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_57_offset_neg_1, trace_2_column_57_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_58_offset_neg_1, trace_2_column_58_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + 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_alpha13, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_1_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_2_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_36_offset_0, + trace_1_column_37_offset_0, + trace_1_column_38_offset_0, + trace_1_column_39_offset_0, + trace_1_column_3_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + let intermediate5 = *intermediates.pop_front().unwrap(); + let intermediate6 = *intermediates.pop_front().unwrap(); + let intermediate7 = *intermediates.pop_front().unwrap(); + let intermediate8 = *intermediates.pop_front().unwrap(); + let intermediate9 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_42_offset_0) * (trace_1_column_42_offset_0) + - (trace_1_column_42_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = ((trace_1_column_6_offset_0 + + trace_1_column_7_offset_0 + + trace_1_column_8_offset_0 + + trace_1_column_9_offset_0 + + trace_1_column_10_offset_0 + + trace_1_column_11_offset_0 + + trace_1_column_12_offset_0 + + trace_1_column_13_offset_0 + + trace_1_column_14_offset_0 + + trace_1_column_15_offset_0 + + trace_1_column_16_offset_0 + + trace_1_column_17_offset_0 + + trace_1_column_18_offset_0 + + trace_1_column_19_offset_0 + + trace_1_column_20_offset_0 + + trace_1_column_21_offset_0 + + trace_1_column_22_offset_0 + + trace_1_column_23_offset_0 + + trace_1_column_24_offset_0 + + trace_1_column_25_offset_0 + + trace_1_column_26_offset_0 + + trace_1_column_27_offset_0 + + trace_1_column_28_offset_0 + + trace_1_column_29_offset_0 + + trace_1_column_30_offset_0 + + trace_1_column_31_offset_0 + + trace_1_column_32_offset_0 + + trace_1_column_33_offset_0) + * (trace_1_column_34_offset_0) + - (m31(1).into())) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = (((intermediate3) * (intermediate3) + + trace_1_column_7_offset_0 + + trace_1_column_8_offset_0 + + trace_1_column_9_offset_0 + + trace_1_column_10_offset_0 + + trace_1_column_11_offset_0 + + trace_1_column_12_offset_0 + + trace_1_column_13_offset_0 + + trace_1_column_14_offset_0 + + trace_1_column_15_offset_0 + + trace_1_column_16_offset_0 + + trace_1_column_17_offset_0 + + trace_1_column_18_offset_0 + + trace_1_column_19_offset_0 + + trace_1_column_20_offset_0 + + trace_1_column_21_offset_0 + + trace_1_column_22_offset_0 + + trace_1_column_23_offset_0 + + trace_1_column_24_offset_0 + + trace_1_column_25_offset_0 + + trace_1_column_26_offset_0 + + (intermediate4) * (intermediate4) + + trace_1_column_28_offset_0 + + trace_1_column_29_offset_0 + + trace_1_column_30_offset_0 + + trace_1_column_31_offset_0 + + trace_1_column_32_offset_0 + + (intermediate5) * (intermediate5)) + * (trace_1_column_35_offset_0) + - (m31(1).into())) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((trace_1_column_37_offset_0) + * (trace_1_column_37_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((trace_1_column_38_offset_0) + * (trace_1_column_38_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((trace_1_column_38_offset_0) + * (trace_1_column_37_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_43_offset_0, trace_2_column_44_offset_0, trace_2_column_45_offset_0, + trace_2_column_46_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 7 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_47_offset_0, trace_2_column_48_offset_0, trace_2_column_49_offset_0, + trace_2_column_50_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_43_offset_0, trace_2_column_44_offset_0, trace_2_column_45_offset_0, + trace_2_column_46_offset_0, + ], + ))) + * ((intermediate2) * (intermediate6)) + - (intermediate6 + intermediate2)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 8 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_51_offset_0, trace_2_column_52_offset_0, trace_2_column_53_offset_0, + trace_2_column_54_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_47_offset_0, trace_2_column_48_offset_0, trace_2_column_49_offset_0, + trace_2_column_50_offset_0, + ], + ))) + * ((intermediate7) * (intermediate8)) + - (intermediate8 + (intermediate7) * (trace_1_column_42_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 9 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_55_offset_0, trace_2_column_56_offset_0, trace_2_column_57_offset_0, + trace_2_column_58_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_55_offset_neg_1, trace_2_column_56_offset_neg_1, + trace_2_column_57_offset_neg_1, trace_2_column_58_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_51_offset_0, trace_2_column_52_offset_0, trace_2_column_53_offset_0, + trace_2_column_54_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate9) + + trace_1_column_42_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha13: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_36_offset_0: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_38_offset_0: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate3 = intermediate3(trace_1_column_6_offset_0); + + let intermediate4 = intermediate4(trace_1_column_27_offset_0); + + let intermediate5 = intermediate5(trace_1_column_33_offset_0); + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha13, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_5_offset_0, + ); + + let intermediate2 = intermediate2( + 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, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate6 = intermediate6( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_0_offset_0, + trace_1_column_36_offset_0, + ); + + let intermediate7 = intermediate7( + 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_alpha28, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_z, + trace_1_column_36_offset_0, + trace_1_column_37_offset_0, + trace_1_column_38_offset_0, + trace_1_column_39_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + ); + + let intermediate8 = intermediate8( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate9 = intermediate9( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_37_offset_0, + trace_1_column_38_offset_0, + trace_1_column_39_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_4_offset_0, + ); + array![ + intermediate0, + intermediate1, + intermediate2, + intermediate3, + intermediate4, + intermediate5, + intermediate6, + intermediate7, + intermediate8, + intermediate9, + ] +} + +pub fn intermediate3(trace_1_column_6_offset_0: QM31) -> QM31 { + trace_1_column_6_offset_0 - (m31(1).into()) +} + +pub fn intermediate4(trace_1_column_27_offset_0: QM31) -> QM31 { + trace_1_column_27_offset_0 - (m31(136).into()) +} + +pub fn intermediate5(trace_1_column_33_offset_0: QM31) -> QM31 { + trace_1_column_33_offset_0 - (m31(256).into()) +} +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha13: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (trace_1_column_3_offset_0) + + (VerifyInstruction_alpha2) * (qm31(32767, 0, 0, 0)) + + (VerifyInstruction_alpha3) * (qm31(32769, 0, 0, 0)) + + VerifyInstruction_alpha4 + + VerifyInstruction_alpha5 + + VerifyInstruction_alpha6 + + VerifyInstruction_alpha13 + + (VerifyInstruction_alpha15) * (trace_1_column_4_offset_0) + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_5_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_2_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_5_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_5_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_6_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_7_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_8_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_9_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_10_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_11_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_12_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_13_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_14_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_15_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_16_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_17_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_18_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_19_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_20_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_21_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_22_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_23_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_24_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_25_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_26_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_27_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_28_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_29_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_30_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_31_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_32_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_33_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate6( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_36_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) * (trace_1_column_0_offset_0 + m31(1).into()) + + (MemoryAddressToId_alpha1) * (trace_1_column_36_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate7( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_36_offset_0: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_38_offset_0: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_36_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_39_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_40_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_41_offset_0) + + (MemoryIdToBig_alpha4) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha5) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha6) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha7) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha8) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha9) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha10) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha11) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha12) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha13) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha14) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha15) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha16) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha17) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha18) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha19) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha20) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha21) * ((trace_1_column_38_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha22) + * ((m31(136).into()) * (trace_1_column_37_offset_0) - (trace_1_column_38_offset_0)) + + (MemoryIdToBig_alpha28) * ((trace_1_column_37_offset_0) * (m31(256).into())) + - (MemoryIdToBig_z) +} + +pub fn intermediate8( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate9( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_38_offset_0: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) + * (trace_1_column_0_offset_0 + + trace_1_column_39_offset_0 + + (trace_1_column_40_offset_0) * (m31(512).into()) + + (trace_1_column_41_offset_0) * (m31(262144).into()) + - (trace_1_column_37_offset_0) + - ((m31(134217728).into()) * (trace_1_column_38_offset_0))) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + trace_1_column_4_offset_0) + + (Opcodes_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode.cairo new file mode 100644 index 000000000..a8f9359c0 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode.cairo @@ -0,0 +1,222 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(12, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_alpha11, + VerifyInstruction_alpha15, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode/constraints.cairo new file mode 100644 index 000000000..b75d8813f --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode/constraints.cairo @@ -0,0 +1,639 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_alpha2: QM31, + pub MemoryIdToBig_alpha3: 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_alpha11: QM31, + pub VerifyInstruction_alpha15: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha4: QM31, + pub VerifyInstruction_alpha5: QM31, + pub VerifyInstruction_alpha7: QM31, + pub VerifyInstruction_alpha8: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha11, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_13_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_14_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_15_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_16_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_17_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_18_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_19_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_20_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_21_offset_neg_1, trace_2_column_21_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_22_offset_neg_1, trace_2_column_22_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_23_offset_neg_1, trace_2_column_23_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_24_offset_neg_1, trace_2_column_24_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha11, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_12_offset_0) * (trace_1_column_12_offset_0) + - (trace_1_column_12_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = (trace_1_column_4_offset_0 + + trace_1_column_5_offset_0 + - (m31(1).into())) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = (trace_1_column_7_offset_0 + - ((trace_1_column_4_offset_0) * (trace_1_column_2_offset_0) + + (trace_1_column_5_offset_0) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_13_offset_0, trace_2_column_14_offset_0, trace_2_column_15_offset_0, + trace_2_column_16_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_17_offset_0, trace_2_column_18_offset_0, trace_2_column_19_offset_0, + trace_2_column_20_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_13_offset_0, trace_2_column_14_offset_0, trace_2_column_15_offset_0, + trace_2_column_16_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + (intermediate2) * (trace_1_column_12_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_21_offset_0, trace_2_column_22_offset_0, trace_2_column_23_offset_0, + trace_2_column_24_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_21_offset_neg_1, trace_2_column_22_offset_neg_1, + trace_2_column_23_offset_neg_1, trace_2_column_24_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_17_offset_0, trace_2_column_18_offset_0, trace_2_column_19_offset_0, + trace_2_column_20_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate4) + + trace_1_column_12_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha11: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha11, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_3_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + ); + + let intermediate2 = intermediate2( + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate3 = intermediate3( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate4 = intermediate4( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_6_offset_0, + trace_1_column_9_offset_0, + ); + array![intermediate0, intermediate1, intermediate2, intermediate3, intermediate4] +} + + +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha11: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (qm31(32767, 0, 0, 0)) + + (VerifyInstruction_alpha2) * (qm31(32767, 0, 0, 0)) + + (VerifyInstruction_alpha3) * (trace_1_column_3_offset_0) + + VerifyInstruction_alpha4 + + VerifyInstruction_alpha5 + + (VerifyInstruction_alpha7) * (trace_1_column_4_offset_0) + + (VerifyInstruction_alpha8) * (trace_1_column_5_offset_0) + + VerifyInstruction_alpha11 + + (VerifyInstruction_alpha15) * (trace_1_column_6_offset_0) + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_7_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_8_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_8_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_9_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_10_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_11_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate3( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate4( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) + * (trace_1_column_9_offset_0 + + (trace_1_column_10_offset_0) * (m31(512).into()) + + (trace_1_column_11_offset_0) * (m31(262144).into())) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + trace_1_column_6_offset_0) + + (Opcodes_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_double_deref.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_double_deref.cairo new file mode 100644 index 000000000..c35cd1a6e --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_double_deref.cairo @@ -0,0 +1,220 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(16, log_size).span(); + let interaction_log_sizes = ArrayImpl::new_repeated(QM31_EXTENSION_DEGREE * 4, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha11, + VerifyInstruction_alpha15, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_double_deref/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_double_deref/constraints.cairo new file mode 100644 index 000000000..b2bfd6279 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_double_deref/constraints.cairo @@ -0,0 +1,787 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_alpha2: QM31, + pub MemoryIdToBig_alpha3: 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_alpha11: QM31, + pub VerifyInstruction_alpha15: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha4: QM31, + pub VerifyInstruction_alpha5: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha11, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_13_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_14_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_15_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_16_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_17_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_18_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_19_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_20_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_21_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_22_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_23_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_24_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_25_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_26_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_27_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_28_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_29_offset_neg_1, trace_2_column_29_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_30_offset_neg_1, trace_2_column_30_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_31_offset_neg_1, trace_2_column_31_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_32_offset_neg_1, trace_2_column_32_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha11, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + let intermediate5 = *intermediates.pop_front().unwrap(); + let intermediate6 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_16_offset_0) * (trace_1_column_16_offset_0) + - (trace_1_column_16_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = (trace_1_column_7_offset_0 + - ((trace_1_column_5_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_5_offset_0)) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_17_offset_0, trace_2_column_18_offset_0, trace_2_column_19_offset_0, + trace_2_column_20_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_21_offset_0, trace_2_column_22_offset_0, trace_2_column_23_offset_0, + trace_2_column_24_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_17_offset_0, trace_2_column_18_offset_0, trace_2_column_19_offset_0, + trace_2_column_20_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + intermediate2)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_25_offset_0, trace_2_column_26_offset_0, trace_2_column_27_offset_0, + trace_2_column_28_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_21_offset_0, trace_2_column_22_offset_0, trace_2_column_23_offset_0, + trace_2_column_24_offset_0, + ], + ))) + * ((intermediate4) * (intermediate5)) + - (intermediate5 + (intermediate4) * (trace_1_column_16_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_29_offset_0, trace_2_column_30_offset_0, trace_2_column_31_offset_0, + trace_2_column_32_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_29_offset_neg_1, trace_2_column_30_offset_neg_1, + trace_2_column_31_offset_neg_1, trace_2_column_32_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_25_offset_0, trace_2_column_26_offset_0, trace_2_column_27_offset_0, + trace_2_column_28_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate6) + + trace_1_column_16_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha11: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha11, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_3_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + ); + + let intermediate2 = intermediate2( + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate3 = intermediate3( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_4_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate4 = intermediate4( + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_z, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + ); + + let intermediate5 = intermediate5( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate6 = intermediate6( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_6_offset_0, + ); + array![ + intermediate0, + intermediate1, + intermediate2, + intermediate3, + intermediate4, + intermediate5, + intermediate6, + ] +} + + +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha11: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (qm31(32767, 0, 0, 0)) + + (VerifyInstruction_alpha2) * (trace_1_column_3_offset_0) + + (VerifyInstruction_alpha3) * (trace_1_column_4_offset_0) + + VerifyInstruction_alpha4 + + (VerifyInstruction_alpha5) * (trace_1_column_5_offset_0) + + VerifyInstruction_alpha11 + + (VerifyInstruction_alpha15) * (trace_1_column_6_offset_0) + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_7_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_8_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_8_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_9_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_10_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_11_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate3( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_9_offset_0 + + (trace_1_column_10_offset_0) * (m31(512).into()) + + (trace_1_column_11_offset_0) * (m31(262144).into()) + + trace_1_column_4_offset_0 + - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_12_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate4( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_12_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_13_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_14_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_15_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate5( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate6( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_6_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) + * (trace_1_column_13_offset_0 + + (trace_1_column_14_offset_0) * (m31(512).into()) + + (trace_1_column_15_offset_0) * (m31(262144).into())) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + trace_1_column_6_offset_0) + + (Opcodes_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_rel.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_rel.cairo new file mode 100644 index 000000000..045885fe7 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_rel.cairo @@ -0,0 +1,242 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(14, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_alpha12, + VerifyInstruction_alpha15, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_alpha10, + MemoryIdToBig_alpha11, + MemoryIdToBig_alpha12, + MemoryIdToBig_alpha13, + MemoryIdToBig_alpha14, + MemoryIdToBig_alpha15, + MemoryIdToBig_alpha16, + MemoryIdToBig_alpha17, + MemoryIdToBig_alpha18, + MemoryIdToBig_alpha19, + MemoryIdToBig_alpha20, + MemoryIdToBig_alpha21, + MemoryIdToBig_alpha22, + MemoryIdToBig_alpha28, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_rel/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_rel/constraints.cairo new file mode 100644 index 000000000..0bd59c7e8 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_rel/constraints.cairo @@ -0,0 +1,833 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_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_alpha12: QM31, + pub VerifyInstruction_alpha15: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha4: QM31, + pub VerifyInstruction_alpha5: QM31, + pub VerifyInstruction_alpha7: QM31, + pub VerifyInstruction_alpha8: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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_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_alpha12, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_13_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_14_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_15_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_16_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_17_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_18_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_19_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_20_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_21_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_22_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_23_offset_neg_1, trace_2_column_23_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_24_offset_neg_1, trace_2_column_24_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_25_offset_neg_1, trace_2_column_25_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_26_offset_neg_1, trace_2_column_26_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + 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_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_alpha12, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_14_offset_0) * (trace_1_column_14_offset_0) + - (trace_1_column_14_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = (trace_1_column_4_offset_0 + + trace_1_column_5_offset_0 + - (m31(1).into())) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = (trace_1_column_7_offset_0 + - ((trace_1_column_4_offset_0) * (trace_1_column_2_offset_0) + + (trace_1_column_5_offset_0) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((trace_1_column_9_offset_0) + * (trace_1_column_9_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((trace_1_column_10_offset_0) + * (trace_1_column_10_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((trace_1_column_10_offset_0) + * (trace_1_column_9_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_15_offset_0, trace_2_column_16_offset_0, trace_2_column_17_offset_0, + trace_2_column_18_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 7 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_19_offset_0, trace_2_column_20_offset_0, trace_2_column_21_offset_0, + trace_2_column_22_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_15_offset_0, trace_2_column_16_offset_0, trace_2_column_17_offset_0, + trace_2_column_18_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + (intermediate2) * (trace_1_column_14_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 8 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_23_offset_0, trace_2_column_24_offset_0, trace_2_column_25_offset_0, + trace_2_column_26_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_23_offset_neg_1, trace_2_column_24_offset_neg_1, + trace_2_column_25_offset_neg_1, trace_2_column_26_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_19_offset_0, trace_2_column_20_offset_0, trace_2_column_21_offset_0, + trace_2_column_22_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate4) + + trace_1_column_14_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha12: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha12, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_3_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + ); + + let intermediate2 = intermediate2( + 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_alpha28, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_z, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate3 = intermediate3( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate4 = intermediate4( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_6_offset_0, + trace_1_column_9_offset_0, + ); + array![intermediate0, intermediate1, intermediate2, intermediate3, intermediate4] +} + + +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha12: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (qm31(32767, 0, 0, 0)) + + (VerifyInstruction_alpha2) * (qm31(32767, 0, 0, 0)) + + (VerifyInstruction_alpha3) * (trace_1_column_3_offset_0) + + VerifyInstruction_alpha4 + + VerifyInstruction_alpha5 + + (VerifyInstruction_alpha7) * (trace_1_column_4_offset_0) + + (VerifyInstruction_alpha8) * (trace_1_column_5_offset_0) + + VerifyInstruction_alpha12 + + (VerifyInstruction_alpha15) * (trace_1_column_6_offset_0) + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_7_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_8_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_8_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_11_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_12_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_13_offset_0) + + (MemoryIdToBig_alpha4) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha5) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha6) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha7) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha8) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha9) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha10) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha11) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha12) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha13) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha14) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha15) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha16) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha17) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha18) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha19) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha20) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha21) * ((trace_1_column_10_offset_0) * (m31(511).into())) + + (MemoryIdToBig_alpha22) + * ((m31(136).into()) * (trace_1_column_9_offset_0) - (trace_1_column_10_offset_0)) + + (MemoryIdToBig_alpha28) * ((trace_1_column_9_offset_0) * (m31(256).into())) + - (MemoryIdToBig_z) +} + +pub fn intermediate3( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate4( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) + * (trace_1_column_0_offset_0 + + trace_1_column_11_offset_0 + + (trace_1_column_12_offset_0) * (m31(512).into()) + + (trace_1_column_13_offset_0) * (m31(262144).into()) + - (trace_1_column_9_offset_0) + - ((m31(134217728).into()) * (trace_1_column_10_offset_0))) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + trace_1_column_6_offset_0) + + (Opcodes_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_rel_imm.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_rel_imm.cairo new file mode 100644 index 000000000..cd575b32a --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_rel_imm.cairo @@ -0,0 +1,241 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha12, + VerifyInstruction_alpha15, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_alpha10, + MemoryIdToBig_alpha11, + MemoryIdToBig_alpha12, + MemoryIdToBig_alpha13, + MemoryIdToBig_alpha14, + MemoryIdToBig_alpha15, + MemoryIdToBig_alpha16, + MemoryIdToBig_alpha17, + MemoryIdToBig_alpha18, + MemoryIdToBig_alpha19, + MemoryIdToBig_alpha20, + MemoryIdToBig_alpha21, + MemoryIdToBig_alpha22, + MemoryIdToBig_alpha28, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_rel_imm/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_rel_imm/constraints.cairo new file mode 100644 index 000000000..1b05bfeff --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/jump_opcode_rel_imm/constraints.cairo @@ -0,0 +1,759 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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_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_alpha12: 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_z: QM31, + pub claimed_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_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_alpha12, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_11_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_12_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_13_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_14_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_15_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_16_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_17_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_18_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_19_offset_neg_1, trace_2_column_19_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_20_offset_neg_1, trace_2_column_20_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_21_offset_neg_1, trace_2_column_21_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_22_offset_neg_1, trace_2_column_22_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + 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_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_alpha12, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_10_offset_0) * (trace_1_column_10_offset_0) + - (trace_1_column_10_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = ((trace_1_column_5_offset_0) + * (trace_1_column_5_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = ((trace_1_column_6_offset_0) + * (trace_1_column_6_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((trace_1_column_6_offset_0) + * (trace_1_column_5_offset_0 - (m31(1).into()))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_11_offset_0, trace_2_column_12_offset_0, trace_2_column_13_offset_0, + trace_2_column_14_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_15_offset_0, trace_2_column_16_offset_0, trace_2_column_17_offset_0, + trace_2_column_18_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_11_offset_0, trace_2_column_12_offset_0, trace_2_column_13_offset_0, + trace_2_column_14_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + (intermediate2) * (trace_1_column_10_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_19_offset_0, trace_2_column_20_offset_0, trace_2_column_21_offset_0, + trace_2_column_22_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_19_offset_neg_1, trace_2_column_20_offset_neg_1, + trace_2_column_21_offset_neg_1, trace_2_column_22_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_15_offset_0, trace_2_column_16_offset_0, trace_2_column_17_offset_0, + trace_2_column_18_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate4) + + trace_1_column_10_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha12: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha12, + VerifyInstruction_alpha15, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_0_offset_0, + trace_1_column_4_offset_0, + ); + + let intermediate2 = intermediate2( + 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_alpha28, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_z, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate3 = intermediate3( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate4 = intermediate4( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_3_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + array![intermediate0, intermediate1, intermediate2, intermediate3, intermediate4] +} + + +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha12: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) * (trace_1_column_0_offset_0 + m31(1).into()) + + (MemoryAddressToId_alpha1) * (trace_1_column_4_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate3( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate4( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (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) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/memory_address_to_id/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/memory_address_to_id/constraints.cairo index 2d346f996..56c1b1d25 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/components/memory_address_to_id/constraints.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/memory_address_to_id/constraints.cairo @@ -1,12 +1,12 @@ use stwo_constraint_framework::{ PreprocessedColumn, PreprocessedColumnSet, PreprocessedColumnSetImpl, }; -use stwo_verifier_core::{ColumnSpan, ColumnArray}; use stwo_verifier_core::circle::{ CirclePoint, CirclePointIndex, CirclePointIndexImpl, CirclePointQM31AddCirclePointM31Impl, }; -use stwo_verifier_core::fields::m31::{m31, M31}; +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( diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/memory_id_to_big/constraints_big.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/memory_id_to_big/constraints_big.cairo index 1ac44b8b2..52ee36cf9 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/components/memory_id_to_big/constraints_big.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/memory_id_to_big/constraints_big.cairo @@ -1,12 +1,12 @@ use stwo_constraint_framework::{ PreprocessedColumn, PreprocessedColumnSet, PreprocessedColumnSetImpl, }; -use stwo_verifier_core::{ColumnSpan, ColumnArray}; use stwo_verifier_core::circle::{ CirclePoint, CirclePointIndex, CirclePointIndexImpl, CirclePointQM31AddCirclePointM31Impl, }; -use stwo_verifier_core::fields::m31::{m31, M31}; +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( diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/memory_id_to_big/constraints_small.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/memory_id_to_big/constraints_small.cairo index fe57bacd8..db06e9c18 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/components/memory_id_to_big/constraints_small.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/memory_id_to_big/constraints_small.cairo @@ -1,12 +1,12 @@ use stwo_constraint_framework::{ PreprocessedColumn, PreprocessedColumnSet, PreprocessedColumnSetImpl, }; -use stwo_verifier_core::{ColumnSpan, ColumnArray}; use stwo_verifier_core::circle::{ CirclePoint, CirclePointIndex, CirclePointIndexImpl, CirclePointQM31AddCirclePointM31Impl, }; -use stwo_verifier_core::fields::m31::{m31, M31}; +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( diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/mul_opcode.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/mul_opcode.cairo new file mode 100644 index 000000000..e98a92bfe --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/mul_opcode.cairo @@ -0,0 +1,259 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(129, log_size).span(); + let interaction_log_sizes = ArrayImpl::new_repeated(QM31_EXTENSION_DEGREE * 19, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub range_check_19_lookup_elements: crate::RangeCheck19BitElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let RangeCheck_19_z = *self.range_check_19_lookup_elements.z; + let mut range_check_19_alpha_powers = self + .range_check_19_lookup_elements + .alpha_powers + .span(); + let RangeCheck_19_alpha0 = *range_check_19_alpha_powers.pop_front().unwrap(); + let RangeCheck_19_alpha1 = *range_check_19_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_alpha10, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_alpha10, + MemoryIdToBig_alpha11, + MemoryIdToBig_alpha12, + MemoryIdToBig_alpha13, + MemoryIdToBig_alpha14, + MemoryIdToBig_alpha15, + MemoryIdToBig_alpha16, + MemoryIdToBig_alpha17, + MemoryIdToBig_alpha18, + MemoryIdToBig_alpha19, + MemoryIdToBig_alpha20, + MemoryIdToBig_alpha21, + MemoryIdToBig_alpha22, + MemoryIdToBig_alpha23, + MemoryIdToBig_alpha24, + MemoryIdToBig_alpha25, + MemoryIdToBig_alpha26, + MemoryIdToBig_alpha27, + MemoryIdToBig_alpha28, + RangeCheck_19_z, + RangeCheck_19_alpha0, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/mul_opcode/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/mul_opcode/constraints.cairo new file mode 100644 index 000000000..683766de7 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/mul_opcode/constraints.cairo @@ -0,0 +1,8812 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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 RangeCheck_19_alpha0: QM31, + pub RangeCheck_19_z: QM31, + pub VerifyInstruction_alpha0: QM31, + pub VerifyInstruction_alpha1: QM31, + pub VerifyInstruction_alpha10: QM31, + pub VerifyInstruction_alpha15: QM31, + pub VerifyInstruction_alpha18: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha4: QM31, + pub VerifyInstruction_alpha5: QM31, + pub VerifyInstruction_alpha7: QM31, + pub VerifyInstruction_alpha8: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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, + RangeCheck_19_alpha0, + RangeCheck_19_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha10, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_13_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_14_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_15_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_16_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_17_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_18_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_19_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_20_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_21_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_22_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_23_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_24_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_25_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_26_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_27_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_28_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_29_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_30_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_31_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_32_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_33_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_34_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_35_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_36_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_37_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_38_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_39_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_40_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_41_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_42_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_43_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_44_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_45_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_46_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_47_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_48_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_49_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_50_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_51_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_52_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_53_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_54_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_55_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_56_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_57_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_58_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_59_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_60_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_61_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_62_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_63_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_64_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_65_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_66_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_67_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_68_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_69_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_70_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_71_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_72_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_73_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_74_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_75_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_76_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_77_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_78_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_79_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_80_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_81_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_82_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_83_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_84_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_85_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_86_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_87_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_88_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_89_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_90_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_91_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_92_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_93_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_94_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_95_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_96_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_97_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_98_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_99_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_100_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_101_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_102_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_103_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_104_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_105_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_106_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_107_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_108_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_109_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_110_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_111_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_112_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_113_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_114_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_115_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_116_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_117_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_118_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_119_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_120_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_121_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_122_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_123_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_124_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_125_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_126_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_127_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_128_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_129_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_130_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_131_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_132_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_133_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_134_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_135_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_136_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_137_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_138_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_139_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_140_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_141_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_142_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_143_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_144_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_145_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_146_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_147_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_148_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_149_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_150_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_151_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_152_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_153_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_154_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_155_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_156_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_157_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_158_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_159_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_160_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_161_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_162_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_163_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_164_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_165_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_166_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_167_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_168_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_169_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_170_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_171_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_172_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_173_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_174_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_175_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_176_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_177_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_178_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_179_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_180_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_181_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_182_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_183_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_184_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_185_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_186_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_187_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_188_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_189_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_190_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_191_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_192_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_193_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_194_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_195_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_196_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_197_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_198_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_199_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_200_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_201_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_202_offset_neg_1, trace_2_column_202_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_203_offset_neg_1, trace_2_column_203_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_204_offset_neg_1, trace_2_column_204_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_205_offset_neg_1, trace_2_column_205_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + 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, + RangeCheck_19_alpha0, + RangeCheck_19_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha10, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_108_offset_0, + trace_1_column_109_offset_0, + trace_1_column_10_offset_0, + trace_1_column_110_offset_0, + trace_1_column_111_offset_0, + trace_1_column_112_offset_0, + trace_1_column_113_offset_0, + trace_1_column_114_offset_0, + trace_1_column_115_offset_0, + trace_1_column_116_offset_0, + trace_1_column_117_offset_0, + trace_1_column_118_offset_0, + trace_1_column_119_offset_0, + trace_1_column_11_offset_0, + trace_1_column_120_offset_0, + trace_1_column_121_offset_0, + trace_1_column_122_offset_0, + trace_1_column_123_offset_0, + trace_1_column_124_offset_0, + trace_1_column_125_offset_0, + trace_1_column_126_offset_0, + trace_1_column_127_offset_0, + trace_1_column_128_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_1_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_2_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_34_offset_0, + trace_1_column_35_offset_0, + trace_1_column_36_offset_0, + trace_1_column_37_offset_0, + trace_1_column_38_offset_0, + trace_1_column_39_offset_0, + trace_1_column_3_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_4_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_5_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_6_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_7_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_8_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + let intermediate5 = *intermediates.pop_front().unwrap(); + let intermediate6 = *intermediates.pop_front().unwrap(); + let intermediate7 = *intermediates.pop_front().unwrap(); + let intermediate8 = *intermediates.pop_front().unwrap(); + let intermediate9 = *intermediates.pop_front().unwrap(); + let intermediate10 = *intermediates.pop_front().unwrap(); + let intermediate11 = *intermediates.pop_front().unwrap(); + let intermediate12 = *intermediates.pop_front().unwrap(); + let intermediate13 = *intermediates.pop_front().unwrap(); + let intermediate14 = *intermediates.pop_front().unwrap(); + let intermediate15 = *intermediates.pop_front().unwrap(); + let intermediate16 = *intermediates.pop_front().unwrap(); + let intermediate17 = *intermediates.pop_front().unwrap(); + let intermediate18 = *intermediates.pop_front().unwrap(); + let intermediate19 = *intermediates.pop_front().unwrap(); + let intermediate20 = *intermediates.pop_front().unwrap(); + let intermediate21 = *intermediates.pop_front().unwrap(); + let intermediate22 = *intermediates.pop_front().unwrap(); + let intermediate23 = *intermediates.pop_front().unwrap(); + let intermediate24 = *intermediates.pop_front().unwrap(); + let intermediate25 = *intermediates.pop_front().unwrap(); + let intermediate26 = *intermediates.pop_front().unwrap(); + let intermediate27 = *intermediates.pop_front().unwrap(); + let intermediate28 = *intermediates.pop_front().unwrap(); + let intermediate29 = *intermediates.pop_front().unwrap(); + let intermediate30 = *intermediates.pop_front().unwrap(); + let intermediate31 = *intermediates.pop_front().unwrap(); + let intermediate32 = *intermediates.pop_front().unwrap(); + let intermediate33 = *intermediates.pop_front().unwrap(); + let intermediate34 = *intermediates.pop_front().unwrap(); + let intermediate35 = *intermediates.pop_front().unwrap(); + let intermediate36 = *intermediates.pop_front().unwrap(); + let intermediate37 = *intermediates.pop_front().unwrap(); + let intermediate38 = *intermediates.pop_front().unwrap(); + let intermediate39 = *intermediates.pop_front().unwrap(); + let intermediate40 = *intermediates.pop_front().unwrap(); + let intermediate41 = *intermediates.pop_front().unwrap(); + let intermediate42 = *intermediates.pop_front().unwrap(); + let intermediate43 = *intermediates.pop_front().unwrap(); + let intermediate44 = *intermediates.pop_front().unwrap(); + let intermediate45 = *intermediates.pop_front().unwrap(); + let intermediate46 = *intermediates.pop_front().unwrap(); + let intermediate47 = *intermediates.pop_front().unwrap(); + let intermediate48 = *intermediates.pop_front().unwrap(); + let intermediate49 = *intermediates.pop_front().unwrap(); + let intermediate50 = *intermediates.pop_front().unwrap(); + let intermediate51 = *intermediates.pop_front().unwrap(); + let intermediate52 = *intermediates.pop_front().unwrap(); + let intermediate53 = *intermediates.pop_front().unwrap(); + let intermediate54 = *intermediates.pop_front().unwrap(); + let intermediate55 = *intermediates.pop_front().unwrap(); + let intermediate56 = *intermediates.pop_front().unwrap(); + let intermediate57 = *intermediates.pop_front().unwrap(); + let intermediate58 = *intermediates.pop_front().unwrap(); + let intermediate59 = *intermediates.pop_front().unwrap(); + let intermediate60 = *intermediates.pop_front().unwrap(); + let intermediate61 = *intermediates.pop_front().unwrap(); + let intermediate62 = *intermediates.pop_front().unwrap(); + let intermediate63 = *intermediates.pop_front().unwrap(); + let intermediate64 = *intermediates.pop_front().unwrap(); + let intermediate65 = *intermediates.pop_front().unwrap(); + let intermediate66 = *intermediates.pop_front().unwrap(); + let intermediate67 = *intermediates.pop_front().unwrap(); + let intermediate68 = *intermediates.pop_front().unwrap(); + let intermediate69 = *intermediates.pop_front().unwrap(); + let intermediate70 = *intermediates.pop_front().unwrap(); + let intermediate71 = *intermediates.pop_front().unwrap(); + let intermediate72 = *intermediates.pop_front().unwrap(); + let intermediate73 = *intermediates.pop_front().unwrap(); + let intermediate74 = *intermediates.pop_front().unwrap(); + let intermediate75 = *intermediates.pop_front().unwrap(); + let intermediate76 = *intermediates.pop_front().unwrap(); + let intermediate77 = *intermediates.pop_front().unwrap(); + let intermediate78 = *intermediates.pop_front().unwrap(); + let intermediate79 = *intermediates.pop_front().unwrap(); + let intermediate80 = *intermediates.pop_front().unwrap(); + let intermediate81 = *intermediates.pop_front().unwrap(); + let intermediate82 = *intermediates.pop_front().unwrap(); + let intermediate83 = *intermediates.pop_front().unwrap(); + let intermediate84 = *intermediates.pop_front().unwrap(); + let intermediate85 = *intermediates.pop_front().unwrap(); + let intermediate86 = *intermediates.pop_front().unwrap(); + let intermediate87 = *intermediates.pop_front().unwrap(); + let intermediate88 = *intermediates.pop_front().unwrap(); + let intermediate89 = *intermediates.pop_front().unwrap(); + let intermediate90 = *intermediates.pop_front().unwrap(); + let intermediate91 = *intermediates.pop_front().unwrap(); + let intermediate92 = *intermediates.pop_front().unwrap(); + let intermediate93 = *intermediates.pop_front().unwrap(); + let intermediate94 = *intermediates.pop_front().unwrap(); + let intermediate95 = *intermediates.pop_front().unwrap(); + let intermediate96 = *intermediates.pop_front().unwrap(); + let intermediate97 = *intermediates.pop_front().unwrap(); + let intermediate98 = *intermediates.pop_front().unwrap(); + let intermediate99 = *intermediates.pop_front().unwrap(); + let intermediate100 = *intermediates.pop_front().unwrap(); + let intermediate101 = *intermediates.pop_front().unwrap(); + let intermediate102 = *intermediates.pop_front().unwrap(); + let intermediate103 = *intermediates.pop_front().unwrap(); + let intermediate104 = *intermediates.pop_front().unwrap(); + let intermediate105 = *intermediates.pop_front().unwrap(); + let intermediate106 = *intermediates.pop_front().unwrap(); + let intermediate107 = *intermediates.pop_front().unwrap(); + let intermediate108 = *intermediates.pop_front().unwrap(); + let intermediate109 = *intermediates.pop_front().unwrap(); + let intermediate110 = *intermediates.pop_front().unwrap(); + let intermediate111 = *intermediates.pop_front().unwrap(); + let intermediate112 = *intermediates.pop_front().unwrap(); + let intermediate113 = *intermediates.pop_front().unwrap(); + let intermediate114 = *intermediates.pop_front().unwrap(); + let intermediate115 = *intermediates.pop_front().unwrap(); + let intermediate116 = *intermediates.pop_front().unwrap(); + let intermediate117 = *intermediates.pop_front().unwrap(); + let intermediate118 = *intermediates.pop_front().unwrap(); + let intermediate119 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_129_offset_0) * (trace_1_column_129_offset_0) + - (trace_1_column_129_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = (trace_1_column_11_offset_0 + - ((trace_1_column_6_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_6_offset_0)) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = (trace_1_column_12_offset_0 + - ((trace_1_column_7_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_7_offset_0)) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = (trace_1_column_8_offset_0 + + trace_1_column_9_offset_0 + - (m31(1).into())) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = (trace_1_column_13_offset_0 + - ((trace_1_column_8_offset_0) * (trace_1_column_2_offset_0) + + (trace_1_column_9_offset_0) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((trace_1_column_102_offset_0) * (m31(512).into()) + - (intermediate62 - (trace_1_column_101_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((trace_1_column_103_offset_0) * (m31(512).into()) + - (intermediate63 + trace_1_column_102_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 7 + let constraint_quotient = ((trace_1_column_104_offset_0) * (m31(512).into()) + - (intermediate64 + trace_1_column_103_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 8 + let constraint_quotient = ((trace_1_column_105_offset_0) * (m31(512).into()) + - (intermediate65 + trace_1_column_104_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 9 + let constraint_quotient = ((trace_1_column_106_offset_0) * (m31(512).into()) + - (intermediate66 + trace_1_column_105_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 10 + let constraint_quotient = ((trace_1_column_107_offset_0) * (m31(512).into()) + - (intermediate67 + trace_1_column_106_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 11 + let constraint_quotient = ((trace_1_column_108_offset_0) * (m31(512).into()) + - (intermediate68 + trace_1_column_107_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 12 + let constraint_quotient = ((trace_1_column_109_offset_0) * (m31(512).into()) + - (intermediate69 + trace_1_column_108_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 13 + let constraint_quotient = ((trace_1_column_110_offset_0) * (m31(512).into()) + - (intermediate70 + trace_1_column_109_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 14 + let constraint_quotient = ((trace_1_column_111_offset_0) * (m31(512).into()) + - (intermediate71 + trace_1_column_110_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 15 + let constraint_quotient = ((trace_1_column_112_offset_0) * (m31(512).into()) + - (intermediate72 + trace_1_column_111_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 16 + let constraint_quotient = ((trace_1_column_113_offset_0) * (m31(512).into()) + - (intermediate73 + trace_1_column_112_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 17 + let constraint_quotient = ((trace_1_column_114_offset_0) * (m31(512).into()) + - (intermediate74 + trace_1_column_113_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 18 + let constraint_quotient = ((trace_1_column_115_offset_0) * (m31(512).into()) + - (intermediate75 + trace_1_column_114_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 19 + let constraint_quotient = ((trace_1_column_116_offset_0) * (m31(512).into()) + - (intermediate76 + trace_1_column_115_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 20 + let constraint_quotient = ((trace_1_column_117_offset_0) * (m31(512).into()) + - (intermediate77 + trace_1_column_116_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 21 + let constraint_quotient = ((trace_1_column_118_offset_0) * (m31(512).into()) + - (intermediate78 + trace_1_column_117_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 22 + let constraint_quotient = ((trace_1_column_119_offset_0) * (m31(512).into()) + - (intermediate79 + trace_1_column_118_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 23 + let constraint_quotient = ((trace_1_column_120_offset_0) * (m31(512).into()) + - (intermediate80 + trace_1_column_119_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 24 + let constraint_quotient = ((trace_1_column_121_offset_0) * (m31(512).into()) + - (intermediate81 + trace_1_column_120_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 25 + let constraint_quotient = ((trace_1_column_122_offset_0) * (m31(512).into()) + - (intermediate82 + trace_1_column_121_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 26 + let constraint_quotient = ((trace_1_column_123_offset_0) * (m31(512).into()) + - (intermediate83 + - ((m31(136).into()) * (trace_1_column_101_offset_0)) + + trace_1_column_122_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 27 + let constraint_quotient = ((trace_1_column_124_offset_0) * (m31(512).into()) + - (intermediate84 + trace_1_column_123_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 28 + let constraint_quotient = ((trace_1_column_125_offset_0) * (m31(512).into()) + - (intermediate85 + trace_1_column_124_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 29 + let constraint_quotient = ((trace_1_column_126_offset_0) * (m31(512).into()) + - (intermediate86 + trace_1_column_125_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 30 + let constraint_quotient = ((trace_1_column_127_offset_0) * (m31(512).into()) + - (intermediate87 + trace_1_column_126_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 31 + let constraint_quotient = ((trace_1_column_128_offset_0) * (m31(512).into()) + - (intermediate88 + trace_1_column_127_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 32 + let constraint_quotient = (intermediate89 + - ((m31(256).into()) * (trace_1_column_101_offset_0)) + + trace_1_column_128_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 33 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_130_offset_0, trace_2_column_131_offset_0, trace_2_column_132_offset_0, + trace_2_column_133_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 34 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_134_offset_0, trace_2_column_135_offset_0, trace_2_column_136_offset_0, + trace_2_column_137_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_130_offset_0, trace_2_column_131_offset_0, + trace_2_column_132_offset_0, trace_2_column_133_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + intermediate2)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 35 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_138_offset_0, trace_2_column_139_offset_0, trace_2_column_140_offset_0, + trace_2_column_141_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_134_offset_0, trace_2_column_135_offset_0, + trace_2_column_136_offset_0, trace_2_column_137_offset_0, + ], + ))) + * ((intermediate4) * (intermediate5)) + - (intermediate5 + intermediate4)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 36 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_142_offset_0, trace_2_column_143_offset_0, trace_2_column_144_offset_0, + trace_2_column_145_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_138_offset_0, trace_2_column_139_offset_0, + trace_2_column_140_offset_0, trace_2_column_141_offset_0, + ], + ))) + * ((intermediate6) * (intermediate90)) + - (intermediate90 + intermediate6)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 37 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_146_offset_0, trace_2_column_147_offset_0, trace_2_column_148_offset_0, + trace_2_column_149_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_142_offset_0, trace_2_column_143_offset_0, + trace_2_column_144_offset_0, trace_2_column_145_offset_0, + ], + ))) + * ((intermediate91) * (intermediate92)) + - (intermediate92 + intermediate91)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 38 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_150_offset_0, trace_2_column_151_offset_0, trace_2_column_152_offset_0, + trace_2_column_153_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_146_offset_0, trace_2_column_147_offset_0, + trace_2_column_148_offset_0, trace_2_column_149_offset_0, + ], + ))) + * ((intermediate93) * (intermediate94)) + - (intermediate94 + intermediate93)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 39 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_154_offset_0, trace_2_column_155_offset_0, trace_2_column_156_offset_0, + trace_2_column_157_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_150_offset_0, trace_2_column_151_offset_0, + trace_2_column_152_offset_0, trace_2_column_153_offset_0, + ], + ))) + * ((intermediate95) * (intermediate96)) + - (intermediate96 + intermediate95)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 40 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_158_offset_0, trace_2_column_159_offset_0, trace_2_column_160_offset_0, + trace_2_column_161_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_154_offset_0, trace_2_column_155_offset_0, + trace_2_column_156_offset_0, trace_2_column_157_offset_0, + ], + ))) + * ((intermediate97) * (intermediate98)) + - (intermediate98 + intermediate97)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 41 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_162_offset_0, trace_2_column_163_offset_0, trace_2_column_164_offset_0, + trace_2_column_165_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_158_offset_0, trace_2_column_159_offset_0, + trace_2_column_160_offset_0, trace_2_column_161_offset_0, + ], + ))) + * ((intermediate99) * (intermediate100)) + - (intermediate100 + intermediate99)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 42 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_166_offset_0, trace_2_column_167_offset_0, trace_2_column_168_offset_0, + trace_2_column_169_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_162_offset_0, trace_2_column_163_offset_0, + trace_2_column_164_offset_0, trace_2_column_165_offset_0, + ], + ))) + * ((intermediate101) * (intermediate102)) + - (intermediate102 + intermediate101)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 43 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_170_offset_0, trace_2_column_171_offset_0, trace_2_column_172_offset_0, + trace_2_column_173_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_166_offset_0, trace_2_column_167_offset_0, + trace_2_column_168_offset_0, trace_2_column_169_offset_0, + ], + ))) + * ((intermediate103) * (intermediate104)) + - (intermediate104 + intermediate103)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 44 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_174_offset_0, trace_2_column_175_offset_0, trace_2_column_176_offset_0, + trace_2_column_177_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_170_offset_0, trace_2_column_171_offset_0, + trace_2_column_172_offset_0, trace_2_column_173_offset_0, + ], + ))) + * ((intermediate105) * (intermediate106)) + - (intermediate106 + intermediate105)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 45 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_178_offset_0, trace_2_column_179_offset_0, trace_2_column_180_offset_0, + trace_2_column_181_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_174_offset_0, trace_2_column_175_offset_0, + trace_2_column_176_offset_0, trace_2_column_177_offset_0, + ], + ))) + * ((intermediate107) * (intermediate108)) + - (intermediate108 + intermediate107)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 46 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_182_offset_0, trace_2_column_183_offset_0, trace_2_column_184_offset_0, + trace_2_column_185_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_178_offset_0, trace_2_column_179_offset_0, + trace_2_column_180_offset_0, trace_2_column_181_offset_0, + ], + ))) + * ((intermediate109) * (intermediate110)) + - (intermediate110 + intermediate109)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 47 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_186_offset_0, trace_2_column_187_offset_0, trace_2_column_188_offset_0, + trace_2_column_189_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_182_offset_0, trace_2_column_183_offset_0, + trace_2_column_184_offset_0, trace_2_column_185_offset_0, + ], + ))) + * ((intermediate111) * (intermediate112)) + - (intermediate112 + intermediate111)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 48 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_190_offset_0, trace_2_column_191_offset_0, trace_2_column_192_offset_0, + trace_2_column_193_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_186_offset_0, trace_2_column_187_offset_0, + trace_2_column_188_offset_0, trace_2_column_189_offset_0, + ], + ))) + * ((intermediate113) * (intermediate114)) + - (intermediate114 + intermediate113)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 49 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_194_offset_0, trace_2_column_195_offset_0, trace_2_column_196_offset_0, + trace_2_column_197_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_190_offset_0, trace_2_column_191_offset_0, + trace_2_column_192_offset_0, trace_2_column_193_offset_0, + ], + ))) + * ((intermediate115) * (intermediate116)) + - (intermediate116 + intermediate115)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 50 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_198_offset_0, trace_2_column_199_offset_0, trace_2_column_200_offset_0, + trace_2_column_201_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_194_offset_0, trace_2_column_195_offset_0, + trace_2_column_196_offset_0, trace_2_column_197_offset_0, + ], + ))) + * ((intermediate117) * (intermediate118)) + - (intermediate118 + (intermediate117) * (trace_1_column_129_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 51 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_202_offset_0, trace_2_column_203_offset_0, trace_2_column_204_offset_0, + trace_2_column_205_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_202_offset_neg_1, trace_2_column_203_offset_neg_1, + trace_2_column_204_offset_neg_1, trace_2_column_205_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_198_offset_0, trace_2_column_199_offset_0, + trace_2_column_200_offset_0, trace_2_column_201_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate119) + + trace_1_column_129_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + RangeCheck_19_alpha0: QM31, + RangeCheck_19_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha10: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_108_offset_0: QM31, + trace_1_column_109_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_110_offset_0: QM31, + trace_1_column_111_offset_0: QM31, + trace_1_column_112_offset_0: QM31, + trace_1_column_113_offset_0: QM31, + trace_1_column_114_offset_0: QM31, + trace_1_column_115_offset_0: QM31, + trace_1_column_116_offset_0: QM31, + trace_1_column_117_offset_0: QM31, + trace_1_column_118_offset_0: QM31, + trace_1_column_119_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_120_offset_0: QM31, + trace_1_column_121_offset_0: QM31, + trace_1_column_122_offset_0: QM31, + trace_1_column_123_offset_0: QM31, + trace_1_column_124_offset_0: QM31, + trace_1_column_125_offset_0: QM31, + trace_1_column_126_offset_0: QM31, + trace_1_column_127_offset_0: QM31, + trace_1_column_128_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_34_offset_0: QM31, + trace_1_column_35_offset_0: QM31, + trace_1_column_36_offset_0: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_38_offset_0: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate7 = intermediate7( + trace_1_column_15_offset_0, trace_1_column_44_offset_0, trace_1_column_73_offset_0, + ); + + let intermediate8 = intermediate8( + trace_1_column_16_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + ); + + let intermediate9 = intermediate9( + trace_1_column_17_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + ); + + let intermediate10 = intermediate10( + trace_1_column_18_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + ); + + let intermediate11 = intermediate11( + trace_1_column_19_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + ); + + let intermediate12 = intermediate12( + trace_1_column_20_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + ); + + let intermediate13 = intermediate13( + trace_1_column_21_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + ); + + let intermediate14 = intermediate14( + trace_1_column_22_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + ); + + let intermediate15 = intermediate15( + trace_1_column_23_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + ); + + let intermediate16 = intermediate16( + trace_1_column_24_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + ); + + let intermediate17 = intermediate17( + trace_1_column_25_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + ); + + let intermediate18 = intermediate18( + trace_1_column_26_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + ); + + let intermediate19 = intermediate19( + trace_1_column_27_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + ); + + let intermediate20 = intermediate20( + trace_1_column_28_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + ); + + let intermediate21 = intermediate21( + trace_1_column_29_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + ); + + let intermediate22 = intermediate22( + trace_1_column_30_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + ); + + let intermediate23 = intermediate23( + trace_1_column_31_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + ); + + let intermediate24 = intermediate24( + trace_1_column_32_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + ); + + let intermediate25 = intermediate25( + trace_1_column_33_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + ); + + let intermediate26 = intermediate26( + trace_1_column_34_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + ); + + let intermediate27 = intermediate27( + trace_1_column_35_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + ); + + let intermediate28 = intermediate28( + trace_1_column_36_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + ); + + let intermediate29 = intermediate29( + trace_1_column_37_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + ); + + let intermediate30 = intermediate30( + trace_1_column_38_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate31 = intermediate31( + trace_1_column_39_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + ); + + let intermediate32 = intermediate32( + trace_1_column_40_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + ); + + let intermediate33 = intermediate33( + trace_1_column_41_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate34 = intermediate34( + trace_1_column_100_offset_0, + trace_1_column_42_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate35 = intermediate35( + trace_1_column_100_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate36 = intermediate36( + trace_1_column_100_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate37 = intermediate37( + trace_1_column_100_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate38 = intermediate38( + trace_1_column_100_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate39 = intermediate39( + trace_1_column_100_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate40 = intermediate40( + trace_1_column_100_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate41 = intermediate41( + trace_1_column_100_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate42 = intermediate42( + trace_1_column_100_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate43 = intermediate43( + trace_1_column_100_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate44 = intermediate44( + trace_1_column_100_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate45 = intermediate45( + trace_1_column_100_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate46 = intermediate46( + trace_1_column_100_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate47 = intermediate47( + trace_1_column_100_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate48 = intermediate48( + trace_1_column_100_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate49 = intermediate49( + trace_1_column_100_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate50 = intermediate50( + trace_1_column_100_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate51 = intermediate51( + trace_1_column_100_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate52 = intermediate52( + trace_1_column_100_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate53 = intermediate53( + trace_1_column_100_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate54 = intermediate54( + trace_1_column_100_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate55 = intermediate55( + trace_1_column_100_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate56 = intermediate56( + trace_1_column_100_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate57 = intermediate57( + trace_1_column_100_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate58 = intermediate58( + trace_1_column_100_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate59 = intermediate59( + trace_1_column_100_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate60 = intermediate60( + trace_1_column_100_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate61 = intermediate61(trace_1_column_100_offset_0, trace_1_column_71_offset_0); + + let intermediate62 = intermediate62(intermediate28, intermediate56, intermediate7); + + let intermediate63 = intermediate63( + intermediate29, intermediate57, intermediate7, intermediate8, + ); + + let intermediate64 = intermediate64( + intermediate30, intermediate58, intermediate8, intermediate9, + ); + + let intermediate65 = intermediate65( + intermediate10, intermediate31, intermediate59, intermediate9, + ); + + let intermediate66 = intermediate66( + intermediate10, intermediate11, intermediate32, intermediate60, + ); + + let intermediate67 = intermediate67( + intermediate11, intermediate12, intermediate33, intermediate61, + ); + + let intermediate68 = intermediate68(intermediate12, intermediate13, intermediate34); + + let intermediate69 = intermediate69( + intermediate13, intermediate14, intermediate35, intermediate7, + ); + + let intermediate70 = intermediate70( + intermediate14, intermediate15, intermediate36, intermediate8, + ); + + let intermediate71 = intermediate71( + intermediate15, intermediate16, intermediate37, intermediate9, + ); + + let intermediate72 = intermediate72( + intermediate10, intermediate16, intermediate17, intermediate38, + ); + + let intermediate73 = intermediate73( + intermediate11, intermediate17, intermediate18, intermediate39, + ); + + let intermediate74 = intermediate74( + intermediate12, intermediate18, intermediate19, intermediate40, + ); + + let intermediate75 = intermediate75( + intermediate13, intermediate19, intermediate20, intermediate41, + ); + + let intermediate76 = intermediate76( + intermediate14, intermediate20, intermediate21, intermediate42, + ); + + let intermediate77 = intermediate77( + intermediate15, intermediate21, intermediate22, intermediate43, + ); + + let intermediate78 = intermediate78( + intermediate16, intermediate22, intermediate23, intermediate44, + ); + + let intermediate79 = intermediate79( + intermediate17, intermediate23, intermediate24, intermediate45, + ); + + let intermediate80 = intermediate80( + intermediate18, intermediate24, intermediate25, intermediate46, + ); + + let intermediate81 = intermediate81( + intermediate19, intermediate25, intermediate26, intermediate47, + ); + + let intermediate82 = intermediate82( + intermediate20, intermediate26, intermediate27, intermediate48, + ); + + let intermediate83 = intermediate83( + intermediate21, intermediate27, intermediate49, intermediate56, + ); + + let intermediate84 = intermediate84( + intermediate22, intermediate50, intermediate56, intermediate57, + ); + + let intermediate85 = intermediate85( + intermediate23, intermediate51, intermediate57, intermediate58, + ); + + let intermediate86 = intermediate86( + intermediate24, intermediate52, intermediate58, intermediate59, + ); + + let intermediate87 = intermediate87( + intermediate25, intermediate53, intermediate59, intermediate60, + ); + + let intermediate88 = intermediate88( + intermediate26, intermediate54, intermediate60, intermediate61, + ); + + let intermediate89 = intermediate89(intermediate27, intermediate55, intermediate61); + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha10, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha7, + VerifyInstruction_alpha8, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + trace_1_column_8_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_11_offset_0, + trace_1_column_14_offset_0, + trace_1_column_3_offset_0, + ); + + let intermediate2 = intermediate2( + 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, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_34_offset_0, + trace_1_column_35_offset_0, + trace_1_column_36_offset_0, + trace_1_column_37_offset_0, + trace_1_column_38_offset_0, + trace_1_column_39_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + ); + + let intermediate3 = intermediate3( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_12_offset_0, + trace_1_column_43_offset_0, + trace_1_column_4_offset_0, + ); + + let intermediate4 = intermediate4( + 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, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + ); + + let intermediate5 = intermediate5( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_13_offset_0, + trace_1_column_5_offset_0, + trace_1_column_72_offset_0, + ); + + let intermediate6 = intermediate6( + 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, + trace_1_column_100_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + ); + + let intermediate90 = intermediate90( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_101_offset_0, + ); + + let intermediate91 = intermediate91( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_102_offset_0, + ); + + let intermediate92 = intermediate92( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_103_offset_0, + ); + + let intermediate93 = intermediate93( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_104_offset_0, + ); + + let intermediate94 = intermediate94( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_105_offset_0, + ); + + let intermediate95 = intermediate95( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_106_offset_0, + ); + + let intermediate96 = intermediate96( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_107_offset_0, + ); + + let intermediate97 = intermediate97( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_108_offset_0, + ); + + let intermediate98 = intermediate98( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_109_offset_0, + ); + + let intermediate99 = intermediate99( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_110_offset_0, + ); + + let intermediate100 = intermediate100( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_111_offset_0, + ); + + let intermediate101 = intermediate101( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_112_offset_0, + ); + + let intermediate102 = intermediate102( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_113_offset_0, + ); + + let intermediate103 = intermediate103( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_114_offset_0, + ); + + let intermediate104 = intermediate104( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_115_offset_0, + ); + + let intermediate105 = intermediate105( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_116_offset_0, + ); + + let intermediate106 = intermediate106( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_117_offset_0, + ); + + let intermediate107 = intermediate107( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_118_offset_0, + ); + + let intermediate108 = intermediate108( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_119_offset_0, + ); + + let intermediate109 = intermediate109( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_120_offset_0, + ); + + let intermediate110 = intermediate110( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_121_offset_0, + ); + + let intermediate111 = intermediate111( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_122_offset_0, + ); + + let intermediate112 = intermediate112( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_123_offset_0, + ); + + let intermediate113 = intermediate113( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_124_offset_0, + ); + + let intermediate114 = intermediate114( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_125_offset_0, + ); + + let intermediate115 = intermediate115( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_126_offset_0, + ); + + let intermediate116 = intermediate116( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_127_offset_0, + ); + + let intermediate117 = intermediate117( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_128_offset_0, + ); + + let intermediate118 = intermediate118( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate119 = intermediate119( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_10_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + array![ + intermediate0, + intermediate1, + intermediate2, + intermediate3, + intermediate4, + intermediate5, + intermediate6, + intermediate7, + intermediate8, + intermediate9, + intermediate10, + intermediate11, + intermediate12, + intermediate13, + intermediate14, + intermediate15, + intermediate16, + intermediate17, + intermediate18, + intermediate19, + intermediate20, + intermediate21, + intermediate22, + intermediate23, + intermediate24, + intermediate25, + intermediate26, + intermediate27, + intermediate28, + intermediate29, + intermediate30, + intermediate31, + intermediate32, + intermediate33, + intermediate34, + intermediate35, + intermediate36, + intermediate37, + intermediate38, + intermediate39, + intermediate40, + intermediate41, + intermediate42, + intermediate43, + intermediate44, + intermediate45, + intermediate46, + intermediate47, + intermediate48, + intermediate49, + intermediate50, + intermediate51, + intermediate52, + intermediate53, + intermediate54, + intermediate55, + intermediate56, + intermediate57, + intermediate58, + intermediate59, + intermediate60, + intermediate61, + intermediate62, + intermediate63, + intermediate64, + intermediate65, + intermediate66, + intermediate67, + intermediate68, + intermediate69, + intermediate70, + intermediate71, + intermediate72, + intermediate73, + intermediate74, + intermediate75, + intermediate76, + intermediate77, + intermediate78, + intermediate79, + intermediate80, + intermediate81, + intermediate82, + intermediate83, + intermediate84, + intermediate85, + intermediate86, + intermediate87, + intermediate88, + intermediate89, + intermediate90, + intermediate91, + intermediate92, + intermediate93, + intermediate94, + intermediate95, + intermediate96, + intermediate97, + intermediate98, + intermediate99, + intermediate100, + intermediate101, + intermediate102, + intermediate103, + intermediate104, + intermediate105, + intermediate106, + intermediate107, + intermediate108, + intermediate109, + intermediate110, + intermediate111, + intermediate112, + intermediate113, + intermediate114, + intermediate115, + intermediate116, + intermediate117, + intermediate118, + intermediate119, + ] +} + +pub fn intermediate7( + trace_1_column_15_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_73_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_73_offset_0) - (trace_1_column_15_offset_0) +} + +pub fn intermediate8( + trace_1_column_16_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_74_offset_0) + - (trace_1_column_16_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate9( + trace_1_column_17_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_75_offset_0) + - (trace_1_column_17_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate10( + trace_1_column_18_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_76_offset_0) + - (trace_1_column_18_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate11( + trace_1_column_19_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_77_offset_0) + - (trace_1_column_19_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate12( + trace_1_column_20_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_78_offset_0) + - (trace_1_column_20_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate13( + trace_1_column_21_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_79_offset_0) + - (trace_1_column_21_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate14( + trace_1_column_22_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_80_offset_0) + - (trace_1_column_22_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate15( + trace_1_column_23_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_81_offset_0) + - (trace_1_column_23_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate16( + trace_1_column_24_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_82_offset_0) + - (trace_1_column_24_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate17( + trace_1_column_25_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_83_offset_0) + - (trace_1_column_25_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate18( + trace_1_column_26_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_84_offset_0) + - (trace_1_column_26_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate19( + trace_1_column_27_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_85_offset_0) + - (trace_1_column_27_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate20( + trace_1_column_28_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_86_offset_0) + - (trace_1_column_28_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate21( + trace_1_column_29_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_87_offset_0) + - (trace_1_column_29_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate22( + trace_1_column_30_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_88_offset_0) + - (trace_1_column_30_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate23( + trace_1_column_31_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_89_offset_0) + - (trace_1_column_31_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate24( + trace_1_column_32_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_90_offset_0) + - (trace_1_column_32_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate25( + trace_1_column_33_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_91_offset_0) + - (trace_1_column_33_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate26( + trace_1_column_34_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_92_offset_0) + - (trace_1_column_34_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate27( + trace_1_column_35_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_93_offset_0) + - (trace_1_column_35_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate28( + trace_1_column_36_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_94_offset_0) + - (trace_1_column_36_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate29( + trace_1_column_37_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_95_offset_0) + - (trace_1_column_37_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate30( + trace_1_column_38_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_96_offset_0) + - (trace_1_column_38_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate31( + trace_1_column_39_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_97_offset_0) + - (trace_1_column_39_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate32( + trace_1_column_40_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_98_offset_0) + - (trace_1_column_40_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate33( + trace_1_column_41_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_99_offset_0) + - (trace_1_column_41_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate34( + trace_1_column_100_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_100_offset_0) + - (trace_1_column_42_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate35( + trace_1_column_100_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_45_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_74_offset_0) +} + +pub fn intermediate36( + trace_1_column_100_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_46_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_75_offset_0) +} + +pub fn intermediate37( + trace_1_column_100_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_47_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_76_offset_0) +} + +pub fn intermediate38( + trace_1_column_100_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_48_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_77_offset_0) +} + +pub fn intermediate39( + trace_1_column_100_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_49_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_78_offset_0) +} + +pub fn intermediate40( + trace_1_column_100_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_50_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_79_offset_0) +} + +pub fn intermediate41( + trace_1_column_100_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate42( + trace_1_column_100_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_52_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_81_offset_0) +} + +pub fn intermediate43( + trace_1_column_100_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_53_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_82_offset_0) +} + +pub fn intermediate44( + trace_1_column_100_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_54_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_83_offset_0) +} + +pub fn intermediate45( + trace_1_column_100_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_55_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_84_offset_0) +} + +pub fn intermediate46( + trace_1_column_100_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_56_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_85_offset_0) +} + +pub fn intermediate47( + trace_1_column_100_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_57_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_86_offset_0) +} + +pub fn intermediate48( + trace_1_column_100_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_58_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_87_offset_0) +} + +pub fn intermediate49( + trace_1_column_100_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_59_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_88_offset_0) +} + +pub fn intermediate50( + trace_1_column_100_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_60_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_89_offset_0) +} + +pub fn intermediate51( + trace_1_column_100_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_61_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_90_offset_0) +} + +pub fn intermediate52( + trace_1_column_100_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_62_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_91_offset_0) +} + +pub fn intermediate53( + trace_1_column_100_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_63_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_92_offset_0) +} + +pub fn intermediate54( + trace_1_column_100_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_64_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_93_offset_0) +} + +pub fn intermediate55( + trace_1_column_100_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_65_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_94_offset_0) +} + +pub fn intermediate56( + trace_1_column_100_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_66_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_95_offset_0) +} + +pub fn intermediate57( + trace_1_column_100_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_67_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_68_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_97_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_96_offset_0) +} + +pub fn intermediate58( + trace_1_column_100_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_68_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_69_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_98_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_97_offset_0) +} + +pub fn intermediate59( + trace_1_column_100_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_69_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_70_offset_0) * (trace_1_column_99_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_98_offset_0) +} + +pub fn intermediate60( + trace_1_column_100_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (trace_1_column_70_offset_0) * (trace_1_column_100_offset_0) + + (trace_1_column_71_offset_0) * (trace_1_column_99_offset_0) +} + +pub fn intermediate61(trace_1_column_100_offset_0: QM31, trace_1_column_71_offset_0: QM31) -> QM31 { + (trace_1_column_71_offset_0) * (trace_1_column_100_offset_0) +} + +pub fn intermediate62(intermediate28: QM31, intermediate56: QM31, intermediate7: QM31) -> QM31 { + (m31(32).into()) * (intermediate7) + - ((m31(4).into()) * (intermediate28)) + + (m31(8).into()) * (intermediate56) +} + +pub fn intermediate63( + intermediate29: QM31, intermediate57: QM31, intermediate7: QM31, intermediate8: QM31, +) -> QM31 { + intermediate7 + + (m31(32).into()) * (intermediate8) + - ((m31(4).into()) * (intermediate29)) + + (m31(8).into()) * (intermediate57) +} + +pub fn intermediate64( + intermediate30: QM31, intermediate58: QM31, intermediate8: QM31, intermediate9: QM31, +) -> QM31 { + intermediate8 + + (m31(32).into()) * (intermediate9) + - ((m31(4).into()) * (intermediate30)) + + (m31(8).into()) * (intermediate58) +} + +pub fn intermediate65( + intermediate10: QM31, intermediate31: QM31, intermediate59: QM31, intermediate9: QM31, +) -> QM31 { + intermediate9 + + (m31(32).into()) * (intermediate10) + - ((m31(4).into()) * (intermediate31)) + + (m31(8).into()) * (intermediate59) +} + +pub fn intermediate66( + intermediate10: QM31, intermediate11: QM31, intermediate32: QM31, intermediate60: QM31, +) -> QM31 { + intermediate10 + + (m31(32).into()) * (intermediate11) + - ((m31(4).into()) * (intermediate32)) + + (m31(8).into()) * (intermediate60) +} + +pub fn intermediate67( + intermediate11: QM31, intermediate12: QM31, intermediate33: QM31, intermediate61: QM31, +) -> QM31 { + intermediate11 + + (m31(32).into()) * (intermediate12) + - ((m31(4).into()) * (intermediate33)) + + (m31(8).into()) * (intermediate61) +} + +pub fn intermediate68(intermediate12: QM31, intermediate13: QM31, intermediate34: QM31) -> QM31 { + intermediate12 + (m31(32).into()) * (intermediate13) - ((m31(4).into()) * (intermediate34)) +} + +pub fn intermediate69( + intermediate13: QM31, intermediate14: QM31, intermediate35: QM31, intermediate7: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate7) + + intermediate13 + + (m31(32).into()) * (intermediate14) + - ((m31(4).into()) * (intermediate35)) +} + +pub fn intermediate70( + intermediate14: QM31, intermediate15: QM31, intermediate36: QM31, intermediate8: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate8) + + intermediate14 + + (m31(32).into()) * (intermediate15) + - ((m31(4).into()) * (intermediate36)) +} + +pub fn intermediate71( + intermediate15: QM31, intermediate16: QM31, intermediate37: QM31, intermediate9: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate9) + + intermediate15 + + (m31(32).into()) * (intermediate16) + - ((m31(4).into()) * (intermediate37)) +} + +pub fn intermediate72( + intermediate10: QM31, intermediate16: QM31, intermediate17: QM31, intermediate38: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate10) + + intermediate16 + + (m31(32).into()) * (intermediate17) + - ((m31(4).into()) * (intermediate38)) +} + +pub fn intermediate73( + intermediate11: QM31, intermediate17: QM31, intermediate18: QM31, intermediate39: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate11) + + intermediate17 + + (m31(32).into()) * (intermediate18) + - ((m31(4).into()) * (intermediate39)) +} + +pub fn intermediate74( + intermediate12: QM31, intermediate18: QM31, intermediate19: QM31, intermediate40: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate12) + + intermediate18 + + (m31(32).into()) * (intermediate19) + - ((m31(4).into()) * (intermediate40)) +} + +pub fn intermediate75( + intermediate13: QM31, intermediate19: QM31, intermediate20: QM31, intermediate41: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate13) + + intermediate19 + + (m31(32).into()) * (intermediate20) + - ((m31(4).into()) * (intermediate41)) +} + +pub fn intermediate76( + intermediate14: QM31, intermediate20: QM31, intermediate21: QM31, intermediate42: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate14) + + intermediate20 + + (m31(32).into()) * (intermediate21) + - ((m31(4).into()) * (intermediate42)) +} + +pub fn intermediate77( + intermediate15: QM31, intermediate21: QM31, intermediate22: QM31, intermediate43: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate15) + + intermediate21 + + (m31(32).into()) * (intermediate22) + - ((m31(4).into()) * (intermediate43)) +} + +pub fn intermediate78( + intermediate16: QM31, intermediate22: QM31, intermediate23: QM31, intermediate44: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate16) + + intermediate22 + + (m31(32).into()) * (intermediate23) + - ((m31(4).into()) * (intermediate44)) +} + +pub fn intermediate79( + intermediate17: QM31, intermediate23: QM31, intermediate24: QM31, intermediate45: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate17) + + intermediate23 + + (m31(32).into()) * (intermediate24) + - ((m31(4).into()) * (intermediate45)) +} + +pub fn intermediate80( + intermediate18: QM31, intermediate24: QM31, intermediate25: QM31, intermediate46: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate18) + + intermediate24 + + (m31(32).into()) * (intermediate25) + - ((m31(4).into()) * (intermediate46)) +} + +pub fn intermediate81( + intermediate19: QM31, intermediate25: QM31, intermediate26: QM31, intermediate47: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate19) + + intermediate25 + + (m31(32).into()) * (intermediate26) + - ((m31(4).into()) * (intermediate47)) +} + +pub fn intermediate82( + intermediate20: QM31, intermediate26: QM31, intermediate27: QM31, intermediate48: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate20) + + intermediate26 + + (m31(32).into()) * (intermediate27) + - ((m31(4).into()) * (intermediate48)) +} + +pub fn intermediate83( + intermediate21: QM31, intermediate27: QM31, intermediate49: QM31, intermediate56: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate21) + + intermediate27 + - ((m31(4).into()) * (intermediate49)) + + (m31(64).into()) * (intermediate56) +} + +pub fn intermediate84( + intermediate22: QM31, intermediate50: QM31, intermediate56: QM31, intermediate57: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate22) + - ((m31(4).into()) * (intermediate50)) + + (m31(2).into()) * (intermediate56) + + (m31(64).into()) * (intermediate57) +} + +pub fn intermediate85( + intermediate23: QM31, intermediate51: QM31, intermediate57: QM31, intermediate58: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate23) + - ((m31(4).into()) * (intermediate51)) + + (m31(2).into()) * (intermediate57) + + (m31(64).into()) * (intermediate58) +} + +pub fn intermediate86( + intermediate24: QM31, intermediate52: QM31, intermediate58: QM31, intermediate59: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate24) + - ((m31(4).into()) * (intermediate52)) + + (m31(2).into()) * (intermediate58) + + (m31(64).into()) * (intermediate59) +} + +pub fn intermediate87( + intermediate25: QM31, intermediate53: QM31, intermediate59: QM31, intermediate60: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate25) + - ((m31(4).into()) * (intermediate53)) + + (m31(2).into()) * (intermediate59) + + (m31(64).into()) * (intermediate60) +} + +pub fn intermediate88( + intermediate26: QM31, intermediate54: QM31, intermediate60: QM31, intermediate61: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate26) + - ((m31(4).into()) * (intermediate54)) + + (m31(2).into()) * (intermediate60) + + (m31(64).into()) * (intermediate61) +} + +pub fn intermediate89(intermediate27: QM31, intermediate55: QM31, intermediate61: QM31) -> QM31 { + (m31(2).into()) * (intermediate27) + - ((m31(4).into()) * (intermediate55)) + + (m31(2).into()) * (intermediate61) +} +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha10: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha7: QM31, + VerifyInstruction_alpha8: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (trace_1_column_3_offset_0) + + (VerifyInstruction_alpha2) * (trace_1_column_4_offset_0) + + (VerifyInstruction_alpha3) * (trace_1_column_5_offset_0) + + (VerifyInstruction_alpha4) * (trace_1_column_6_offset_0) + + (VerifyInstruction_alpha5) * (trace_1_column_7_offset_0) + + (VerifyInstruction_alpha7) * (trace_1_column_8_offset_0) + + (VerifyInstruction_alpha8) * (trace_1_column_9_offset_0) + + VerifyInstruction_alpha10 + + (VerifyInstruction_alpha15) * (trace_1_column_10_offset_0) + + VerifyInstruction_alpha18 + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_3_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_11_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_14_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_34_offset_0: QM31, + trace_1_column_35_offset_0: QM31, + trace_1_column_36_offset_0: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_38_offset_0: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_14_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_15_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_16_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_17_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_18_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_19_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_20_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_21_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_22_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_23_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_24_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_25_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_26_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_27_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_28_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_29_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_30_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_31_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_32_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_33_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_34_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_35_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_36_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_37_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_38_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_39_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_40_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_41_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_42_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate3( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_4_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_12_offset_0 + trace_1_column_4_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_43_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate4( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_43_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_44_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_45_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_46_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_47_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_48_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_49_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_50_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_51_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_52_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_53_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_54_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_55_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_56_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_57_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_58_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_59_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_60_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_61_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_62_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_63_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_64_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_65_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_66_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_67_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_68_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_69_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_70_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_71_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate5( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_72_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_13_offset_0 + trace_1_column_5_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_72_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate6( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_100_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_72_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_73_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_74_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_75_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_76_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_77_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_78_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_79_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_80_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_81_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_82_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_83_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_84_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_85_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_86_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_87_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_88_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_89_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_90_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_91_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_92_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_93_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_94_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_95_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_96_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_97_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_98_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_99_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_100_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate90( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_101_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_101_offset_0 + m31(262144).into()) - (RangeCheck_19_z) +} + +pub fn intermediate91( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_102_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_102_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate92( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_103_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_103_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate93( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_104_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_104_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate94( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_105_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_105_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate95( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_106_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_106_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate96( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_107_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_107_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate97( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_108_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_108_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate98( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_109_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_109_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate99( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_110_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_110_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate100( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_111_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_111_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate101( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_112_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_112_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate102( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_113_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_113_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate103( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_114_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_114_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate104( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_115_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_115_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate105( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_116_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_116_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate106( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_117_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_117_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate107( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_118_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_118_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate108( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_119_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_119_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate109( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_120_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_120_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate110( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_121_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_121_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate111( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_122_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_122_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate112( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_123_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_123_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate113( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_124_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_124_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate114( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_125_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_125_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate115( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_126_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_126_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate116( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_127_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_127_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate117( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_128_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_128_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate118( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate119( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) * (trace_1_column_0_offset_0 + m31(1).into()) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + trace_1_column_10_offset_0) + + (Opcodes_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/mul_opcode_imm.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/mul_opcode_imm.cairo new file mode 100644 index 000000000..6c80b3fd0 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/mul_opcode_imm.cairo @@ -0,0 +1,258 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; +use stwo_constraint_framework::{ + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, +}; +use stwo_verifier_core::channel::{Channel, ChannelImpl}; +use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; +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}; + +mod constraints; + +#[derive(Drop, Serde, Copy)] +pub struct Claim { + n_rows: u32, +} + +#[generate_trait] +pub impl ClaimImpl of ClaimTrait { + fn log_size(self: @Claim) -> u32 { + (*self.n_rows).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(125, log_size).span(); + let interaction_log_sizes = ArrayImpl::new_repeated(QM31_EXTENSION_DEGREE * 19, 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_rows).into()); + } +} + +#[derive(Drop, Serde, Copy)] +pub struct InteractionClaim { + pub claimed_sum: QM31, +} + +#[generate_trait] +pub impl InteractionClaimImpl of InteractionClaimTrait { + fn mix_into(self: @InteractionClaim, ref channel: Channel) { + channel.mix_felts([*self.claimed_sum].span()); + } +} + +#[derive(Drop)] +pub struct Component { + pub claim: Claim, + pub interaction_claim: InteractionClaim, + pub memory_address_to_id_lookup_elements: crate::MemoryAddressToIdElements, + pub memory_id_to_big_lookup_elements: crate::MemoryIdToBigElements, + pub opcodes_lookup_elements: crate::OpcodeElements, + pub range_check_19_lookup_elements: crate::RangeCheck19BitElements, + pub verify_instruction_lookup_elements: crate::VerifyInstructionElements, +} + +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; + constraints::mask_points( + ref preprocessed_column_set, + ref trace_mask_points, + ref interaction_trace_mask_points, + point, + trace_gen, + 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 log_size = self.claim.log_size(); + let trace_domain = CanonicCosetImpl::new(log_size); + let domain_vanishing_eval_inv = trace_domain.eval_vanishing(point).inverse(); + + let VerifyInstruction_z = *self.verify_instruction_lookup_elements.z; + let mut verify_instruction_alpha_powers = self + .verify_instruction_lookup_elements + .alpha_powers + .span(); + let VerifyInstruction_alpha0 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha1 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha2 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha3 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha4 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha5 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha6 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha7 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha8 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha9 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha10 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha11 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha12 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha13 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha14 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha15 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha16 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha17 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha18 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha19 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha20 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha21 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha22 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha23 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha24 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha25 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha26 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha27 = *verify_instruction_alpha_powers.pop_front().unwrap(); + let VerifyInstruction_alpha28 = *verify_instruction_alpha_powers.pop_front().unwrap(); + + let MemoryAddressToId_z = *self.memory_address_to_id_lookup_elements.z; + let mut memory_address_to_id_alpha_powers = self + .memory_address_to_id_lookup_elements + .alpha_powers + .span(); + let MemoryAddressToId_alpha0 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + let MemoryAddressToId_alpha1 = *memory_address_to_id_alpha_powers.pop_front().unwrap(); + + let MemoryIdToBig_z = *self.memory_id_to_big_lookup_elements.z; + let mut memory_id_to_big_alpha_powers = self + .memory_id_to_big_lookup_elements + .alpha_powers + .span(); + let MemoryIdToBig_alpha0 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha1 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha2 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha3 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha4 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha5 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha6 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha7 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha8 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha9 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha10 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha11 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha12 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha13 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha14 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha15 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha16 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha17 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha18 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha19 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha20 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha21 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha22 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha23 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha24 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha25 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha26 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha27 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + let MemoryIdToBig_alpha28 = *memory_id_to_big_alpha_powers.pop_front().unwrap(); + + let RangeCheck_19_z = *self.range_check_19_lookup_elements.z; + let mut range_check_19_alpha_powers = self + .range_check_19_lookup_elements + .alpha_powers + .span(); + let RangeCheck_19_alpha0 = *range_check_19_alpha_powers.pop_front().unwrap(); + let RangeCheck_19_alpha1 = *range_check_19_alpha_powers.pop_front().unwrap(); + + let Opcodes_z = *self.opcodes_lookup_elements.z; + 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 claimed_sum = *self.interaction_claim.claimed_sum; + + let params = constraints::ConstraintParams { + VerifyInstruction_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_alpha10, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + MemoryAddressToId_z, + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryIdToBig_z, + MemoryIdToBig_alpha0, + MemoryIdToBig_alpha1, + MemoryIdToBig_alpha2, + MemoryIdToBig_alpha3, + MemoryIdToBig_alpha4, + MemoryIdToBig_alpha5, + MemoryIdToBig_alpha6, + MemoryIdToBig_alpha7, + MemoryIdToBig_alpha8, + MemoryIdToBig_alpha9, + MemoryIdToBig_alpha10, + MemoryIdToBig_alpha11, + MemoryIdToBig_alpha12, + MemoryIdToBig_alpha13, + MemoryIdToBig_alpha14, + MemoryIdToBig_alpha15, + MemoryIdToBig_alpha16, + MemoryIdToBig_alpha17, + MemoryIdToBig_alpha18, + MemoryIdToBig_alpha19, + MemoryIdToBig_alpha20, + MemoryIdToBig_alpha21, + MemoryIdToBig_alpha22, + MemoryIdToBig_alpha23, + MemoryIdToBig_alpha24, + MemoryIdToBig_alpha25, + MemoryIdToBig_alpha26, + MemoryIdToBig_alpha27, + MemoryIdToBig_alpha28, + RangeCheck_19_z, + RangeCheck_19_alpha0, + Opcodes_z, + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + claimed_sum, + }; + + constraints::evaluate_constraints_at_point( + ref sum, + ref trace_mask_values, + ref interaction_trace_mask_values, + params, + random_coeff, + domain_vanishing_eval_inv, + ) + } +} diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/mul_opcode_imm/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/mul_opcode_imm/constraints.cairo new file mode 100644 index 000000000..b37ee55a6 --- /dev/null +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/mul_opcode_imm/constraints.cairo @@ -0,0 +1,8738 @@ +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, + log_size: u32, +) { + let point_offset_neg_1 = point.add_circle_point_m31(-trace_gen.mul(1).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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + 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]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); + interaction_trace_mask_points.append(array![point_offset_neg_1, point]); +} + +#[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 RangeCheck_19_alpha0: QM31, + pub RangeCheck_19_z: QM31, + pub VerifyInstruction_alpha0: QM31, + pub VerifyInstruction_alpha1: QM31, + pub VerifyInstruction_alpha10: QM31, + pub VerifyInstruction_alpha15: QM31, + pub VerifyInstruction_alpha18: QM31, + pub VerifyInstruction_alpha2: QM31, + pub VerifyInstruction_alpha3: QM31, + pub VerifyInstruction_alpha4: QM31, + pub VerifyInstruction_alpha5: QM31, + pub VerifyInstruction_alpha6: QM31, + pub VerifyInstruction_z: QM31, + pub claimed_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, + RangeCheck_19_alpha0, + RangeCheck_19_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha10, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + claimed_sum, + } = params; + + let [trace_1_column_0_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_1_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_2_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_3_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_4_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_5_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_6_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_7_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_8_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_9_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_10_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_11_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_12_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_13_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_14_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_15_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_16_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_17_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_18_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_19_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_20_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_21_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_22_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_23_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_24_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_25_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_26_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_27_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_28_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_29_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_30_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_31_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_32_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_33_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_34_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_35_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_36_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_37_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_38_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_39_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_40_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_41_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_42_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_43_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_44_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_45_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_46_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_47_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_48_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_49_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_50_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_51_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_52_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_53_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_54_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_55_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_56_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_57_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_58_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_59_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_60_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_61_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_62_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_63_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_64_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_65_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_66_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_67_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_68_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_69_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_70_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_71_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_72_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_73_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_74_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_75_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_76_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_77_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_78_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_79_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_80_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_81_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_82_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_83_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_84_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_85_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_86_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_87_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_88_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_89_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_90_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_91_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_92_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_93_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_94_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_95_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_96_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_97_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_98_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_99_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_100_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_101_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_102_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_103_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_104_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_105_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_106_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_107_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_108_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_109_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_110_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_111_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_112_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_113_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_114_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_115_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_116_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_117_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_118_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_119_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_120_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_121_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_122_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_123_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_124_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_1_column_125_offset_0]: [QM31; 1] = (*trace_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_126_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_127_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_128_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_129_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_130_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_131_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_132_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_133_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_134_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_135_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_136_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_137_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_138_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_139_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_140_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_141_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_142_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_143_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_144_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_145_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_146_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_147_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_148_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_149_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_150_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_151_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_152_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_153_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_154_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_155_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_156_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_157_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_158_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_159_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_160_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_161_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_162_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_163_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_164_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_165_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_166_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_167_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_168_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_169_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_170_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_171_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_172_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_173_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_174_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_175_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_176_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_177_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_178_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_179_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_180_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_181_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_182_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_183_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_184_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_185_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_186_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_187_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_188_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_189_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_190_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_191_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_192_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_193_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_194_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_195_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_196_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_197_offset_0]: [QM31; 1] = (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_198_offset_neg_1, trace_2_column_198_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_199_offset_neg_1, trace_2_column_199_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_200_offset_neg_1, trace_2_column_200_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + let [trace_2_column_201_offset_neg_1, trace_2_column_201_offset_0]: [QM31; 2] = + (*interaction_mask_values + .pop_front() + .unwrap() + .span() + .try_into() + .unwrap()) + .unbox(); + + core::internal::revoke_ap_tracking(); + + let mut intermediates = intermediates( + 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, + RangeCheck_19_alpha0, + RangeCheck_19_z, + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha10, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_100_offset_0, + trace_1_column_101_offset_0, + trace_1_column_102_offset_0, + trace_1_column_103_offset_0, + trace_1_column_104_offset_0, + trace_1_column_105_offset_0, + trace_1_column_106_offset_0, + trace_1_column_107_offset_0, + trace_1_column_108_offset_0, + trace_1_column_109_offset_0, + trace_1_column_10_offset_0, + trace_1_column_110_offset_0, + trace_1_column_111_offset_0, + trace_1_column_112_offset_0, + trace_1_column_113_offset_0, + trace_1_column_114_offset_0, + trace_1_column_115_offset_0, + trace_1_column_116_offset_0, + trace_1_column_117_offset_0, + trace_1_column_118_offset_0, + trace_1_column_119_offset_0, + trace_1_column_11_offset_0, + trace_1_column_120_offset_0, + trace_1_column_121_offset_0, + trace_1_column_122_offset_0, + trace_1_column_123_offset_0, + trace_1_column_124_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_1_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_2_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_34_offset_0, + trace_1_column_35_offset_0, + trace_1_column_36_offset_0, + trace_1_column_37_offset_0, + trace_1_column_38_offset_0, + trace_1_column_39_offset_0, + trace_1_column_3_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_4_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_5_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_6_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_7_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_8_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + trace_1_column_97_offset_0, + trace_1_column_98_offset_0, + trace_1_column_99_offset_0, + trace_1_column_9_offset_0, + ) + .span(); + let intermediate0 = *intermediates.pop_front().unwrap(); + let intermediate1 = *intermediates.pop_front().unwrap(); + let intermediate2 = *intermediates.pop_front().unwrap(); + let intermediate3 = *intermediates.pop_front().unwrap(); + let intermediate4 = *intermediates.pop_front().unwrap(); + let intermediate5 = *intermediates.pop_front().unwrap(); + let intermediate6 = *intermediates.pop_front().unwrap(); + let intermediate7 = *intermediates.pop_front().unwrap(); + let intermediate8 = *intermediates.pop_front().unwrap(); + let intermediate9 = *intermediates.pop_front().unwrap(); + let intermediate10 = *intermediates.pop_front().unwrap(); + let intermediate11 = *intermediates.pop_front().unwrap(); + let intermediate12 = *intermediates.pop_front().unwrap(); + let intermediate13 = *intermediates.pop_front().unwrap(); + let intermediate14 = *intermediates.pop_front().unwrap(); + let intermediate15 = *intermediates.pop_front().unwrap(); + let intermediate16 = *intermediates.pop_front().unwrap(); + let intermediate17 = *intermediates.pop_front().unwrap(); + let intermediate18 = *intermediates.pop_front().unwrap(); + let intermediate19 = *intermediates.pop_front().unwrap(); + let intermediate20 = *intermediates.pop_front().unwrap(); + let intermediate21 = *intermediates.pop_front().unwrap(); + let intermediate22 = *intermediates.pop_front().unwrap(); + let intermediate23 = *intermediates.pop_front().unwrap(); + let intermediate24 = *intermediates.pop_front().unwrap(); + let intermediate25 = *intermediates.pop_front().unwrap(); + let intermediate26 = *intermediates.pop_front().unwrap(); + let intermediate27 = *intermediates.pop_front().unwrap(); + let intermediate28 = *intermediates.pop_front().unwrap(); + let intermediate29 = *intermediates.pop_front().unwrap(); + let intermediate30 = *intermediates.pop_front().unwrap(); + let intermediate31 = *intermediates.pop_front().unwrap(); + let intermediate32 = *intermediates.pop_front().unwrap(); + let intermediate33 = *intermediates.pop_front().unwrap(); + let intermediate34 = *intermediates.pop_front().unwrap(); + let intermediate35 = *intermediates.pop_front().unwrap(); + let intermediate36 = *intermediates.pop_front().unwrap(); + let intermediate37 = *intermediates.pop_front().unwrap(); + let intermediate38 = *intermediates.pop_front().unwrap(); + let intermediate39 = *intermediates.pop_front().unwrap(); + let intermediate40 = *intermediates.pop_front().unwrap(); + let intermediate41 = *intermediates.pop_front().unwrap(); + let intermediate42 = *intermediates.pop_front().unwrap(); + let intermediate43 = *intermediates.pop_front().unwrap(); + let intermediate44 = *intermediates.pop_front().unwrap(); + let intermediate45 = *intermediates.pop_front().unwrap(); + let intermediate46 = *intermediates.pop_front().unwrap(); + let intermediate47 = *intermediates.pop_front().unwrap(); + let intermediate48 = *intermediates.pop_front().unwrap(); + let intermediate49 = *intermediates.pop_front().unwrap(); + let intermediate50 = *intermediates.pop_front().unwrap(); + let intermediate51 = *intermediates.pop_front().unwrap(); + let intermediate52 = *intermediates.pop_front().unwrap(); + let intermediate53 = *intermediates.pop_front().unwrap(); + let intermediate54 = *intermediates.pop_front().unwrap(); + let intermediate55 = *intermediates.pop_front().unwrap(); + let intermediate56 = *intermediates.pop_front().unwrap(); + let intermediate57 = *intermediates.pop_front().unwrap(); + let intermediate58 = *intermediates.pop_front().unwrap(); + let intermediate59 = *intermediates.pop_front().unwrap(); + let intermediate60 = *intermediates.pop_front().unwrap(); + let intermediate61 = *intermediates.pop_front().unwrap(); + let intermediate62 = *intermediates.pop_front().unwrap(); + let intermediate63 = *intermediates.pop_front().unwrap(); + let intermediate64 = *intermediates.pop_front().unwrap(); + let intermediate65 = *intermediates.pop_front().unwrap(); + let intermediate66 = *intermediates.pop_front().unwrap(); + let intermediate67 = *intermediates.pop_front().unwrap(); + let intermediate68 = *intermediates.pop_front().unwrap(); + let intermediate69 = *intermediates.pop_front().unwrap(); + let intermediate70 = *intermediates.pop_front().unwrap(); + let intermediate71 = *intermediates.pop_front().unwrap(); + let intermediate72 = *intermediates.pop_front().unwrap(); + let intermediate73 = *intermediates.pop_front().unwrap(); + let intermediate74 = *intermediates.pop_front().unwrap(); + let intermediate75 = *intermediates.pop_front().unwrap(); + let intermediate76 = *intermediates.pop_front().unwrap(); + let intermediate77 = *intermediates.pop_front().unwrap(); + let intermediate78 = *intermediates.pop_front().unwrap(); + let intermediate79 = *intermediates.pop_front().unwrap(); + let intermediate80 = *intermediates.pop_front().unwrap(); + let intermediate81 = *intermediates.pop_front().unwrap(); + let intermediate82 = *intermediates.pop_front().unwrap(); + let intermediate83 = *intermediates.pop_front().unwrap(); + let intermediate84 = *intermediates.pop_front().unwrap(); + let intermediate85 = *intermediates.pop_front().unwrap(); + let intermediate86 = *intermediates.pop_front().unwrap(); + let intermediate87 = *intermediates.pop_front().unwrap(); + let intermediate88 = *intermediates.pop_front().unwrap(); + let intermediate89 = *intermediates.pop_front().unwrap(); + let intermediate90 = *intermediates.pop_front().unwrap(); + let intermediate91 = *intermediates.pop_front().unwrap(); + let intermediate92 = *intermediates.pop_front().unwrap(); + let intermediate93 = *intermediates.pop_front().unwrap(); + let intermediate94 = *intermediates.pop_front().unwrap(); + let intermediate95 = *intermediates.pop_front().unwrap(); + let intermediate96 = *intermediates.pop_front().unwrap(); + let intermediate97 = *intermediates.pop_front().unwrap(); + let intermediate98 = *intermediates.pop_front().unwrap(); + let intermediate99 = *intermediates.pop_front().unwrap(); + let intermediate100 = *intermediates.pop_front().unwrap(); + let intermediate101 = *intermediates.pop_front().unwrap(); + let intermediate102 = *intermediates.pop_front().unwrap(); + let intermediate103 = *intermediates.pop_front().unwrap(); + let intermediate104 = *intermediates.pop_front().unwrap(); + let intermediate105 = *intermediates.pop_front().unwrap(); + let intermediate106 = *intermediates.pop_front().unwrap(); + let intermediate107 = *intermediates.pop_front().unwrap(); + let intermediate108 = *intermediates.pop_front().unwrap(); + let intermediate109 = *intermediates.pop_front().unwrap(); + let intermediate110 = *intermediates.pop_front().unwrap(); + let intermediate111 = *intermediates.pop_front().unwrap(); + let intermediate112 = *intermediates.pop_front().unwrap(); + let intermediate113 = *intermediates.pop_front().unwrap(); + let intermediate114 = *intermediates.pop_front().unwrap(); + let intermediate115 = *intermediates.pop_front().unwrap(); + let intermediate116 = *intermediates.pop_front().unwrap(); + let intermediate117 = *intermediates.pop_front().unwrap(); + let intermediate118 = *intermediates.pop_front().unwrap(); + let intermediate119 = *intermediates.pop_front().unwrap(); + + // Constrait 0 + let constraint_quotient = ((trace_1_column_125_offset_0) * (trace_1_column_125_offset_0) + - (trace_1_column_125_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 1 + let constraint_quotient = (trace_1_column_8_offset_0 + - ((trace_1_column_5_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_5_offset_0)) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 2 + let constraint_quotient = (trace_1_column_9_offset_0 + - ((trace_1_column_6_offset_0) * (trace_1_column_2_offset_0) + + (m31(1).into() - (trace_1_column_6_offset_0)) * (trace_1_column_1_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 3 + let constraint_quotient = ((trace_1_column_98_offset_0) * (m31(512).into()) + - (intermediate62 - (trace_1_column_97_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 4 + let constraint_quotient = ((trace_1_column_99_offset_0) * (m31(512).into()) + - (intermediate63 + trace_1_column_98_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 5 + let constraint_quotient = ((trace_1_column_100_offset_0) * (m31(512).into()) + - (intermediate64 + trace_1_column_99_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 6 + let constraint_quotient = ((trace_1_column_101_offset_0) * (m31(512).into()) + - (intermediate65 + trace_1_column_100_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 7 + let constraint_quotient = ((trace_1_column_102_offset_0) * (m31(512).into()) + - (intermediate66 + trace_1_column_101_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 8 + let constraint_quotient = ((trace_1_column_103_offset_0) * (m31(512).into()) + - (intermediate67 + trace_1_column_102_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 9 + let constraint_quotient = ((trace_1_column_104_offset_0) * (m31(512).into()) + - (intermediate68 + trace_1_column_103_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 10 + let constraint_quotient = ((trace_1_column_105_offset_0) * (m31(512).into()) + - (intermediate69 + trace_1_column_104_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 11 + let constraint_quotient = ((trace_1_column_106_offset_0) * (m31(512).into()) + - (intermediate70 + trace_1_column_105_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 12 + let constraint_quotient = ((trace_1_column_107_offset_0) * (m31(512).into()) + - (intermediate71 + trace_1_column_106_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 13 + let constraint_quotient = ((trace_1_column_108_offset_0) * (m31(512).into()) + - (intermediate72 + trace_1_column_107_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 14 + let constraint_quotient = ((trace_1_column_109_offset_0) * (m31(512).into()) + - (intermediate73 + trace_1_column_108_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 15 + let constraint_quotient = ((trace_1_column_110_offset_0) * (m31(512).into()) + - (intermediate74 + trace_1_column_109_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 16 + let constraint_quotient = ((trace_1_column_111_offset_0) * (m31(512).into()) + - (intermediate75 + trace_1_column_110_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 17 + let constraint_quotient = ((trace_1_column_112_offset_0) * (m31(512).into()) + - (intermediate76 + trace_1_column_111_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 18 + let constraint_quotient = ((trace_1_column_113_offset_0) * (m31(512).into()) + - (intermediate77 + trace_1_column_112_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 19 + let constraint_quotient = ((trace_1_column_114_offset_0) * (m31(512).into()) + - (intermediate78 + trace_1_column_113_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 20 + let constraint_quotient = ((trace_1_column_115_offset_0) * (m31(512).into()) + - (intermediate79 + trace_1_column_114_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 21 + let constraint_quotient = ((trace_1_column_116_offset_0) * (m31(512).into()) + - (intermediate80 + trace_1_column_115_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 22 + let constraint_quotient = ((trace_1_column_117_offset_0) * (m31(512).into()) + - (intermediate81 + trace_1_column_116_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 23 + let constraint_quotient = ((trace_1_column_118_offset_0) * (m31(512).into()) + - (intermediate82 + trace_1_column_117_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 24 + let constraint_quotient = ((trace_1_column_119_offset_0) * (m31(512).into()) + - (intermediate83 + - ((m31(136).into()) * (trace_1_column_97_offset_0)) + + trace_1_column_118_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 25 + let constraint_quotient = ((trace_1_column_120_offset_0) * (m31(512).into()) + - (intermediate84 + trace_1_column_119_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 26 + let constraint_quotient = ((trace_1_column_121_offset_0) * (m31(512).into()) + - (intermediate85 + trace_1_column_120_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 27 + let constraint_quotient = ((trace_1_column_122_offset_0) * (m31(512).into()) + - (intermediate86 + trace_1_column_121_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 28 + let constraint_quotient = ((trace_1_column_123_offset_0) * (m31(512).into()) + - (intermediate87 + trace_1_column_122_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 29 + let constraint_quotient = ((trace_1_column_124_offset_0) * (m31(512).into()) + - (intermediate88 + trace_1_column_123_offset_0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 30 + let constraint_quotient = (intermediate89 + - ((m31(256).into()) * (trace_1_column_97_offset_0)) + + trace_1_column_124_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 31 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_126_offset_0, trace_2_column_127_offset_0, trace_2_column_128_offset_0, + trace_2_column_129_offset_0, + ], + )) + * ((intermediate0) * (intermediate1)) + - (intermediate1 + intermediate0)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 32 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_130_offset_0, trace_2_column_131_offset_0, trace_2_column_132_offset_0, + trace_2_column_133_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_126_offset_0, trace_2_column_127_offset_0, + trace_2_column_128_offset_0, trace_2_column_129_offset_0, + ], + ))) + * ((intermediate2) * (intermediate3)) + - (intermediate3 + intermediate2)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 33 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_134_offset_0, trace_2_column_135_offset_0, trace_2_column_136_offset_0, + trace_2_column_137_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_130_offset_0, trace_2_column_131_offset_0, + trace_2_column_132_offset_0, trace_2_column_133_offset_0, + ], + ))) + * ((intermediate4) * (intermediate5)) + - (intermediate5 + intermediate4)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 34 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_138_offset_0, trace_2_column_139_offset_0, trace_2_column_140_offset_0, + trace_2_column_141_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_134_offset_0, trace_2_column_135_offset_0, + trace_2_column_136_offset_0, trace_2_column_137_offset_0, + ], + ))) + * ((intermediate6) * (intermediate90)) + - (intermediate90 + intermediate6)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 35 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_142_offset_0, trace_2_column_143_offset_0, trace_2_column_144_offset_0, + trace_2_column_145_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_138_offset_0, trace_2_column_139_offset_0, + trace_2_column_140_offset_0, trace_2_column_141_offset_0, + ], + ))) + * ((intermediate91) * (intermediate92)) + - (intermediate92 + intermediate91)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 36 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_146_offset_0, trace_2_column_147_offset_0, trace_2_column_148_offset_0, + trace_2_column_149_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_142_offset_0, trace_2_column_143_offset_0, + trace_2_column_144_offset_0, trace_2_column_145_offset_0, + ], + ))) + * ((intermediate93) * (intermediate94)) + - (intermediate94 + intermediate93)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 37 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_150_offset_0, trace_2_column_151_offset_0, trace_2_column_152_offset_0, + trace_2_column_153_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_146_offset_0, trace_2_column_147_offset_0, + trace_2_column_148_offset_0, trace_2_column_149_offset_0, + ], + ))) + * ((intermediate95) * (intermediate96)) + - (intermediate96 + intermediate95)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 38 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_154_offset_0, trace_2_column_155_offset_0, trace_2_column_156_offset_0, + trace_2_column_157_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_150_offset_0, trace_2_column_151_offset_0, + trace_2_column_152_offset_0, trace_2_column_153_offset_0, + ], + ))) + * ((intermediate97) * (intermediate98)) + - (intermediate98 + intermediate97)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 39 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_158_offset_0, trace_2_column_159_offset_0, trace_2_column_160_offset_0, + trace_2_column_161_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_154_offset_0, trace_2_column_155_offset_0, + trace_2_column_156_offset_0, trace_2_column_157_offset_0, + ], + ))) + * ((intermediate99) * (intermediate100)) + - (intermediate100 + intermediate99)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 40 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_162_offset_0, trace_2_column_163_offset_0, trace_2_column_164_offset_0, + trace_2_column_165_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_158_offset_0, trace_2_column_159_offset_0, + trace_2_column_160_offset_0, trace_2_column_161_offset_0, + ], + ))) + * ((intermediate101) * (intermediate102)) + - (intermediate102 + intermediate101)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 41 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_166_offset_0, trace_2_column_167_offset_0, trace_2_column_168_offset_0, + trace_2_column_169_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_162_offset_0, trace_2_column_163_offset_0, + trace_2_column_164_offset_0, trace_2_column_165_offset_0, + ], + ))) + * ((intermediate103) * (intermediate104)) + - (intermediate104 + intermediate103)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 42 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_170_offset_0, trace_2_column_171_offset_0, trace_2_column_172_offset_0, + trace_2_column_173_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_166_offset_0, trace_2_column_167_offset_0, + trace_2_column_168_offset_0, trace_2_column_169_offset_0, + ], + ))) + * ((intermediate105) * (intermediate106)) + - (intermediate106 + intermediate105)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 43 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_174_offset_0, trace_2_column_175_offset_0, trace_2_column_176_offset_0, + trace_2_column_177_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_170_offset_0, trace_2_column_171_offset_0, + trace_2_column_172_offset_0, trace_2_column_173_offset_0, + ], + ))) + * ((intermediate107) * (intermediate108)) + - (intermediate108 + intermediate107)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 44 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_178_offset_0, trace_2_column_179_offset_0, trace_2_column_180_offset_0, + trace_2_column_181_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_174_offset_0, trace_2_column_175_offset_0, + trace_2_column_176_offset_0, trace_2_column_177_offset_0, + ], + ))) + * ((intermediate109) * (intermediate110)) + - (intermediate110 + intermediate109)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 45 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_182_offset_0, trace_2_column_183_offset_0, trace_2_column_184_offset_0, + trace_2_column_185_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_178_offset_0, trace_2_column_179_offset_0, + trace_2_column_180_offset_0, trace_2_column_181_offset_0, + ], + ))) + * ((intermediate111) * (intermediate112)) + - (intermediate112 + intermediate111)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 46 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_186_offset_0, trace_2_column_187_offset_0, trace_2_column_188_offset_0, + trace_2_column_189_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_182_offset_0, trace_2_column_183_offset_0, + trace_2_column_184_offset_0, trace_2_column_185_offset_0, + ], + ))) + * ((intermediate113) * (intermediate114)) + - (intermediate114 + intermediate113)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 47 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_190_offset_0, trace_2_column_191_offset_0, trace_2_column_192_offset_0, + trace_2_column_193_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_186_offset_0, trace_2_column_187_offset_0, + trace_2_column_188_offset_0, trace_2_column_189_offset_0, + ], + ))) + * ((intermediate115) * (intermediate116)) + - (intermediate116 + intermediate115)) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 48 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_194_offset_0, trace_2_column_195_offset_0, trace_2_column_196_offset_0, + trace_2_column_197_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_190_offset_0, trace_2_column_191_offset_0, + trace_2_column_192_offset_0, trace_2_column_193_offset_0, + ], + ))) + * ((intermediate117) * (intermediate118)) + - (intermediate118 + (intermediate117) * (trace_1_column_125_offset_0))) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; + + // Constrait 49 + let constraint_quotient = ((QM31Impl::from_partial_evals( + [ + trace_2_column_198_offset_0, trace_2_column_199_offset_0, trace_2_column_200_offset_0, + trace_2_column_201_offset_0, + ], + ) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_198_offset_neg_1, trace_2_column_199_offset_neg_1, + trace_2_column_200_offset_neg_1, trace_2_column_201_offset_neg_1, + ], + )) + - (QM31Impl::from_partial_evals( + [ + trace_2_column_194_offset_0, trace_2_column_195_offset_0, + trace_2_column_196_offset_0, trace_2_column_197_offset_0, + ], + )) + + (claimed_sum) * (qm31(32768, 0, 0, 0))) + * (intermediate119) + + trace_1_column_125_offset_0) + * domain_vanish_at_point_inv; + sum = sum * random_coeff + constraint_quotient; +} + + +fn intermediates( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + RangeCheck_19_alpha0: QM31, + RangeCheck_19_z: QM31, + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha10: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_100_offset_0: QM31, + trace_1_column_101_offset_0: QM31, + trace_1_column_102_offset_0: QM31, + trace_1_column_103_offset_0: QM31, + trace_1_column_104_offset_0: QM31, + trace_1_column_105_offset_0: QM31, + trace_1_column_106_offset_0: QM31, + trace_1_column_107_offset_0: QM31, + trace_1_column_108_offset_0: QM31, + trace_1_column_109_offset_0: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_110_offset_0: QM31, + trace_1_column_111_offset_0: QM31, + trace_1_column_112_offset_0: QM31, + trace_1_column_113_offset_0: QM31, + trace_1_column_114_offset_0: QM31, + trace_1_column_115_offset_0: QM31, + trace_1_column_116_offset_0: QM31, + trace_1_column_117_offset_0: QM31, + trace_1_column_118_offset_0: QM31, + trace_1_column_119_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_120_offset_0: QM31, + trace_1_column_121_offset_0: QM31, + trace_1_column_122_offset_0: QM31, + trace_1_column_123_offset_0: QM31, + trace_1_column_124_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_34_offset_0: QM31, + trace_1_column_35_offset_0: QM31, + trace_1_column_36_offset_0: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_38_offset_0: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_7_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_8_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, + trace_1_column_97_offset_0: QM31, + trace_1_column_98_offset_0: QM31, + trace_1_column_99_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> Array { + let intermediate7 = intermediate7( + trace_1_column_11_offset_0, trace_1_column_40_offset_0, trace_1_column_69_offset_0, + ); + + let intermediate8 = intermediate8( + trace_1_column_12_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + ); + + let intermediate9 = intermediate9( + trace_1_column_13_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + ); + + let intermediate10 = intermediate10( + trace_1_column_14_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + ); + + let intermediate11 = intermediate11( + trace_1_column_15_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + ); + + let intermediate12 = intermediate12( + trace_1_column_16_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + ); + + let intermediate13 = intermediate13( + trace_1_column_17_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + ); + + let intermediate14 = intermediate14( + trace_1_column_18_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + ); + + let intermediate15 = intermediate15( + trace_1_column_19_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + ); + + let intermediate16 = intermediate16( + trace_1_column_20_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + ); + + let intermediate17 = intermediate17( + trace_1_column_21_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + ); + + let intermediate18 = intermediate18( + trace_1_column_22_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + ); + + let intermediate19 = intermediate19( + trace_1_column_23_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + ); + + let intermediate20 = intermediate20( + trace_1_column_24_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + ); + + let intermediate21 = intermediate21( + trace_1_column_25_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + ); + + let intermediate22 = intermediate22( + trace_1_column_26_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + ); + + let intermediate23 = intermediate23( + trace_1_column_27_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + ); + + let intermediate24 = intermediate24( + trace_1_column_28_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + ); + + let intermediate25 = intermediate25( + trace_1_column_29_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + ); + + let intermediate26 = intermediate26( + trace_1_column_30_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + ); + + let intermediate27 = intermediate27( + trace_1_column_31_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + ); + + let intermediate28 = intermediate28( + trace_1_column_32_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + ); + + let intermediate29 = intermediate29( + trace_1_column_33_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + ); + + let intermediate30 = intermediate30( + trace_1_column_34_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + ); + + let intermediate31 = intermediate31( + trace_1_column_35_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + ); + + let intermediate32 = intermediate32( + trace_1_column_36_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + ); + + let intermediate33 = intermediate33( + trace_1_column_37_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + ); + + let intermediate34 = intermediate34( + trace_1_column_38_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate35 = intermediate35( + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate36 = intermediate36( + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate37 = intermediate37( + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate38 = intermediate38( + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate39 = intermediate39( + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate40 = intermediate40( + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate41 = intermediate41( + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate42 = intermediate42( + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate43 = intermediate43( + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate44 = intermediate44( + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate45 = intermediate45( + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate46 = intermediate46( + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate47 = intermediate47( + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate48 = intermediate48( + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate49 = intermediate49( + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate50 = intermediate50( + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate51 = intermediate51( + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate52 = intermediate52( + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate53 = intermediate53( + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate54 = intermediate54( + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate55 = intermediate55( + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate56 = intermediate56( + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate57 = intermediate57( + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate58 = intermediate58( + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate59 = intermediate59( + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate60 = intermediate60( + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate61 = intermediate61(trace_1_column_67_offset_0, trace_1_column_96_offset_0); + + let intermediate62 = intermediate62(intermediate28, intermediate56, intermediate7); + + let intermediate63 = intermediate63( + intermediate29, intermediate57, intermediate7, intermediate8, + ); + + let intermediate64 = intermediate64( + intermediate30, intermediate58, intermediate8, intermediate9, + ); + + let intermediate65 = intermediate65( + intermediate10, intermediate31, intermediate59, intermediate9, + ); + + let intermediate66 = intermediate66( + intermediate10, intermediate11, intermediate32, intermediate60, + ); + + let intermediate67 = intermediate67( + intermediate11, intermediate12, intermediate33, intermediate61, + ); + + let intermediate68 = intermediate68(intermediate12, intermediate13, intermediate34); + + let intermediate69 = intermediate69( + intermediate13, intermediate14, intermediate35, intermediate7, + ); + + let intermediate70 = intermediate70( + intermediate14, intermediate15, intermediate36, intermediate8, + ); + + let intermediate71 = intermediate71( + intermediate15, intermediate16, intermediate37, intermediate9, + ); + + let intermediate72 = intermediate72( + intermediate10, intermediate16, intermediate17, intermediate38, + ); + + let intermediate73 = intermediate73( + intermediate11, intermediate17, intermediate18, intermediate39, + ); + + let intermediate74 = intermediate74( + intermediate12, intermediate18, intermediate19, intermediate40, + ); + + let intermediate75 = intermediate75( + intermediate13, intermediate19, intermediate20, intermediate41, + ); + + let intermediate76 = intermediate76( + intermediate14, intermediate20, intermediate21, intermediate42, + ); + + let intermediate77 = intermediate77( + intermediate15, intermediate21, intermediate22, intermediate43, + ); + + let intermediate78 = intermediate78( + intermediate16, intermediate22, intermediate23, intermediate44, + ); + + let intermediate79 = intermediate79( + intermediate17, intermediate23, intermediate24, intermediate45, + ); + + let intermediate80 = intermediate80( + intermediate18, intermediate24, intermediate25, intermediate46, + ); + + let intermediate81 = intermediate81( + intermediate19, intermediate25, intermediate26, intermediate47, + ); + + let intermediate82 = intermediate82( + intermediate20, intermediate26, intermediate27, intermediate48, + ); + + let intermediate83 = intermediate83( + intermediate21, intermediate27, intermediate49, intermediate56, + ); + + let intermediate84 = intermediate84( + intermediate22, intermediate50, intermediate56, intermediate57, + ); + + let intermediate85 = intermediate85( + intermediate23, intermediate51, intermediate57, intermediate58, + ); + + let intermediate86 = intermediate86( + intermediate24, intermediate52, intermediate58, intermediate59, + ); + + let intermediate87 = intermediate87( + intermediate25, intermediate53, intermediate59, intermediate60, + ); + + let intermediate88 = intermediate88( + intermediate26, intermediate54, intermediate60, intermediate61, + ); + + let intermediate89 = intermediate89(intermediate27, intermediate55, intermediate61); + let intermediate0 = intermediate0( + VerifyInstruction_alpha0, + VerifyInstruction_alpha1, + VerifyInstruction_alpha10, + VerifyInstruction_alpha15, + VerifyInstruction_alpha18, + VerifyInstruction_alpha2, + VerifyInstruction_alpha3, + VerifyInstruction_alpha4, + VerifyInstruction_alpha5, + VerifyInstruction_alpha6, + VerifyInstruction_z, + trace_1_column_0_offset_0, + trace_1_column_3_offset_0, + trace_1_column_4_offset_0, + trace_1_column_5_offset_0, + trace_1_column_6_offset_0, + trace_1_column_7_offset_0, + ); + + let intermediate1 = intermediate1( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_10_offset_0, + trace_1_column_3_offset_0, + trace_1_column_8_offset_0, + ); + + let intermediate2 = intermediate2( + 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, + trace_1_column_10_offset_0, + trace_1_column_11_offset_0, + trace_1_column_12_offset_0, + trace_1_column_13_offset_0, + trace_1_column_14_offset_0, + trace_1_column_15_offset_0, + trace_1_column_16_offset_0, + trace_1_column_17_offset_0, + trace_1_column_18_offset_0, + trace_1_column_19_offset_0, + trace_1_column_20_offset_0, + trace_1_column_21_offset_0, + trace_1_column_22_offset_0, + trace_1_column_23_offset_0, + trace_1_column_24_offset_0, + trace_1_column_25_offset_0, + trace_1_column_26_offset_0, + trace_1_column_27_offset_0, + trace_1_column_28_offset_0, + trace_1_column_29_offset_0, + trace_1_column_30_offset_0, + trace_1_column_31_offset_0, + trace_1_column_32_offset_0, + trace_1_column_33_offset_0, + trace_1_column_34_offset_0, + trace_1_column_35_offset_0, + trace_1_column_36_offset_0, + trace_1_column_37_offset_0, + trace_1_column_38_offset_0, + ); + + let intermediate3 = intermediate3( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_39_offset_0, + trace_1_column_4_offset_0, + trace_1_column_9_offset_0, + ); + + let intermediate4 = intermediate4( + 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, + trace_1_column_39_offset_0, + trace_1_column_40_offset_0, + trace_1_column_41_offset_0, + trace_1_column_42_offset_0, + trace_1_column_43_offset_0, + trace_1_column_44_offset_0, + trace_1_column_45_offset_0, + trace_1_column_46_offset_0, + trace_1_column_47_offset_0, + trace_1_column_48_offset_0, + trace_1_column_49_offset_0, + trace_1_column_50_offset_0, + trace_1_column_51_offset_0, + trace_1_column_52_offset_0, + trace_1_column_53_offset_0, + trace_1_column_54_offset_0, + trace_1_column_55_offset_0, + trace_1_column_56_offset_0, + trace_1_column_57_offset_0, + trace_1_column_58_offset_0, + trace_1_column_59_offset_0, + trace_1_column_60_offset_0, + trace_1_column_61_offset_0, + trace_1_column_62_offset_0, + trace_1_column_63_offset_0, + trace_1_column_64_offset_0, + trace_1_column_65_offset_0, + trace_1_column_66_offset_0, + trace_1_column_67_offset_0, + ); + + let intermediate5 = intermediate5( + MemoryAddressToId_alpha0, + MemoryAddressToId_alpha1, + MemoryAddressToId_z, + trace_1_column_0_offset_0, + trace_1_column_68_offset_0, + ); + + let intermediate6 = intermediate6( + 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, + trace_1_column_68_offset_0, + trace_1_column_69_offset_0, + trace_1_column_70_offset_0, + trace_1_column_71_offset_0, + trace_1_column_72_offset_0, + trace_1_column_73_offset_0, + trace_1_column_74_offset_0, + trace_1_column_75_offset_0, + trace_1_column_76_offset_0, + trace_1_column_77_offset_0, + trace_1_column_78_offset_0, + trace_1_column_79_offset_0, + trace_1_column_80_offset_0, + trace_1_column_81_offset_0, + trace_1_column_82_offset_0, + trace_1_column_83_offset_0, + trace_1_column_84_offset_0, + trace_1_column_85_offset_0, + trace_1_column_86_offset_0, + trace_1_column_87_offset_0, + trace_1_column_88_offset_0, + trace_1_column_89_offset_0, + trace_1_column_90_offset_0, + trace_1_column_91_offset_0, + trace_1_column_92_offset_0, + trace_1_column_93_offset_0, + trace_1_column_94_offset_0, + trace_1_column_95_offset_0, + trace_1_column_96_offset_0, + ); + + let intermediate90 = intermediate90( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_97_offset_0, + ); + + let intermediate91 = intermediate91( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_98_offset_0, + ); + + let intermediate92 = intermediate92( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_99_offset_0, + ); + + let intermediate93 = intermediate93( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_100_offset_0, + ); + + let intermediate94 = intermediate94( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_101_offset_0, + ); + + let intermediate95 = intermediate95( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_102_offset_0, + ); + + let intermediate96 = intermediate96( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_103_offset_0, + ); + + let intermediate97 = intermediate97( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_104_offset_0, + ); + + let intermediate98 = intermediate98( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_105_offset_0, + ); + + let intermediate99 = intermediate99( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_106_offset_0, + ); + + let intermediate100 = intermediate100( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_107_offset_0, + ); + + let intermediate101 = intermediate101( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_108_offset_0, + ); + + let intermediate102 = intermediate102( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_109_offset_0, + ); + + let intermediate103 = intermediate103( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_110_offset_0, + ); + + let intermediate104 = intermediate104( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_111_offset_0, + ); + + let intermediate105 = intermediate105( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_112_offset_0, + ); + + let intermediate106 = intermediate106( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_113_offset_0, + ); + + let intermediate107 = intermediate107( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_114_offset_0, + ); + + let intermediate108 = intermediate108( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_115_offset_0, + ); + + let intermediate109 = intermediate109( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_116_offset_0, + ); + + let intermediate110 = intermediate110( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_117_offset_0, + ); + + let intermediate111 = intermediate111( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_118_offset_0, + ); + + let intermediate112 = intermediate112( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_119_offset_0, + ); + + let intermediate113 = intermediate113( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_120_offset_0, + ); + + let intermediate114 = intermediate114( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_121_offset_0, + ); + + let intermediate115 = intermediate115( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_122_offset_0, + ); + + let intermediate116 = intermediate116( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_123_offset_0, + ); + + let intermediate117 = intermediate117( + RangeCheck_19_alpha0, RangeCheck_19_z, trace_1_column_124_offset_0, + ); + + let intermediate118 = intermediate118( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + ); + + let intermediate119 = intermediate119( + Opcodes_alpha0, + Opcodes_alpha1, + Opcodes_alpha2, + Opcodes_z, + trace_1_column_0_offset_0, + trace_1_column_1_offset_0, + trace_1_column_2_offset_0, + trace_1_column_7_offset_0, + ); + array![ + intermediate0, + intermediate1, + intermediate2, + intermediate3, + intermediate4, + intermediate5, + intermediate6, + intermediate7, + intermediate8, + intermediate9, + intermediate10, + intermediate11, + intermediate12, + intermediate13, + intermediate14, + intermediate15, + intermediate16, + intermediate17, + intermediate18, + intermediate19, + intermediate20, + intermediate21, + intermediate22, + intermediate23, + intermediate24, + intermediate25, + intermediate26, + intermediate27, + intermediate28, + intermediate29, + intermediate30, + intermediate31, + intermediate32, + intermediate33, + intermediate34, + intermediate35, + intermediate36, + intermediate37, + intermediate38, + intermediate39, + intermediate40, + intermediate41, + intermediate42, + intermediate43, + intermediate44, + intermediate45, + intermediate46, + intermediate47, + intermediate48, + intermediate49, + intermediate50, + intermediate51, + intermediate52, + intermediate53, + intermediate54, + intermediate55, + intermediate56, + intermediate57, + intermediate58, + intermediate59, + intermediate60, + intermediate61, + intermediate62, + intermediate63, + intermediate64, + intermediate65, + intermediate66, + intermediate67, + intermediate68, + intermediate69, + intermediate70, + intermediate71, + intermediate72, + intermediate73, + intermediate74, + intermediate75, + intermediate76, + intermediate77, + intermediate78, + intermediate79, + intermediate80, + intermediate81, + intermediate82, + intermediate83, + intermediate84, + intermediate85, + intermediate86, + intermediate87, + intermediate88, + intermediate89, + intermediate90, + intermediate91, + intermediate92, + intermediate93, + intermediate94, + intermediate95, + intermediate96, + intermediate97, + intermediate98, + intermediate99, + intermediate100, + intermediate101, + intermediate102, + intermediate103, + intermediate104, + intermediate105, + intermediate106, + intermediate107, + intermediate108, + intermediate109, + intermediate110, + intermediate111, + intermediate112, + intermediate113, + intermediate114, + intermediate115, + intermediate116, + intermediate117, + intermediate118, + intermediate119, + ] +} + +pub fn intermediate7( + trace_1_column_11_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_69_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_69_offset_0) - (trace_1_column_11_offset_0) +} + +pub fn intermediate8( + trace_1_column_12_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_70_offset_0) + - (trace_1_column_12_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate9( + trace_1_column_13_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_71_offset_0) + - (trace_1_column_13_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate10( + trace_1_column_14_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_72_offset_0) + - (trace_1_column_14_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate11( + trace_1_column_15_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_73_offset_0) + - (trace_1_column_15_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate12( + trace_1_column_16_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_74_offset_0) + - (trace_1_column_16_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate13( + trace_1_column_17_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_75_offset_0) + - (trace_1_column_17_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate14( + trace_1_column_18_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_76_offset_0) + - (trace_1_column_18_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate15( + trace_1_column_19_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_77_offset_0) + - (trace_1_column_19_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate16( + trace_1_column_20_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_78_offset_0) + - (trace_1_column_20_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate17( + trace_1_column_21_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_79_offset_0) + - (trace_1_column_21_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate18( + trace_1_column_22_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_80_offset_0) + - (trace_1_column_22_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate19( + trace_1_column_23_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_81_offset_0) + - (trace_1_column_23_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate20( + trace_1_column_24_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_82_offset_0) + - (trace_1_column_24_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate21( + trace_1_column_25_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_83_offset_0) + - (trace_1_column_25_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate22( + trace_1_column_26_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_84_offset_0) + - (trace_1_column_26_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate23( + trace_1_column_27_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_85_offset_0) + - (trace_1_column_27_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate24( + trace_1_column_28_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_86_offset_0) + - (trace_1_column_28_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate25( + trace_1_column_29_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_87_offset_0) + - (trace_1_column_29_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate26( + trace_1_column_30_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_88_offset_0) + - (trace_1_column_30_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate27( + trace_1_column_31_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_89_offset_0) + - (trace_1_column_31_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate28( + trace_1_column_32_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_90_offset_0) + - (trace_1_column_32_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate29( + trace_1_column_33_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_91_offset_0) + - (trace_1_column_33_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate30( + trace_1_column_34_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_92_offset_0) + - (trace_1_column_34_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate31( + trace_1_column_35_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_93_offset_0) + - (trace_1_column_35_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate32( + trace_1_column_36_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_94_offset_0) + - (trace_1_column_36_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate33( + trace_1_column_37_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_95_offset_0) + - (trace_1_column_37_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate34( + trace_1_column_38_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_40_offset_0) * (trace_1_column_96_offset_0) + - (trace_1_column_38_offset_0) + + (trace_1_column_41_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_70_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_69_offset_0) +} + +pub fn intermediate35( + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_41_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_42_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_71_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_70_offset_0) +} + +pub fn intermediate36( + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_42_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_43_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_72_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_71_offset_0) +} + +pub fn intermediate37( + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_43_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_44_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_73_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_72_offset_0) +} + +pub fn intermediate38( + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_44_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_45_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_74_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_73_offset_0) +} + +pub fn intermediate39( + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_45_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_46_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_75_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_74_offset_0) +} + +pub fn intermediate40( + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_46_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_47_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_76_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_75_offset_0) +} + +pub fn intermediate41( + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_47_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_48_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_77_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_76_offset_0) +} + +pub fn intermediate42( + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_48_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_49_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_78_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_77_offset_0) +} + +pub fn intermediate43( + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_49_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_50_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_79_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_78_offset_0) +} + +pub fn intermediate44( + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_50_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_51_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_80_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_79_offset_0) +} + +pub fn intermediate45( + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_51_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_52_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_81_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_80_offset_0) +} + +pub fn intermediate46( + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_52_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_53_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_82_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_81_offset_0) +} + +pub fn intermediate47( + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_53_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_54_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_83_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_82_offset_0) +} + +pub fn intermediate48( + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_54_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_55_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_84_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_83_offset_0) +} + +pub fn intermediate49( + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_55_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_56_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_85_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_84_offset_0) +} + +pub fn intermediate50( + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_56_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_57_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_86_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_85_offset_0) +} + +pub fn intermediate51( + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_57_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_58_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_87_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_86_offset_0) +} + +pub fn intermediate52( + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_58_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_59_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_88_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_87_offset_0) +} + +pub fn intermediate53( + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_59_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_60_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_89_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_88_offset_0) +} + +pub fn intermediate54( + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_60_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_61_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_90_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_89_offset_0) +} + +pub fn intermediate55( + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_61_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_62_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_91_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_90_offset_0) +} + +pub fn intermediate56( + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_62_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_63_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_92_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_91_offset_0) +} + +pub fn intermediate57( + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_63_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_64_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_93_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_92_offset_0) +} + +pub fn intermediate58( + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_64_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_65_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_94_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_93_offset_0) +} + +pub fn intermediate59( + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_65_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_66_offset_0) * (trace_1_column_95_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_94_offset_0) +} + +pub fn intermediate60( + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (trace_1_column_66_offset_0) * (trace_1_column_96_offset_0) + + (trace_1_column_67_offset_0) * (trace_1_column_95_offset_0) +} + +pub fn intermediate61(trace_1_column_67_offset_0: QM31, trace_1_column_96_offset_0: QM31) -> QM31 { + (trace_1_column_67_offset_0) * (trace_1_column_96_offset_0) +} + +pub fn intermediate62(intermediate28: QM31, intermediate56: QM31, intermediate7: QM31) -> QM31 { + (m31(32).into()) * (intermediate7) + - ((m31(4).into()) * (intermediate28)) + + (m31(8).into()) * (intermediate56) +} + +pub fn intermediate63( + intermediate29: QM31, intermediate57: QM31, intermediate7: QM31, intermediate8: QM31, +) -> QM31 { + intermediate7 + + (m31(32).into()) * (intermediate8) + - ((m31(4).into()) * (intermediate29)) + + (m31(8).into()) * (intermediate57) +} + +pub fn intermediate64( + intermediate30: QM31, intermediate58: QM31, intermediate8: QM31, intermediate9: QM31, +) -> QM31 { + intermediate8 + + (m31(32).into()) * (intermediate9) + - ((m31(4).into()) * (intermediate30)) + + (m31(8).into()) * (intermediate58) +} + +pub fn intermediate65( + intermediate10: QM31, intermediate31: QM31, intermediate59: QM31, intermediate9: QM31, +) -> QM31 { + intermediate9 + + (m31(32).into()) * (intermediate10) + - ((m31(4).into()) * (intermediate31)) + + (m31(8).into()) * (intermediate59) +} + +pub fn intermediate66( + intermediate10: QM31, intermediate11: QM31, intermediate32: QM31, intermediate60: QM31, +) -> QM31 { + intermediate10 + + (m31(32).into()) * (intermediate11) + - ((m31(4).into()) * (intermediate32)) + + (m31(8).into()) * (intermediate60) +} + +pub fn intermediate67( + intermediate11: QM31, intermediate12: QM31, intermediate33: QM31, intermediate61: QM31, +) -> QM31 { + intermediate11 + + (m31(32).into()) * (intermediate12) + - ((m31(4).into()) * (intermediate33)) + + (m31(8).into()) * (intermediate61) +} + +pub fn intermediate68(intermediate12: QM31, intermediate13: QM31, intermediate34: QM31) -> QM31 { + intermediate12 + (m31(32).into()) * (intermediate13) - ((m31(4).into()) * (intermediate34)) +} + +pub fn intermediate69( + intermediate13: QM31, intermediate14: QM31, intermediate35: QM31, intermediate7: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate7) + + intermediate13 + + (m31(32).into()) * (intermediate14) + - ((m31(4).into()) * (intermediate35)) +} + +pub fn intermediate70( + intermediate14: QM31, intermediate15: QM31, intermediate36: QM31, intermediate8: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate8) + + intermediate14 + + (m31(32).into()) * (intermediate15) + - ((m31(4).into()) * (intermediate36)) +} + +pub fn intermediate71( + intermediate15: QM31, intermediate16: QM31, intermediate37: QM31, intermediate9: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate9) + + intermediate15 + + (m31(32).into()) * (intermediate16) + - ((m31(4).into()) * (intermediate37)) +} + +pub fn intermediate72( + intermediate10: QM31, intermediate16: QM31, intermediate17: QM31, intermediate38: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate10) + + intermediate16 + + (m31(32).into()) * (intermediate17) + - ((m31(4).into()) * (intermediate38)) +} + +pub fn intermediate73( + intermediate11: QM31, intermediate17: QM31, intermediate18: QM31, intermediate39: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate11) + + intermediate17 + + (m31(32).into()) * (intermediate18) + - ((m31(4).into()) * (intermediate39)) +} + +pub fn intermediate74( + intermediate12: QM31, intermediate18: QM31, intermediate19: QM31, intermediate40: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate12) + + intermediate18 + + (m31(32).into()) * (intermediate19) + - ((m31(4).into()) * (intermediate40)) +} + +pub fn intermediate75( + intermediate13: QM31, intermediate19: QM31, intermediate20: QM31, intermediate41: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate13) + + intermediate19 + + (m31(32).into()) * (intermediate20) + - ((m31(4).into()) * (intermediate41)) +} + +pub fn intermediate76( + intermediate14: QM31, intermediate20: QM31, intermediate21: QM31, intermediate42: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate14) + + intermediate20 + + (m31(32).into()) * (intermediate21) + - ((m31(4).into()) * (intermediate42)) +} + +pub fn intermediate77( + intermediate15: QM31, intermediate21: QM31, intermediate22: QM31, intermediate43: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate15) + + intermediate21 + + (m31(32).into()) * (intermediate22) + - ((m31(4).into()) * (intermediate43)) +} + +pub fn intermediate78( + intermediate16: QM31, intermediate22: QM31, intermediate23: QM31, intermediate44: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate16) + + intermediate22 + + (m31(32).into()) * (intermediate23) + - ((m31(4).into()) * (intermediate44)) +} + +pub fn intermediate79( + intermediate17: QM31, intermediate23: QM31, intermediate24: QM31, intermediate45: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate17) + + intermediate23 + + (m31(32).into()) * (intermediate24) + - ((m31(4).into()) * (intermediate45)) +} + +pub fn intermediate80( + intermediate18: QM31, intermediate24: QM31, intermediate25: QM31, intermediate46: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate18) + + intermediate24 + + (m31(32).into()) * (intermediate25) + - ((m31(4).into()) * (intermediate46)) +} + +pub fn intermediate81( + intermediate19: QM31, intermediate25: QM31, intermediate26: QM31, intermediate47: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate19) + + intermediate25 + + (m31(32).into()) * (intermediate26) + - ((m31(4).into()) * (intermediate47)) +} + +pub fn intermediate82( + intermediate20: QM31, intermediate26: QM31, intermediate27: QM31, intermediate48: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate20) + + intermediate26 + + (m31(32).into()) * (intermediate27) + - ((m31(4).into()) * (intermediate48)) +} + +pub fn intermediate83( + intermediate21: QM31, intermediate27: QM31, intermediate49: QM31, intermediate56: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate21) + + intermediate27 + - ((m31(4).into()) * (intermediate49)) + + (m31(64).into()) * (intermediate56) +} + +pub fn intermediate84( + intermediate22: QM31, intermediate50: QM31, intermediate56: QM31, intermediate57: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate22) + - ((m31(4).into()) * (intermediate50)) + + (m31(2).into()) * (intermediate56) + + (m31(64).into()) * (intermediate57) +} + +pub fn intermediate85( + intermediate23: QM31, intermediate51: QM31, intermediate57: QM31, intermediate58: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate23) + - ((m31(4).into()) * (intermediate51)) + + (m31(2).into()) * (intermediate57) + + (m31(64).into()) * (intermediate58) +} + +pub fn intermediate86( + intermediate24: QM31, intermediate52: QM31, intermediate58: QM31, intermediate59: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate24) + - ((m31(4).into()) * (intermediate52)) + + (m31(2).into()) * (intermediate58) + + (m31(64).into()) * (intermediate59) +} + +pub fn intermediate87( + intermediate25: QM31, intermediate53: QM31, intermediate59: QM31, intermediate60: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate25) + - ((m31(4).into()) * (intermediate53)) + + (m31(2).into()) * (intermediate59) + + (m31(64).into()) * (intermediate60) +} + +pub fn intermediate88( + intermediate26: QM31, intermediate54: QM31, intermediate60: QM31, intermediate61: QM31, +) -> QM31 { + (m31(2).into()) * (intermediate26) + - ((m31(4).into()) * (intermediate54)) + + (m31(2).into()) * (intermediate60) + + (m31(64).into()) * (intermediate61) +} + +pub fn intermediate89(intermediate27: QM31, intermediate55: QM31, intermediate61: QM31) -> QM31 { + (m31(2).into()) * (intermediate27) + - ((m31(4).into()) * (intermediate55)) + + (m31(2).into()) * (intermediate61) +} +pub fn intermediate0( + VerifyInstruction_alpha0: QM31, + VerifyInstruction_alpha1: QM31, + VerifyInstruction_alpha10: QM31, + VerifyInstruction_alpha15: QM31, + VerifyInstruction_alpha18: QM31, + VerifyInstruction_alpha2: QM31, + VerifyInstruction_alpha3: QM31, + VerifyInstruction_alpha4: QM31, + VerifyInstruction_alpha5: QM31, + VerifyInstruction_alpha6: QM31, + VerifyInstruction_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_5_offset_0: QM31, + trace_1_column_6_offset_0: QM31, + trace_1_column_7_offset_0: QM31, +) -> QM31 { + (VerifyInstruction_alpha0) * (trace_1_column_0_offset_0) + + (VerifyInstruction_alpha1) * (trace_1_column_3_offset_0) + + (VerifyInstruction_alpha2) * (trace_1_column_4_offset_0) + + (VerifyInstruction_alpha3) * (qm31(32769, 0, 0, 0)) + + (VerifyInstruction_alpha4) * (trace_1_column_5_offset_0) + + (VerifyInstruction_alpha5) * (trace_1_column_6_offset_0) + + VerifyInstruction_alpha6 + + VerifyInstruction_alpha10 + + (VerifyInstruction_alpha15) * (trace_1_column_7_offset_0) + + VerifyInstruction_alpha18 + - (VerifyInstruction_z) +} + +pub fn intermediate1( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_3_offset_0: QM31, + trace_1_column_8_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_8_offset_0 + trace_1_column_3_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_10_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate2( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_10_offset_0: QM31, + trace_1_column_11_offset_0: QM31, + trace_1_column_12_offset_0: QM31, + trace_1_column_13_offset_0: QM31, + trace_1_column_14_offset_0: QM31, + trace_1_column_15_offset_0: QM31, + trace_1_column_16_offset_0: QM31, + trace_1_column_17_offset_0: QM31, + trace_1_column_18_offset_0: QM31, + trace_1_column_19_offset_0: QM31, + trace_1_column_20_offset_0: QM31, + trace_1_column_21_offset_0: QM31, + trace_1_column_22_offset_0: QM31, + trace_1_column_23_offset_0: QM31, + trace_1_column_24_offset_0: QM31, + trace_1_column_25_offset_0: QM31, + trace_1_column_26_offset_0: QM31, + trace_1_column_27_offset_0: QM31, + trace_1_column_28_offset_0: QM31, + trace_1_column_29_offset_0: QM31, + trace_1_column_30_offset_0: QM31, + trace_1_column_31_offset_0: QM31, + trace_1_column_32_offset_0: QM31, + trace_1_column_33_offset_0: QM31, + trace_1_column_34_offset_0: QM31, + trace_1_column_35_offset_0: QM31, + trace_1_column_36_offset_0: QM31, + trace_1_column_37_offset_0: QM31, + trace_1_column_38_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_10_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_11_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_12_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_13_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_14_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_15_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_16_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_17_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_18_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_19_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_20_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_21_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_22_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_23_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_24_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_25_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_26_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_27_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_28_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_29_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_30_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_31_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_32_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_33_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_34_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_35_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_36_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_37_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_38_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate3( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_4_offset_0: QM31, + trace_1_column_9_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) + * (trace_1_column_9_offset_0 + trace_1_column_4_offset_0 - (m31(32768).into())) + + (MemoryAddressToId_alpha1) * (trace_1_column_39_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate4( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_39_offset_0: QM31, + trace_1_column_40_offset_0: QM31, + trace_1_column_41_offset_0: QM31, + trace_1_column_42_offset_0: QM31, + trace_1_column_43_offset_0: QM31, + trace_1_column_44_offset_0: QM31, + trace_1_column_45_offset_0: QM31, + trace_1_column_46_offset_0: QM31, + trace_1_column_47_offset_0: QM31, + trace_1_column_48_offset_0: QM31, + trace_1_column_49_offset_0: QM31, + trace_1_column_50_offset_0: QM31, + trace_1_column_51_offset_0: QM31, + trace_1_column_52_offset_0: QM31, + trace_1_column_53_offset_0: QM31, + trace_1_column_54_offset_0: QM31, + trace_1_column_55_offset_0: QM31, + trace_1_column_56_offset_0: QM31, + trace_1_column_57_offset_0: QM31, + trace_1_column_58_offset_0: QM31, + trace_1_column_59_offset_0: QM31, + trace_1_column_60_offset_0: QM31, + trace_1_column_61_offset_0: QM31, + trace_1_column_62_offset_0: QM31, + trace_1_column_63_offset_0: QM31, + trace_1_column_64_offset_0: QM31, + trace_1_column_65_offset_0: QM31, + trace_1_column_66_offset_0: QM31, + trace_1_column_67_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_39_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_40_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_41_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_42_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_43_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_44_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_45_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_46_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_47_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_48_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_49_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_50_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_51_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_52_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_53_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_54_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_55_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_56_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_57_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_58_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_59_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_60_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_61_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_62_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_63_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_64_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_65_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_66_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_67_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate5( + MemoryAddressToId_alpha0: QM31, + MemoryAddressToId_alpha1: QM31, + MemoryAddressToId_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_68_offset_0: QM31, +) -> QM31 { + (MemoryAddressToId_alpha0) * (trace_1_column_0_offset_0 + m31(1).into()) + + (MemoryAddressToId_alpha1) * (trace_1_column_68_offset_0) + - (MemoryAddressToId_z) +} + +pub fn intermediate6( + MemoryIdToBig_alpha0: QM31, + MemoryIdToBig_alpha1: QM31, + MemoryIdToBig_alpha10: QM31, + MemoryIdToBig_alpha11: QM31, + MemoryIdToBig_alpha12: QM31, + MemoryIdToBig_alpha13: QM31, + MemoryIdToBig_alpha14: QM31, + MemoryIdToBig_alpha15: QM31, + MemoryIdToBig_alpha16: QM31, + MemoryIdToBig_alpha17: QM31, + MemoryIdToBig_alpha18: QM31, + MemoryIdToBig_alpha19: QM31, + MemoryIdToBig_alpha2: QM31, + MemoryIdToBig_alpha20: QM31, + MemoryIdToBig_alpha21: QM31, + MemoryIdToBig_alpha22: QM31, + MemoryIdToBig_alpha23: QM31, + MemoryIdToBig_alpha24: QM31, + MemoryIdToBig_alpha25: QM31, + MemoryIdToBig_alpha26: QM31, + MemoryIdToBig_alpha27: QM31, + MemoryIdToBig_alpha28: QM31, + MemoryIdToBig_alpha3: QM31, + MemoryIdToBig_alpha4: QM31, + MemoryIdToBig_alpha5: QM31, + MemoryIdToBig_alpha6: QM31, + MemoryIdToBig_alpha7: QM31, + MemoryIdToBig_alpha8: QM31, + MemoryIdToBig_alpha9: QM31, + MemoryIdToBig_z: QM31, + trace_1_column_68_offset_0: QM31, + trace_1_column_69_offset_0: QM31, + trace_1_column_70_offset_0: QM31, + trace_1_column_71_offset_0: QM31, + trace_1_column_72_offset_0: QM31, + trace_1_column_73_offset_0: QM31, + trace_1_column_74_offset_0: QM31, + trace_1_column_75_offset_0: QM31, + trace_1_column_76_offset_0: QM31, + trace_1_column_77_offset_0: QM31, + trace_1_column_78_offset_0: QM31, + trace_1_column_79_offset_0: QM31, + trace_1_column_80_offset_0: QM31, + trace_1_column_81_offset_0: QM31, + trace_1_column_82_offset_0: QM31, + trace_1_column_83_offset_0: QM31, + trace_1_column_84_offset_0: QM31, + trace_1_column_85_offset_0: QM31, + trace_1_column_86_offset_0: QM31, + trace_1_column_87_offset_0: QM31, + trace_1_column_88_offset_0: QM31, + trace_1_column_89_offset_0: QM31, + trace_1_column_90_offset_0: QM31, + trace_1_column_91_offset_0: QM31, + trace_1_column_92_offset_0: QM31, + trace_1_column_93_offset_0: QM31, + trace_1_column_94_offset_0: QM31, + trace_1_column_95_offset_0: QM31, + trace_1_column_96_offset_0: QM31, +) -> QM31 { + (MemoryIdToBig_alpha0) * (trace_1_column_68_offset_0) + + (MemoryIdToBig_alpha1) * (trace_1_column_69_offset_0) + + (MemoryIdToBig_alpha2) * (trace_1_column_70_offset_0) + + (MemoryIdToBig_alpha3) * (trace_1_column_71_offset_0) + + (MemoryIdToBig_alpha4) * (trace_1_column_72_offset_0) + + (MemoryIdToBig_alpha5) * (trace_1_column_73_offset_0) + + (MemoryIdToBig_alpha6) * (trace_1_column_74_offset_0) + + (MemoryIdToBig_alpha7) * (trace_1_column_75_offset_0) + + (MemoryIdToBig_alpha8) * (trace_1_column_76_offset_0) + + (MemoryIdToBig_alpha9) * (trace_1_column_77_offset_0) + + (MemoryIdToBig_alpha10) * (trace_1_column_78_offset_0) + + (MemoryIdToBig_alpha11) * (trace_1_column_79_offset_0) + + (MemoryIdToBig_alpha12) * (trace_1_column_80_offset_0) + + (MemoryIdToBig_alpha13) * (trace_1_column_81_offset_0) + + (MemoryIdToBig_alpha14) * (trace_1_column_82_offset_0) + + (MemoryIdToBig_alpha15) * (trace_1_column_83_offset_0) + + (MemoryIdToBig_alpha16) * (trace_1_column_84_offset_0) + + (MemoryIdToBig_alpha17) * (trace_1_column_85_offset_0) + + (MemoryIdToBig_alpha18) * (trace_1_column_86_offset_0) + + (MemoryIdToBig_alpha19) * (trace_1_column_87_offset_0) + + (MemoryIdToBig_alpha20) * (trace_1_column_88_offset_0) + + (MemoryIdToBig_alpha21) * (trace_1_column_89_offset_0) + + (MemoryIdToBig_alpha22) * (trace_1_column_90_offset_0) + + (MemoryIdToBig_alpha23) * (trace_1_column_91_offset_0) + + (MemoryIdToBig_alpha24) * (trace_1_column_92_offset_0) + + (MemoryIdToBig_alpha25) * (trace_1_column_93_offset_0) + + (MemoryIdToBig_alpha26) * (trace_1_column_94_offset_0) + + (MemoryIdToBig_alpha27) * (trace_1_column_95_offset_0) + + (MemoryIdToBig_alpha28) * (trace_1_column_96_offset_0) + - (MemoryIdToBig_z) +} + +pub fn intermediate90( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_97_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_97_offset_0 + m31(262144).into()) - (RangeCheck_19_z) +} + +pub fn intermediate91( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_98_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_98_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate92( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_99_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_99_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate93( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_100_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_100_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate94( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_101_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_101_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate95( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_102_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_102_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate96( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_103_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_103_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate97( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_104_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_104_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate98( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_105_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_105_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate99( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_106_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_106_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate100( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_107_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_107_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate101( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_108_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_108_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate102( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_109_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_109_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate103( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_110_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_110_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate104( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_111_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_111_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate105( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_112_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_112_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate106( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_113_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_113_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate107( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_114_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_114_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate108( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_115_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_115_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate109( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_116_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_116_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate110( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_117_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_117_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate111( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_118_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_118_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate112( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_119_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_119_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate113( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_120_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_120_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate114( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_121_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_121_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate115( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_122_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_122_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate116( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_123_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_123_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate117( + RangeCheck_19_alpha0: QM31, RangeCheck_19_z: QM31, trace_1_column_124_offset_0: QM31, +) -> QM31 { + (RangeCheck_19_alpha0) * (trace_1_column_124_offset_0 + m31(131072).into()) - (RangeCheck_19_z) +} + +pub fn intermediate118( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, +) -> QM31 { + (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) +} + +pub fn intermediate119( + Opcodes_alpha0: QM31, + Opcodes_alpha1: QM31, + Opcodes_alpha2: QM31, + Opcodes_z: QM31, + trace_1_column_0_offset_0: QM31, + trace_1_column_1_offset_0: QM31, + trace_1_column_2_offset_0: QM31, + trace_1_column_7_offset_0: QM31, +) -> QM31 { + (Opcodes_alpha0) * (trace_1_column_0_offset_0 + m31(2).into()) + + (Opcodes_alpha1) * (trace_1_column_1_offset_0 + trace_1_column_7_offset_0) + + (Opcodes_alpha2) * (trace_1_column_2_offset_0) + - (Opcodes_z) +} + diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/range_check_vector/rc_19_constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/range_check_vector/rc_19_constraints.cairo index 209b1380c..e928d3010 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/components/range_check_vector/rc_19_constraints.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/range_check_vector/rc_19_constraints.cairo @@ -1,12 +1,12 @@ use stwo_constraint_framework::{ PreprocessedColumn, PreprocessedColumnSet, PreprocessedColumnSetImpl, }; -use stwo_verifier_core::{ColumnSpan, ColumnArray}; use stwo_verifier_core::circle::{ CirclePoint, CirclePointIndex, CirclePointIndexImpl, CirclePointQM31AddCirclePointM31Impl, }; -use stwo_verifier_core::fields::m31::{m31, M31}; +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( diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/range_check_vector/rc_4_3_constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/range_check_vector/rc_4_3_constraints.cairo index 376dca643..32c4dfec0 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/components/range_check_vector/rc_4_3_constraints.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/range_check_vector/rc_4_3_constraints.cairo @@ -1,12 +1,12 @@ use stwo_constraint_framework::{ PreprocessedColumn, PreprocessedColumnSet, PreprocessedColumnSetImpl, }; -use stwo_verifier_core::{ColumnSpan, ColumnArray}; use stwo_verifier_core::circle::{ CirclePoint, CirclePointIndex, CirclePointIndexImpl, CirclePointQM31AddCirclePointM31Impl, }; -use stwo_verifier_core::fields::m31::{m31, M31}; +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( diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/range_check_vector/rc_7_2_5_constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/range_check_vector/rc_7_2_5_constraints.cairo index aece7895e..80dfb15e7 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/components/range_check_vector/rc_7_2_5_constraints.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/range_check_vector/rc_7_2_5_constraints.cairo @@ -1,12 +1,12 @@ use stwo_constraint_framework::{ PreprocessedColumn, PreprocessedColumnSet, PreprocessedColumnSetImpl, }; -use stwo_verifier_core::{ColumnSpan, ColumnArray}; use stwo_verifier_core::circle::{ CirclePoint, CirclePointIndex, CirclePointIndexImpl, CirclePointQM31AddCirclePointM31Impl, }; -use stwo_verifier_core::fields::m31::{m31, M31}; +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( diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/range_check_vector/rc_9_9_constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/range_check_vector/rc_9_9_constraints.cairo index f7c8a413d..f673c2157 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/components/range_check_vector/rc_9_9_constraints.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/range_check_vector/rc_9_9_constraints.cairo @@ -1,12 +1,12 @@ use stwo_constraint_framework::{ PreprocessedColumn, PreprocessedColumnSet, PreprocessedColumnSetImpl, }; -use stwo_verifier_core::{ColumnSpan, ColumnArray}; use stwo_verifier_core::circle::{ CirclePoint, CirclePointIndex, CirclePointIndexImpl, CirclePointQM31AddCirclePointM31Impl, }; -use stwo_verifier_core::fields::m31::{m31, M31}; +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( diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/ret_opcode.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/ret_opcode.cairo index a93edef10..ba453b8f8 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/components/ret_opcode.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/ret_opcode.cairo @@ -1,15 +1,15 @@ use crate::components::CairoComponent; use crate::utils::U32Impl; use stwo_constraint_framework::{ - PreprocessedColumnSet, PreprocessedColumn, PreprocessedMaskValues, PreprocessedMaskValuesImpl, + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, }; use stwo_verifier_core::channel::{Channel, ChannelImpl}; use stwo_verifier_core::circle::CirclePoint; +use stwo_verifier_core::fields::Invertible; 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 stwo_verifier_core::fields::Invertible; mod constraints; diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/ret_opcode/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/ret_opcode/constraints.cairo index 306cf7627..8d7d767b7 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/components/ret_opcode/constraints.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/ret_opcode/constraints.cairo @@ -1,12 +1,12 @@ use stwo_constraint_framework::{ PreprocessedColumn, PreprocessedColumnSet, PreprocessedColumnSetImpl, }; -use stwo_verifier_core::{ColumnSpan, ColumnArray}; use stwo_verifier_core::circle::{ CirclePoint, CirclePointIndex, CirclePointIndexImpl, CirclePointQM31AddCirclePointM31Impl, }; -use stwo_verifier_core::fields::m31::{m31, M31}; +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( diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/verify_instruction.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/verify_instruction.cairo index 9d9a8be53..3af2a49a0 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/components/verify_instruction.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/verify_instruction.cairo @@ -1,5 +1,7 @@ +use crate::components::CairoComponent; +use crate::utils::U32Impl; use stwo_constraint_framework::{ - PreprocessedColumnSet, PreprocessedColumn, PreprocessedMaskValues, PreprocessedMaskValuesImpl, + PreprocessedColumn, PreprocessedColumnSet, PreprocessedMaskValues, PreprocessedMaskValuesImpl, }; use stwo_verifier_core::channel::{Channel, ChannelImpl}; use stwo_verifier_core::circle::CirclePoint; @@ -7,10 +9,8 @@ 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 crate::components::CairoComponent; -use crate::utils::U32Impl; -use super::super::utils::UsizeExTrait; use super::super::Invertible; +use super::super::utils::UsizeExTrait; mod constraints; diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/verify_instruction/constraints.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/verify_instruction/constraints.cairo index 1166fa1fb..7039c6de1 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/components/verify_instruction/constraints.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/verify_instruction/constraints.cairo @@ -1,12 +1,12 @@ use stwo_constraint_framework::{ PreprocessedColumn, PreprocessedColumnSet, PreprocessedColumnSetImpl, }; -use stwo_verifier_core::{ColumnSpan, ColumnArray}; use stwo_verifier_core::circle::{ CirclePoint, CirclePointIndex, CirclePointIndexImpl, CirclePointQM31AddCirclePointM31Impl, }; -use stwo_verifier_core::fields::m31::{m31, M31}; +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( diff --git a/stwo_cairo_verifier/crates/cairo_air/src/lib.cairo b/stwo_cairo_verifier/crates/cairo_air/src/lib.cairo index aeb983c93..20688cc22 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/lib.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/lib.cairo @@ -2,10 +2,6 @@ use components::CairoComponent; use components::memory_address_to_id::{ ClaimImpl as AddrToIdClaimImpl, InteractionClaimImpl as AddrToIdInteractionClaimImpl, }; -use components::generic_opcode::{ - ClaimImpl as Generic_OpcodeClaimImpl, - InteractionClaimImpl as Generic_OpcodeInteractionClaimImpl, -}; use components::memory_id_to_big::{ ClaimImpl as IdToF252ClaimImpl, InteractionClaimImpl as IdToF252InteractionClaimImpl, }; @@ -264,7 +260,7 @@ pub struct OpcodeInteractionClaim { call_f_f: Array::, call_f_t: Array::, call_t_f: Array::, - generic: Array::, + generic: Array::, jnz_f_f: Array::, jnz_f_t: Array::, jnz_t_f: Array::, @@ -281,10 +277,6 @@ pub struct OpcodeInteractionClaim { #[generate_trait] impl OpcodeInteractionClaimImpl of OpcodeInteractionClaimTrait { fn mix_into(self: @OpcodeInteractionClaim, ref channel: Channel) { - for interaction_claim in self.generic.span() { - interaction_claim.mix_into(ref channel); - }; - for interaction_claim in self.ret.span() { interaction_claim.mix_into(ref channel); }; @@ -293,10 +285,6 @@ impl OpcodeInteractionClaimImpl of OpcodeInteractionClaimTrait { fn sum(self: @OpcodeInteractionClaim) -> QM31 { let mut sum = QM31Zero::zero(); - for interaction_claim in self.generic.span() { - sum += *interaction_claim.claimed_sum; - }; - for interaction_claim in self.ret.span() { sum += *interaction_claim.claimed_sum; }; @@ -372,7 +360,7 @@ pub struct OpcodeClaim { pub call_f_f: Array::, pub call_f_t: Array::, pub call_t_f: Array::, - pub generic: Array::, + pub generic: Array::, pub jnz_f_f: Array::, pub jnz_f_t: Array::, pub jnz_t_f: Array::, @@ -389,10 +377,6 @@ pub struct OpcodeClaim { #[generate_trait] impl OpcodeClaimImpl of OpcodeClaimTrait { fn mix_into(self: @OpcodeClaim, ref channel: Channel) { - for generic_opcode_claim in self.generic.span() { - generic_opcode_claim.mix_into(ref channel); - }; - for ret_opcode_claim in self.ret.span() { ret_opcode_claim.mix_into(ref channel); }; @@ -405,10 +389,6 @@ impl OpcodeClaimImpl of OpcodeClaimTrait { log_sizes.append(ret_opcode_claim.log_sizes()); }; - for generic_opcode_claim in self.generic.span() { - log_sizes.append(generic_opcode_claim.log_sizes()); - }; - utils::tree_array_concat_cols(log_sizes) } } @@ -755,7 +735,7 @@ fn preprocessed_trace_mask_points( #[derive(Drop)] pub struct OpcodeComponents { - generic: Array, + generic: Array, ret: Array, } @@ -802,16 +782,6 @@ impl OpcodeComponentsImpl of OpcodeComponentsTrait { ref interaction_trace_mask_points: Array>>, point: CirclePoint, ) { - for component in self.generic.span() { - component - .mask_points( - ref preprocessed_column_set, - ref trace_mask_points, - ref interaction_trace_mask_points, - point, - ); - }; - for component in self.ret.span() { component .mask_points( @@ -826,10 +796,6 @@ impl OpcodeComponentsImpl of OpcodeComponentsTrait { fn max_constraint_log_degree_bound(self: @OpcodeComponents) -> u32 { let mut max_degree = 0; - for component in self.generic.span() { - max_degree = core::cmp::max(max_degree, component.max_constraint_log_degree_bound()); - }; - for component in self.ret.span() { max_degree = core::cmp::max(max_degree, component.max_constraint_log_degree_bound()); }; @@ -846,18 +812,6 @@ impl OpcodeComponentsImpl of OpcodeComponentsTrait { random_coeff: QM31, point: CirclePoint, ) { - for component in self.generic.span() { - component - .evaluate_constraints_at_point( - ref sum, - ref preprocessed_mask_values, - ref trace_mask_values, - ref interaction_trace_mask_values, - random_coeff, - point, - ); - }; - for component in self.ret.span() { component .evaluate_constraints_at_point(