From a7ba210e33cd4fa66fee9067236a099c972b4063 Mon Sep 17 00:00:00 2001 From: Stav Beno Date: Wed, 22 Oct 2025 17:26:02 +0300 Subject: [PATCH] fix air audit 3, update constraint in the generic opcode --- .../constraints_regression_test_values.rs | 2 +- .../components/subroutines/eval_operands.rs | 366 ++++++++---------- .../crates/common/casm_registry.json | 2 +- .../src/witness/components/generic_opcode.rs | 60 +-- .../src/components/sample_evaluations.cairo | 6 +- .../subroutines/eval_operands.cairo | 284 +++++++------- 6 files changed, 344 insertions(+), 376 deletions(-) diff --git a/stwo_cairo_prover/crates/cairo-air/src/components/constraints_regression_test_values.rs b/stwo_cairo_prover/crates/cairo-air/src/components/constraints_regression_test_values.rs index a18970735..7b50f1295 100644 --- a/stwo_cairo_prover/crates/cairo-air/src/components/constraints_regression_test_values.rs +++ b/stwo_cairo_prover/crates/cairo-air/src/components/constraints_regression_test_values.rs @@ -22,7 +22,7 @@ pub const BLAKE_ROUND: QM31 = qm31!(689010793, 1714718853, 1598356108, 186208473 pub const CALL_OPCODE_REL_IMM: QM31 = qm31!(1058958974, 291699845, 1067131259, 1385778936); pub const CALL_OPCODE: QM31 = qm31!(753588549, 110829970, 382462386, 1929508194); pub const CUBE_252: QM31 = qm31!(2138805547, 791862161, 1496263445, 1432185054); -pub const GENERIC_OPCODE: QM31 = qm31!(303993811, 1910710345, 1597637798, 1484648346); +pub const GENERIC_OPCODE: QM31 = qm31!(1897142610, 70087557, 1948231093, 404344144); pub const JNZ_OPCODE_TAKEN: QM31 = qm31!(863863896, 1799155008, 2087434855, 1577176263); pub const JNZ_OPCODE: QM31 = qm31!(527000951, 699354015, 1174877270, 2099424613); pub const JUMP_OPCODE_DOUBLE_DEREF: QM31 = qm31!(1104346987, 1319193194, 162676979, 376017635); diff --git a/stwo_cairo_prover/crates/cairo-air/src/components/subroutines/eval_operands.rs b/stwo_cairo_prover/crates/cairo-air/src/components/subroutines/eval_operands.rs index 7e5a4e41a..6342aaa2e 100644 --- a/stwo_cairo_prover/crates/cairo-air/src/components/subroutines/eval_operands.rs +++ b/stwo_cairo_prover/crates/cairo-air/src/components/subroutines/eval_operands.rs @@ -639,259 +639,229 @@ impl EvalOperands { range_check_20_h_lookup_elements, eval, ); - let res_constrained_tmp_3172c_54 = - eval.add_intermediate((M31_1.clone() - eval_operands_input_pc_update_jnz.clone())); + // constrain limb 0 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_0_col176.clone() - op1_limb_0_col63.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_0_col176.clone() - add_res_limb_0_col91.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_0_col176.clone() - mul_res_limb_0_col120.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_0_col91.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_0_col120.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_0_col63.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_0_col176.clone())), ); + // constrain limb 1 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_1_col177.clone() - op1_limb_1_col64.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_1_col177.clone() - add_res_limb_1_col92.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_1_col177.clone() - mul_res_limb_1_col121.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_1_col92.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_1_col121.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_1_col64.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_1_col177.clone())), ); + // constrain limb 2 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_2_col178.clone() - op1_limb_2_col65.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_2_col178.clone() - add_res_limb_2_col93.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_2_col178.clone() - mul_res_limb_2_col122.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_2_col93.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_2_col122.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_2_col65.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_2_col178.clone())), ); + // constrain limb 3 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_3_col179.clone() - op1_limb_3_col66.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_3_col179.clone() - add_res_limb_3_col94.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_3_col179.clone() - mul_res_limb_3_col123.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_3_col94.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_3_col123.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_3_col66.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_3_col179.clone())), ); + // constrain limb 4 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_4_col180.clone() - op1_limb_4_col67.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_4_col180.clone() - add_res_limb_4_col95.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_4_col180.clone() - mul_res_limb_4_col124.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_4_col95.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_4_col124.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_4_col67.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_4_col180.clone())), ); + // constrain limb 5 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_5_col181.clone() - op1_limb_5_col68.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_5_col181.clone() - add_res_limb_5_col96.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_5_col181.clone() - mul_res_limb_5_col125.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_5_col96.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_5_col125.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_5_col68.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_5_col181.clone())), ); + // constrain limb 6 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_6_col182.clone() - op1_limb_6_col69.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_6_col182.clone() - add_res_limb_6_col97.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_6_col182.clone() - mul_res_limb_6_col126.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_6_col97.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_6_col126.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_6_col69.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_6_col182.clone())), ); + // constrain limb 7 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_7_col183.clone() - op1_limb_7_col70.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_7_col183.clone() - add_res_limb_7_col98.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_7_col183.clone() - mul_res_limb_7_col127.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_7_col98.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_7_col127.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_7_col70.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_7_col183.clone())), ); + // constrain limb 8 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_8_col184.clone() - op1_limb_8_col71.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_8_col184.clone() - add_res_limb_8_col99.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_8_col184.clone() - mul_res_limb_8_col128.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_8_col99.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_8_col128.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_8_col71.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_8_col184.clone())), ); + // constrain limb 9 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_9_col185.clone() - op1_limb_9_col72.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_9_col185.clone() - add_res_limb_9_col100.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_9_col185.clone() - mul_res_limb_9_col129.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_9_col100.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_9_col129.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_9_col72.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_9_col185.clone())), ); + // constrain limb 10 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_10_col186.clone() - op1_limb_10_col73.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_10_col186.clone() - add_res_limb_10_col101.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_10_col186.clone() - mul_res_limb_10_col130.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_10_col101.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_10_col130.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_10_col73.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_10_col186.clone())), ); + // constrain limb 11 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_11_col187.clone() - op1_limb_11_col74.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_11_col187.clone() - add_res_limb_11_col102.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_11_col187.clone() - mul_res_limb_11_col131.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_11_col102.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_11_col131.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_11_col74.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_11_col187.clone())), ); + // constrain limb 12 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_12_col188.clone() - op1_limb_12_col75.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_12_col188.clone() - add_res_limb_12_col103.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_12_col188.clone() - mul_res_limb_12_col132.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_12_col103.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_12_col132.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_12_col75.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_12_col188.clone())), ); + // constrain limb 13 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_13_col189.clone() - op1_limb_13_col76.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_13_col189.clone() - add_res_limb_13_col104.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_13_col189.clone() - mul_res_limb_13_col133.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_13_col104.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_13_col133.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_13_col76.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_13_col189.clone())), ); + // constrain limb 14 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_14_col190.clone() - op1_limb_14_col77.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_14_col190.clone() - add_res_limb_14_col105.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_14_col190.clone() - mul_res_limb_14_col134.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_14_col105.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_14_col134.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_14_col77.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_14_col190.clone())), ); + // constrain limb 15 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_15_col191.clone() - op1_limb_15_col78.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_15_col191.clone() - add_res_limb_15_col106.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_15_col191.clone() - mul_res_limb_15_col135.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_15_col106.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_15_col135.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_15_col78.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_15_col191.clone())), ); + // constrain limb 16 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_16_col192.clone() - op1_limb_16_col79.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_16_col192.clone() - add_res_limb_16_col107.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_16_col192.clone() - mul_res_limb_16_col136.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_16_col107.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_16_col136.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_16_col79.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_16_col192.clone())), ); + // constrain limb 17 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_17_col193.clone() - op1_limb_17_col80.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_17_col193.clone() - add_res_limb_17_col108.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_17_col193.clone() - mul_res_limb_17_col137.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_17_col108.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_17_col137.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_17_col80.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_17_col193.clone())), ); + // constrain limb 18 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_18_col194.clone() - op1_limb_18_col81.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_18_col194.clone() - add_res_limb_18_col109.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_18_col194.clone() - mul_res_limb_18_col138.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_18_col109.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_18_col138.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_18_col81.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_18_col194.clone())), ); + // constrain limb 19 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_19_col195.clone() - op1_limb_19_col82.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_19_col195.clone() - add_res_limb_19_col110.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_19_col195.clone() - mul_res_limb_19_col139.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_19_col110.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_19_col139.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_19_col82.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_19_col195.clone())), ); + // constrain limb 20 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_20_col196.clone() - op1_limb_20_col83.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_20_col196.clone() - add_res_limb_20_col111.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_20_col196.clone() - mul_res_limb_20_col140.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_20_col111.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_20_col140.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_20_col83.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_20_col196.clone())), ); + // constrain limb 21 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_21_col197.clone() - op1_limb_21_col84.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_21_col197.clone() - add_res_limb_21_col112.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_21_col197.clone() - mul_res_limb_21_col141.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_21_col112.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_21_col141.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_21_col84.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_21_col197.clone())), ); + // constrain limb 22 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_22_col198.clone() - op1_limb_22_col85.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_22_col198.clone() - add_res_limb_22_col113.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_22_col198.clone() - mul_res_limb_22_col142.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_22_col113.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_22_col142.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_22_col85.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_22_col198.clone())), ); + // constrain limb 23 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_23_col199.clone() - op1_limb_23_col86.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_23_col199.clone() - add_res_limb_23_col114.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_23_col199.clone() - mul_res_limb_23_col143.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_23_col114.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_23_col143.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_23_col86.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_23_col199.clone())), ); + // constrain limb 24 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_24_col200.clone() - op1_limb_24_col87.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_24_col200.clone() - add_res_limb_24_col115.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_24_col200.clone() - mul_res_limb_24_col144.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_24_col115.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_24_col144.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_24_col87.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_24_col200.clone())), ); + // constrain limb 25 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_25_col201.clone() - op1_limb_25_col88.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_25_col201.clone() - add_res_limb_25_col116.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_25_col201.clone() - mul_res_limb_25_col145.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_25_col116.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_25_col145.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_25_col88.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_25_col201.clone())), ); + // constrain limb 26 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_26_col202.clone() - op1_limb_26_col89.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_26_col202.clone() - add_res_limb_26_col117.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_26_col202.clone() - mul_res_limb_26_col146.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_26_col117.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_26_col146.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_26_col89.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_26_col202.clone())), ); + // constrain limb 27 of res. eval.add_constraint( - (res_constrained_tmp_3172c_54.clone() - * (((eval_operands_input_res_op1.clone() - * (res_limb_27_col203.clone() - op1_limb_27_col90.clone())) - + (eval_operands_input_res_add.clone() - * (res_limb_27_col203.clone() - add_res_limb_27_col118.clone()))) - + (eval_operands_input_res_mul.clone() - * (res_limb_27_col203.clone() - mul_res_limb_27_col147.clone())))), + ((((eval_operands_input_res_add.clone() * add_res_limb_27_col118.clone()) + + (eval_operands_input_res_mul.clone() * mul_res_limb_27_col147.clone())) + + (eval_operands_input_res_op1.clone() * op1_limb_27_col90.clone())) + - ((M31_1.clone() - eval_operands_input_pc_update_jnz.clone()) + * res_limb_27_col203.clone())), ); [] } diff --git a/stwo_cairo_prover/crates/common/casm_registry.json b/stwo_cairo_prover/crates/common/casm_registry.json index 17c850ebd..385a953dc 100644 --- a/stwo_cairo_prover/crates/common/casm_registry.json +++ b/stwo_cairo_prover/crates/common/casm_registry.json @@ -1,5 +1,5 @@ { - "air_version": "fb65c13c", + "air_version": "0a688f75", "air_fns": { "memory_address_to_id": { "trace_type": "Memory", diff --git a/stwo_cairo_prover/crates/prover/src/witness/components/generic_opcode.rs b/stwo_cairo_prover/crates/prover/src/witness/components/generic_opcode.rs index 03e84db54..d018a5425 100644 --- a/stwo_cairo_prover/crates/prover/src/witness/components/generic_opcode.rs +++ b/stwo_cairo_prover/crates/prover/src/witness/components/generic_opcode.rs @@ -664,7 +664,7 @@ verify_instruction_state: &verify_instruction::ClaimGenerator, *row[221] = res_limb_24_col221;let res_limb_25_col222 = res_tmp_57455_80.get_m31(25); *row[222] = res_limb_25_col222;let res_limb_26_col223 = res_tmp_57455_80.get_m31(26); *row[223] = res_limb_26_col223;let res_limb_27_col224 = res_tmp_57455_80.get_m31(27); - *row[224] = res_limb_27_col224;let eval_operands_output_tmp_57455_82 = [read_positive_num_bits_252_output_tmp_57455_31.0, read_positive_num_bits_252_output_tmp_57455_36.0, read_positive_num_bits_252_output_tmp_57455_44.0, res_tmp_57455_80]; + *row[224] = res_limb_27_col224;let eval_operands_output_tmp_57455_81 = [read_positive_num_bits_252_output_tmp_57455_31.0, read_positive_num_bits_252_output_tmp_57455_36.0, read_positive_num_bits_252_output_tmp_57455_44.0, res_tmp_57455_80]; // Handle Opcodes. @@ -672,19 +672,19 @@ verify_instruction_state: &verify_instruction::ClaimGenerator, // Cond Range Check 2. - let partial_limb_msb_tmp_57455_83 = ((((PackedUInt16::from_m31(dst_limb_3_col26)) & (UInt16_2))) >> (UInt16_1));let partial_limb_msb_col225 = partial_limb_msb_tmp_57455_83.as_m31(); + let partial_limb_msb_tmp_57455_82 = ((((PackedUInt16::from_m31(dst_limb_3_col26)) & (UInt16_2))) >> (UInt16_1));let partial_limb_msb_col225 = partial_limb_msb_tmp_57455_82.as_m31(); *row[225] = partial_limb_msb_col225; - let cond_felt_252_as_addr_output_tmp_57455_85 = ((((((dst_limb_0_col23) + (((dst_limb_1_col24) * (M31_512))))) + (((dst_limb_2_col25) * (M31_262144))))) + (((dst_limb_3_col26) * (M31_134217728)))); + let cond_felt_252_as_addr_output_tmp_57455_84 = ((((((dst_limb_0_col23) + (((dst_limb_1_col24) * (M31_512))))) + (((dst_limb_2_col25) * (M31_262144))))) + (((dst_limb_3_col26) * (M31_134217728)))); // Cond Felt 252 As Addr. // Cond Range Check 2. - let partial_limb_msb_tmp_57455_86 = ((((PackedUInt16::from_m31(op0_limb_3_col56)) & (UInt16_2))) >> (UInt16_1));let partial_limb_msb_col226 = partial_limb_msb_tmp_57455_86.as_m31(); + let partial_limb_msb_tmp_57455_85 = ((((PackedUInt16::from_m31(op0_limb_3_col56)) & (UInt16_2))) >> (UInt16_1));let partial_limb_msb_col226 = partial_limb_msb_tmp_57455_85.as_m31(); *row[226] = partial_limb_msb_col226; - let cond_felt_252_as_addr_output_tmp_57455_88 = ((((((op0_limb_0_col53) + (((op0_limb_1_col54) * (M31_512))))) + (((op0_limb_2_col55) * (M31_262144))))) + (((op0_limb_3_col56) * (M31_134217728)))); + let cond_felt_252_as_addr_output_tmp_57455_87 = ((((((op0_limb_0_col53) + (((op0_limb_1_col54) * (M31_512))))) + (((op0_limb_2_col55) * (M31_262144))))) + (((op0_limb_3_col56) * (M31_134217728)))); // Update Registers. @@ -692,75 +692,75 @@ verify_instruction_state: &verify_instruction::ClaimGenerator, // Cond Range Check 2. - let partial_limb_msb_tmp_57455_89 = ((((PackedUInt16::from_m31(res_limb_3_col200)) & (UInt16_2))) >> (UInt16_1));let partial_limb_msb_col227 = partial_limb_msb_tmp_57455_89.as_m31(); + let partial_limb_msb_tmp_57455_88 = ((((PackedUInt16::from_m31(res_limb_3_col200)) & (UInt16_2))) >> (UInt16_1));let partial_limb_msb_col227 = partial_limb_msb_tmp_57455_88.as_m31(); *row[227] = partial_limb_msb_col227; - let cond_felt_252_as_addr_output_tmp_57455_91 = ((((((res_limb_0_col197) + (((res_limb_1_col198) * (M31_512))))) + (((res_limb_2_col199) * (M31_262144))))) + (((res_limb_3_col200) * (M31_134217728)))); + let cond_felt_252_as_addr_output_tmp_57455_90 = ((((((res_limb_0_col197) + (((res_limb_1_col198) * (M31_512))))) + (((res_limb_2_col199) * (M31_262144))))) + (((res_limb_3_col200) * (M31_134217728)))); // Cond Felt 252 As Addr. // Cond Range Check 2. - let partial_limb_msb_tmp_57455_92 = ((((PackedUInt16::from_m31(dst_limb_3_col26)) & (UInt16_2))) >> (UInt16_1));let partial_limb_msb_col228 = partial_limb_msb_tmp_57455_92.as_m31(); + let partial_limb_msb_tmp_57455_91 = ((((PackedUInt16::from_m31(dst_limb_3_col26)) & (UInt16_2))) >> (UInt16_1));let partial_limb_msb_col228 = partial_limb_msb_tmp_57455_91.as_m31(); *row[228] = partial_limb_msb_col228; - let cond_felt_252_as_addr_output_tmp_57455_94 = ((((((dst_limb_0_col23) + (((dst_limb_1_col24) * (M31_512))))) + (((dst_limb_2_col25) * (M31_262144))))) + (((dst_limb_3_col26) * (M31_134217728)))); + let cond_felt_252_as_addr_output_tmp_57455_93 = ((((((dst_limb_0_col23) + (((dst_limb_1_col24) * (M31_512))))) + (((dst_limb_2_col25) * (M31_262144))))) + (((dst_limb_3_col26) * (M31_134217728)))); // Cond Felt 252 As Rel Imm. // Cond Decode Small Sign. - let msb_tmp_57455_95 = res_limb_27_col224.eq(M31_256);let msb_col229 = msb_tmp_57455_95.as_m31(); - *row[229] = msb_col229;let mid_limbs_set_tmp_57455_96 = res_limb_20_col217.eq(M31_511);let mid_limbs_set_col230 = mid_limbs_set_tmp_57455_96.as_m31(); - *row[230] = mid_limbs_set_col230;let cond_decode_small_sign_output_tmp_57455_97 = [msb_col229, mid_limbs_set_col230]; + let msb_tmp_57455_94 = res_limb_27_col224.eq(M31_256);let msb_col229 = msb_tmp_57455_94.as_m31(); + *row[229] = msb_col229;let mid_limbs_set_tmp_57455_95 = res_limb_20_col217.eq(M31_511);let mid_limbs_set_col230 = mid_limbs_set_tmp_57455_95.as_m31(); + *row[230] = mid_limbs_set_col230;let cond_decode_small_sign_output_tmp_57455_96 = [msb_col229, mid_limbs_set_col230]; - let remainder_bits_tmp_57455_98 = ((res_limb_3_col200) - (((mid_limbs_set_col230) * (M31_508)))); + let remainder_bits_tmp_57455_97 = ((res_limb_3_col200) - (((mid_limbs_set_col230) * (M31_508)))); // Cond Range Check 2. - let partial_limb_msb_tmp_57455_99 = ((((PackedUInt16::from_m31(remainder_bits_tmp_57455_98)) & (UInt16_2))) >> (UInt16_1));let partial_limb_msb_col231 = partial_limb_msb_tmp_57455_99.as_m31(); + let partial_limb_msb_tmp_57455_98 = ((((PackedUInt16::from_m31(remainder_bits_tmp_57455_97)) & (UInt16_2))) >> (UInt16_1));let partial_limb_msb_col231 = partial_limb_msb_tmp_57455_98.as_m31(); *row[231] = partial_limb_msb_col231; - let cond_felt_252_as_rel_imm_output_tmp_57455_101 = ((((((((((res_limb_0_col197) + (((res_limb_1_col198) * (M31_512))))) + (((res_limb_2_col199) * (M31_262144))))) + (((remainder_bits_tmp_57455_98) * (M31_134217728))))) - (msb_col229))) - (((M31_536870912) * (mid_limbs_set_col230)))); + let cond_felt_252_as_rel_imm_output_tmp_57455_100 = ((((((((((res_limb_0_col197) + (((res_limb_1_col198) * (M31_512))))) + (((res_limb_2_col199) * (M31_262144))))) + (((remainder_bits_tmp_57455_97) * (M31_134217728))))) - (msb_col229))) - (((M31_536870912) * (mid_limbs_set_col230)))); - let diff_from_p_tmp_57455_102 = ((dst_limb_0_col23) - (M31_1));let diff_from_p_tmp_57455_103 = ((dst_limb_21_col44) - (M31_136));let diff_from_p_tmp_57455_104 = ((dst_limb_27_col50) - (M31_256));let dst_sum_squares_inv_col232 = ((((((((((((((((((((((((((((((((((((((((((((((((((((((((diff_from_p_tmp_57455_102) * (diff_from_p_tmp_57455_102))) + (dst_limb_1_col24))) + (dst_limb_2_col25))) + (dst_limb_3_col26))) + (dst_limb_4_col27))) + (dst_limb_5_col28))) + (dst_limb_6_col29))) + (dst_limb_7_col30))) + (dst_limb_8_col31))) + (dst_limb_9_col32))) + (dst_limb_10_col33))) + (dst_limb_11_col34))) + (dst_limb_12_col35))) + (dst_limb_13_col36))) + (dst_limb_14_col37))) + (dst_limb_15_col38))) + (dst_limb_16_col39))) + (dst_limb_17_col40))) + (dst_limb_18_col41))) + (dst_limb_19_col42))) + (dst_limb_20_col43))) + (((diff_from_p_tmp_57455_103) * (diff_from_p_tmp_57455_103))))) + (dst_limb_22_col45))) + (dst_limb_23_col46))) + (dst_limb_24_col47))) + (dst_limb_25_col48))) + (dst_limb_26_col49))) + (((diff_from_p_tmp_57455_104) * (diff_from_p_tmp_57455_104)))).inverse(); - *row[232] = dst_sum_squares_inv_col232;let dst_sum_tmp_57455_105 = ((((((((((((((((((((((((((((((((((((((((((((((((((((((dst_limb_0_col23) + (dst_limb_1_col24))) + (dst_limb_2_col25))) + (dst_limb_3_col26))) + (dst_limb_4_col27))) + (dst_limb_5_col28))) + (dst_limb_6_col29))) + (dst_limb_7_col30))) + (dst_limb_8_col31))) + (dst_limb_9_col32))) + (dst_limb_10_col33))) + (dst_limb_11_col34))) + (dst_limb_12_col35))) + (dst_limb_13_col36))) + (dst_limb_14_col37))) + (dst_limb_15_col38))) + (dst_limb_16_col39))) + (dst_limb_17_col40))) + (dst_limb_18_col41))) + (dst_limb_19_col42))) + (dst_limb_20_col43))) + (dst_limb_21_col44))) + (dst_limb_22_col45))) + (dst_limb_23_col46))) + (dst_limb_24_col47))) + (dst_limb_25_col48))) + (dst_limb_26_col49))) + (dst_limb_27_col50));let dst_is_zero_tmp_57455_106 = dst_sum_tmp_57455_105.eq(M31_0);let dst_sum_inv_col233 = ((dst_sum_tmp_57455_105) + (dst_is_zero_tmp_57455_106.as_m31())).inverse(); - *row[233] = dst_sum_inv_col233;let op1_as_rel_imm_cond_col234 = ((pc_update_jnz_col15) * (dst_sum_tmp_57455_105)); + let diff_from_p_tmp_57455_101 = ((dst_limb_0_col23) - (M31_1));let diff_from_p_tmp_57455_102 = ((dst_limb_21_col44) - (M31_136));let diff_from_p_tmp_57455_103 = ((dst_limb_27_col50) - (M31_256));let dst_sum_squares_inv_col232 = ((((((((((((((((((((((((((((((((((((((((((((((((((((((((diff_from_p_tmp_57455_101) * (diff_from_p_tmp_57455_101))) + (dst_limb_1_col24))) + (dst_limb_2_col25))) + (dst_limb_3_col26))) + (dst_limb_4_col27))) + (dst_limb_5_col28))) + (dst_limb_6_col29))) + (dst_limb_7_col30))) + (dst_limb_8_col31))) + (dst_limb_9_col32))) + (dst_limb_10_col33))) + (dst_limb_11_col34))) + (dst_limb_12_col35))) + (dst_limb_13_col36))) + (dst_limb_14_col37))) + (dst_limb_15_col38))) + (dst_limb_16_col39))) + (dst_limb_17_col40))) + (dst_limb_18_col41))) + (dst_limb_19_col42))) + (dst_limb_20_col43))) + (((diff_from_p_tmp_57455_102) * (diff_from_p_tmp_57455_102))))) + (dst_limb_22_col45))) + (dst_limb_23_col46))) + (dst_limb_24_col47))) + (dst_limb_25_col48))) + (dst_limb_26_col49))) + (((diff_from_p_tmp_57455_103) * (diff_from_p_tmp_57455_103)))).inverse(); + *row[232] = dst_sum_squares_inv_col232;let dst_sum_tmp_57455_104 = ((((((((((((((((((((((((((((((((((((((((((((((((((((((dst_limb_0_col23) + (dst_limb_1_col24))) + (dst_limb_2_col25))) + (dst_limb_3_col26))) + (dst_limb_4_col27))) + (dst_limb_5_col28))) + (dst_limb_6_col29))) + (dst_limb_7_col30))) + (dst_limb_8_col31))) + (dst_limb_9_col32))) + (dst_limb_10_col33))) + (dst_limb_11_col34))) + (dst_limb_12_col35))) + (dst_limb_13_col36))) + (dst_limb_14_col37))) + (dst_limb_15_col38))) + (dst_limb_16_col39))) + (dst_limb_17_col40))) + (dst_limb_18_col41))) + (dst_limb_19_col42))) + (dst_limb_20_col43))) + (dst_limb_21_col44))) + (dst_limb_22_col45))) + (dst_limb_23_col46))) + (dst_limb_24_col47))) + (dst_limb_25_col48))) + (dst_limb_26_col49))) + (dst_limb_27_col50));let dst_is_zero_tmp_57455_105 = dst_sum_tmp_57455_104.eq(M31_0);let dst_sum_inv_col233 = ((dst_sum_tmp_57455_104) + (dst_is_zero_tmp_57455_105.as_m31())).inverse(); + *row[233] = dst_sum_inv_col233;let op1_as_rel_imm_cond_col234 = ((pc_update_jnz_col15) * (dst_sum_tmp_57455_104)); *row[234] = op1_as_rel_imm_cond_col234; // Cond Felt 252 As Rel Imm. // Cond Decode Small Sign. - let msb_tmp_57455_107 = op1_limb_27_col111.eq(M31_256);let msb_col235 = msb_tmp_57455_107.as_m31(); - *row[235] = msb_col235;let mid_limbs_set_tmp_57455_108 = op1_limb_20_col104.eq(M31_511);let mid_limbs_set_col236 = mid_limbs_set_tmp_57455_108.as_m31(); - *row[236] = mid_limbs_set_col236;let cond_decode_small_sign_output_tmp_57455_109 = [msb_col235, mid_limbs_set_col236]; + let msb_tmp_57455_106 = op1_limb_27_col111.eq(M31_256);let msb_col235 = msb_tmp_57455_106.as_m31(); + *row[235] = msb_col235;let mid_limbs_set_tmp_57455_107 = op1_limb_20_col104.eq(M31_511);let mid_limbs_set_col236 = mid_limbs_set_tmp_57455_107.as_m31(); + *row[236] = mid_limbs_set_col236;let cond_decode_small_sign_output_tmp_57455_108 = [msb_col235, mid_limbs_set_col236]; - let remainder_bits_tmp_57455_110 = ((op1_limb_3_col87) - (((mid_limbs_set_col236) * (M31_508)))); + let remainder_bits_tmp_57455_109 = ((op1_limb_3_col87) - (((mid_limbs_set_col236) * (M31_508)))); // Cond Range Check 2. - let partial_limb_msb_tmp_57455_111 = ((((PackedUInt16::from_m31(remainder_bits_tmp_57455_110)) & (UInt16_2))) >> (UInt16_1));let partial_limb_msb_col237 = partial_limb_msb_tmp_57455_111.as_m31(); + let partial_limb_msb_tmp_57455_110 = ((((PackedUInt16::from_m31(remainder_bits_tmp_57455_109)) & (UInt16_2))) >> (UInt16_1));let partial_limb_msb_col237 = partial_limb_msb_tmp_57455_110.as_m31(); *row[237] = partial_limb_msb_col237; - let cond_felt_252_as_rel_imm_output_tmp_57455_113 = ((((((((((op1_limb_0_col84) + (((op1_limb_1_col85) * (M31_512))))) + (((op1_limb_2_col86) * (M31_262144))))) + (((remainder_bits_tmp_57455_110) * (M31_134217728))))) - (msb_col235))) - (((M31_536870912) * (mid_limbs_set_col236)))); + let cond_felt_252_as_rel_imm_output_tmp_57455_112 = ((((((((((op1_limb_0_col84) + (((op1_limb_1_col85) * (M31_512))))) + (((op1_limb_2_col86) * (M31_262144))))) + (((remainder_bits_tmp_57455_109) * (M31_134217728))))) - (msb_col235))) - (((M31_536870912) * (mid_limbs_set_col236)))); - let next_pc_jnz_col238 = ((((dst_is_zero_tmp_57455_106.as_m31()) * (((input_pc_col0) + (decode_generic_instruction_output_tmp_57455_26.0[19]))))) + (((((M31_1) - (dst_is_zero_tmp_57455_106.as_m31()))) * (((input_pc_col0) + (cond_felt_252_as_rel_imm_output_tmp_57455_113)))))); - *row[238] = next_pc_jnz_col238;let next_pc_col239 = ((((((((decode_generic_instruction_output_tmp_57455_26.0[17]) * (((input_pc_col0) + (decode_generic_instruction_output_tmp_57455_26.0[19]))))) + (((pc_update_jump_col13) * (cond_felt_252_as_addr_output_tmp_57455_91))))) + (((pc_update_jump_rel_col14) * (((input_pc_col0) + (cond_felt_252_as_rel_imm_output_tmp_57455_101))))))) + (((pc_update_jnz_col15) * (next_pc_jnz_col238)))); - *row[239] = next_pc_col239;let next_ap_col240 = ((((((input_ap_col1) + (((ap_update_add_col16) * (cond_felt_252_as_rel_imm_output_tmp_57455_101))))) + (ap_update_add_1_col17))) + (((opcode_call_col18) * (M31_2)))); + let next_pc_jnz_col238 = ((((dst_is_zero_tmp_57455_105.as_m31()) * (((input_pc_col0) + (decode_generic_instruction_output_tmp_57455_26.0[19]))))) + (((((M31_1) - (dst_is_zero_tmp_57455_105.as_m31()))) * (((input_pc_col0) + (cond_felt_252_as_rel_imm_output_tmp_57455_112)))))); + *row[238] = next_pc_jnz_col238;let next_pc_col239 = ((((((((decode_generic_instruction_output_tmp_57455_26.0[17]) * (((input_pc_col0) + (decode_generic_instruction_output_tmp_57455_26.0[19]))))) + (((pc_update_jump_col13) * (cond_felt_252_as_addr_output_tmp_57455_90))))) + (((pc_update_jump_rel_col14) * (((input_pc_col0) + (cond_felt_252_as_rel_imm_output_tmp_57455_100))))))) + (((pc_update_jnz_col15) * (next_pc_jnz_col238)))); + *row[239] = next_pc_col239;let next_ap_col240 = ((((((input_ap_col1) + (((ap_update_add_col16) * (cond_felt_252_as_rel_imm_output_tmp_57455_100))))) + (ap_update_add_1_col17))) + (((opcode_call_col18) * (M31_2)))); *row[240] = next_ap_col240; // Range Check Ap. - let range_check_ap_bot11bits_u32_tmp_57455_114 = ((PackedUInt32::from_m31(next_ap_col240)) & (UInt32_2047));let range_check_ap_bot11bits_col241 = range_check_ap_bot11bits_u32_tmp_57455_114.low().as_m31(); + let range_check_ap_bot11bits_u32_tmp_57455_113 = ((PackedUInt32::from_m31(next_ap_col240)) & (UInt32_2047));let range_check_ap_bot11bits_col241 = range_check_ap_bot11bits_u32_tmp_57455_113.low().as_m31(); *row[241] = range_check_ap_bot11bits_col241;*sub_component_inputs.range_check_18[0] = [((((next_ap_col240) - (range_check_ap_bot11bits_col241))) * (M31_1048576))]; *lookup_data.range_check_18_0 = [((((next_ap_col240) - (range_check_ap_bot11bits_col241))) * (M31_1048576))];*sub_component_inputs.range_check_11[0] = [range_check_ap_bot11bits_col241]; *lookup_data.range_check_11_0 = [range_check_ap_bot11bits_col241]; - let next_fp_col242 = ((((((decode_generic_instruction_output_tmp_57455_26.0[18]) * (input_fp_col2))) + (((opcode_ret_col19) * (cond_felt_252_as_addr_output_tmp_57455_94))))) + (((opcode_call_col18) * (((input_ap_col1) + (M31_2)))))); - *row[242] = next_fp_col242;let update_registers_output_tmp_57455_115 = PackedCasmState { + let next_fp_col242 = ((((((decode_generic_instruction_output_tmp_57455_26.0[18]) * (input_fp_col2))) + (((opcode_ret_col19) * (cond_felt_252_as_addr_output_tmp_57455_93))))) + (((opcode_call_col18) * (((input_ap_col1) + (M31_2)))))); + *row[242] = next_fp_col242;let update_registers_output_tmp_57455_114 = PackedCasmState { pc: next_pc_col239, ap: next_ap_col240, fp: next_fp_col242, }; diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/sample_evaluations.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/sample_evaluations.cairo index 7fc8c4687..d808d62a8 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/components/sample_evaluations.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/sample_evaluations.cairo @@ -1,4 +1,4 @@ -// AIR version fb65c13c +// AIR version 0a688f75 use stwo_verifier_core::fields::m31::M31; pub const ADD_AP_OPCODE_SAMPLE_EVAL_RESULT: [M31; 4] = [ M31 { inner: 243099712 }, M31 { inner: 2111907600 }, M31 { inner: 156811844 }, @@ -61,8 +61,8 @@ pub const CUBE_252_SAMPLE_EVAL_RESULT: [M31; 4] = [ M31 { inner: 1140773919 }, ]; pub const GENERIC_OPCODE_SAMPLE_EVAL_RESULT: [M31; 4] = [ - M31 { inner: 569840340 }, M31 { inner: 1649017683 }, M31 { inner: 359575849 }, - M31 { inner: 103487787 }, + M31 { inner: 16230614 }, M31 { inner: 1892023251 }, M31 { inner: 2012875541 }, + M31 { inner: 240318925 }, ]; pub const JNZ_OPCODE_SAMPLE_EVAL_RESULT: [M31; 4] = [ M31 { inner: 2039885140 }, M31 { inner: 1642475917 }, M31 { inner: 1072188601 }, diff --git a/stwo_cairo_verifier/crates/cairo_air/src/components/subroutines/eval_operands.cairo b/stwo_cairo_verifier/crates/cairo_air/src/components/subroutines/eval_operands.cairo index bbee763d8..57fb76448 100644 --- a/stwo_cairo_verifier/crates/cairo_air/src/components/subroutines/eval_operands.cairo +++ b/stwo_cairo_verifier/crates/cairo_air/src/components/subroutines/eval_operands.cairo @@ -681,230 +681,228 @@ pub fn eval_operands_evaluate( domain_vanishing_eval_inv, random_coeff, ); - let res_constrained_tmp_3172c_54: QM31 = (qm31_const::<1, 0, 0, 0>() - - eval_operands_input_pc_update_jnz); - - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_0_col176 - op1_limb_0_col63)) - + (eval_operands_input_res_add * (res_limb_0_col176 - add_res_limb_0_col91))) - + (eval_operands_input_res_mul * (res_limb_0_col176 - mul_res_limb_0_col120))))) + + // Constraint - constrain limb 0 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_0_col91) + + (eval_operands_input_res_mul * mul_res_limb_0_col120)) + + (eval_operands_input_res_op1 * op1_limb_0_col63)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_0_col176))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_1_col177 - op1_limb_1_col64)) - + (eval_operands_input_res_add * (res_limb_1_col177 - add_res_limb_1_col92))) - + (eval_operands_input_res_mul * (res_limb_1_col177 - mul_res_limb_1_col121))))) + // Constraint - constrain limb 1 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_1_col92) + + (eval_operands_input_res_mul * mul_res_limb_1_col121)) + + (eval_operands_input_res_op1 * op1_limb_1_col64)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_1_col177))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_2_col178 - op1_limb_2_col65)) - + (eval_operands_input_res_add * (res_limb_2_col178 - add_res_limb_2_col93))) - + (eval_operands_input_res_mul * (res_limb_2_col178 - mul_res_limb_2_col122))))) + // Constraint - constrain limb 2 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_2_col93) + + (eval_operands_input_res_mul * mul_res_limb_2_col122)) + + (eval_operands_input_res_op1 * op1_limb_2_col65)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_2_col178))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_3_col179 - op1_limb_3_col66)) - + (eval_operands_input_res_add * (res_limb_3_col179 - add_res_limb_3_col94))) - + (eval_operands_input_res_mul * (res_limb_3_col179 - mul_res_limb_3_col123))))) + // Constraint - constrain limb 3 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_3_col94) + + (eval_operands_input_res_mul * mul_res_limb_3_col123)) + + (eval_operands_input_res_op1 * op1_limb_3_col66)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_3_col179))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_4_col180 - op1_limb_4_col67)) - + (eval_operands_input_res_add * (res_limb_4_col180 - add_res_limb_4_col95))) - + (eval_operands_input_res_mul * (res_limb_4_col180 - mul_res_limb_4_col124))))) + // Constraint - constrain limb 4 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_4_col95) + + (eval_operands_input_res_mul * mul_res_limb_4_col124)) + + (eval_operands_input_res_op1 * op1_limb_4_col67)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_4_col180))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_5_col181 - op1_limb_5_col68)) - + (eval_operands_input_res_add * (res_limb_5_col181 - add_res_limb_5_col96))) - + (eval_operands_input_res_mul * (res_limb_5_col181 - mul_res_limb_5_col125))))) + // Constraint - constrain limb 5 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_5_col96) + + (eval_operands_input_res_mul * mul_res_limb_5_col125)) + + (eval_operands_input_res_op1 * op1_limb_5_col68)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_5_col181))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_6_col182 - op1_limb_6_col69)) - + (eval_operands_input_res_add * (res_limb_6_col182 - add_res_limb_6_col97))) - + (eval_operands_input_res_mul * (res_limb_6_col182 - mul_res_limb_6_col126))))) + // Constraint - constrain limb 6 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_6_col97) + + (eval_operands_input_res_mul * mul_res_limb_6_col126)) + + (eval_operands_input_res_op1 * op1_limb_6_col69)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_6_col182))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_7_col183 - op1_limb_7_col70)) - + (eval_operands_input_res_add * (res_limb_7_col183 - add_res_limb_7_col98))) - + (eval_operands_input_res_mul * (res_limb_7_col183 - mul_res_limb_7_col127))))) + // Constraint - constrain limb 7 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_7_col98) + + (eval_operands_input_res_mul * mul_res_limb_7_col127)) + + (eval_operands_input_res_op1 * op1_limb_7_col70)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_7_col183))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_8_col184 - op1_limb_8_col71)) - + (eval_operands_input_res_add * (res_limb_8_col184 - add_res_limb_8_col99))) - + (eval_operands_input_res_mul * (res_limb_8_col184 - mul_res_limb_8_col128))))) + // Constraint - constrain limb 8 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_8_col99) + + (eval_operands_input_res_mul * mul_res_limb_8_col128)) + + (eval_operands_input_res_op1 * op1_limb_8_col71)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_8_col184))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_9_col185 - op1_limb_9_col72)) - + (eval_operands_input_res_add * (res_limb_9_col185 - add_res_limb_9_col100))) - + (eval_operands_input_res_mul * (res_limb_9_col185 - mul_res_limb_9_col129))))) + // Constraint - constrain limb 9 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_9_col100) + + (eval_operands_input_res_mul * mul_res_limb_9_col129)) + + (eval_operands_input_res_op1 * op1_limb_9_col72)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_9_col185))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_10_col186 - op1_limb_10_col73)) - + (eval_operands_input_res_add * (res_limb_10_col186 - add_res_limb_10_col101))) - + (eval_operands_input_res_mul * (res_limb_10_col186 - mul_res_limb_10_col130))))) + // Constraint - constrain limb 10 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_10_col101) + + (eval_operands_input_res_mul * mul_res_limb_10_col130)) + + (eval_operands_input_res_op1 * op1_limb_10_col73)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_10_col186))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_11_col187 - op1_limb_11_col74)) - + (eval_operands_input_res_add * (res_limb_11_col187 - add_res_limb_11_col102))) - + (eval_operands_input_res_mul * (res_limb_11_col187 - mul_res_limb_11_col131))))) + // Constraint - constrain limb 11 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_11_col102) + + (eval_operands_input_res_mul * mul_res_limb_11_col131)) + + (eval_operands_input_res_op1 * op1_limb_11_col74)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_11_col187))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_12_col188 - op1_limb_12_col75)) - + (eval_operands_input_res_add * (res_limb_12_col188 - add_res_limb_12_col103))) - + (eval_operands_input_res_mul * (res_limb_12_col188 - mul_res_limb_12_col132))))) + // Constraint - constrain limb 12 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_12_col103) + + (eval_operands_input_res_mul * mul_res_limb_12_col132)) + + (eval_operands_input_res_op1 * op1_limb_12_col75)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_12_col188))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_13_col189 - op1_limb_13_col76)) - + (eval_operands_input_res_add * (res_limb_13_col189 - add_res_limb_13_col104))) - + (eval_operands_input_res_mul * (res_limb_13_col189 - mul_res_limb_13_col133))))) + // Constraint - constrain limb 13 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_13_col104) + + (eval_operands_input_res_mul * mul_res_limb_13_col133)) + + (eval_operands_input_res_op1 * op1_limb_13_col76)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_13_col189))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_14_col190 - op1_limb_14_col77)) - + (eval_operands_input_res_add * (res_limb_14_col190 - add_res_limb_14_col105))) - + (eval_operands_input_res_mul * (res_limb_14_col190 - mul_res_limb_14_col134))))) + // Constraint - constrain limb 14 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_14_col105) + + (eval_operands_input_res_mul * mul_res_limb_14_col134)) + + (eval_operands_input_res_op1 * op1_limb_14_col77)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_14_col190))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_15_col191 - op1_limb_15_col78)) - + (eval_operands_input_res_add * (res_limb_15_col191 - add_res_limb_15_col106))) - + (eval_operands_input_res_mul * (res_limb_15_col191 - mul_res_limb_15_col135))))) + // Constraint - constrain limb 15 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_15_col106) + + (eval_operands_input_res_mul * mul_res_limb_15_col135)) + + (eval_operands_input_res_op1 * op1_limb_15_col78)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_15_col191))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_16_col192 - op1_limb_16_col79)) - + (eval_operands_input_res_add * (res_limb_16_col192 - add_res_limb_16_col107))) - + (eval_operands_input_res_mul * (res_limb_16_col192 - mul_res_limb_16_col136))))) + // Constraint - constrain limb 16 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_16_col107) + + (eval_operands_input_res_mul * mul_res_limb_16_col136)) + + (eval_operands_input_res_op1 * op1_limb_16_col79)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_16_col192))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_17_col193 - op1_limb_17_col80)) - + (eval_operands_input_res_add * (res_limb_17_col193 - add_res_limb_17_col108))) - + (eval_operands_input_res_mul * (res_limb_17_col193 - mul_res_limb_17_col137))))) + // Constraint - constrain limb 17 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_17_col108) + + (eval_operands_input_res_mul * mul_res_limb_17_col137)) + + (eval_operands_input_res_op1 * op1_limb_17_col80)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_17_col193))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_18_col194 - op1_limb_18_col81)) - + (eval_operands_input_res_add * (res_limb_18_col194 - add_res_limb_18_col109))) - + (eval_operands_input_res_mul * (res_limb_18_col194 - mul_res_limb_18_col138))))) + // Constraint - constrain limb 18 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_18_col109) + + (eval_operands_input_res_mul * mul_res_limb_18_col138)) + + (eval_operands_input_res_op1 * op1_limb_18_col81)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_18_col194))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_19_col195 - op1_limb_19_col82)) - + (eval_operands_input_res_add * (res_limb_19_col195 - add_res_limb_19_col110))) - + (eval_operands_input_res_mul * (res_limb_19_col195 - mul_res_limb_19_col139))))) + // Constraint - constrain limb 19 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_19_col110) + + (eval_operands_input_res_mul * mul_res_limb_19_col139)) + + (eval_operands_input_res_op1 * op1_limb_19_col82)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_19_col195))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_20_col196 - op1_limb_20_col83)) - + (eval_operands_input_res_add * (res_limb_20_col196 - add_res_limb_20_col111))) - + (eval_operands_input_res_mul * (res_limb_20_col196 - mul_res_limb_20_col140))))) + // Constraint - constrain limb 20 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_20_col111) + + (eval_operands_input_res_mul * mul_res_limb_20_col140)) + + (eval_operands_input_res_op1 * op1_limb_20_col83)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_20_col196))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_21_col197 - op1_limb_21_col84)) - + (eval_operands_input_res_add * (res_limb_21_col197 - add_res_limb_21_col112))) - + (eval_operands_input_res_mul * (res_limb_21_col197 - mul_res_limb_21_col141))))) + // Constraint - constrain limb 21 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_21_col112) + + (eval_operands_input_res_mul * mul_res_limb_21_col141)) + + (eval_operands_input_res_op1 * op1_limb_21_col84)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_21_col197))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_22_col198 - op1_limb_22_col85)) - + (eval_operands_input_res_add * (res_limb_22_col198 - add_res_limb_22_col113))) - + (eval_operands_input_res_mul * (res_limb_22_col198 - mul_res_limb_22_col142))))) + // Constraint - constrain limb 22 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_22_col113) + + (eval_operands_input_res_mul * mul_res_limb_22_col142)) + + (eval_operands_input_res_op1 * op1_limb_22_col85)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_22_col198))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_23_col199 - op1_limb_23_col86)) - + (eval_operands_input_res_add * (res_limb_23_col199 - add_res_limb_23_col114))) - + (eval_operands_input_res_mul * (res_limb_23_col199 - mul_res_limb_23_col143))))) + // Constraint - constrain limb 23 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_23_col114) + + (eval_operands_input_res_mul * mul_res_limb_23_col143)) + + (eval_operands_input_res_op1 * op1_limb_23_col86)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_23_col199))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_24_col200 - op1_limb_24_col87)) - + (eval_operands_input_res_add * (res_limb_24_col200 - add_res_limb_24_col115))) - + (eval_operands_input_res_mul * (res_limb_24_col200 - mul_res_limb_24_col144))))) + // Constraint - constrain limb 24 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_24_col115) + + (eval_operands_input_res_mul * mul_res_limb_24_col144)) + + (eval_operands_input_res_op1 * op1_limb_24_col87)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_24_col200))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_25_col201 - op1_limb_25_col88)) - + (eval_operands_input_res_add * (res_limb_25_col201 - add_res_limb_25_col116))) - + (eval_operands_input_res_mul * (res_limb_25_col201 - mul_res_limb_25_col145))))) + // Constraint - constrain limb 25 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_25_col116) + + (eval_operands_input_res_mul * mul_res_limb_25_col145)) + + (eval_operands_input_res_op1 * op1_limb_25_col88)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_25_col201))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_26_col202 - op1_limb_26_col89)) - + (eval_operands_input_res_add * (res_limb_26_col202 - add_res_limb_26_col117))) - + (eval_operands_input_res_mul * (res_limb_26_col202 - mul_res_limb_26_col146))))) + // Constraint - constrain limb 26 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_26_col117) + + (eval_operands_input_res_mul * mul_res_limb_26_col146)) + + (eval_operands_input_res_op1 * op1_limb_26_col89)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_26_col202))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient; - // Constraint - - let constraint_quotient = ((res_constrained_tmp_3172c_54 - * (((eval_operands_input_res_op1 * (res_limb_27_col203 - op1_limb_27_col90)) - + (eval_operands_input_res_add * (res_limb_27_col203 - add_res_limb_27_col118))) - + (eval_operands_input_res_mul * (res_limb_27_col203 - mul_res_limb_27_col147))))) + // Constraint - constrain limb 27 of res + let constraint_quotient = (((((eval_operands_input_res_add * add_res_limb_27_col118) + + (eval_operands_input_res_mul * mul_res_limb_27_col147)) + + (eval_operands_input_res_op1 * op1_limb_27_col90)) + - ((qm31_const::<1, 0, 0, 0>() - eval_operands_input_pc_update_jnz) * res_limb_27_col203))) * domain_vanishing_eval_inv; sum = sum * random_coeff + constraint_quotient;