From 542be453f3709c342cf5ff688a6e2fe8951e44a9 Mon Sep 17 00:00:00 2001 From: dbanks12 Date: Wed, 24 Dec 2025 22:47:43 +0000 Subject: [PATCH] fix!: missing bool selectors in ecc_mem and to_radix_mem pils --- barretenberg/cpp/pil/vm2/bitwise.pil | 9 +- barretenberg/cpp/pil/vm2/ecc_mem.pil | 1 + barretenberg/cpp/pil/vm2/poseidon2_mem.pil | 13 +- barretenberg/cpp/pil/vm2/to_radix_mem.pil | 1 + .../dsl/avm2_recursion_constraint.test.cpp | 4 +- .../vm2/generated/relations/bitwise.hpp | 32 ++-- .../vm2/generated/relations/bitwise_impl.hpp | 84 +++++----- .../vm2/generated/relations/ecc_mem.hpp | 12 +- .../vm2/generated/relations/ecc_mem_impl.hpp | 50 +++--- .../vm2/generated/relations/poseidon2_mem.hpp | 8 +- .../relations/poseidon2_mem_impl.hpp | 54 ++++--- .../vm2/generated/relations/to_radix_mem.hpp | 44 ++--- .../generated/relations/to_radix_mem_impl.hpp | 152 +++++++++--------- 13 files changed, 246 insertions(+), 218 deletions(-) diff --git a/barretenberg/cpp/pil/vm2/bitwise.pil b/barretenberg/cpp/pil/vm2/bitwise.pil index 8c9367eab2cc..7f61010ee5b3 100644 --- a/barretenberg/cpp/pil/vm2/bitwise.pil +++ b/barretenberg/cpp/pil/vm2/bitwise.pil @@ -42,7 +42,7 @@ namespace bitwise; // 1 1 0 1 0x52 0x42 0x52 0x42 // Selector for Bitwise Operation -pol commit sel; +pol commit sel; // @boolean sel * (1 - sel) = 0; // No relations will be checked if this identity is satisfied. @@ -54,9 +54,10 @@ pol commit start; // Identifies when we want to capture the output to the main t start * (1 - start) = 0; // This is used to decouple generation of inverses of lookups into this trace. -pol commit start_keccak; -pol commit start_sha256; +pol commit start_keccak; // @boolean +pol commit start_sha256; // @boolean start_keccak * (1 - start_keccak) = 0; +start_sha256 * (1 - start_sha256) = 0; // If any of the above selectors is 1, then start must be 1. (start_keccak + start_sha256) * (1 - start) = 0; @@ -169,7 +170,7 @@ last * (acc_ic - ic_byte) = 0; // If we encounter an error, we do not want to perform a lookup to retrieve ctr. // In the case of an error, ctr is unconstrained (ideally set to 0). -pol commit sel_get_ctr; +pol commit sel_get_ctr; // @boolean sel_get_ctr = start * (1 - err); #[INTEGRAL_TAG_LENGTH] diff --git a/barretenberg/cpp/pil/vm2/ecc_mem.pil b/barretenberg/cpp/pil/vm2/ecc_mem.pil index 873c05387d12..1960dd73303e 100644 --- a/barretenberg/cpp/pil/vm2/ecc_mem.pil +++ b/barretenberg/cpp/pil/vm2/ecc_mem.pil @@ -53,6 +53,7 @@ include "gt.pil"; namespace ecc_add_mem; pol commit sel; + sel * (1 - sel) = 0; #[skippable_if] sel = 0; diff --git a/barretenberg/cpp/pil/vm2/poseidon2_mem.pil b/barretenberg/cpp/pil/vm2/poseidon2_mem.pil index d3c6b672195f..c3ab5f609f3c 100644 --- a/barretenberg/cpp/pil/vm2/poseidon2_mem.pil +++ b/barretenberg/cpp/pil/vm2/poseidon2_mem.pil @@ -26,7 +26,8 @@ include "gt.pil"; namespace poseidon2_perm_mem; - pol commit sel; + pol commit sel; // @boolean + sel * (1 - sel) = 0; #[skippable_if] sel = 0; @@ -49,8 +50,8 @@ namespace poseidon2_perm_mem; //////////////////////////////////////////////// // Error Handling - Out of Range Memory Access //////////////////////////////////////////////// - pol commit sel_src_out_of_range_err; // Constrained to be boolean by the lookup into gt. (provided that sel == 1). - pol commit sel_dst_out_of_range_err; // Constrained to be boolean by the lookup into gt. (provided that sel == 1). + pol commit sel_src_out_of_range_err; // @boolean - Constrained to be boolean by the lookup into gt. (provided that sel == 1). + pol commit sel_dst_out_of_range_err; // @boolean - Constrained to be boolean by the lookup into gt. (provided that sel == 1). // Use the comparison gadget to check that the max addresses are within range // The comparison gadget provides the ability to test GreaterThan so we check @@ -73,7 +74,7 @@ namespace poseidon2_perm_mem; //////////////////////////////////////////////// pol commit input[4]; pol commit input_tag[4]; - pol commit sel_should_read_mem; + pol commit sel_should_read_mem; // @boolean sel_should_read_mem = sel * (1 - sel_src_out_of_range_err) * (1 - sel_dst_out_of_range_err); #[POS_READ_MEM_0] @@ -127,7 +128,7 @@ namespace poseidon2_perm_mem; //////////////////////////////////////////////// // Error Handling - Invalid Input Tag (not FF) //////////////////////////////////////////////// - pol commit sel_invalid_tag_err; + pol commit sel_invalid_tag_err; // @boolean sel_invalid_tag_err * (1 - sel_invalid_tag_err) = 0; pol INPUT_TAG_DIFF_0 = input_tag[0] - constants.MEM_TAG_FF; pol INPUT_TAG_DIFF_1 = input_tag[1] - constants.MEM_TAG_FF; @@ -150,7 +151,7 @@ namespace poseidon2_perm_mem; // Dispatch inputs to poseidon2 permutation trace and retrieve outputs /////////////////////////////////////////////////////////////////////// pol commit output[4]; - pol commit sel_should_exec; + pol commit sel_should_exec; // @boolean sel_should_exec = sel * (1 - err); // TODO: Rename a's and b's to use array notation in poseidon2_perm.pil diff --git a/barretenberg/cpp/pil/vm2/to_radix_mem.pil b/barretenberg/cpp/pil/vm2/to_radix_mem.pil index 5b40a3636832..e1ba192a095a 100644 --- a/barretenberg/cpp/pil/vm2/to_radix_mem.pil +++ b/barretenberg/cpp/pil/vm2/to_radix_mem.pil @@ -59,6 +59,7 @@ include "precomputed.pil"; namespace to_radix_mem; pol commit sel; + sel * (1 - sel) = 0; #[skippable_if] sel = 0; diff --git a/barretenberg/cpp/src/barretenberg/vm2/dsl/avm2_recursion_constraint.test.cpp b/barretenberg/cpp/src/barretenberg/vm2/dsl/avm2_recursion_constraint.test.cpp index 622e6d820292..fe9a43dacc36 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/dsl/avm2_recursion_constraint.test.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/dsl/avm2_recursion_constraint.test.cpp @@ -134,7 +134,7 @@ TEST_F(AvmRecursionConstraintTest, GateCountAndVKCheck) using ProverInstance = ProverInstance_; static constexpr FF EXPECTED_OUTER_VK_HASH = - FF("0x11d8fada6d2189627887f5c560ed4903798a35d0df4687e097622a47f4484b81"); + FF("0x195059523571dbadeae1b213250567e17b4994568b736b73a1aae2b0c65fd2cd"); AcirConstraint constraint; WitnessVector witness; @@ -165,7 +165,7 @@ class AvmRecursionInnerCircuitTests : public ::testing::Test { using FF = Builder::FF; static constexpr FF EXPECTED_INNER_VK_HASH = - FF("0x188883cdfe1999a3723f58d5935eb81fd414b0f85528c0d6ae78b5abab3c2e08"); + FF("0x16e8f3172e5f14636bd7d73f695d734c326c31a78cb460d389e4555447cc69db"); static void SetUpTestSuite() { bb::srs::init_file_crs_factory(bb::srs::bb_crs_path()); } diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/bitwise.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/bitwise.hpp index ba59a4aeacea..8f656d41617c 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/bitwise.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/bitwise.hpp @@ -14,8 +14,8 @@ template class bitwiseImpl { public: using FF = FF_; - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 5, 5, - 3, 4, 4, 5, 3, 3, 3, 3, 3, 3, 3 }; + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 5, + 5, 3, 4, 4, 5, 3, 3, 3, 3, 3, 3, 3 }; template inline static bool skip(const AllEntities& in) { @@ -36,20 +36,20 @@ template class bitwise : public Relation> { static constexpr const std::string_view NAME = "bitwise"; // Subrelation indices constants, to be used in tests. - static constexpr size_t SR_LAST_ON_ERROR = 8; - static constexpr size_t SR_RES_TAG_SHOULD_MATCH_INPUT = 9; - static constexpr size_t SR_INPUT_TAG_CANNOT_BE_FF = 10; - static constexpr size_t SR_INPUT_TAGS_SHOULD_MATCH = 11; - static constexpr size_t SR_BITW_OP_ID_REL = 12; - static constexpr size_t SR_BITW_CTR_DECREMENT = 13; - static constexpr size_t SR_BITW_SEL_CTR_NON_ZERO = 14; - static constexpr size_t SR_BITW_LAST_FOR_CTR_ONE = 15; - static constexpr size_t SR_BITW_INIT_A = 16; - static constexpr size_t SR_BITW_INIT_B = 17; - static constexpr size_t SR_BITW_INIT_C = 18; - static constexpr size_t SR_BITW_ACC_REL_A = 19; - static constexpr size_t SR_BITW_ACC_REL_B = 20; - static constexpr size_t SR_BITW_ACC_REL_C = 21; + static constexpr size_t SR_LAST_ON_ERROR = 9; + static constexpr size_t SR_RES_TAG_SHOULD_MATCH_INPUT = 10; + static constexpr size_t SR_INPUT_TAG_CANNOT_BE_FF = 11; + static constexpr size_t SR_INPUT_TAGS_SHOULD_MATCH = 12; + static constexpr size_t SR_BITW_OP_ID_REL = 13; + static constexpr size_t SR_BITW_CTR_DECREMENT = 14; + static constexpr size_t SR_BITW_SEL_CTR_NON_ZERO = 15; + static constexpr size_t SR_BITW_LAST_FOR_CTR_ONE = 16; + static constexpr size_t SR_BITW_INIT_A = 17; + static constexpr size_t SR_BITW_INIT_B = 18; + static constexpr size_t SR_BITW_INIT_C = 19; + static constexpr size_t SR_BITW_ACC_REL_A = 20; + static constexpr size_t SR_BITW_ACC_REL_B = 21; + static constexpr size_t SR_BITW_ACC_REL_C = 22; static std::string get_subrelation_label(size_t index) { diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/bitwise_impl.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/bitwise_impl.hpp index cd9d3d43c011..7946b1abb786 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/bitwise_impl.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/bitwise_impl.hpp @@ -37,90 +37,96 @@ void bitwiseImpl::accumulate(ContainerOverSubrelations& evals, } { using View = typename std::tuple_element_t<3, ContainerOverSubrelations>::View; + auto tmp = static_cast(in.get(C::bitwise_start_sha256)) * + (FF(1) - static_cast(in.get(C::bitwise_start_sha256))); + std::get<3>(evals) += (tmp * scaling_factor); + } + { + using View = typename std::tuple_element_t<4, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::bitwise_start_keccak)) + static_cast(in.get(C::bitwise_start_sha256))) * (FF(1) - static_cast(in.get(C::bitwise_start))); - std::get<3>(evals) += (tmp * scaling_factor); + std::get<4>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<4, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<5, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::bitwise_sel_tag_ff_err)) * (FF(1) - static_cast(in.get(C::bitwise_sel_tag_ff_err))); - std::get<4>(evals) += (tmp * scaling_factor); + std::get<5>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<5, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<6, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::bitwise_sel_tag_mismatch_err)) * (FF(1) - static_cast(in.get(C::bitwise_sel_tag_mismatch_err))); - std::get<5>(evals) += (tmp * scaling_factor); + std::get<6>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<6, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<7, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::bitwise_err)) - (FF(1) - (FF(1) - static_cast(in.get(C::bitwise_sel_tag_mismatch_err))) * (FF(1) - static_cast(in.get(C::bitwise_sel_tag_ff_err))))); - std::get<6>(evals) += (tmp * scaling_factor); + std::get<7>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<7, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<8, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::bitwise_last)) * (FF(1) - static_cast(in.get(C::bitwise_last))); - std::get<7>(evals) += (tmp * scaling_factor); + std::get<8>(evals) += (tmp * scaling_factor); } { // LAST_ON_ERROR - using View = typename std::tuple_element_t<8, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<9, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::bitwise_err)) * (static_cast(in.get(C::bitwise_last)) - FF(1)); - std::get<8>(evals) += (tmp * scaling_factor); + std::get<9>(evals) += (tmp * scaling_factor); } { // RES_TAG_SHOULD_MATCH_INPUT - using View = typename std::tuple_element_t<9, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<10, ContainerOverSubrelations>::View; auto tmp = (FF(1) - static_cast(in.get(C::bitwise_err))) * static_cast(in.get(C::bitwise_start)) * (static_cast(in.get(C::bitwise_tag_c)) - static_cast(in.get(C::bitwise_tag_a))); - std::get<9>(evals) += (tmp * scaling_factor); + std::get<10>(evals) += (tmp * scaling_factor); } { // INPUT_TAG_CANNOT_BE_FF - using View = typename std::tuple_element_t<10, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<11, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::bitwise_start)) * ((CView(bitwise_TAG_A_DIFF) * (static_cast(in.get(C::bitwise_sel_tag_ff_err)) * (FF(1) - static_cast(in.get(C::bitwise_tag_a_inv))) + static_cast(in.get(C::bitwise_tag_a_inv))) - FF(1)) + static_cast(in.get(C::bitwise_sel_tag_ff_err))); - std::get<10>(evals) += (tmp * scaling_factor); + std::get<11>(evals) += (tmp * scaling_factor); } { // INPUT_TAGS_SHOULD_MATCH - using View = typename std::tuple_element_t<11, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<12, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::bitwise_start)) * (CView(bitwise_TAG_AB_DIFF) * ((FF(1) - static_cast(in.get(C::bitwise_sel_tag_mismatch_err))) * (FF(1) - static_cast(in.get(C::bitwise_tag_ab_diff_inv))) + static_cast(in.get(C::bitwise_tag_ab_diff_inv))) - static_cast(in.get(C::bitwise_sel_tag_mismatch_err))); - std::get<11>(evals) += (tmp * scaling_factor); + std::get<12>(evals) += (tmp * scaling_factor); } { // BITW_OP_ID_REL - using View = typename std::tuple_element_t<12, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<13, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::bitwise_op_id_shift)) - static_cast(in.get(C::bitwise_op_id))) * (FF(1) - static_cast(in.get(C::bitwise_last))); - std::get<12>(evals) += (tmp * scaling_factor); + std::get<13>(evals) += (tmp * scaling_factor); } { // BITW_CTR_DECREMENT - using View = typename std::tuple_element_t<13, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<14, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::bitwise_sel)) * ((static_cast(in.get(C::bitwise_ctr_shift)) - static_cast(in.get(C::bitwise_ctr))) + FF(1)) * (FF(1) - static_cast(in.get(C::bitwise_last))); - std::get<13>(evals) += (tmp * scaling_factor); + std::get<14>(evals) += (tmp * scaling_factor); } { // BITW_SEL_CTR_NON_ZERO - using View = typename std::tuple_element_t<14, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<15, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::bitwise_ctr)) * ((FF(1) - static_cast(in.get(C::bitwise_sel))) * (FF(1) - static_cast(in.get(C::bitwise_ctr_inv))) + static_cast(in.get(C::bitwise_ctr_inv))) - static_cast(in.get(C::bitwise_sel))); - std::get<14>(evals) += (tmp * scaling_factor); + std::get<15>(evals) += (tmp * scaling_factor); } { // BITW_LAST_FOR_CTR_ONE - using View = typename std::tuple_element_t<15, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<16, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::bitwise_sel)) * (((static_cast(in.get(C::bitwise_ctr)) - FF(1)) * (static_cast(in.get(C::bitwise_last)) * @@ -128,52 +134,52 @@ void bitwiseImpl::accumulate(ContainerOverSubrelations& evals, static_cast(in.get(C::bitwise_ctr_min_one_inv))) + static_cast(in.get(C::bitwise_last))) - FF(1)); - std::get<15>(evals) += (tmp * scaling_factor); + std::get<16>(evals) += (tmp * scaling_factor); } { // BITW_INIT_A - using View = typename std::tuple_element_t<16, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<17, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::bitwise_last)) * (static_cast(in.get(C::bitwise_acc_ia)) - static_cast(in.get(C::bitwise_ia_byte))); - std::get<16>(evals) += (tmp * scaling_factor); + std::get<17>(evals) += (tmp * scaling_factor); } { // BITW_INIT_B - using View = typename std::tuple_element_t<17, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<18, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::bitwise_last)) * (static_cast(in.get(C::bitwise_acc_ib)) - static_cast(in.get(C::bitwise_ib_byte))); - std::get<17>(evals) += (tmp * scaling_factor); + std::get<18>(evals) += (tmp * scaling_factor); } { // BITW_INIT_C - using View = typename std::tuple_element_t<18, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<19, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::bitwise_last)) * (static_cast(in.get(C::bitwise_acc_ic)) - static_cast(in.get(C::bitwise_ic_byte))); - std::get<18>(evals) += (tmp * scaling_factor); + std::get<19>(evals) += (tmp * scaling_factor); } { // BITW_ACC_REL_A - using View = typename std::tuple_element_t<19, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<20, ContainerOverSubrelations>::View; auto tmp = ((static_cast(in.get(C::bitwise_acc_ia)) - static_cast(in.get(C::bitwise_ia_byte))) - FF(256) * static_cast(in.get(C::bitwise_acc_ia_shift))) * (FF(1) - static_cast(in.get(C::bitwise_last))); - std::get<19>(evals) += (tmp * scaling_factor); + std::get<20>(evals) += (tmp * scaling_factor); } { // BITW_ACC_REL_B - using View = typename std::tuple_element_t<20, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<21, ContainerOverSubrelations>::View; auto tmp = ((static_cast(in.get(C::bitwise_acc_ib)) - static_cast(in.get(C::bitwise_ib_byte))) - FF(256) * static_cast(in.get(C::bitwise_acc_ib_shift))) * (FF(1) - static_cast(in.get(C::bitwise_last))); - std::get<20>(evals) += (tmp * scaling_factor); + std::get<21>(evals) += (tmp * scaling_factor); } { // BITW_ACC_REL_C - using View = typename std::tuple_element_t<21, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<22, ContainerOverSubrelations>::View; auto tmp = ((static_cast(in.get(C::bitwise_acc_ic)) - static_cast(in.get(C::bitwise_ic_byte))) - FF(256) * static_cast(in.get(C::bitwise_acc_ic_shift))) * (FF(1) - static_cast(in.get(C::bitwise_last))); - std::get<21>(evals) += (tmp * scaling_factor); + std::get<22>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<22, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<23, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::bitwise_sel_get_ctr)) - static_cast(in.get(C::bitwise_start)) * (FF(1) - static_cast(in.get(C::bitwise_err)))); - std::get<22>(evals) += (tmp * scaling_factor); + std::get<23>(evals) += (tmp * scaling_factor); } } diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/ecc_mem.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/ecc_mem.hpp index 822b8a7163a2..121cbd6db6bd 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/ecc_mem.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/ecc_mem.hpp @@ -14,7 +14,7 @@ template class ecc_memImpl { public: using FF = FF_; - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3, 3, 3, 3, 3, 6, 5, 6, 5, 4, 3 }; + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3, 3, 3, 3, 3, 3, 6, 5, 6, 5, 4, 3 }; template inline static bool skip(const AllEntities& in) { @@ -35,11 +35,11 @@ template class ecc_mem : public Relation> { static constexpr const std::string_view NAME = "ecc_mem"; // Subrelation indices constants, to be used in tests. - static constexpr size_t SR_WRITE_INCR_DST_ADDR = 0; - static constexpr size_t SR_P_CURVE_EQN = 5; - static constexpr size_t SR_P_ON_CURVE_CHECK = 6; - static constexpr size_t SR_Q_CURVE_EQN = 7; - static constexpr size_t SR_Q_ON_CURVE_CHECK = 8; + static constexpr size_t SR_WRITE_INCR_DST_ADDR = 1; + static constexpr size_t SR_P_CURVE_EQN = 6; + static constexpr size_t SR_P_ON_CURVE_CHECK = 7; + static constexpr size_t SR_Q_CURVE_EQN = 8; + static constexpr size_t SR_Q_ON_CURVE_CHECK = 9; static std::string get_subrelation_label(size_t index) { diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/ecc_mem_impl.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/ecc_mem_impl.hpp index 386ef5362555..5cf88013bdda 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/ecc_mem_impl.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/ecc_mem_impl.hpp @@ -21,88 +21,94 @@ void ecc_memImpl::accumulate(ContainerOverSubrelations& evals, const auto ecc_add_mem_Q_X3 = in.get(C::ecc_add_mem_q_x) * in.get(C::ecc_add_mem_q_x) * in.get(C::ecc_add_mem_q_x); const auto ecc_add_mem_Q_Y2 = in.get(C::ecc_add_mem_q_y) * in.get(C::ecc_add_mem_q_y); - { // WRITE_INCR_DST_ADDR + { using View = typename std::tuple_element_t<0, ContainerOverSubrelations>::View; + auto tmp = + static_cast(in.get(C::ecc_add_mem_sel)) * (FF(1) - static_cast(in.get(C::ecc_add_mem_sel))); + std::get<0>(evals) += (tmp * scaling_factor); + } + { // WRITE_INCR_DST_ADDR + using View = typename std::tuple_element_t<1, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::ecc_add_mem_dst_addr_1_)) - static_cast(in.get(C::ecc_add_mem_sel)) * (static_cast(in.get(C::ecc_add_mem_dst_addr_0_)) + FF(1))); - std::get<0>(evals) += (tmp * scaling_factor); + std::get<1>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<1, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<2, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::ecc_add_mem_dst_addr_2_)) - static_cast(in.get(C::ecc_add_mem_sel)) * (static_cast(in.get(C::ecc_add_mem_dst_addr_0_)) + FF(2))); - std::get<1>(evals) += (tmp * scaling_factor); + std::get<2>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<2, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<3, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::ecc_add_mem_sel)) * (static_cast(in.get(C::ecc_add_mem_max_mem_addr)) - CView(constants_AVM_HIGHEST_MEM_ADDRESS)); - std::get<2>(evals) += (tmp * scaling_factor); + std::get<3>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<3, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<4, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::ecc_add_mem_sel_p_not_on_curve_err)) * (FF(1) - static_cast(in.get(C::ecc_add_mem_sel_p_not_on_curve_err))); - std::get<3>(evals) += (tmp * scaling_factor); + std::get<4>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<4, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<5, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::ecc_add_mem_sel_q_not_on_curve_err)) * (FF(1) - static_cast(in.get(C::ecc_add_mem_sel_q_not_on_curve_err))); - std::get<4>(evals) += (tmp * scaling_factor); + std::get<5>(evals) += (tmp * scaling_factor); } { // P_CURVE_EQN - using View = typename std::tuple_element_t<5, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<6, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::ecc_add_mem_p_is_on_curve_eqn)) - static_cast(in.get(C::ecc_add_mem_sel)) * (CView(ecc_add_mem_P_Y2) - (CView(ecc_add_mem_P_X3) - FF(17))) * (FF(1) - static_cast(in.get(C::ecc_add_mem_p_is_inf)))); - std::get<5>(evals) += (tmp * scaling_factor); + std::get<6>(evals) += (tmp * scaling_factor); } { // P_ON_CURVE_CHECK - using View = typename std::tuple_element_t<6, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<7, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::ecc_add_mem_sel)) * (static_cast(in.get(C::ecc_add_mem_p_is_on_curve_eqn)) * ((FF(1) - static_cast(in.get(C::ecc_add_mem_sel_p_not_on_curve_err))) * (FF(1) - static_cast(in.get(C::ecc_add_mem_p_is_on_curve_eqn_inv))) + static_cast(in.get(C::ecc_add_mem_p_is_on_curve_eqn_inv))) - static_cast(in.get(C::ecc_add_mem_sel_p_not_on_curve_err))); - std::get<6>(evals) += (tmp * scaling_factor); + std::get<7>(evals) += (tmp * scaling_factor); } { // Q_CURVE_EQN - using View = typename std::tuple_element_t<7, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<8, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::ecc_add_mem_q_is_on_curve_eqn)) - static_cast(in.get(C::ecc_add_mem_sel)) * (CView(ecc_add_mem_Q_Y2) - (CView(ecc_add_mem_Q_X3) - FF(17))) * (FF(1) - static_cast(in.get(C::ecc_add_mem_q_is_inf)))); - std::get<7>(evals) += (tmp * scaling_factor); + std::get<8>(evals) += (tmp * scaling_factor); } { // Q_ON_CURVE_CHECK - using View = typename std::tuple_element_t<8, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<9, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::ecc_add_mem_sel)) * (static_cast(in.get(C::ecc_add_mem_q_is_on_curve_eqn)) * ((FF(1) - static_cast(in.get(C::ecc_add_mem_sel_q_not_on_curve_err))) * (FF(1) - static_cast(in.get(C::ecc_add_mem_q_is_on_curve_eqn_inv))) + static_cast(in.get(C::ecc_add_mem_q_is_on_curve_eqn_inv))) - static_cast(in.get(C::ecc_add_mem_sel_q_not_on_curve_err))); - std::get<8>(evals) += (tmp * scaling_factor); + std::get<9>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<9, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<10, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::ecc_add_mem_err)) - (FF(1) - (FF(1) - static_cast(in.get(C::ecc_add_mem_sel_dst_out_of_range_err))) * (FF(1) - static_cast(in.get(C::ecc_add_mem_sel_p_not_on_curve_err))) * (FF(1) - static_cast(in.get(C::ecc_add_mem_sel_q_not_on_curve_err))))); - std::get<9>(evals) += (tmp * scaling_factor); + std::get<10>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<10, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<11, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::ecc_add_mem_sel_should_exec)) - static_cast(in.get(C::ecc_add_mem_sel)) * (FF(1) - static_cast(in.get(C::ecc_add_mem_err)))); - std::get<10>(evals) += (tmp * scaling_factor); + std::get<11>(evals) += (tmp * scaling_factor); } } diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/poseidon2_mem.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/poseidon2_mem.hpp index dd23f69c301a..d817a4a2aa0f 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/poseidon2_mem.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/poseidon2_mem.hpp @@ -14,7 +14,7 @@ template class poseidon2_memImpl { public: using FF = FF_; - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 4, 3 }; + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 4, 3 }; template inline static bool skip(const AllEntities& in) { @@ -35,9 +35,9 @@ template class poseidon2_mem : public Relation::accumulate(ContainerOverSubrelations& evals, FF(1) * poseidon2_perm_mem_INPUT_TAG_DIFF_0 + FF(8) * poseidon2_perm_mem_INPUT_TAG_DIFF_1 + FF(64) * poseidon2_perm_mem_INPUT_TAG_DIFF_2 + FF(512) * poseidon2_perm_mem_INPUT_TAG_DIFF_3; - { // READ_ADDR_INCR + { using View = typename std::tuple_element_t<0, ContainerOverSubrelations>::View; + auto tmp = static_cast(in.get(C::poseidon2_perm_mem_sel)) * + (FF(1) - static_cast(in.get(C::poseidon2_perm_mem_sel))); + std::get<0>(evals) += (tmp * scaling_factor); + } + { // READ_ADDR_INCR + using View = typename std::tuple_element_t<1, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::poseidon2_perm_mem_read_address_1_)) - static_cast(in.get(C::poseidon2_perm_mem_sel)) * (static_cast(in.get(C::poseidon2_perm_mem_read_address_0_)) + FF(1))); - std::get<0>(evals) += (tmp * scaling_factor); + std::get<1>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<1, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<2, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::poseidon2_perm_mem_read_address_2_)) - static_cast(in.get(C::poseidon2_perm_mem_sel)) * (static_cast(in.get(C::poseidon2_perm_mem_read_address_0_)) + FF(2))); - std::get<1>(evals) += (tmp * scaling_factor); + std::get<2>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<2, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<3, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::poseidon2_perm_mem_read_address_3_)) - static_cast(in.get(C::poseidon2_perm_mem_sel)) * (static_cast(in.get(C::poseidon2_perm_mem_read_address_0_)) + FF(3))); - std::get<2>(evals) += (tmp * scaling_factor); + std::get<3>(evals) += (tmp * scaling_factor); } { // WRITE_ADDR_INCR - using View = typename std::tuple_element_t<3, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<4, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::poseidon2_perm_mem_write_address_1_)) - static_cast(in.get(C::poseidon2_perm_mem_sel)) * (static_cast(in.get(C::poseidon2_perm_mem_write_address_0_)) + FF(1))); - std::get<3>(evals) += (tmp * scaling_factor); + std::get<4>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<4, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<5, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::poseidon2_perm_mem_write_address_2_)) - static_cast(in.get(C::poseidon2_perm_mem_sel)) * (static_cast(in.get(C::poseidon2_perm_mem_write_address_0_)) + FF(2))); - std::get<4>(evals) += (tmp * scaling_factor); + std::get<5>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<5, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<6, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::poseidon2_perm_mem_write_address_3_)) - static_cast(in.get(C::poseidon2_perm_mem_sel)) * (static_cast(in.get(C::poseidon2_perm_mem_write_address_0_)) + FF(3))); - std::get<5>(evals) += (tmp * scaling_factor); + std::get<6>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<6, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<7, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::poseidon2_perm_mem_sel)) * (static_cast(in.get(C::poseidon2_perm_mem_max_mem_addr)) - CView(constants_AVM_HIGHEST_MEM_ADDRESS)); - std::get<6>(evals) += (tmp * scaling_factor); + std::get<7>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<7, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<8, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::poseidon2_perm_mem_sel_should_read_mem)) - static_cast(in.get(C::poseidon2_perm_mem_sel)) * (FF(1) - static_cast(in.get(C::poseidon2_perm_mem_sel_src_out_of_range_err))) * (FF(1) - static_cast(in.get(C::poseidon2_perm_mem_sel_dst_out_of_range_err)))); - std::get<7>(evals) += (tmp * scaling_factor); + std::get<8>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<8, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<9, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::poseidon2_perm_mem_sel_invalid_tag_err)) * (FF(1) - static_cast(in.get(C::poseidon2_perm_mem_sel_invalid_tag_err))); - std::get<8>(evals) += (tmp * scaling_factor); + std::get<9>(evals) += (tmp * scaling_factor); } { // BATCH_ZERO_CHECK - using View = typename std::tuple_element_t<9, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<10, ContainerOverSubrelations>::View; auto tmp = (CView(poseidon2_perm_mem_BATCHED_TAG_CHECK) * ((FF(1) - static_cast(in.get(C::poseidon2_perm_mem_sel_invalid_tag_err))) * (FF(1) - static_cast(in.get(C::poseidon2_perm_mem_batch_tag_inv))) + static_cast(in.get(C::poseidon2_perm_mem_batch_tag_inv))) - static_cast(in.get(C::poseidon2_perm_mem_sel_invalid_tag_err))); - std::get<9>(evals) += (tmp * scaling_factor); + std::get<10>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<10, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<11, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::poseidon2_perm_mem_err)) - (FF(1) - (FF(1) - static_cast(in.get(C::poseidon2_perm_mem_sel_src_out_of_range_err))) * (FF(1) - static_cast(in.get(C::poseidon2_perm_mem_sel_dst_out_of_range_err))) * (FF(1) - static_cast(in.get(C::poseidon2_perm_mem_sel_invalid_tag_err))))); - std::get<10>(evals) += (tmp * scaling_factor); + std::get<11>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<11, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<12, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::poseidon2_perm_mem_sel_should_exec)) - static_cast(in.get(C::poseidon2_perm_mem_sel)) * (FF(1) - static_cast(in.get(C::poseidon2_perm_mem_err)))); - std::get<11>(evals) += (tmp * scaling_factor); + std::get<12>(evals) += (tmp * scaling_factor); } } diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/to_radix_mem.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/to_radix_mem.hpp index f1e0dd7a83bc..729770becb36 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/to_radix_mem.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/to_radix_mem.hpp @@ -14,9 +14,9 @@ template class to_radix_memImpl { public: using FF = FF_; - static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 3, 3, 3, - 3, 3, 5, 3, 5, 3, 5, 3, 6, 3, 4, 4, 3, - 3, 4, 4, 4, 4, 4, 4, 7, 4, 4, 3 }; + static constexpr std::array SUBRELATION_PARTIAL_LENGTHS = { 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 3, 3, + 3, 3, 3, 5, 3, 5, 3, 5, 3, 6, 3, 4, 4, + 3, 3, 4, 4, 4, 4, 4, 4, 7, 4, 4, 3 }; template inline static bool skip(const AllEntities& in) { @@ -37,25 +37,25 @@ template class to_radix_mem : public Relation static constexpr const std::string_view NAME = "to_radix_mem"; // Subrelation indices constants, to be used in tests. - static constexpr size_t SR_LAST_HAS_SEL_ON = 2; - static constexpr size_t SR_START_AFTER_LAST = 3; - static constexpr size_t SR_SEL_CONTINUITY = 4; - static constexpr size_t SR_EXEC_CLK_CONTINUITY = 5; - static constexpr size_t SR_SPACE_ID_CONTINUITY = 6; - static constexpr size_t SR_VALUE_CONTNUITY = 7; - static constexpr size_t SR_RADIX_CONTINUITY = 8; - static constexpr size_t SR_IS_OUTPUT_BITS_CONTINUITY = 9; - static constexpr size_t SR_IS_OUTPUT_BITS_IMPLY_RADIX_2 = 15; - static constexpr size_t SR_ZERO_CHECK_NUM_LIMBS = 17; - static constexpr size_t SR_ZERO_CHECK_VALUE = 19; - static constexpr size_t SR_SEL_SHOULD_DECOMPOSE_CONTINUITY = 24; - static constexpr size_t SR_TRUNCATION_ERROR = 27; - static constexpr size_t SR_DECR_NUM_LIMBS = 29; - static constexpr size_t SR_INCR_DST_ADDRESS = 30; - static constexpr size_t SR_LAST_ROW_ERR_COMPUTATION = 31; - static constexpr size_t SR_LAST_ROW_NUM_LIMBS_ZERO = 32; - static constexpr size_t SR_LAST_ROW_VALID_COMPUTATION = 33; - static constexpr size_t SR_SEL_SHOULD_WRITE_MEM_CONTINUITY = 35; + static constexpr size_t SR_LAST_HAS_SEL_ON = 3; + static constexpr size_t SR_START_AFTER_LAST = 4; + static constexpr size_t SR_SEL_CONTINUITY = 5; + static constexpr size_t SR_EXEC_CLK_CONTINUITY = 6; + static constexpr size_t SR_SPACE_ID_CONTINUITY = 7; + static constexpr size_t SR_VALUE_CONTNUITY = 8; + static constexpr size_t SR_RADIX_CONTINUITY = 9; + static constexpr size_t SR_IS_OUTPUT_BITS_CONTINUITY = 10; + static constexpr size_t SR_IS_OUTPUT_BITS_IMPLY_RADIX_2 = 16; + static constexpr size_t SR_ZERO_CHECK_NUM_LIMBS = 18; + static constexpr size_t SR_ZERO_CHECK_VALUE = 20; + static constexpr size_t SR_SEL_SHOULD_DECOMPOSE_CONTINUITY = 25; + static constexpr size_t SR_TRUNCATION_ERROR = 28; + static constexpr size_t SR_DECR_NUM_LIMBS = 30; + static constexpr size_t SR_INCR_DST_ADDRESS = 31; + static constexpr size_t SR_LAST_ROW_ERR_COMPUTATION = 32; + static constexpr size_t SR_LAST_ROW_NUM_LIMBS_ZERO = 33; + static constexpr size_t SR_LAST_ROW_VALID_COMPUTATION = 34; + static constexpr size_t SR_SEL_SHOULD_WRITE_MEM_CONTINUITY = 36; static std::string get_subrelation_label(size_t index) { diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/to_radix_mem_impl.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/to_radix_mem_impl.hpp index 7efc1e469b12..4558aef110bc 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/to_radix_mem_impl.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/to_radix_mem_impl.hpp @@ -28,113 +28,119 @@ void to_radix_memImpl::accumulate(ContainerOverSubrelations& evals, { using View = typename std::tuple_element_t<0, ContainerOverSubrelations>::View; - auto tmp = static_cast(in.get(C::to_radix_mem_start)) * - (FF(1) - static_cast(in.get(C::to_radix_mem_start))); + auto tmp = + static_cast(in.get(C::to_radix_mem_sel)) * (FF(1) - static_cast(in.get(C::to_radix_mem_sel))); std::get<0>(evals) += (tmp * scaling_factor); } { using View = typename std::tuple_element_t<1, ContainerOverSubrelations>::View; + auto tmp = static_cast(in.get(C::to_radix_mem_start)) * + (FF(1) - static_cast(in.get(C::to_radix_mem_start))); + std::get<1>(evals) += (tmp * scaling_factor); + } + { + using View = typename std::tuple_element_t<2, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_last)) * (FF(1) - static_cast(in.get(C::to_radix_mem_last))); - std::get<1>(evals) += (tmp * scaling_factor); + std::get<2>(evals) += (tmp * scaling_factor); } { // LAST_HAS_SEL_ON - using View = typename std::tuple_element_t<2, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<3, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_last)) * (FF(1) - static_cast(in.get(C::to_radix_mem_sel))); - std::get<2>(evals) += (tmp * scaling_factor); + std::get<3>(evals) += (tmp * scaling_factor); } { // START_AFTER_LAST - using View = typename std::tuple_element_t<3, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<4, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_sel_shift)) * (static_cast(in.get(C::to_radix_mem_start_shift)) - CView(to_radix_mem_LATCH_CONDITION)); - std::get<3>(evals) += (tmp * scaling_factor); + std::get<4>(evals) += (tmp * scaling_factor); } { // SEL_CONTINUITY - using View = typename std::tuple_element_t<4, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<5, ContainerOverSubrelations>::View; auto tmp = (FF(1) - static_cast(in.get(C::precomputed_first_row))) * (FF(1) - static_cast(in.get(C::to_radix_mem_sel))) * static_cast(in.get(C::to_radix_mem_sel_shift)); - std::get<4>(evals) += (tmp * scaling_factor); + std::get<5>(evals) += (tmp * scaling_factor); } { // EXEC_CLK_CONTINUITY - using View = typename std::tuple_element_t<5, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<6, ContainerOverSubrelations>::View; auto tmp = CView(to_radix_mem_NOT_LAST) * (static_cast(in.get(C::to_radix_mem_execution_clk_shift)) - static_cast(in.get(C::to_radix_mem_execution_clk))); - std::get<5>(evals) += (tmp * scaling_factor); + std::get<6>(evals) += (tmp * scaling_factor); } { // SPACE_ID_CONTINUITY - using View = typename std::tuple_element_t<6, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<7, ContainerOverSubrelations>::View; auto tmp = CView(to_radix_mem_NOT_LAST) * (static_cast(in.get(C::to_radix_mem_space_id_shift)) - static_cast(in.get(C::to_radix_mem_space_id))); - std::get<6>(evals) += (tmp * scaling_factor); + std::get<7>(evals) += (tmp * scaling_factor); } { // VALUE_CONTNUITY - using View = typename std::tuple_element_t<7, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<8, ContainerOverSubrelations>::View; auto tmp = CView(to_radix_mem_NOT_LAST) * (static_cast(in.get(C::to_radix_mem_value_to_decompose_shift)) - static_cast(in.get(C::to_radix_mem_value_to_decompose))); - std::get<7>(evals) += (tmp * scaling_factor); + std::get<8>(evals) += (tmp * scaling_factor); } { // RADIX_CONTINUITY - using View = typename std::tuple_element_t<8, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<9, ContainerOverSubrelations>::View; auto tmp = CView(to_radix_mem_NOT_LAST) * (static_cast(in.get(C::to_radix_mem_radix_shift)) - static_cast(in.get(C::to_radix_mem_radix))); - std::get<8>(evals) += (tmp * scaling_factor); + std::get<9>(evals) += (tmp * scaling_factor); } { // IS_OUTPUT_BITS_CONTINUITY - using View = typename std::tuple_element_t<9, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<10, ContainerOverSubrelations>::View; auto tmp = CView(to_radix_mem_NOT_LAST) * (static_cast(in.get(C::to_radix_mem_is_output_bits_shift)) - static_cast(in.get(C::to_radix_mem_is_output_bits))); - std::get<9>(evals) += (tmp * scaling_factor); + std::get<10>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<10, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<11, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_start)) * (static_cast(in.get(C::to_radix_mem_max_mem_size)) - CView(constants_AVM_MEMORY_SIZE)); - std::get<10>(evals) += (tmp * scaling_factor); + std::get<11>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<11, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<12, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_start)) * ((static_cast(in.get(C::to_radix_mem_write_addr_upper_bound)) - static_cast(in.get(C::to_radix_mem_dst_addr))) - static_cast(in.get(C::to_radix_mem_num_limbs))); - std::get<11>(evals) += (tmp * scaling_factor); + std::get<12>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<12, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<13, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_sel_invalid_bitwise_radix)) * (FF(1) - static_cast(in.get(C::to_radix_mem_sel_invalid_bitwise_radix))); - std::get<12>(evals) += (tmp * scaling_factor); + std::get<13>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<13, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<14, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_start)) * (static_cast(in.get(C::to_radix_mem_two)) - FF(2)); - std::get<13>(evals) += (tmp * scaling_factor); + std::get<14>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<14, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<15, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_start)) * (static_cast(in.get(C::to_radix_mem_two_five_six)) - FF(256)); - std::get<14>(evals) += (tmp * scaling_factor); + std::get<15>(evals) += (tmp * scaling_factor); } { // IS_OUTPUT_BITS_IMPLY_RADIX_2 - using View = typename std::tuple_element_t<15, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<16, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_start)) * static_cast(in.get(C::to_radix_mem_is_output_bits)) * (FF(1) - static_cast(in.get(C::to_radix_mem_sel_invalid_bitwise_radix))) * (static_cast(in.get(C::to_radix_mem_radix)) - FF(2)); - std::get<15>(evals) += (tmp * scaling_factor); + std::get<16>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<16, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<17, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_sel_num_limbs_is_zero)) * (FF(1) - static_cast(in.get(C::to_radix_mem_sel_num_limbs_is_zero))); - std::get<16>(evals) += (tmp * scaling_factor); + std::get<17>(evals) += (tmp * scaling_factor); } { // ZERO_CHECK_NUM_LIMBS - using View = typename std::tuple_element_t<17, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<18, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_start)) * ((static_cast(in.get(C::to_radix_mem_num_limbs)) * (static_cast(in.get(C::to_radix_mem_sel_num_limbs_is_zero)) * @@ -142,16 +148,16 @@ void to_radix_memImpl::accumulate(ContainerOverSubrelations& evals, static_cast(in.get(C::to_radix_mem_num_limbs_inv))) - FF(1)) + static_cast(in.get(C::to_radix_mem_sel_num_limbs_is_zero))); - std::get<17>(evals) += (tmp * scaling_factor); + std::get<18>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<18, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<19, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_sel_value_is_zero)) * (FF(1) - static_cast(in.get(C::to_radix_mem_sel_value_is_zero))); - std::get<18>(evals) += (tmp * scaling_factor); + std::get<19>(evals) += (tmp * scaling_factor); } { // ZERO_CHECK_VALUE - using View = typename std::tuple_element_t<19, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<20, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_start)) * ((static_cast(in.get(C::to_radix_mem_value_to_decompose)) * (static_cast(in.get(C::to_radix_mem_sel_value_is_zero)) * @@ -159,102 +165,102 @@ void to_radix_memImpl::accumulate(ContainerOverSubrelations& evals, static_cast(in.get(C::to_radix_mem_value_inv))) - FF(1)) + static_cast(in.get(C::to_radix_mem_sel_value_is_zero))); - std::get<19>(evals) += (tmp * scaling_factor); + std::get<20>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<20, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<21, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::to_radix_mem_sel_invalid_num_limbs_err)) - static_cast(in.get(C::to_radix_mem_sel_num_limbs_is_zero)) * (FF(1) - static_cast(in.get(C::to_radix_mem_sel_value_is_zero)))); - std::get<20>(evals) += (tmp * scaling_factor); + std::get<21>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<21, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<22, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::to_radix_mem_input_validation_error)) - (FF(1) - (FF(1) - static_cast(in.get(C::to_radix_mem_sel_dst_out_of_range_err))) * (FF(1) - static_cast(in.get(C::to_radix_mem_sel_radix_lt_2_err))) * (FF(1) - static_cast(in.get(C::to_radix_mem_sel_radix_gt_256_err))) * (FF(1) - static_cast(in.get(C::to_radix_mem_sel_invalid_bitwise_radix))) * (FF(1) - static_cast(in.get(C::to_radix_mem_sel_invalid_num_limbs_err))))); - std::get<21>(evals) += (tmp * scaling_factor); + std::get<22>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<22, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<23, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_sel_should_decompose)) * (FF(1) - static_cast(in.get(C::to_radix_mem_sel_should_decompose))); - std::get<22>(evals) += (tmp * scaling_factor); + std::get<23>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<23, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<24, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_start)) * ((FF(1) - static_cast(in.get(C::to_radix_mem_input_validation_error))) * (FF(1) - static_cast(in.get(C::to_radix_mem_sel_num_limbs_is_zero))) - static_cast(in.get(C::to_radix_mem_sel_should_decompose))); - std::get<23>(evals) += (tmp * scaling_factor); + std::get<24>(evals) += (tmp * scaling_factor); } { // SEL_SHOULD_DECOMPOSE_CONTINUITY - using View = typename std::tuple_element_t<24, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<25, ContainerOverSubrelations>::View; auto tmp = CView(to_radix_mem_NOT_LAST) * (static_cast(in.get(C::to_radix_mem_sel_should_decompose_shift)) - static_cast(in.get(C::to_radix_mem_sel_should_decompose))); - std::get<24>(evals) += (tmp * scaling_factor); + std::get<25>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<25, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<26, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::to_radix_mem_limb_index_to_lookup)) - static_cast(in.get(C::to_radix_mem_sel_should_decompose)) * (static_cast(in.get(C::to_radix_mem_num_limbs)) - FF(1))); - std::get<25>(evals) += (tmp * scaling_factor); + std::get<26>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<26, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<27, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_sel_truncation_error)) * (FF(1) - static_cast(in.get(C::to_radix_mem_sel_truncation_error))); - std::get<26>(evals) += (tmp * scaling_factor); + std::get<27>(evals) += (tmp * scaling_factor); } { // TRUNCATION_ERROR - using View = typename std::tuple_element_t<27, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<28, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::to_radix_mem_sel_truncation_error)) - static_cast(in.get(C::to_radix_mem_start)) * static_cast(in.get(C::to_radix_mem_sel_should_decompose)) * (FF(1) - static_cast(in.get(C::to_radix_mem_value_found)))); - std::get<27>(evals) += (tmp * scaling_factor); + std::get<28>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<28, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<29, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::to_radix_mem_err)) - static_cast(in.get(C::to_radix_mem_start)) * (FF(1) - (FF(1) - static_cast(in.get(C::to_radix_mem_input_validation_error))) * (FF(1) - static_cast(in.get(C::to_radix_mem_sel_truncation_error))))); - std::get<28>(evals) += (tmp * scaling_factor); + std::get<29>(evals) += (tmp * scaling_factor); } { // DECR_NUM_LIMBS - using View = typename std::tuple_element_t<29, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<30, ContainerOverSubrelations>::View; auto tmp = CView(to_radix_mem_NOT_LAST) * (static_cast(in.get(C::to_radix_mem_num_limbs_shift)) - (static_cast(in.get(C::to_radix_mem_num_limbs)) - FF(1))); - std::get<29>(evals) += (tmp * scaling_factor); + std::get<30>(evals) += (tmp * scaling_factor); } { // INCR_DST_ADDRESS - using View = typename std::tuple_element_t<30, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<31, ContainerOverSubrelations>::View; auto tmp = CView(to_radix_mem_NOT_LAST) * (static_cast(in.get(C::to_radix_mem_dst_addr_shift)) - (static_cast(in.get(C::to_radix_mem_dst_addr)) + FF(1))); - std::get<30>(evals) += (tmp * scaling_factor); + std::get<31>(evals) += (tmp * scaling_factor); } { // LAST_ROW_ERR_COMPUTATION - using View = typename std::tuple_element_t<31, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<32, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_start)) * static_cast(in.get(C::to_radix_mem_err)) * (static_cast(in.get(C::to_radix_mem_last)) - FF(1)); - std::get<31>(evals) += (tmp * scaling_factor); + std::get<32>(evals) += (tmp * scaling_factor); } { // LAST_ROW_NUM_LIMBS_ZERO - using View = typename std::tuple_element_t<32, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<33, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_start)) * static_cast(in.get(C::to_radix_mem_sel_num_limbs_is_zero)) * (static_cast(in.get(C::to_radix_mem_last)) - FF(1)); - std::get<32>(evals) += (tmp * scaling_factor); + std::get<33>(evals) += (tmp * scaling_factor); } { // LAST_ROW_VALID_COMPUTATION - using View = typename std::tuple_element_t<33, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<34, ContainerOverSubrelations>::View; auto tmp = CView(to_radix_mem_NO_ERR_NOR_NUM_LIMBS_ZERO) * ((CView(to_radix_mem_NUM_LIMBS_MINUS_ONE) * (static_cast(in.get(C::to_radix_mem_last)) * @@ -262,31 +268,31 @@ void to_radix_memImpl::accumulate(ContainerOverSubrelations& evals, static_cast(in.get(C::to_radix_mem_num_limbs_minus_one_inv))) - FF(1)) + static_cast(in.get(C::to_radix_mem_last))); - std::get<33>(evals) += (tmp * scaling_factor); + std::get<34>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<34, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<35, ContainerOverSubrelations>::View; auto tmp = static_cast(in.get(C::to_radix_mem_start)) * ((FF(1) - static_cast(in.get(C::to_radix_mem_err))) * (FF(1) - static_cast(in.get(C::to_radix_mem_sel_num_limbs_is_zero))) - static_cast(in.get(C::to_radix_mem_sel_should_write_mem))); - std::get<34>(evals) += (tmp * scaling_factor); + std::get<35>(evals) += (tmp * scaling_factor); } { // SEL_SHOULD_WRITE_MEM_CONTINUITY - using View = typename std::tuple_element_t<35, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<36, ContainerOverSubrelations>::View; auto tmp = CView(to_radix_mem_NOT_LAST) * (static_cast(in.get(C::to_radix_mem_sel_should_write_mem_shift)) - static_cast(in.get(C::to_radix_mem_sel_should_write_mem))); - std::get<35>(evals) += (tmp * scaling_factor); + std::get<36>(evals) += (tmp * scaling_factor); } { - using View = typename std::tuple_element_t<36, ContainerOverSubrelations>::View; + using View = typename std::tuple_element_t<37, ContainerOverSubrelations>::View; auto tmp = (static_cast(in.get(C::to_radix_mem_output_tag)) - static_cast(in.get(C::to_radix_mem_sel_should_write_mem)) * ((CView(constants_MEM_TAG_U1) - CView(constants_MEM_TAG_U8)) * static_cast(in.get(C::to_radix_mem_is_output_bits)) + CView(constants_MEM_TAG_U8))); - std::get<36>(evals) += (tmp * scaling_factor); + std::get<37>(evals) += (tmp * scaling_factor); } }