diff --git a/barretenberg/cpp/src/barretenberg/vm2/common/expression.hpp b/barretenberg/cpp/src/barretenberg/vm2/common/expression.hpp new file mode 100644 index 000000000000..ecae3add8934 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/vm2/common/expression.hpp @@ -0,0 +1,113 @@ +#pragma once + +#include "barretenberg/vm2/common/field.hpp" +#include "barretenberg/vm2/generated/columns.hpp" + +namespace bb::avm2 { + +/** + * @brief Relation expression representing a constant value. + */ +struct ConstantExpression { + FF value; + static constexpr bool __IS_EXPRESSION__ = true; + + constexpr explicit ConstantExpression(FF value) + : value(value) + {} +}; + +/** + * @brief Relation expression representing a column. + */ +struct ColumnExpression { + ColumnAndShifts column; + static constexpr bool __IS_EXPRESSION__ = true; + + constexpr explicit ColumnExpression(ColumnAndShifts column) + : column(column) + {} +}; + +/** + * @brief Relation expression representing a unary negation. + */ +template struct NegExpression { + InnerType inner; + static constexpr bool __IS_EXPRESSION__ = true; + + constexpr explicit NegExpression(InnerType inner) + : inner(std::forward(inner)) + {} +}; + +/** + * @brief Relation expression representing an addition. + */ +template struct AddExpression { + LhsType lhs; + RhsType rhs; + + constexpr explicit AddExpression(LhsType&& lhs, RhsType&& rhs) + : lhs(std::forward(lhs)) + , rhs(std::forward(rhs)) + {} +}; + +/** + * @brief Relation expression representing a subtraction. + */ +template struct SubExpression { + LhsType lhs; + RhsType rhs; + static constexpr bool __IS_EXPRESSION__ = true; + + constexpr explicit SubExpression(LhsType&& lhs, RhsType&& rhs) + : lhs(std::forward(lhs)) + , rhs(std::forward(rhs)) + {} +}; + +/** + * @brief Relation expression representing a multiplication. + */ +template struct MulExpression { + LhsType lhs; + RhsType rhs; + static constexpr bool __IS_EXPRESSION__ = true; + + constexpr explicit MulExpression(LhsType&& lhs, RhsType&& rhs) + : lhs(std::forward(lhs)) + , rhs(std::forward(rhs)) + {} +}; + +template +constexpr NegExpression operator-(InnerType&& inner) + requires(InnerType::__IS_EXPRESSION__) +{ + return NegExpression(std::forward(inner)); +} + +template +constexpr AddExpression operator+(LhsType&& lhs, RhsType&& rhs) + requires(LhsType::__IS_EXPRESSION__ && RhsType::__IS_EXPRESSION__) +{ + return AddExpression(std::forward(lhs), std::forward(rhs)); +} + +template +constexpr SubExpression operator-(LhsType&& lhs, RhsType&& rhs) + requires(LhsType::__IS_EXPRESSION__ && RhsType::__IS_EXPRESSION__) +{ + return SubExpression(std::forward(lhs), std::forward(rhs)); +} + +template +constexpr MulExpression operator*(LhsType&& lhs, RhsType&& rhs) + requires(LhsType::__IS_EXPRESSION__ && RhsType::__IS_EXPRESSION__) +{ + return MulExpression(std::forward(lhs), std::forward(rhs)); +} + +} // namespace bb::avm2 diff --git a/barretenberg/cpp/src/barretenberg/vm2/common/expression_evaluation.hpp b/barretenberg/cpp/src/barretenberg/vm2/common/expression_evaluation.hpp new file mode 100644 index 000000000000..cb50c94bd852 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/vm2/common/expression_evaluation.hpp @@ -0,0 +1,80 @@ +#pragma once + +#include "barretenberg/vm2/common/expression.hpp" + +namespace bb::avm2 { + +/** + * @brief Returns the degree of an expression. + * + * It can be used at copile time. + */ +class DegreeExpressionEvaluator { + public: + static constexpr size_t evaluate(const ConstantExpression&) { return 0; } + static constexpr size_t evaluate(const ColumnExpression&) { return 1; } + + template static constexpr size_t evaluate(const NegExpression& expression) + { + return evaluate(expression.inner); + } + + template + static constexpr size_t evaluate(const AddExpression& expression) + { + return std::max(evaluate(expression.lhs), evaluate(expression.rhs)); + } + + template + static constexpr size_t evaluate(const SubExpression& expression) + { + return std::max(evaluate(expression.lhs), evaluate(expression.rhs)); + } + + template + static constexpr size_t evaluate(const MulExpression& expression) + { + return evaluate(expression.lhs) + evaluate(expression.rhs); + } +}; + +/** + * @brief Evaluates an expression to a value. + */ +template class ValueExpressionEvaluator { + public: + using ColumnEvaluator = std::function; + ValueExpressionEvaluator(ColumnEvaluator column_evaluator) + : column_evaluator_(std::move(column_evaluator)) + {} + + ValueType evaluate(const ConstantExpression& expression) const { return expression.value; } + ValueType evaluate(const ColumnExpression& expression) const { return column_evaluator_(expression); } + + template ValueType evaluate(const NegExpression& expression) const + { + return -evaluate(expression.inner); + } + + template + ValueType evaluate(const AddExpression& expression) const + { + return evaluate(expression.lhs) + evaluate(expression.rhs); + } + + template + ValueType evaluate(const SubExpression& expression) const + { + return evaluate(expression.lhs) - evaluate(expression.rhs); + } + + template + ValueType evaluate(const MulExpression& expression) const + { + return evaluate(expression.lhs) * evaluate(expression.rhs); + } + + private: + ColumnEvaluator column_evaluator_; +}; +} // namespace bb::avm2 diff --git a/barretenberg/cpp/src/barretenberg/vm2/common/expression_evaluation.test.cpp b/barretenberg/cpp/src/barretenberg/vm2/common/expression_evaluation.test.cpp new file mode 100644 index 000000000000..c95be981f497 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/vm2/common/expression_evaluation.test.cpp @@ -0,0 +1,22 @@ +#include "barretenberg/vm2/common/expression_evaluation.hpp" + +namespace bb::avm2 { + +static_assert(DegreeExpressionEvaluator::evaluate(ConstantExpression(33) + + ColumnExpression(ColumnAndShifts::memory_clk)) == 1); +static_assert(DegreeExpressionEvaluator::evaluate(ColumnExpression(ColumnAndShifts::context_stack_is_static) * + ColumnExpression(ColumnAndShifts::memory_clk)) == 2); +static_assert(DegreeExpressionEvaluator::evaluate(-ConstantExpression(33)) == 0); +static_assert(DegreeExpressionEvaluator::evaluate(-ColumnExpression(ColumnAndShifts::memory_clk)) == 1); +static_assert(DegreeExpressionEvaluator::evaluate(-(-ConstantExpression(33))) == 0); +static_assert(DegreeExpressionEvaluator::evaluate(-(-ColumnExpression(ColumnAndShifts::memory_clk))) == 1); +static_assert(DegreeExpressionEvaluator::evaluate(ConstantExpression(33) - + ColumnExpression(ColumnAndShifts::memory_clk)) == 1); +static_assert(DegreeExpressionEvaluator::evaluate(ColumnExpression(ColumnAndShifts::context_stack_is_static) - + ColumnExpression(ColumnAndShifts::memory_clk)) == 1); +static_assert(DegreeExpressionEvaluator::evaluate(ConstantExpression(33) * + ColumnExpression(ColumnAndShifts::memory_clk)) == 1); +static_assert(DegreeExpressionEvaluator::evaluate(ColumnExpression(ColumnAndShifts::context_stack_is_static) * + ColumnExpression(ColumnAndShifts::memory_clk)) == 2); + +} // namespace bb::avm2 diff --git a/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/interactions_base.hpp b/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/interactions_base.hpp index e7fa3cee2c62..42e3435ea576 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/interactions_base.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/interactions_base.hpp @@ -1,10 +1,14 @@ #pragma once #include +#include +#include #include "barretenberg/common/tuple.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" #include "barretenberg/relations/generic_permutation/generic_permutation_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" +#include "barretenberg/vm2/common/expression_evaluation.hpp" #include "barretenberg/vm2/generated/columns.hpp" namespace bb::avm2 { @@ -20,18 +24,35 @@ template struct lookup_settings : public Settings_ { static constexpr size_t READ_TERM_DEGREE = 0; static constexpr size_t WRITE_TERM_DEGREE = 0; + // TODO(fcarreiro): support any degree. + // static constexpr size_t MAX_DEGREE = std::max( + // { DegreeExpressionEvaluator::evaluate(Settings_::SRC_SELECTOR_EXPR), + // DegreeExpressionEvaluator::evaluate(Settings_::DST_SELECTOR_EXPR), + // [](std::index_sequence, std::index_sequence) { + // return std::max(DegreeExpressionEvaluator::evaluate(std::get(Settings_::SRC_EXPRS))..., + // DegreeExpressionEvaluator::evaluate(std::get(Settings_::DST_EXPRS))...); + // }(std::make_index_sequence>{}, + // std::make_index_sequence>{}) }); + // // The GenericLookupRelation only safely supports degree <= 1 for each expression. + // static_assert(MAX_DEGREE <= 1, "MAX_DEGREE of lookup must be less than 1"); + template static inline auto inverse_polynomial_is_computed_at_row(const AllEntities& in) { - return (in.get(static_cast(Settings_::SRC_SELECTOR)) == 1 || - in.get(static_cast(Settings_::DST_SELECTOR)) == 1); + using RetType = + decltype(std::declval&>().get(std::declval())); + auto ev = + ValueExpressionEvaluator([&in](const ColumnExpression& expr) { return in.get(expr.column); }); + return (ev.evaluate(Settings_::SRC_SELECTOR_EXPR) == 1 || ev.evaluate(Settings_::DST_SELECTOR_EXPR) == 1); } template static inline auto compute_inverse_exists(const AllEntities& in) { using View = typename Accumulator::View; - const auto is_operation = View(in.get(static_cast(Settings_::SRC_SELECTOR))); - const auto is_table_entry = View(in.get(static_cast(Settings_::DST_SELECTOR))); + auto ev = + ValueExpressionEvaluator([&in](const ColumnExpression& expr) { return View(in.get(expr.column)); }); + const auto is_operation = ev.evaluate(Settings_::SRC_SELECTOR_EXPR); + const auto is_table_entry = ev.evaluate(Settings_::DST_SELECTOR_EXPR); return (is_operation + is_table_entry - is_operation * is_table_entry); } @@ -39,15 +60,19 @@ template struct lookup_settings : public Settings_ { { return []( AllEntities&& in, std::index_sequence, std::index_sequence) { + using RetType = decltype(std::declval&>().get( + std::declval())); + auto ev = + ValueExpressionEvaluator([&in](const ColumnExpression& expr) { return in.get(expr.column); }); return flat_tuple::forward_as_tuple(in.get(static_cast(Settings_::INVERSES)), in.get(static_cast(Settings_::COUNTS)), - in.get(static_cast(Settings_::SRC_SELECTOR)), - in.get(static_cast(Settings_::DST_SELECTOR)), - in.get(Settings_::SRC_COLUMNS[ISource])..., - in.get(Settings_::DST_COLUMNS[IDest])...); + ev.evaluate(Settings_::SRC_SELECTOR_EXPR), + ev.evaluate(Settings_::DST_SELECTOR_EXPR), + ev.evaluate(std::get(Settings_::SRC_EXPRS))..., + ev.evaluate(std::get(Settings_::DST_EXPRS))...); }(std::forward(in), - std::make_index_sequence{}, - std::make_index_sequence{}); + std::make_index_sequence>{}, + std::make_index_sequence>{}); } template static inline auto get_const_entities(const AllEntities& in) diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_address_derivation.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_address_derivation.hpp index 609ac9dc8cfe..d0ba1bedd51c 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_address_derivation.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_address_derivation.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,22 +18,19 @@ struct lookup_address_derivation_salted_initialization_hash_poseidon2_0_settings static constexpr std::string_view NAME = "LOOKUP_ADDRESS_DERIVATION_SALTED_INITIALIZATION_HASH_POSEIDON2_0"; static constexpr std::string_view RELATION_NAME = "address_derivation"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::address_derivation_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::address_derivation_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::address_derivation_partial_address_domain_separator), + ColumnExpression(ColumnAndShifts::address_derivation_salt), + ColumnExpression(ColumnAndShifts::address_derivation_init_hash), + ColumnExpression(ColumnAndShifts::address_derivation_salted_init_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_address_derivation_salted_initialization_hash_poseidon2_0_counts; static constexpr Column INVERSES = Column::lookup_address_derivation_salted_initialization_hash_poseidon2_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::address_derivation_partial_address_domain_separator, - ColumnAndShifts::address_derivation_salt, - ColumnAndShifts::address_derivation_init_hash, - ColumnAndShifts::address_derivation_salted_init_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_address_derivation_salted_initialization_hash_poseidon2_0_settings = @@ -47,22 +45,19 @@ struct lookup_address_derivation_salted_initialization_hash_poseidon2_1_settings static constexpr std::string_view NAME = "LOOKUP_ADDRESS_DERIVATION_SALTED_INITIALIZATION_HASH_POSEIDON2_1"; static constexpr std::string_view RELATION_NAME = "address_derivation"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::address_derivation_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::address_derivation_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::address_derivation_deployer_addr), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::address_derivation_salted_init_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_address_derivation_salted_initialization_hash_poseidon2_1_counts; static constexpr Column INVERSES = Column::lookup_address_derivation_salted_initialization_hash_poseidon2_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::address_derivation_deployer_addr, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::address_derivation_salted_init_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_address_derivation_salted_initialization_hash_poseidon2_1_settings = @@ -77,22 +72,19 @@ struct lookup_address_derivation_partial_address_poseidon2_settings_ { static constexpr std::string_view NAME = "LOOKUP_ADDRESS_DERIVATION_PARTIAL_ADDRESS_POSEIDON2"; static constexpr std::string_view RELATION_NAME = "address_derivation"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::address_derivation_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::address_derivation_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::address_derivation_partial_address_domain_separator), + ColumnExpression(ColumnAndShifts::address_derivation_class_id), + ColumnExpression(ColumnAndShifts::address_derivation_salted_init_hash), + ColumnExpression(ColumnAndShifts::address_derivation_partial_address)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_address_derivation_partial_address_poseidon2_counts; static constexpr Column INVERSES = Column::lookup_address_derivation_partial_address_poseidon2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::address_derivation_partial_address_domain_separator, - ColumnAndShifts::address_derivation_class_id, - ColumnAndShifts::address_derivation_salted_init_hash, - ColumnAndShifts::address_derivation_partial_address - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_address_derivation_partial_address_poseidon2_settings = @@ -107,22 +99,19 @@ struct lookup_address_derivation_public_keys_hash_poseidon2_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_ADDRESS_DERIVATION_PUBLIC_KEYS_HASH_POSEIDON2_0"; static constexpr std::string_view RELATION_NAME = "address_derivation"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::address_derivation_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::address_derivation_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::address_derivation_public_keys_hash_domain_separator), + ColumnExpression(ColumnAndShifts::address_derivation_nullifier_key_x), + ColumnExpression(ColumnAndShifts::address_derivation_nullifier_key_y), + ColumnExpression(ColumnAndShifts::address_derivation_public_keys_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_address_derivation_public_keys_hash_poseidon2_0_counts; static constexpr Column INVERSES = Column::lookup_address_derivation_public_keys_hash_poseidon2_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::address_derivation_public_keys_hash_domain_separator, - ColumnAndShifts::address_derivation_nullifier_key_x, - ColumnAndShifts::address_derivation_nullifier_key_y, - ColumnAndShifts::address_derivation_public_keys_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_address_derivation_public_keys_hash_poseidon2_0_settings = @@ -137,22 +126,19 @@ struct lookup_address_derivation_public_keys_hash_poseidon2_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_ADDRESS_DERIVATION_PUBLIC_KEYS_HASH_POSEIDON2_1"; static constexpr std::string_view RELATION_NAME = "address_derivation"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::address_derivation_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::address_derivation_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::address_derivation_incoming_viewing_key_x), + ColumnExpression(ColumnAndShifts::address_derivation_incoming_viewing_key_y), + ColumnExpression(ColumnAndShifts::address_derivation_public_keys_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_address_derivation_public_keys_hash_poseidon2_1_counts; static constexpr Column INVERSES = Column::lookup_address_derivation_public_keys_hash_poseidon2_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::address_derivation_incoming_viewing_key_x, - ColumnAndShifts::address_derivation_incoming_viewing_key_y, - ColumnAndShifts::address_derivation_public_keys_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_address_derivation_public_keys_hash_poseidon2_1_settings = @@ -167,22 +153,19 @@ struct lookup_address_derivation_public_keys_hash_poseidon2_2_settings_ { static constexpr std::string_view NAME = "LOOKUP_ADDRESS_DERIVATION_PUBLIC_KEYS_HASH_POSEIDON2_2"; static constexpr std::string_view RELATION_NAME = "address_derivation"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::address_derivation_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::address_derivation_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::address_derivation_outgoing_viewing_key_x), + ColumnExpression(ColumnAndShifts::address_derivation_outgoing_viewing_key_y), + ColumnExpression(ColumnAndShifts::address_derivation_public_keys_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_address_derivation_public_keys_hash_poseidon2_2_counts; static constexpr Column INVERSES = Column::lookup_address_derivation_public_keys_hash_poseidon2_2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::address_derivation_outgoing_viewing_key_x, - ColumnAndShifts::address_derivation_outgoing_viewing_key_y, - ColumnAndShifts::address_derivation_public_keys_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_address_derivation_public_keys_hash_poseidon2_2_settings = @@ -197,22 +180,19 @@ struct lookup_address_derivation_public_keys_hash_poseidon2_3_settings_ { static constexpr std::string_view NAME = "LOOKUP_ADDRESS_DERIVATION_PUBLIC_KEYS_HASH_POSEIDON2_3"; static constexpr std::string_view RELATION_NAME = "address_derivation"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::address_derivation_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::address_derivation_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::address_derivation_tagging_key_x), + ColumnExpression(ColumnAndShifts::address_derivation_tagging_key_y), + ColumnExpression(ColumnAndShifts::address_derivation_public_keys_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_address_derivation_public_keys_hash_poseidon2_3_counts; static constexpr Column INVERSES = Column::lookup_address_derivation_public_keys_hash_poseidon2_3_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::address_derivation_tagging_key_x, - ColumnAndShifts::address_derivation_tagging_key_y, - ColumnAndShifts::address_derivation_public_keys_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_address_derivation_public_keys_hash_poseidon2_3_settings = @@ -227,22 +207,19 @@ struct lookup_address_derivation_public_keys_hash_poseidon2_4_settings_ { static constexpr std::string_view NAME = "LOOKUP_ADDRESS_DERIVATION_PUBLIC_KEYS_HASH_POSEIDON2_4"; static constexpr std::string_view RELATION_NAME = "address_derivation"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::address_derivation_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::address_derivation_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::address_derivation_public_keys_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_address_derivation_public_keys_hash_poseidon2_4_counts; static constexpr Column INVERSES = Column::lookup_address_derivation_public_keys_hash_poseidon2_4_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::address_derivation_public_keys_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_address_derivation_public_keys_hash_poseidon2_4_settings = @@ -257,22 +234,19 @@ struct lookup_address_derivation_preaddress_poseidon2_settings_ { static constexpr std::string_view NAME = "LOOKUP_ADDRESS_DERIVATION_PREADDRESS_POSEIDON2"; static constexpr std::string_view RELATION_NAME = "address_derivation"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::address_derivation_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::address_derivation_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::address_derivation_preaddress_domain_separator), + ColumnExpression(ColumnAndShifts::address_derivation_public_keys_hash), + ColumnExpression(ColumnAndShifts::address_derivation_partial_address), + ColumnExpression(ColumnAndShifts::address_derivation_preaddress)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_address_derivation_preaddress_poseidon2_counts; static constexpr Column INVERSES = Column::lookup_address_derivation_preaddress_poseidon2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::address_derivation_preaddress_domain_separator, - ColumnAndShifts::address_derivation_public_keys_hash, - ColumnAndShifts::address_derivation_partial_address, - ColumnAndShifts::address_derivation_preaddress - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_address_derivation_preaddress_poseidon2_settings = @@ -287,24 +261,25 @@ struct lookup_address_derivation_preaddress_scalar_mul_settings_ { static constexpr std::string_view NAME = "LOOKUP_ADDRESS_DERIVATION_PREADDRESS_SCALAR_MUL"; static constexpr std::string_view RELATION_NAME = "address_derivation"; static constexpr size_t LOOKUP_TUPLE_SIZE = 7; - static constexpr Column SRC_SELECTOR = Column::address_derivation_sel; - static constexpr Column DST_SELECTOR = Column::scalar_mul_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::address_derivation_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::scalar_mul_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::address_derivation_preaddress), + ColumnExpression(ColumnAndShifts::address_derivation_g1_x), + ColumnExpression(ColumnAndShifts::address_derivation_g1_y), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::address_derivation_preaddress_public_key_x), + ColumnExpression(ColumnAndShifts::address_derivation_preaddress_public_key_y), + ColumnExpression(ColumnAndShifts::precomputed_zero)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::scalar_mul_scalar), + ColumnExpression(ColumnAndShifts::scalar_mul_point_x), + ColumnExpression(ColumnAndShifts::scalar_mul_point_y), + ColumnExpression(ColumnAndShifts::scalar_mul_point_inf), + ColumnExpression(ColumnAndShifts::scalar_mul_res_x), + ColumnExpression(ColumnAndShifts::scalar_mul_res_y), + ColumnExpression(ColumnAndShifts::scalar_mul_res_inf)); static constexpr Column COUNTS = Column::lookup_address_derivation_preaddress_scalar_mul_counts; static constexpr Column INVERSES = Column::lookup_address_derivation_preaddress_scalar_mul_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::address_derivation_preaddress, - ColumnAndShifts::address_derivation_g1_x, - ColumnAndShifts::address_derivation_g1_y, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::address_derivation_preaddress_public_key_x, - ColumnAndShifts::address_derivation_preaddress_public_key_y, - ColumnAndShifts::precomputed_zero - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::scalar_mul_scalar, ColumnAndShifts::scalar_mul_point_x, ColumnAndShifts::scalar_mul_point_y, - ColumnAndShifts::scalar_mul_point_inf, ColumnAndShifts::scalar_mul_res_x, ColumnAndShifts::scalar_mul_res_y, - ColumnAndShifts::scalar_mul_res_inf - }; }; using lookup_address_derivation_preaddress_scalar_mul_settings = @@ -319,26 +294,29 @@ struct lookup_address_derivation_address_ecadd_settings_ { static constexpr std::string_view NAME = "LOOKUP_ADDRESS_DERIVATION_ADDRESS_ECADD"; static constexpr std::string_view RELATION_NAME = "address_derivation"; static constexpr size_t LOOKUP_TUPLE_SIZE = 9; - static constexpr Column SRC_SELECTOR = Column::address_derivation_sel; - static constexpr Column DST_SELECTOR = Column::ecc_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::address_derivation_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ecc_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::address_derivation_preaddress_public_key_x), + ColumnExpression(ColumnAndShifts::address_derivation_preaddress_public_key_y), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::address_derivation_incoming_viewing_key_x), + ColumnExpression(ColumnAndShifts::address_derivation_incoming_viewing_key_y), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::address_derivation_address), + ColumnExpression(ColumnAndShifts::address_derivation_address_y), + ColumnExpression(ColumnAndShifts::precomputed_zero)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ecc_p_x), + ColumnExpression(ColumnAndShifts::ecc_p_y), + ColumnExpression(ColumnAndShifts::ecc_p_is_inf), + ColumnExpression(ColumnAndShifts::ecc_q_x), + ColumnExpression(ColumnAndShifts::ecc_q_y), + ColumnExpression(ColumnAndShifts::ecc_q_is_inf), + ColumnExpression(ColumnAndShifts::ecc_r_x), + ColumnExpression(ColumnAndShifts::ecc_r_y), + ColumnExpression(ColumnAndShifts::ecc_r_is_inf)); static constexpr Column COUNTS = Column::lookup_address_derivation_address_ecadd_counts; static constexpr Column INVERSES = Column::lookup_address_derivation_address_ecadd_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::address_derivation_preaddress_public_key_x, - ColumnAndShifts::address_derivation_preaddress_public_key_y, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::address_derivation_incoming_viewing_key_x, - ColumnAndShifts::address_derivation_incoming_viewing_key_y, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::address_derivation_address, - ColumnAndShifts::address_derivation_address_y, - ColumnAndShifts::precomputed_zero - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::ecc_p_x, ColumnAndShifts::ecc_p_y, ColumnAndShifts::ecc_p_is_inf, - ColumnAndShifts::ecc_q_x, ColumnAndShifts::ecc_q_y, ColumnAndShifts::ecc_q_is_inf, - ColumnAndShifts::ecc_r_x, ColumnAndShifts::ecc_r_y, ColumnAndShifts::ecc_r_is_inf - }; }; using lookup_address_derivation_address_ecadd_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_addressing.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_addressing.hpp index 5b64aedeec80..db500bff15d0 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_addressing.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_addressing.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,16 +18,16 @@ struct lookup_addressing_relative_overflow_range_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_ADDRESSING_RELATIVE_OVERFLOW_RANGE_0"; static constexpr std::string_view RELATION_NAME = "addressing"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::execution_sel_op_is_relative_effective_0_; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::execution_sel_op_is_relative_effective_0_); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_overflow_range_check_result_0_), + ColumnExpression(ColumnAndShifts::execution_constant_32)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_addressing_relative_overflow_range_0_counts; static constexpr Column INVERSES = Column::lookup_addressing_relative_overflow_range_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_overflow_range_check_result_0_, ColumnAndShifts::execution_constant_32 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_addressing_relative_overflow_range_0_settings = @@ -41,16 +42,16 @@ struct lookup_addressing_relative_overflow_range_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_ADDRESSING_RELATIVE_OVERFLOW_RANGE_1"; static constexpr std::string_view RELATION_NAME = "addressing"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::execution_sel_op_is_relative_effective_1_; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::execution_sel_op_is_relative_effective_1_); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_overflow_range_check_result_1_), + ColumnExpression(ColumnAndShifts::execution_constant_32)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_addressing_relative_overflow_range_1_counts; static constexpr Column INVERSES = Column::lookup_addressing_relative_overflow_range_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_overflow_range_check_result_1_, ColumnAndShifts::execution_constant_32 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_addressing_relative_overflow_range_1_settings = @@ -65,16 +66,16 @@ struct lookup_addressing_relative_overflow_range_2_settings_ { static constexpr std::string_view NAME = "LOOKUP_ADDRESSING_RELATIVE_OVERFLOW_RANGE_2"; static constexpr std::string_view RELATION_NAME = "addressing"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::execution_sel_op_is_relative_effective_2_; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::execution_sel_op_is_relative_effective_2_); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_overflow_range_check_result_2_), + ColumnExpression(ColumnAndShifts::execution_constant_32)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_addressing_relative_overflow_range_2_counts; static constexpr Column INVERSES = Column::lookup_addressing_relative_overflow_range_2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_overflow_range_check_result_2_, ColumnAndShifts::execution_constant_32 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_addressing_relative_overflow_range_2_settings = @@ -89,16 +90,16 @@ struct lookup_addressing_relative_overflow_range_3_settings_ { static constexpr std::string_view NAME = "LOOKUP_ADDRESSING_RELATIVE_OVERFLOW_RANGE_3"; static constexpr std::string_view RELATION_NAME = "addressing"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::execution_sel_op_is_relative_effective_3_; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::execution_sel_op_is_relative_effective_3_); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_overflow_range_check_result_3_), + ColumnExpression(ColumnAndShifts::execution_constant_32)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_addressing_relative_overflow_range_3_counts; static constexpr Column INVERSES = Column::lookup_addressing_relative_overflow_range_3_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_overflow_range_check_result_3_, ColumnAndShifts::execution_constant_32 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_addressing_relative_overflow_range_3_settings = @@ -113,16 +114,16 @@ struct lookup_addressing_relative_overflow_range_4_settings_ { static constexpr std::string_view NAME = "LOOKUP_ADDRESSING_RELATIVE_OVERFLOW_RANGE_4"; static constexpr std::string_view RELATION_NAME = "addressing"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::execution_sel_op_is_relative_effective_4_; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::execution_sel_op_is_relative_effective_4_); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_overflow_range_check_result_4_), + ColumnExpression(ColumnAndShifts::execution_constant_32)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_addressing_relative_overflow_range_4_counts; static constexpr Column INVERSES = Column::lookup_addressing_relative_overflow_range_4_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_overflow_range_check_result_4_, ColumnAndShifts::execution_constant_32 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_addressing_relative_overflow_range_4_settings = @@ -137,16 +138,16 @@ struct lookup_addressing_relative_overflow_range_5_settings_ { static constexpr std::string_view NAME = "LOOKUP_ADDRESSING_RELATIVE_OVERFLOW_RANGE_5"; static constexpr std::string_view RELATION_NAME = "addressing"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::execution_sel_op_is_relative_effective_5_; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::execution_sel_op_is_relative_effective_5_); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_overflow_range_check_result_5_), + ColumnExpression(ColumnAndShifts::execution_constant_32)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_addressing_relative_overflow_range_5_counts; static constexpr Column INVERSES = Column::lookup_addressing_relative_overflow_range_5_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_overflow_range_check_result_5_, ColumnAndShifts::execution_constant_32 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_addressing_relative_overflow_range_5_settings = @@ -161,16 +162,16 @@ struct lookup_addressing_relative_overflow_range_6_settings_ { static constexpr std::string_view NAME = "LOOKUP_ADDRESSING_RELATIVE_OVERFLOW_RANGE_6"; static constexpr std::string_view RELATION_NAME = "addressing"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::execution_sel_op_is_relative_effective_6_; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::execution_sel_op_is_relative_effective_6_); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_overflow_range_check_result_6_), + ColumnExpression(ColumnAndShifts::execution_constant_32)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_addressing_relative_overflow_range_6_counts; static constexpr Column INVERSES = Column::lookup_addressing_relative_overflow_range_6_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_overflow_range_check_result_6_, ColumnAndShifts::execution_constant_32 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_addressing_relative_overflow_range_6_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_alu.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_alu.hpp index 38fedc06055a..9a98b905a34e 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_alu.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_alu.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,20 +18,27 @@ struct lookup_alu_register_tag_value_settings_ { static constexpr std::string_view NAME = "LOOKUP_ALU_REGISTER_TAG_VALUE"; static constexpr std::string_view RELATION_NAME = "alu"; static constexpr size_t LOOKUP_TUPLE_SIZE = 8; - static constexpr Column SRC_SELECTOR = Column::execution_sel_execute_alu; - static constexpr Column DST_SELECTOR = Column::alu_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_execute_alu); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::alu_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_register_0_), + ColumnExpression(ColumnAndShifts::execution_mem_tag_reg_0_), + ColumnExpression(ColumnAndShifts::execution_register_1_), + ColumnExpression(ColumnAndShifts::execution_mem_tag_reg_1_), + ColumnExpression(ColumnAndShifts::execution_register_2_), + ColumnExpression(ColumnAndShifts::execution_mem_tag_reg_2_), + ColumnExpression(ColumnAndShifts::execution_subtrace_operation_id), + ColumnExpression(ColumnAndShifts::execution_sel_opcode_error)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::alu_ia), + ColumnExpression(ColumnAndShifts::alu_ia_tag), + ColumnExpression(ColumnAndShifts::alu_ib), + ColumnExpression(ColumnAndShifts::alu_ib_tag), + ColumnExpression(ColumnAndShifts::alu_ic), + ColumnExpression(ColumnAndShifts::alu_ic_tag), + ColumnExpression(ColumnAndShifts::alu_op_id), + ColumnExpression(ColumnAndShifts::alu_sel_err)); static constexpr Column COUNTS = Column::lookup_alu_register_tag_value_counts; static constexpr Column INVERSES = Column::lookup_alu_register_tag_value_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_register_0_, ColumnAndShifts::execution_mem_tag_reg_0_, - ColumnAndShifts::execution_register_1_, ColumnAndShifts::execution_mem_tag_reg_1_, - ColumnAndShifts::execution_register_2_, ColumnAndShifts::execution_mem_tag_reg_2_, - ColumnAndShifts::execution_subtrace_operation_id, ColumnAndShifts::execution_sel_opcode_error - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::alu_ia, ColumnAndShifts::alu_ia_tag, ColumnAndShifts::alu_ib, ColumnAndShifts::alu_ib_tag, - ColumnAndShifts::alu_ic, ColumnAndShifts::alu_ic_tag, ColumnAndShifts::alu_op_id, ColumnAndShifts::alu_sel_err - }; }; using lookup_alu_register_tag_value_settings = lookup_settings; @@ -43,18 +51,16 @@ struct lookup_alu_tag_max_bits_value_settings_ { static constexpr std::string_view NAME = "LOOKUP_ALU_TAG_MAX_BITS_VALUE"; static constexpr std::string_view RELATION_NAME = "alu"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::alu_sel; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_tag_parameters; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::alu_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_tag_parameters); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::alu_ia_tag), + ColumnExpression(ColumnAndShifts::alu_max_bits), + ColumnExpression(ColumnAndShifts::alu_max_value)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::precomputed_tag_max_bits), + ColumnExpression(ColumnAndShifts::precomputed_tag_max_value)); static constexpr Column COUNTS = Column::lookup_alu_tag_max_bits_value_counts; static constexpr Column INVERSES = Column::lookup_alu_tag_max_bits_value_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::alu_ia_tag, - ColumnAndShifts::alu_max_bits, - ColumnAndShifts::alu_max_value }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, - ColumnAndShifts::precomputed_tag_max_bits, - ColumnAndShifts::precomputed_tag_max_value - }; }; using lookup_alu_tag_max_bits_value_settings = lookup_settings; @@ -67,15 +73,14 @@ struct lookup_alu_range_check_decomposition_a_lo_settings_ { static constexpr std::string_view NAME = "LOOKUP_ALU_RANGE_CHECK_DECOMPOSITION_A_LO"; static constexpr std::string_view RELATION_NAME = "alu"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::alu_sel_decompose_a; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::alu_sel_decompose_a); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::alu_a_lo), ColumnExpression(ColumnAndShifts::alu_a_lo_bits)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_alu_range_check_decomposition_a_lo_counts; static constexpr Column INVERSES = Column::lookup_alu_range_check_decomposition_a_lo_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::alu_a_lo, - ColumnAndShifts::alu_a_lo_bits }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_alu_range_check_decomposition_a_lo_settings = @@ -90,15 +95,14 @@ struct lookup_alu_range_check_decomposition_a_hi_settings_ { static constexpr std::string_view NAME = "LOOKUP_ALU_RANGE_CHECK_DECOMPOSITION_A_HI"; static constexpr std::string_view RELATION_NAME = "alu"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::alu_sel_decompose_a; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::alu_sel_decompose_a); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::alu_a_hi), ColumnExpression(ColumnAndShifts::alu_a_hi_bits)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_alu_range_check_decomposition_a_hi_counts; static constexpr Column INVERSES = Column::lookup_alu_range_check_decomposition_a_hi_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::alu_a_hi, - ColumnAndShifts::alu_a_hi_bits }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_alu_range_check_decomposition_a_hi_settings = @@ -113,15 +117,14 @@ struct lookup_alu_range_check_decomposition_b_lo_settings_ { static constexpr std::string_view NAME = "LOOKUP_ALU_RANGE_CHECK_DECOMPOSITION_B_LO"; static constexpr std::string_view RELATION_NAME = "alu"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::alu_sel_mul_div_u128; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::alu_sel_mul_div_u128); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::alu_b_lo), + ColumnExpression(ColumnAndShifts::alu_constant_64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_alu_range_check_decomposition_b_lo_counts; static constexpr Column INVERSES = Column::lookup_alu_range_check_decomposition_b_lo_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::alu_b_lo, - ColumnAndShifts::alu_constant_64 }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_alu_range_check_decomposition_b_lo_settings = @@ -136,15 +139,14 @@ struct lookup_alu_range_check_decomposition_b_hi_settings_ { static constexpr std::string_view NAME = "LOOKUP_ALU_RANGE_CHECK_DECOMPOSITION_B_HI"; static constexpr std::string_view RELATION_NAME = "alu"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::alu_sel_mul_div_u128; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::alu_sel_mul_div_u128); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::alu_b_hi), + ColumnExpression(ColumnAndShifts::alu_constant_64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_alu_range_check_decomposition_b_hi_counts; static constexpr Column INVERSES = Column::lookup_alu_range_check_decomposition_b_hi_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::alu_b_hi, - ColumnAndShifts::alu_constant_64 }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_alu_range_check_decomposition_b_hi_settings = @@ -159,15 +161,14 @@ struct lookup_alu_range_check_mul_u128_c_hi_settings_ { static constexpr std::string_view NAME = "LOOKUP_ALU_RANGE_CHECK_MUL_U128_C_HI"; static constexpr std::string_view RELATION_NAME = "alu"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::alu_sel_mul_u128; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::alu_sel_mul_u128); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::alu_c_hi), + ColumnExpression(ColumnAndShifts::alu_constant_64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_alu_range_check_mul_u128_c_hi_counts; static constexpr Column INVERSES = Column::lookup_alu_range_check_mul_u128_c_hi_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::alu_c_hi, - ColumnAndShifts::alu_constant_64 }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_alu_range_check_mul_u128_c_hi_settings = lookup_settings; @@ -181,16 +182,16 @@ struct lookup_alu_gt_div_remainder_settings_ { static constexpr std::string_view NAME = "LOOKUP_ALU_GT_DIV_REMAINDER"; static constexpr std::string_view RELATION_NAME = "alu"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::alu_sel_div_no_0_err; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::alu_sel_div_no_0_err); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::alu_ib), + ColumnExpression(ColumnAndShifts::alu_helper1), + ColumnExpression(ColumnAndShifts::alu_sel_op_div)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_alu_gt_div_remainder_counts; static constexpr Column INVERSES = Column::lookup_alu_gt_div_remainder_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::alu_ib, - ColumnAndShifts::alu_helper1, - ColumnAndShifts::alu_sel_op_div }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_alu_gt_div_remainder_settings = lookup_settings; @@ -203,16 +204,16 @@ struct lookup_alu_ff_gt_settings_ { static constexpr std::string_view NAME = "LOOKUP_ALU_FF_GT"; static constexpr std::string_view RELATION_NAME = "alu"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::alu_sel_ff_lt_ops; - static constexpr Column DST_SELECTOR = Column::ff_gt_sel_gt; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::alu_sel_ff_lt_ops); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ff_gt_sel_gt); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::alu_lt_ops_input_a), + ColumnExpression(ColumnAndShifts::alu_lt_ops_input_b), + ColumnExpression(ColumnAndShifts::alu_lt_ops_result_c)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ff_gt_a), + ColumnExpression(ColumnAndShifts::ff_gt_b), + ColumnExpression(ColumnAndShifts::ff_gt_result)); static constexpr Column COUNTS = Column::lookup_alu_ff_gt_counts; static constexpr Column INVERSES = Column::lookup_alu_ff_gt_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::alu_lt_ops_input_a, ColumnAndShifts::alu_lt_ops_input_b, ColumnAndShifts::alu_lt_ops_result_c - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::ff_gt_a, - ColumnAndShifts::ff_gt_b, - ColumnAndShifts::ff_gt_result }; }; using lookup_alu_ff_gt_settings = lookup_settings; @@ -224,16 +225,16 @@ struct lookup_alu_int_gt_settings_ { static constexpr std::string_view NAME = "LOOKUP_ALU_INT_GT"; static constexpr std::string_view RELATION_NAME = "alu"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::alu_sel_int_lt_ops; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::alu_sel_int_lt_ops); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::alu_lt_ops_input_a), + ColumnExpression(ColumnAndShifts::alu_lt_ops_input_b), + ColumnExpression(ColumnAndShifts::alu_lt_ops_result_c)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_alu_int_gt_counts; static constexpr Column INVERSES = Column::lookup_alu_int_gt_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::alu_lt_ops_input_a, ColumnAndShifts::alu_lt_ops_input_b, ColumnAndShifts::alu_lt_ops_result_c - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_alu_int_gt_settings = lookup_settings; @@ -245,16 +246,14 @@ struct lookup_alu_shifts_two_pow_settings_ { static constexpr std::string_view NAME = "LOOKUP_ALU_SHIFTS_TWO_POW"; static constexpr std::string_view RELATION_NAME = "alu"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::alu_sel_shift_ops_no_overflow; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_8; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::alu_sel_shift_ops_no_overflow); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_8); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::alu_shift_lo_bits), + ColumnExpression(ColumnAndShifts::alu_two_pow_shift_lo_bits)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::precomputed_power_of_2)); static constexpr Column COUNTS = Column::lookup_alu_shifts_two_pow_counts; static constexpr Column INVERSES = Column::lookup_alu_shifts_two_pow_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::alu_shift_lo_bits, ColumnAndShifts::alu_two_pow_shift_lo_bits - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::precomputed_power_of_2 - }; }; using lookup_alu_shifts_two_pow_settings = lookup_settings; @@ -267,19 +266,23 @@ struct lookup_alu_exec_dispatching_cast_settings_ { static constexpr std::string_view NAME = "LOOKUP_ALU_EXEC_DISPATCHING_CAST"; static constexpr std::string_view RELATION_NAME = "alu"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::execution_sel_execute_cast; - static constexpr Column DST_SELECTOR = Column::alu_sel_op_truncate; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_execute_cast); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::alu_sel_op_truncate); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_register_0_), + ColumnExpression(ColumnAndShifts::execution_rop_2_), + ColumnExpression(ColumnAndShifts::execution_subtrace_operation_id), + ColumnExpression(ColumnAndShifts::execution_register_1_), + ColumnExpression(ColumnAndShifts::execution_mem_tag_reg_1_), + ColumnExpression(ColumnAndShifts::execution_sel_opcode_error)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::alu_ia), + ColumnExpression(ColumnAndShifts::alu_ia_tag), + ColumnExpression(ColumnAndShifts::alu_op_id), + ColumnExpression(ColumnAndShifts::alu_ic), + ColumnExpression(ColumnAndShifts::alu_ia_tag), + ColumnExpression(ColumnAndShifts::precomputed_zero)); static constexpr Column COUNTS = Column::lookup_alu_exec_dispatching_cast_counts; static constexpr Column INVERSES = Column::lookup_alu_exec_dispatching_cast_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_register_0_, ColumnAndShifts::execution_rop_2_, - ColumnAndShifts::execution_subtrace_operation_id, ColumnAndShifts::execution_register_1_, - ColumnAndShifts::execution_mem_tag_reg_1_, ColumnAndShifts::execution_sel_opcode_error - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::alu_ia, ColumnAndShifts::alu_ia_tag, ColumnAndShifts::alu_op_id, - ColumnAndShifts::alu_ic, ColumnAndShifts::alu_ia_tag, ColumnAndShifts::precomputed_zero - }; }; using lookup_alu_exec_dispatching_cast_settings = lookup_settings; @@ -292,22 +295,23 @@ struct lookup_alu_exec_dispatching_set_settings_ { static constexpr std::string_view NAME = "LOOKUP_ALU_EXEC_DISPATCHING_SET"; static constexpr std::string_view RELATION_NAME = "alu"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::execution_sel_execute_set; - static constexpr Column DST_SELECTOR = Column::alu_sel_op_truncate; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_execute_set); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::alu_sel_op_truncate); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_rop_2_), + ColumnExpression(ColumnAndShifts::execution_rop_1_), + ColumnExpression(ColumnAndShifts::execution_subtrace_operation_id), + ColumnExpression(ColumnAndShifts::execution_register_0_), + ColumnExpression(ColumnAndShifts::execution_mem_tag_reg_0_), + ColumnExpression(ColumnAndShifts::execution_sel_opcode_error)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::alu_ia), + ColumnExpression(ColumnAndShifts::alu_ia_tag), + ColumnExpression(ColumnAndShifts::alu_op_id), + ColumnExpression(ColumnAndShifts::alu_ic), + ColumnExpression(ColumnAndShifts::alu_ic_tag), + ColumnExpression(ColumnAndShifts::precomputed_zero)); static constexpr Column COUNTS = Column::lookup_alu_exec_dispatching_set_counts; static constexpr Column INVERSES = Column::lookup_alu_exec_dispatching_set_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_rop_2_, - ColumnAndShifts::execution_rop_1_, - ColumnAndShifts::execution_subtrace_operation_id, - ColumnAndShifts::execution_register_0_, - ColumnAndShifts::execution_mem_tag_reg_0_, - ColumnAndShifts::execution_sel_opcode_error - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::alu_ia, ColumnAndShifts::alu_ia_tag, ColumnAndShifts::alu_op_id, - ColumnAndShifts::alu_ic, ColumnAndShifts::alu_ic_tag, ColumnAndShifts::precomputed_zero - }; }; using lookup_alu_exec_dispatching_set_settings = lookup_settings; @@ -320,16 +324,16 @@ struct lookup_alu_large_trunc_canonical_dec_settings_ { static constexpr std::string_view NAME = "LOOKUP_ALU_LARGE_TRUNC_CANONICAL_DEC"; static constexpr std::string_view RELATION_NAME = "alu"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::alu_sel_trunc_gte_128; - static constexpr Column DST_SELECTOR = Column::ff_gt_sel_dec; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::alu_sel_trunc_gte_128); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ff_gt_sel_dec); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::alu_ia), + ColumnExpression(ColumnAndShifts::alu_a_lo), + ColumnExpression(ColumnAndShifts::alu_a_hi)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ff_gt_a), + ColumnExpression(ColumnAndShifts::ff_gt_a_lo), + ColumnExpression(ColumnAndShifts::ff_gt_a_hi)); static constexpr Column COUNTS = Column::lookup_alu_large_trunc_canonical_dec_counts; static constexpr Column INVERSES = Column::lookup_alu_large_trunc_canonical_dec_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::alu_ia, - ColumnAndShifts::alu_a_lo, - ColumnAndShifts::alu_a_hi }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::ff_gt_a, - ColumnAndShifts::ff_gt_a_lo, - ColumnAndShifts::ff_gt_a_hi }; }; using lookup_alu_large_trunc_canonical_dec_settings = lookup_settings; @@ -343,15 +347,14 @@ struct lookup_alu_range_check_trunc_mid_settings_ { static constexpr std::string_view NAME = "LOOKUP_ALU_RANGE_CHECK_TRUNC_MID"; static constexpr std::string_view RELATION_NAME = "alu"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::alu_sel_trunc_non_trivial; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::alu_sel_trunc_non_trivial); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::alu_mid), ColumnExpression(ColumnAndShifts::alu_mid_bits)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_alu_range_check_trunc_mid_counts; static constexpr Column INVERSES = Column::lookup_alu_range_check_trunc_mid_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::alu_mid, - ColumnAndShifts::alu_mid_bits }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_alu_range_check_trunc_mid_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_bc_decomposition.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_bc_decomposition.hpp index afe2ea34087a..c7d902e82e23 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_bc_decomposition.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_bc_decomposition.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,14 +18,12 @@ struct lookup_bc_decomposition_bytes_are_bytes_settings_ { static constexpr std::string_view NAME = "LOOKUP_BC_DECOMPOSITION_BYTES_ARE_BYTES"; static constexpr std::string_view RELATION_NAME = "bc_decomposition"; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; - static constexpr Column SRC_SELECTOR = Column::bc_decomposition_sel; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_8; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bc_decomposition_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_8); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bc_decomposition_bytes)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk)); static constexpr Column COUNTS = Column::lookup_bc_decomposition_bytes_are_bytes_counts; static constexpr Column INVERSES = Column::lookup_bc_decomposition_bytes_are_bytes_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::bc_decomposition_bytes - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::precomputed_clk }; }; using lookup_bc_decomposition_bytes_are_bytes_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_bc_hashing.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_bc_hashing.hpp index 1d5a69abade6..d8dec14e4c6c 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_bc_hashing.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_bc_hashing.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,20 +18,16 @@ struct lookup_bc_hashing_get_packed_field_settings_ { static constexpr std::string_view NAME = "LOOKUP_BC_HASHING_GET_PACKED_FIELD"; static constexpr std::string_view RELATION_NAME = "bc_hashing"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::bc_hashing_sel; - static constexpr Column DST_SELECTOR = Column::bc_decomposition_sel_packed; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bc_hashing_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bc_decomposition_sel_packed); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bc_hashing_pc_index), + ColumnExpression(ColumnAndShifts::bc_hashing_bytecode_id), + ColumnExpression(ColumnAndShifts::bc_hashing_packed_field)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bc_decomposition_pc), + ColumnExpression(ColumnAndShifts::bc_decomposition_id), + ColumnExpression(ColumnAndShifts::bc_decomposition_packed_field)); static constexpr Column COUNTS = Column::lookup_bc_hashing_get_packed_field_counts; static constexpr Column INVERSES = Column::lookup_bc_hashing_get_packed_field_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::bc_hashing_pc_index, - ColumnAndShifts::bc_hashing_bytecode_id, - ColumnAndShifts::bc_hashing_packed_field - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::bc_decomposition_pc, - ColumnAndShifts::bc_decomposition_id, - ColumnAndShifts::bc_decomposition_packed_field - }; }; using lookup_bc_hashing_get_packed_field_settings = lookup_settings; @@ -44,20 +41,17 @@ struct lookup_bc_hashing_iv_is_len_settings_ { static constexpr std::string_view NAME = "LOOKUP_BC_HASHING_IV_IS_LEN"; static constexpr std::string_view RELATION_NAME = "bc_hashing"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::bc_hashing_start; - static constexpr Column DST_SELECTOR = Column::bc_decomposition_sel_packed; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bc_hashing_start); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bc_decomposition_sel_packed); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bc_hashing_pc_index), + ColumnExpression(ColumnAndShifts::bc_hashing_bytecode_id), + ColumnExpression(ColumnAndShifts::bc_hashing_incremental_hash)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::bc_decomposition_pc), + ColumnExpression(ColumnAndShifts::bc_decomposition_id), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_remaining)); static constexpr Column COUNTS = Column::lookup_bc_hashing_iv_is_len_counts; static constexpr Column INVERSES = Column::lookup_bc_hashing_iv_is_len_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::bc_hashing_pc_index, - ColumnAndShifts::bc_hashing_bytecode_id, - ColumnAndShifts::bc_hashing_incremental_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::bc_decomposition_pc, - ColumnAndShifts::bc_decomposition_id, - ColumnAndShifts::bc_decomposition_bytes_remaining - }; }; using lookup_bc_hashing_iv_is_len_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_bc_retrieval.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_bc_retrieval.hpp index b76d3727e8db..190192a18b44 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_bc_retrieval.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_bc_retrieval.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,24 +18,22 @@ struct lookup_bc_retrieval_contract_instance_retrieval_settings_ { static constexpr std::string_view NAME = "LOOKUP_BC_RETRIEVAL_CONTRACT_INSTANCE_RETRIEVAL"; static constexpr std::string_view RELATION_NAME = "bc_retrieval"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::bc_retrieval_sel; - static constexpr Column DST_SELECTOR = Column::contract_instance_retrieval_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bc_retrieval_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::contract_instance_retrieval_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::bc_retrieval_address), + ColumnExpression(ColumnAndShifts::bc_retrieval_current_class_id), + ColumnExpression(ColumnAndShifts::bc_retrieval_instance_exists), + ColumnExpression(ColumnAndShifts::bc_retrieval_public_data_tree_root), + ColumnExpression(ColumnAndShifts::bc_retrieval_nullifier_tree_root)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::contract_instance_retrieval_address), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_current_class_id), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_exists), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_public_data_tree_root), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_nullifier_tree_root)); static constexpr Column COUNTS = Column::lookup_bc_retrieval_contract_instance_retrieval_counts; static constexpr Column INVERSES = Column::lookup_bc_retrieval_contract_instance_retrieval_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::bc_retrieval_address, - ColumnAndShifts::bc_retrieval_current_class_id, - ColumnAndShifts::bc_retrieval_instance_exists, - ColumnAndShifts::bc_retrieval_public_data_tree_root, - ColumnAndShifts::bc_retrieval_nullifier_tree_root - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::contract_instance_retrieval_address, - ColumnAndShifts::contract_instance_retrieval_current_class_id, - ColumnAndShifts::contract_instance_retrieval_exists, - ColumnAndShifts::contract_instance_retrieval_public_data_tree_root, - ColumnAndShifts::contract_instance_retrieval_nullifier_tree_root - }; }; using lookup_bc_retrieval_contract_instance_retrieval_settings = @@ -49,22 +48,20 @@ struct lookup_bc_retrieval_class_id_derivation_settings_ { static constexpr std::string_view NAME = "LOOKUP_BC_RETRIEVAL_CLASS_ID_DERIVATION"; static constexpr std::string_view RELATION_NAME = "bc_retrieval"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::bc_retrieval_instance_exists; - static constexpr Column DST_SELECTOR = Column::class_id_derivation_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bc_retrieval_instance_exists); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::class_id_derivation_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::bc_retrieval_current_class_id), + ColumnExpression(ColumnAndShifts::bc_retrieval_artifact_hash), + ColumnExpression(ColumnAndShifts::bc_retrieval_private_function_root), + ColumnExpression(ColumnAndShifts::bc_retrieval_bytecode_id)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::class_id_derivation_class_id), + ColumnExpression(ColumnAndShifts::class_id_derivation_artifact_hash), + ColumnExpression(ColumnAndShifts::class_id_derivation_private_function_root), + ColumnExpression(ColumnAndShifts::class_id_derivation_public_bytecode_commitment)); static constexpr Column COUNTS = Column::lookup_bc_retrieval_class_id_derivation_counts; static constexpr Column INVERSES = Column::lookup_bc_retrieval_class_id_derivation_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::bc_retrieval_current_class_id, - ColumnAndShifts::bc_retrieval_artifact_hash, - ColumnAndShifts::bc_retrieval_private_function_root, - ColumnAndShifts::bc_retrieval_bytecode_id - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::class_id_derivation_class_id, - ColumnAndShifts::class_id_derivation_artifact_hash, - ColumnAndShifts::class_id_derivation_private_function_root, - ColumnAndShifts::class_id_derivation_public_bytecode_commitment - }; }; using lookup_bc_retrieval_class_id_derivation_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_bitwise.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_bitwise.hpp index 126be39ad554..3bc0d1a10ce5 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_bitwise.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_bitwise.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,15 +18,14 @@ struct lookup_bitwise_integral_tag_length_settings_ { static constexpr std::string_view NAME = "LOOKUP_BITWISE_INTEGRAL_TAG_LENGTH"; static constexpr std::string_view RELATION_NAME = "bitwise"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::bitwise_sel_get_ctr; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_tag_parameters; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_sel_get_ctr); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_tag_parameters); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_tag_a), + ColumnExpression(ColumnAndShifts::bitwise_ctr)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::precomputed_tag_byte_length)); static constexpr Column COUNTS = Column::lookup_bitwise_integral_tag_length_counts; static constexpr Column INVERSES = Column::lookup_bitwise_integral_tag_length_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::bitwise_tag_a, - ColumnAndShifts::bitwise_ctr }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::precomputed_tag_byte_length - }; }; using lookup_bitwise_integral_tag_length_settings = lookup_settings; @@ -39,20 +39,18 @@ struct lookup_bitwise_byte_operations_settings_ { static constexpr std::string_view NAME = "LOOKUP_BITWISE_BYTE_OPERATIONS"; static constexpr std::string_view RELATION_NAME = "bitwise"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::bitwise_sel; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_bitwise; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_bitwise); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_ia_byte), + ColumnExpression(ColumnAndShifts::bitwise_ib_byte), + ColumnExpression(ColumnAndShifts::bitwise_ic_byte)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_bitwise_op_id), + ColumnExpression(ColumnAndShifts::precomputed_bitwise_input_a), + ColumnExpression(ColumnAndShifts::precomputed_bitwise_input_b), + ColumnExpression(ColumnAndShifts::precomputed_bitwise_output)); static constexpr Column COUNTS = Column::lookup_bitwise_byte_operations_counts; static constexpr Column INVERSES = Column::lookup_bitwise_byte_operations_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_ia_byte, - ColumnAndShifts::bitwise_ib_byte, - ColumnAndShifts::bitwise_ic_byte }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_bitwise_op_id, - ColumnAndShifts::precomputed_bitwise_input_a, - ColumnAndShifts::precomputed_bitwise_input_b, - ColumnAndShifts::precomputed_bitwise_output - }; }; using lookup_bitwise_byte_operations_settings = lookup_settings; @@ -65,21 +63,27 @@ struct lookup_bitwise_dispatch_exec_bitwise_settings_ { static constexpr std::string_view NAME = "LOOKUP_BITWISE_DISPATCH_EXEC_BITWISE"; static constexpr std::string_view RELATION_NAME = "bitwise"; static constexpr size_t LOOKUP_TUPLE_SIZE = 8; - static constexpr Column SRC_SELECTOR = Column::execution_sel_execute_bitwise; - static constexpr Column DST_SELECTOR = Column::bitwise_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_execute_bitwise); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_subtrace_operation_id), + ColumnExpression(ColumnAndShifts::execution_sel_opcode_error), + ColumnExpression(ColumnAndShifts::execution_register_0_), + ColumnExpression(ColumnAndShifts::execution_mem_tag_reg_0_), + ColumnExpression(ColumnAndShifts::execution_register_1_), + ColumnExpression(ColumnAndShifts::execution_mem_tag_reg_1_), + ColumnExpression(ColumnAndShifts::execution_register_2_), + ColumnExpression(ColumnAndShifts::execution_mem_tag_reg_2_)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_err), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_tag_a), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_tag_b), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_c)); static constexpr Column COUNTS = Column::lookup_bitwise_dispatch_exec_bitwise_counts; static constexpr Column INVERSES = Column::lookup_bitwise_dispatch_exec_bitwise_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_subtrace_operation_id, ColumnAndShifts::execution_sel_opcode_error, - ColumnAndShifts::execution_register_0_, ColumnAndShifts::execution_mem_tag_reg_0_, - ColumnAndShifts::execution_register_1_, ColumnAndShifts::execution_mem_tag_reg_1_, - ColumnAndShifts::execution_register_2_, ColumnAndShifts::execution_mem_tag_reg_2_ - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::bitwise_op_id, ColumnAndShifts::bitwise_err, ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_tag_a, ColumnAndShifts::bitwise_acc_ib, ColumnAndShifts::bitwise_tag_b, - ColumnAndShifts::bitwise_acc_ic, ColumnAndShifts::bitwise_tag_c - }; }; using lookup_bitwise_dispatch_exec_bitwise_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_calldata_hashing.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_calldata_hashing.hpp index 38988e9531a7..28e72a8d04a9 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_calldata_hashing.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_calldata_hashing.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,18 +18,16 @@ struct lookup_calldata_hashing_cd_hash_settings_ { static constexpr std::string_view NAME = "LOOKUP_CALLDATA_HASHING_CD_HASH"; static constexpr std::string_view RELATION_NAME = "calldata_hashing"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::cd_hashing_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::cd_hashing_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::cd_hashing_input_0_), + ColumnExpression(ColumnAndShifts::cd_hashing_input_1_), + ColumnExpression(ColumnAndShifts::cd_hashing_input_2_)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2)); static constexpr Column COUNTS = Column::lookup_calldata_hashing_cd_hash_counts; static constexpr Column INVERSES = Column::lookup_calldata_hashing_cd_hash_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::cd_hashing_input_0_, ColumnAndShifts::cd_hashing_input_1_, ColumnAndShifts::cd_hashing_input_2_ - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2 - }; }; using lookup_calldata_hashing_cd_hash_settings = lookup_settings; @@ -41,16 +40,12 @@ struct lookup_calldata_hashing_cd_hash_end_settings_ { static constexpr std::string_view NAME = "LOOKUP_CALLDATA_HASHING_CD_HASH_END"; static constexpr std::string_view RELATION_NAME = "calldata_hashing"; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; - static constexpr Column SRC_SELECTOR = Column::cd_hashing_latch; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::cd_hashing_latch); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::cd_hashing_output_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_calldata_hashing_cd_hash_end_counts; static constexpr Column INVERSES = Column::lookup_calldata_hashing_cd_hash_end_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::cd_hashing_output_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_calldata_hashing_cd_hash_end_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_class_id_derivation.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_class_id_derivation.hpp index ca1de6c1e18a..09b348b58122 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_class_id_derivation.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_class_id_derivation.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,22 +18,19 @@ struct lookup_class_id_derivation_class_id_poseidon2_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_CLASS_ID_DERIVATION_CLASS_ID_POSEIDON2_0"; static constexpr std::string_view RELATION_NAME = "class_id_derivation"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::class_id_derivation_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::class_id_derivation_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::class_id_derivation_temp_constant_for_lookup), + ColumnExpression(ColumnAndShifts::class_id_derivation_artifact_hash), + ColumnExpression(ColumnAndShifts::class_id_derivation_private_function_root), + ColumnExpression(ColumnAndShifts::class_id_derivation_class_id)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_class_id_derivation_class_id_poseidon2_0_counts; static constexpr Column INVERSES = Column::lookup_class_id_derivation_class_id_poseidon2_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::class_id_derivation_temp_constant_for_lookup, - ColumnAndShifts::class_id_derivation_artifact_hash, - ColumnAndShifts::class_id_derivation_private_function_root, - ColumnAndShifts::class_id_derivation_class_id - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_class_id_derivation_class_id_poseidon2_0_settings = @@ -47,22 +45,19 @@ struct lookup_class_id_derivation_class_id_poseidon2_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_CLASS_ID_DERIVATION_CLASS_ID_POSEIDON2_1"; static constexpr std::string_view RELATION_NAME = "class_id_derivation"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::class_id_derivation_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::class_id_derivation_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::class_id_derivation_public_bytecode_commitment), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::class_id_derivation_class_id)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_class_id_derivation_class_id_poseidon2_1_counts; static constexpr Column INVERSES = Column::lookup_class_id_derivation_class_id_poseidon2_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::class_id_derivation_public_bytecode_commitment, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::class_id_derivation_class_id - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_class_id_derivation_class_id_poseidon2_1_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_context.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_context.hpp index 5fbef595dda3..2e0f3a3eae1e 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_context.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_context.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,66 +18,64 @@ struct lookup_context_ctx_stack_call_settings_ { static constexpr std::string_view NAME = "LOOKUP_CONTEXT_CTX_STACK_CALL"; static constexpr std::string_view RELATION_NAME = "context"; static constexpr size_t LOOKUP_TUPLE_SIZE = 26; - static constexpr Column SRC_SELECTOR = Column::execution_sel_enter_call; - static constexpr Column DST_SELECTOR = Column::context_stack_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_enter_call); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::context_stack_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_next_context_id), + ColumnExpression(ColumnAndShifts::execution_context_id), + ColumnExpression(ColumnAndShifts::execution_parent_id), + ColumnExpression(ColumnAndShifts::execution_next_pc), + ColumnExpression(ColumnAndShifts::execution_msg_sender), + ColumnExpression(ColumnAndShifts::execution_contract_address), + ColumnExpression(ColumnAndShifts::execution_bytecode_id), + ColumnExpression(ColumnAndShifts::execution_is_static), + ColumnExpression(ColumnAndShifts::execution_parent_calldata_addr), + ColumnExpression(ColumnAndShifts::execution_parent_calldata_size), + ColumnExpression(ColumnAndShifts::execution_parent_l2_gas_limit), + ColumnExpression(ColumnAndShifts::execution_parent_da_gas_limit), + ColumnExpression(ColumnAndShifts::execution_parent_l2_gas_used), + ColumnExpression(ColumnAndShifts::execution_parent_da_gas_used), + ColumnExpression(ColumnAndShifts::execution_note_hash_tree_root), + ColumnExpression(ColumnAndShifts::execution_note_hash_tree_size), + ColumnExpression(ColumnAndShifts::execution_num_note_hashes_emitted), + ColumnExpression(ColumnAndShifts::execution_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::execution_nullifier_tree_size), + ColumnExpression(ColumnAndShifts::execution_num_nullifiers_emitted), + ColumnExpression(ColumnAndShifts::execution_public_data_tree_root), + ColumnExpression(ColumnAndShifts::execution_public_data_tree_size), + ColumnExpression(ColumnAndShifts::execution_written_public_data_slots_tree_root), + ColumnExpression(ColumnAndShifts::execution_written_public_data_slots_tree_size), + ColumnExpression(ColumnAndShifts::execution_num_unencrypted_logs), + ColumnExpression(ColumnAndShifts::execution_num_l2_to_l1_messages)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::context_stack_entered_context_id), + ColumnExpression(ColumnAndShifts::context_stack_context_id), + ColumnExpression(ColumnAndShifts::context_stack_parent_id), + ColumnExpression(ColumnAndShifts::context_stack_next_pc), + ColumnExpression(ColumnAndShifts::context_stack_msg_sender), + ColumnExpression(ColumnAndShifts::context_stack_contract_address), + ColumnExpression(ColumnAndShifts::context_stack_bytecode_id), + ColumnExpression(ColumnAndShifts::context_stack_is_static), + ColumnExpression(ColumnAndShifts::context_stack_parent_calldata_addr), + ColumnExpression(ColumnAndShifts::context_stack_parent_calldata_size), + ColumnExpression(ColumnAndShifts::context_stack_parent_l2_gas_limit), + ColumnExpression(ColumnAndShifts::context_stack_parent_da_gas_limit), + ColumnExpression(ColumnAndShifts::context_stack_parent_l2_gas_used), + ColumnExpression(ColumnAndShifts::context_stack_parent_da_gas_used), + ColumnExpression(ColumnAndShifts::context_stack_note_hash_tree_root), + ColumnExpression(ColumnAndShifts::context_stack_note_hash_tree_size), + ColumnExpression(ColumnAndShifts::context_stack_num_note_hashes_emitted), + ColumnExpression(ColumnAndShifts::context_stack_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::context_stack_nullifier_tree_size), + ColumnExpression(ColumnAndShifts::context_stack_num_nullifiers_emitted), + ColumnExpression(ColumnAndShifts::context_stack_public_data_tree_root), + ColumnExpression(ColumnAndShifts::context_stack_public_data_tree_size), + ColumnExpression(ColumnAndShifts::context_stack_written_public_data_slots_tree_root), + ColumnExpression(ColumnAndShifts::context_stack_written_public_data_slots_tree_size), + ColumnExpression(ColumnAndShifts::context_stack_num_unencrypted_logs), + ColumnExpression(ColumnAndShifts::context_stack_num_l2_to_l1_messages)); static constexpr Column COUNTS = Column::lookup_context_ctx_stack_call_counts; static constexpr Column INVERSES = Column::lookup_context_ctx_stack_call_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_next_context_id, - ColumnAndShifts::execution_context_id, - ColumnAndShifts::execution_parent_id, - ColumnAndShifts::execution_next_pc, - ColumnAndShifts::execution_msg_sender, - ColumnAndShifts::execution_contract_address, - ColumnAndShifts::execution_bytecode_id, - ColumnAndShifts::execution_is_static, - ColumnAndShifts::execution_parent_calldata_addr, - ColumnAndShifts::execution_parent_calldata_size, - ColumnAndShifts::execution_parent_l2_gas_limit, - ColumnAndShifts::execution_parent_da_gas_limit, - ColumnAndShifts::execution_parent_l2_gas_used, - ColumnAndShifts::execution_parent_da_gas_used, - ColumnAndShifts::execution_note_hash_tree_root, - ColumnAndShifts::execution_note_hash_tree_size, - ColumnAndShifts::execution_num_note_hashes_emitted, - ColumnAndShifts::execution_nullifier_tree_root, - ColumnAndShifts::execution_nullifier_tree_size, - ColumnAndShifts::execution_num_nullifiers_emitted, - ColumnAndShifts::execution_public_data_tree_root, - ColumnAndShifts::execution_public_data_tree_size, - ColumnAndShifts::execution_written_public_data_slots_tree_root, - ColumnAndShifts::execution_written_public_data_slots_tree_size, - ColumnAndShifts::execution_num_unencrypted_logs, - ColumnAndShifts::execution_num_l2_to_l1_messages - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::context_stack_entered_context_id, - ColumnAndShifts::context_stack_context_id, - ColumnAndShifts::context_stack_parent_id, - ColumnAndShifts::context_stack_next_pc, - ColumnAndShifts::context_stack_msg_sender, - ColumnAndShifts::context_stack_contract_address, - ColumnAndShifts::context_stack_bytecode_id, - ColumnAndShifts::context_stack_is_static, - ColumnAndShifts::context_stack_parent_calldata_addr, - ColumnAndShifts::context_stack_parent_calldata_size, - ColumnAndShifts::context_stack_parent_l2_gas_limit, - ColumnAndShifts::context_stack_parent_da_gas_limit, - ColumnAndShifts::context_stack_parent_l2_gas_used, - ColumnAndShifts::context_stack_parent_da_gas_used, - ColumnAndShifts::context_stack_note_hash_tree_root, - ColumnAndShifts::context_stack_note_hash_tree_size, - ColumnAndShifts::context_stack_num_note_hashes_emitted, - ColumnAndShifts::context_stack_nullifier_tree_root, - ColumnAndShifts::context_stack_nullifier_tree_size, - ColumnAndShifts::context_stack_num_nullifiers_emitted, - ColumnAndShifts::context_stack_public_data_tree_root, - ColumnAndShifts::context_stack_public_data_tree_size, - ColumnAndShifts::context_stack_written_public_data_slots_tree_root, - ColumnAndShifts::context_stack_written_public_data_slots_tree_size, - ColumnAndShifts::context_stack_num_unencrypted_logs, - ColumnAndShifts::context_stack_num_l2_to_l1_messages - }; }; using lookup_context_ctx_stack_call_settings = lookup_settings; @@ -89,66 +88,64 @@ struct lookup_context_ctx_stack_rollback_settings_ { static constexpr std::string_view NAME = "LOOKUP_CONTEXT_CTX_STACK_ROLLBACK"; static constexpr std::string_view RELATION_NAME = "context"; static constexpr size_t LOOKUP_TUPLE_SIZE = 26; - static constexpr Column SRC_SELECTOR = Column::execution_rollback_context; - static constexpr Column DST_SELECTOR = Column::context_stack_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_rollback_context); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::context_stack_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_context_id), + ColumnExpression(ColumnAndShifts::execution_context_id_shift), + ColumnExpression(ColumnAndShifts::execution_parent_id_shift), + ColumnExpression(ColumnAndShifts::execution_pc_shift), + ColumnExpression(ColumnAndShifts::execution_msg_sender_shift), + ColumnExpression(ColumnAndShifts::execution_contract_address_shift), + ColumnExpression(ColumnAndShifts::execution_bytecode_id_shift), + ColumnExpression(ColumnAndShifts::execution_is_static_shift), + ColumnExpression(ColumnAndShifts::execution_parent_calldata_addr_shift), + ColumnExpression(ColumnAndShifts::execution_parent_calldata_size_shift), + ColumnExpression(ColumnAndShifts::execution_parent_l2_gas_limit_shift), + ColumnExpression(ColumnAndShifts::execution_parent_da_gas_limit_shift), + ColumnExpression(ColumnAndShifts::execution_parent_l2_gas_used_shift), + ColumnExpression(ColumnAndShifts::execution_parent_da_gas_used_shift), + ColumnExpression(ColumnAndShifts::execution_prev_note_hash_tree_root_shift), + ColumnExpression(ColumnAndShifts::execution_prev_note_hash_tree_size_shift), + ColumnExpression(ColumnAndShifts::execution_prev_num_note_hashes_emitted_shift), + ColumnExpression(ColumnAndShifts::execution_prev_nullifier_tree_root_shift), + ColumnExpression(ColumnAndShifts::execution_prev_nullifier_tree_size_shift), + ColumnExpression(ColumnAndShifts::execution_prev_num_nullifiers_emitted_shift), + ColumnExpression(ColumnAndShifts::execution_prev_public_data_tree_root_shift), + ColumnExpression(ColumnAndShifts::execution_prev_public_data_tree_size_shift), + ColumnExpression(ColumnAndShifts::execution_prev_written_public_data_slots_tree_root_shift), + ColumnExpression(ColumnAndShifts::execution_prev_written_public_data_slots_tree_size_shift), + ColumnExpression(ColumnAndShifts::execution_prev_num_unencrypted_logs_shift), + ColumnExpression(ColumnAndShifts::execution_prev_num_l2_to_l1_messages_shift)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::context_stack_entered_context_id), + ColumnExpression(ColumnAndShifts::context_stack_context_id), + ColumnExpression(ColumnAndShifts::context_stack_parent_id), + ColumnExpression(ColumnAndShifts::context_stack_next_pc), + ColumnExpression(ColumnAndShifts::context_stack_msg_sender), + ColumnExpression(ColumnAndShifts::context_stack_contract_address), + ColumnExpression(ColumnAndShifts::context_stack_bytecode_id), + ColumnExpression(ColumnAndShifts::context_stack_is_static), + ColumnExpression(ColumnAndShifts::context_stack_parent_calldata_addr), + ColumnExpression(ColumnAndShifts::context_stack_parent_calldata_size), + ColumnExpression(ColumnAndShifts::context_stack_parent_l2_gas_limit), + ColumnExpression(ColumnAndShifts::context_stack_parent_da_gas_limit), + ColumnExpression(ColumnAndShifts::context_stack_parent_l2_gas_used), + ColumnExpression(ColumnAndShifts::context_stack_parent_da_gas_used), + ColumnExpression(ColumnAndShifts::context_stack_note_hash_tree_root), + ColumnExpression(ColumnAndShifts::context_stack_note_hash_tree_size), + ColumnExpression(ColumnAndShifts::context_stack_num_note_hashes_emitted), + ColumnExpression(ColumnAndShifts::context_stack_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::context_stack_nullifier_tree_size), + ColumnExpression(ColumnAndShifts::context_stack_num_nullifiers_emitted), + ColumnExpression(ColumnAndShifts::context_stack_public_data_tree_root), + ColumnExpression(ColumnAndShifts::context_stack_public_data_tree_size), + ColumnExpression(ColumnAndShifts::context_stack_written_public_data_slots_tree_root), + ColumnExpression(ColumnAndShifts::context_stack_written_public_data_slots_tree_size), + ColumnExpression(ColumnAndShifts::context_stack_num_unencrypted_logs), + ColumnExpression(ColumnAndShifts::context_stack_num_l2_to_l1_messages)); static constexpr Column COUNTS = Column::lookup_context_ctx_stack_rollback_counts; static constexpr Column INVERSES = Column::lookup_context_ctx_stack_rollback_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_context_id, - ColumnAndShifts::execution_context_id_shift, - ColumnAndShifts::execution_parent_id_shift, - ColumnAndShifts::execution_pc_shift, - ColumnAndShifts::execution_msg_sender_shift, - ColumnAndShifts::execution_contract_address_shift, - ColumnAndShifts::execution_bytecode_id_shift, - ColumnAndShifts::execution_is_static_shift, - ColumnAndShifts::execution_parent_calldata_addr_shift, - ColumnAndShifts::execution_parent_calldata_size_shift, - ColumnAndShifts::execution_parent_l2_gas_limit_shift, - ColumnAndShifts::execution_parent_da_gas_limit_shift, - ColumnAndShifts::execution_parent_l2_gas_used_shift, - ColumnAndShifts::execution_parent_da_gas_used_shift, - ColumnAndShifts::execution_prev_note_hash_tree_root_shift, - ColumnAndShifts::execution_prev_note_hash_tree_size_shift, - ColumnAndShifts::execution_prev_num_note_hashes_emitted_shift, - ColumnAndShifts::execution_prev_nullifier_tree_root_shift, - ColumnAndShifts::execution_prev_nullifier_tree_size_shift, - ColumnAndShifts::execution_prev_num_nullifiers_emitted_shift, - ColumnAndShifts::execution_prev_public_data_tree_root_shift, - ColumnAndShifts::execution_prev_public_data_tree_size_shift, - ColumnAndShifts::execution_prev_written_public_data_slots_tree_root_shift, - ColumnAndShifts::execution_prev_written_public_data_slots_tree_size_shift, - ColumnAndShifts::execution_prev_num_unencrypted_logs_shift, - ColumnAndShifts::execution_prev_num_l2_to_l1_messages_shift - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::context_stack_entered_context_id, - ColumnAndShifts::context_stack_context_id, - ColumnAndShifts::context_stack_parent_id, - ColumnAndShifts::context_stack_next_pc, - ColumnAndShifts::context_stack_msg_sender, - ColumnAndShifts::context_stack_contract_address, - ColumnAndShifts::context_stack_bytecode_id, - ColumnAndShifts::context_stack_is_static, - ColumnAndShifts::context_stack_parent_calldata_addr, - ColumnAndShifts::context_stack_parent_calldata_size, - ColumnAndShifts::context_stack_parent_l2_gas_limit, - ColumnAndShifts::context_stack_parent_da_gas_limit, - ColumnAndShifts::context_stack_parent_l2_gas_used, - ColumnAndShifts::context_stack_parent_da_gas_used, - ColumnAndShifts::context_stack_note_hash_tree_root, - ColumnAndShifts::context_stack_note_hash_tree_size, - ColumnAndShifts::context_stack_num_note_hashes_emitted, - ColumnAndShifts::context_stack_nullifier_tree_root, - ColumnAndShifts::context_stack_nullifier_tree_size, - ColumnAndShifts::context_stack_num_nullifiers_emitted, - ColumnAndShifts::context_stack_public_data_tree_root, - ColumnAndShifts::context_stack_public_data_tree_size, - ColumnAndShifts::context_stack_written_public_data_slots_tree_root, - ColumnAndShifts::context_stack_written_public_data_slots_tree_size, - ColumnAndShifts::context_stack_num_unencrypted_logs, - ColumnAndShifts::context_stack_num_l2_to_l1_messages - }; }; using lookup_context_ctx_stack_rollback_settings = lookup_settings; @@ -162,42 +159,40 @@ struct lookup_context_ctx_stack_return_settings_ { static constexpr std::string_view NAME = "LOOKUP_CONTEXT_CTX_STACK_RETURN"; static constexpr std::string_view RELATION_NAME = "context"; static constexpr size_t LOOKUP_TUPLE_SIZE = 14; - static constexpr Column SRC_SELECTOR = Column::execution_nested_return; - static constexpr Column DST_SELECTOR = Column::context_stack_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_nested_return); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::context_stack_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_context_id), + ColumnExpression(ColumnAndShifts::execution_context_id_shift), + ColumnExpression(ColumnAndShifts::execution_parent_id_shift), + ColumnExpression(ColumnAndShifts::execution_pc_shift), + ColumnExpression(ColumnAndShifts::execution_msg_sender_shift), + ColumnExpression(ColumnAndShifts::execution_contract_address_shift), + ColumnExpression(ColumnAndShifts::execution_bytecode_id_shift), + ColumnExpression(ColumnAndShifts::execution_is_static_shift), + ColumnExpression(ColumnAndShifts::execution_parent_calldata_addr_shift), + ColumnExpression(ColumnAndShifts::execution_parent_calldata_size_shift), + ColumnExpression(ColumnAndShifts::execution_parent_l2_gas_limit_shift), + ColumnExpression(ColumnAndShifts::execution_parent_da_gas_limit_shift), + ColumnExpression(ColumnAndShifts::execution_parent_l2_gas_used_shift), + ColumnExpression(ColumnAndShifts::execution_parent_da_gas_used_shift)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::context_stack_entered_context_id), + ColumnExpression(ColumnAndShifts::context_stack_context_id), + ColumnExpression(ColumnAndShifts::context_stack_parent_id), + ColumnExpression(ColumnAndShifts::context_stack_next_pc), + ColumnExpression(ColumnAndShifts::context_stack_msg_sender), + ColumnExpression(ColumnAndShifts::context_stack_contract_address), + ColumnExpression(ColumnAndShifts::context_stack_bytecode_id), + ColumnExpression(ColumnAndShifts::context_stack_is_static), + ColumnExpression(ColumnAndShifts::context_stack_parent_calldata_addr), + ColumnExpression(ColumnAndShifts::context_stack_parent_calldata_size), + ColumnExpression(ColumnAndShifts::context_stack_parent_l2_gas_limit), + ColumnExpression(ColumnAndShifts::context_stack_parent_da_gas_limit), + ColumnExpression(ColumnAndShifts::context_stack_parent_l2_gas_used), + ColumnExpression(ColumnAndShifts::context_stack_parent_da_gas_used)); static constexpr Column COUNTS = Column::lookup_context_ctx_stack_return_counts; static constexpr Column INVERSES = Column::lookup_context_ctx_stack_return_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_context_id, - ColumnAndShifts::execution_context_id_shift, - ColumnAndShifts::execution_parent_id_shift, - ColumnAndShifts::execution_pc_shift, - ColumnAndShifts::execution_msg_sender_shift, - ColumnAndShifts::execution_contract_address_shift, - ColumnAndShifts::execution_bytecode_id_shift, - ColumnAndShifts::execution_is_static_shift, - ColumnAndShifts::execution_parent_calldata_addr_shift, - ColumnAndShifts::execution_parent_calldata_size_shift, - ColumnAndShifts::execution_parent_l2_gas_limit_shift, - ColumnAndShifts::execution_parent_da_gas_limit_shift, - ColumnAndShifts::execution_parent_l2_gas_used_shift, - ColumnAndShifts::execution_parent_da_gas_used_shift - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::context_stack_entered_context_id, - ColumnAndShifts::context_stack_context_id, - ColumnAndShifts::context_stack_parent_id, - ColumnAndShifts::context_stack_next_pc, - ColumnAndShifts::context_stack_msg_sender, - ColumnAndShifts::context_stack_contract_address, - ColumnAndShifts::context_stack_bytecode_id, - ColumnAndShifts::context_stack_is_static, - ColumnAndShifts::context_stack_parent_calldata_addr, - ColumnAndShifts::context_stack_parent_calldata_size, - ColumnAndShifts::context_stack_parent_l2_gas_limit, - ColumnAndShifts::context_stack_parent_da_gas_limit, - ColumnAndShifts::context_stack_parent_l2_gas_used, - ColumnAndShifts::context_stack_parent_da_gas_used - }; }; using lookup_context_ctx_stack_return_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_contract_instance_retrieval.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_contract_instance_retrieval.hpp index fa15216b7be4..b8022bc73edc 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_contract_instance_retrieval.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_contract_instance_retrieval.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,24 +18,21 @@ struct lookup_contract_instance_retrieval_deployment_nullifier_read_settings_ { static constexpr std::string_view NAME = "LOOKUP_CONTRACT_INSTANCE_RETRIEVAL_DEPLOYMENT_NULLIFIER_READ"; static constexpr std::string_view RELATION_NAME = "contract_instance_retrieval"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::contract_instance_retrieval_sel; - static constexpr Column DST_SELECTOR = Column::nullifier_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::contract_instance_retrieval_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::nullifier_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple( + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_exists), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_address), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_deployer_protocol_contract_address), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_sel)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::nullifier_check_exists), + ColumnExpression(ColumnAndShifts::nullifier_check_nullifier), + ColumnExpression(ColumnAndShifts::nullifier_check_root), + ColumnExpression(ColumnAndShifts::nullifier_check_address), + ColumnExpression(ColumnAndShifts::nullifier_check_should_silo)); static constexpr Column COUNTS = Column::lookup_contract_instance_retrieval_deployment_nullifier_read_counts; static constexpr Column INVERSES = Column::lookup_contract_instance_retrieval_deployment_nullifier_read_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::contract_instance_retrieval_exists, - ColumnAndShifts::contract_instance_retrieval_address, - ColumnAndShifts::contract_instance_retrieval_nullifier_tree_root, - ColumnAndShifts::contract_instance_retrieval_deployer_protocol_contract_address, - ColumnAndShifts::contract_instance_retrieval_sel - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::nullifier_check_exists, - ColumnAndShifts::nullifier_check_nullifier, - ColumnAndShifts::nullifier_check_root, - ColumnAndShifts::nullifier_check_address, - ColumnAndShifts::nullifier_check_should_silo - }; }; using lookup_contract_instance_retrieval_deployment_nullifier_read_settings = @@ -49,40 +47,38 @@ struct lookup_contract_instance_retrieval_address_derivation_settings_ { static constexpr std::string_view NAME = "LOOKUP_CONTRACT_INSTANCE_RETRIEVAL_ADDRESS_DERIVATION"; static constexpr std::string_view RELATION_NAME = "contract_instance_retrieval"; static constexpr size_t LOOKUP_TUPLE_SIZE = 13; - static constexpr Column SRC_SELECTOR = Column::contract_instance_retrieval_exists; - static constexpr Column DST_SELECTOR = Column::address_derivation_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::contract_instance_retrieval_exists); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::address_derivation_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::contract_instance_retrieval_address), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_salt), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_deployer_addr), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_original_class_id), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_init_hash), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_nullifier_key_x), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_nullifier_key_y), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_incoming_viewing_key_x), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_incoming_viewing_key_y), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_outgoing_viewing_key_x), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_outgoing_viewing_key_y), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_tagging_key_x), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_tagging_key_y)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::address_derivation_address), + ColumnExpression(ColumnAndShifts::address_derivation_salt), + ColumnExpression(ColumnAndShifts::address_derivation_deployer_addr), + ColumnExpression(ColumnAndShifts::address_derivation_class_id), + ColumnExpression(ColumnAndShifts::address_derivation_init_hash), + ColumnExpression(ColumnAndShifts::address_derivation_nullifier_key_x), + ColumnExpression(ColumnAndShifts::address_derivation_nullifier_key_y), + ColumnExpression(ColumnAndShifts::address_derivation_incoming_viewing_key_x), + ColumnExpression(ColumnAndShifts::address_derivation_incoming_viewing_key_y), + ColumnExpression(ColumnAndShifts::address_derivation_outgoing_viewing_key_x), + ColumnExpression(ColumnAndShifts::address_derivation_outgoing_viewing_key_y), + ColumnExpression(ColumnAndShifts::address_derivation_tagging_key_x), + ColumnExpression(ColumnAndShifts::address_derivation_tagging_key_y)); static constexpr Column COUNTS = Column::lookup_contract_instance_retrieval_address_derivation_counts; static constexpr Column INVERSES = Column::lookup_contract_instance_retrieval_address_derivation_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::contract_instance_retrieval_address, - ColumnAndShifts::contract_instance_retrieval_salt, - ColumnAndShifts::contract_instance_retrieval_deployer_addr, - ColumnAndShifts::contract_instance_retrieval_original_class_id, - ColumnAndShifts::contract_instance_retrieval_init_hash, - ColumnAndShifts::contract_instance_retrieval_nullifier_key_x, - ColumnAndShifts::contract_instance_retrieval_nullifier_key_y, - ColumnAndShifts::contract_instance_retrieval_incoming_viewing_key_x, - ColumnAndShifts::contract_instance_retrieval_incoming_viewing_key_y, - ColumnAndShifts::contract_instance_retrieval_outgoing_viewing_key_x, - ColumnAndShifts::contract_instance_retrieval_outgoing_viewing_key_y, - ColumnAndShifts::contract_instance_retrieval_tagging_key_x, - ColumnAndShifts::contract_instance_retrieval_tagging_key_y - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::address_derivation_address, - ColumnAndShifts::address_derivation_salt, - ColumnAndShifts::address_derivation_deployer_addr, - ColumnAndShifts::address_derivation_class_id, - ColumnAndShifts::address_derivation_init_hash, - ColumnAndShifts::address_derivation_nullifier_key_x, - ColumnAndShifts::address_derivation_nullifier_key_y, - ColumnAndShifts::address_derivation_incoming_viewing_key_x, - ColumnAndShifts::address_derivation_incoming_viewing_key_y, - ColumnAndShifts::address_derivation_outgoing_viewing_key_x, - ColumnAndShifts::address_derivation_outgoing_viewing_key_y, - ColumnAndShifts::address_derivation_tagging_key_x, - ColumnAndShifts::address_derivation_tagging_key_y - }; }; using lookup_contract_instance_retrieval_address_derivation_settings = @@ -97,22 +93,20 @@ struct lookup_contract_instance_retrieval_update_check_settings_ { static constexpr std::string_view NAME = "LOOKUP_CONTRACT_INSTANCE_RETRIEVAL_UPDATE_CHECK"; static constexpr std::string_view RELATION_NAME = "contract_instance_retrieval"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::contract_instance_retrieval_exists; - static constexpr Column DST_SELECTOR = Column::update_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::contract_instance_retrieval_exists); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::update_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::contract_instance_retrieval_address), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_current_class_id), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_original_class_id), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_public_data_tree_root)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::update_check_address), + ColumnExpression(ColumnAndShifts::update_check_current_class_id), + ColumnExpression(ColumnAndShifts::update_check_original_class_id), + ColumnExpression(ColumnAndShifts::update_check_public_data_tree_root)); static constexpr Column COUNTS = Column::lookup_contract_instance_retrieval_update_check_counts; static constexpr Column INVERSES = Column::lookup_contract_instance_retrieval_update_check_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::contract_instance_retrieval_address, - ColumnAndShifts::contract_instance_retrieval_current_class_id, - ColumnAndShifts::contract_instance_retrieval_original_class_id, - ColumnAndShifts::contract_instance_retrieval_public_data_tree_root - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::update_check_address, - ColumnAndShifts::update_check_current_class_id, - ColumnAndShifts::update_check_original_class_id, - ColumnAndShifts::update_check_public_data_tree_root - }; }; using lookup_contract_instance_retrieval_update_check_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_data_copy.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_data_copy.hpp index 384a60dc43b6..fc2d2506116a 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_data_copy.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_data_copy.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,18 +18,17 @@ struct lookup_data_copy_max_read_index_gt_settings_ { static constexpr std::string_view NAME = "LOOKUP_DATA_COPY_MAX_READ_INDEX_GT"; static constexpr std::string_view RELATION_NAME = "data_copy"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::data_copy_sel_start; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::data_copy_sel_start); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::data_copy_offset_plus_size), + ColumnExpression(ColumnAndShifts::data_copy_src_data_size), + ColumnExpression(ColumnAndShifts::data_copy_offset_plus_size_is_gt)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_data_copy_max_read_index_gt_counts; static constexpr Column INVERSES = Column::lookup_data_copy_max_read_index_gt_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::data_copy_offset_plus_size, - ColumnAndShifts::data_copy_src_data_size, - ColumnAndShifts::data_copy_offset_plus_size_is_gt - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_data_copy_max_read_index_gt_settings = lookup_settings; @@ -42,18 +42,17 @@ struct lookup_data_copy_check_src_addr_in_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_DATA_COPY_CHECK_SRC_ADDR_IN_RANGE"; static constexpr std::string_view RELATION_NAME = "data_copy"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::data_copy_sel_start; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::data_copy_sel_start); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::data_copy_max_read_addr), + ColumnExpression(ColumnAndShifts::data_copy_max_mem_addr), + ColumnExpression(ColumnAndShifts::data_copy_src_out_of_range_err)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_data_copy_check_src_addr_in_range_counts; static constexpr Column INVERSES = Column::lookup_data_copy_check_src_addr_in_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::data_copy_max_read_addr, - ColumnAndShifts::data_copy_max_mem_addr, - ColumnAndShifts::data_copy_src_out_of_range_err - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_data_copy_check_src_addr_in_range_settings = @@ -68,18 +67,17 @@ struct lookup_data_copy_check_dst_addr_in_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_DATA_COPY_CHECK_DST_ADDR_IN_RANGE"; static constexpr std::string_view RELATION_NAME = "data_copy"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::data_copy_sel_start; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::data_copy_sel_start); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::data_copy_max_write_addr), + ColumnExpression(ColumnAndShifts::data_copy_max_mem_addr), + ColumnExpression(ColumnAndShifts::data_copy_dst_out_of_range_err)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_data_copy_check_dst_addr_in_range_counts; static constexpr Column INVERSES = Column::lookup_data_copy_check_dst_addr_in_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::data_copy_max_write_addr, - ColumnAndShifts::data_copy_max_mem_addr, - ColumnAndShifts::data_copy_dst_out_of_range_err - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_data_copy_check_dst_addr_in_range_settings = @@ -94,18 +92,17 @@ struct lookup_data_copy_offset_gt_max_read_index_settings_ { static constexpr std::string_view NAME = "LOOKUP_DATA_COPY_OFFSET_GT_MAX_READ_INDEX"; static constexpr std::string_view RELATION_NAME = "data_copy"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::data_copy_sel_start_no_err; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::data_copy_sel_start_no_err); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::data_copy_offset), + ColumnExpression(ColumnAndShifts::data_copy_max_read_index), + ColumnExpression(ColumnAndShifts::data_copy_offset_gt_max_read_index)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_data_copy_offset_gt_max_read_index_counts; static constexpr Column INVERSES = Column::lookup_data_copy_offset_gt_max_read_index_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::data_copy_offset, - ColumnAndShifts::data_copy_max_read_index, - ColumnAndShifts::data_copy_offset_gt_max_read_index - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_data_copy_offset_gt_max_read_index_settings = @@ -120,19 +117,22 @@ struct lookup_data_copy_mem_write_settings_ { static constexpr std::string_view NAME = "LOOKUP_DATA_COPY_MEM_WRITE"; static constexpr std::string_view RELATION_NAME = "data_copy"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::data_copy_sel_mem_write; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::data_copy_sel_mem_write); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::data_copy_clk), + ColumnExpression(ColumnAndShifts::data_copy_dst_addr), + ColumnExpression(ColumnAndShifts::data_copy_value), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::data_copy_sel_mem_write), + ColumnExpression(ColumnAndShifts::data_copy_dst_context_id)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_rw), + ColumnExpression(ColumnAndShifts::memory_space_id)); static constexpr Column COUNTS = Column::lookup_data_copy_mem_write_counts; static constexpr Column INVERSES = Column::lookup_data_copy_mem_write_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::data_copy_clk, ColumnAndShifts::data_copy_dst_addr, - ColumnAndShifts::data_copy_value, ColumnAndShifts::precomputed_zero, - ColumnAndShifts::data_copy_sel_mem_write, ColumnAndShifts::data_copy_dst_context_id - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, - ColumnAndShifts::memory_tag, ColumnAndShifts::memory_rw, ColumnAndShifts::memory_space_id - }; }; using lookup_data_copy_mem_write_settings = lookup_settings; @@ -145,19 +145,22 @@ struct lookup_data_copy_mem_read_settings_ { static constexpr std::string_view NAME = "LOOKUP_DATA_COPY_MEM_READ"; static constexpr std::string_view RELATION_NAME = "data_copy"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::data_copy_sel_mem_read; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::data_copy_sel_mem_read); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::data_copy_clk), + ColumnExpression(ColumnAndShifts::data_copy_read_addr), + ColumnExpression(ColumnAndShifts::data_copy_value), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::data_copy_src_context_id)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_rw), + ColumnExpression(ColumnAndShifts::memory_space_id)); static constexpr Column COUNTS = Column::lookup_data_copy_mem_read_counts; static constexpr Column INVERSES = Column::lookup_data_copy_mem_read_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::data_copy_clk, ColumnAndShifts::data_copy_read_addr, - ColumnAndShifts::data_copy_value, ColumnAndShifts::precomputed_zero, - ColumnAndShifts::precomputed_zero, ColumnAndShifts::data_copy_src_context_id - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, - ColumnAndShifts::memory_tag, ColumnAndShifts::memory_rw, ColumnAndShifts::memory_space_id - }; }; using lookup_data_copy_mem_read_settings = lookup_settings; @@ -170,18 +173,16 @@ struct lookup_data_copy_col_read_settings_ { static constexpr std::string_view NAME = "LOOKUP_DATA_COPY_COL_READ"; static constexpr std::string_view RELATION_NAME = "data_copy"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::data_copy_cd_copy_col_read; - static constexpr Column DST_SELECTOR = Column::calldata_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::data_copy_cd_copy_col_read); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::calldata_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::data_copy_value), + ColumnExpression(ColumnAndShifts::data_copy_dst_context_id), + ColumnExpression(ColumnAndShifts::data_copy_read_addr)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::calldata_value), + ColumnExpression(ColumnAndShifts::calldata_context_id), + ColumnExpression(ColumnAndShifts::calldata_index)); static constexpr Column COUNTS = Column::lookup_data_copy_col_read_counts; static constexpr Column INVERSES = Column::lookup_data_copy_col_read_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::data_copy_value, - ColumnAndShifts::data_copy_dst_context_id, - ColumnAndShifts::data_copy_read_addr - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::calldata_value, ColumnAndShifts::calldata_context_id, ColumnAndShifts::calldata_index - }; }; using lookup_data_copy_col_read_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_ecc_mem.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_ecc_mem.hpp index 49cdee593854..64d2ba4a4d60 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_ecc_mem.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_ecc_mem.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,18 +18,17 @@ struct lookup_ecc_mem_check_dst_addr_in_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_ECC_MEM_CHECK_DST_ADDR_IN_RANGE"; static constexpr std::string_view RELATION_NAME = "ecc_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::ecc_add_mem_sel; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ecc_add_mem_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::ecc_add_mem_dst_addr_2_), + ColumnExpression(ColumnAndShifts::ecc_add_mem_max_mem_addr), + ColumnExpression(ColumnAndShifts::ecc_add_mem_sel_dst_out_of_range_err)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_ecc_mem_check_dst_addr_in_range_counts; static constexpr Column INVERSES = Column::lookup_ecc_mem_check_dst_addr_in_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::ecc_add_mem_dst_addr_2_, - ColumnAndShifts::ecc_add_mem_max_mem_addr, - ColumnAndShifts::ecc_add_mem_sel_dst_out_of_range_err - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_ecc_mem_check_dst_addr_in_range_settings = @@ -43,20 +43,28 @@ struct lookup_ecc_mem_input_output_ecc_add_settings_ { static constexpr std::string_view NAME = "LOOKUP_ECC_MEM_INPUT_OUTPUT_ECC_ADD"; static constexpr std::string_view RELATION_NAME = "ecc_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 9; - static constexpr Column SRC_SELECTOR = Column::ecc_add_mem_sel_should_exec; - static constexpr Column DST_SELECTOR = Column::ecc_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ecc_add_mem_sel_should_exec); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ecc_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ecc_add_mem_p_x), + ColumnExpression(ColumnAndShifts::ecc_add_mem_p_y), + ColumnExpression(ColumnAndShifts::ecc_add_mem_p_is_inf), + ColumnExpression(ColumnAndShifts::ecc_add_mem_q_x), + ColumnExpression(ColumnAndShifts::ecc_add_mem_q_y), + ColumnExpression(ColumnAndShifts::ecc_add_mem_q_is_inf), + ColumnExpression(ColumnAndShifts::ecc_add_mem_res_x), + ColumnExpression(ColumnAndShifts::ecc_add_mem_res_y), + ColumnExpression(ColumnAndShifts::ecc_add_mem_res_is_inf)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ecc_p_x), + ColumnExpression(ColumnAndShifts::ecc_p_y), + ColumnExpression(ColumnAndShifts::ecc_p_is_inf), + ColumnExpression(ColumnAndShifts::ecc_q_x), + ColumnExpression(ColumnAndShifts::ecc_q_y), + ColumnExpression(ColumnAndShifts::ecc_q_is_inf), + ColumnExpression(ColumnAndShifts::ecc_r_x), + ColumnExpression(ColumnAndShifts::ecc_r_y), + ColumnExpression(ColumnAndShifts::ecc_r_is_inf)); static constexpr Column COUNTS = Column::lookup_ecc_mem_input_output_ecc_add_counts; static constexpr Column INVERSES = Column::lookup_ecc_mem_input_output_ecc_add_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::ecc_add_mem_p_x, ColumnAndShifts::ecc_add_mem_p_y, ColumnAndShifts::ecc_add_mem_p_is_inf, - ColumnAndShifts::ecc_add_mem_q_x, ColumnAndShifts::ecc_add_mem_q_y, ColumnAndShifts::ecc_add_mem_q_is_inf, - ColumnAndShifts::ecc_add_mem_res_x, ColumnAndShifts::ecc_add_mem_res_y, ColumnAndShifts::ecc_add_mem_res_is_inf - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::ecc_p_x, ColumnAndShifts::ecc_p_y, ColumnAndShifts::ecc_p_is_inf, - ColumnAndShifts::ecc_q_x, ColumnAndShifts::ecc_q_y, ColumnAndShifts::ecc_q_is_inf, - ColumnAndShifts::ecc_r_x, ColumnAndShifts::ecc_r_y, ColumnAndShifts::ecc_r_is_inf - }; }; using lookup_ecc_mem_input_output_ecc_add_settings = lookup_settings; @@ -70,19 +78,22 @@ struct lookup_ecc_mem_write_mem_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_ECC_MEM_WRITE_MEM_0"; static constexpr std::string_view RELATION_NAME = "ecc_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::ecc_add_mem_sel_should_exec; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ecc_add_mem_sel_should_exec); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ecc_add_mem_execution_clk), + ColumnExpression(ColumnAndShifts::ecc_add_mem_dst_addr_0_), + ColumnExpression(ColumnAndShifts::ecc_add_mem_res_x), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::ecc_add_mem_space_id), + ColumnExpression(ColumnAndShifts::ecc_add_mem_sel_should_exec)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_space_id), + ColumnExpression(ColumnAndShifts::memory_rw)); static constexpr Column COUNTS = Column::lookup_ecc_mem_write_mem_0_counts; static constexpr Column INVERSES = Column::lookup_ecc_mem_write_mem_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::ecc_add_mem_execution_clk, ColumnAndShifts::ecc_add_mem_dst_addr_0_, - ColumnAndShifts::ecc_add_mem_res_x, ColumnAndShifts::precomputed_zero, - ColumnAndShifts::ecc_add_mem_space_id, ColumnAndShifts::ecc_add_mem_sel_should_exec - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, - ColumnAndShifts::memory_tag, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_rw - }; }; using lookup_ecc_mem_write_mem_0_settings = lookup_settings; @@ -95,19 +106,22 @@ struct lookup_ecc_mem_write_mem_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_ECC_MEM_WRITE_MEM_1"; static constexpr std::string_view RELATION_NAME = "ecc_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::ecc_add_mem_sel_should_exec; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ecc_add_mem_sel_should_exec); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ecc_add_mem_execution_clk), + ColumnExpression(ColumnAndShifts::ecc_add_mem_dst_addr_1_), + ColumnExpression(ColumnAndShifts::ecc_add_mem_res_y), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::ecc_add_mem_space_id), + ColumnExpression(ColumnAndShifts::ecc_add_mem_sel_should_exec)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_space_id), + ColumnExpression(ColumnAndShifts::memory_rw)); static constexpr Column COUNTS = Column::lookup_ecc_mem_write_mem_1_counts; static constexpr Column INVERSES = Column::lookup_ecc_mem_write_mem_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::ecc_add_mem_execution_clk, ColumnAndShifts::ecc_add_mem_dst_addr_1_, - ColumnAndShifts::ecc_add_mem_res_y, ColumnAndShifts::precomputed_zero, - ColumnAndShifts::ecc_add_mem_space_id, ColumnAndShifts::ecc_add_mem_sel_should_exec - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, - ColumnAndShifts::memory_tag, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_rw - }; }; using lookup_ecc_mem_write_mem_1_settings = lookup_settings; @@ -120,19 +134,22 @@ struct lookup_ecc_mem_write_mem_2_settings_ { static constexpr std::string_view NAME = "LOOKUP_ECC_MEM_WRITE_MEM_2"; static constexpr std::string_view RELATION_NAME = "ecc_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::ecc_add_mem_sel_should_exec; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ecc_add_mem_sel_should_exec); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ecc_add_mem_execution_clk), + ColumnExpression(ColumnAndShifts::ecc_add_mem_dst_addr_2_), + ColumnExpression(ColumnAndShifts::ecc_add_mem_res_is_inf), + ColumnExpression(ColumnAndShifts::ecc_add_mem_sel_should_exec), + ColumnExpression(ColumnAndShifts::ecc_add_mem_space_id), + ColumnExpression(ColumnAndShifts::ecc_add_mem_sel_should_exec)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_space_id), + ColumnExpression(ColumnAndShifts::memory_rw)); static constexpr Column COUNTS = Column::lookup_ecc_mem_write_mem_2_counts; static constexpr Column INVERSES = Column::lookup_ecc_mem_write_mem_2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::ecc_add_mem_execution_clk, ColumnAndShifts::ecc_add_mem_dst_addr_2_, - ColumnAndShifts::ecc_add_mem_res_is_inf, ColumnAndShifts::ecc_add_mem_sel_should_exec, - ColumnAndShifts::ecc_add_mem_space_id, ColumnAndShifts::ecc_add_mem_sel_should_exec - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, - ColumnAndShifts::memory_tag, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_rw - }; }; using lookup_ecc_mem_write_mem_2_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_emit_notehash.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_emit_notehash.hpp index 53c2114cdf38..aeb87c834f87 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_emit_notehash.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_emit_notehash.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,28 +18,30 @@ struct lookup_emit_notehash_notehash_tree_write_settings_ { static constexpr std::string_view NAME = "LOOKUP_EMIT_NOTEHASH_NOTEHASH_TREE_WRITE"; static constexpr std::string_view RELATION_NAME = "emit_notehash"; static constexpr size_t LOOKUP_TUPLE_SIZE = 9; - static constexpr Column SRC_SELECTOR = Column::execution_sel_write_note_hash; - static constexpr Column DST_SELECTOR = Column::note_hash_tree_check_write; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_write_note_hash); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::note_hash_tree_check_write); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_register_0_), + ColumnExpression(ColumnAndShifts::execution_prev_note_hash_tree_size), + ColumnExpression(ColumnAndShifts::execution_prev_note_hash_tree_root), + ColumnExpression(ColumnAndShifts::execution_sel_write_note_hash), + ColumnExpression(ColumnAndShifts::execution_contract_address), + ColumnExpression(ColumnAndShifts::execution_sel_write_note_hash), + ColumnExpression(ColumnAndShifts::execution_prev_num_note_hashes_emitted), + ColumnExpression(ColumnAndShifts::execution_discard), + ColumnExpression(ColumnAndShifts::execution_note_hash_tree_root)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::note_hash_tree_check_note_hash), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_leaf_index), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_prev_root), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_should_silo), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_address), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_should_unique), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_note_hash_index), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_discard), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_next_root)); static constexpr Column COUNTS = Column::lookup_emit_notehash_notehash_tree_write_counts; static constexpr Column INVERSES = Column::lookup_emit_notehash_notehash_tree_write_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_register_0_, - ColumnAndShifts::execution_prev_note_hash_tree_size, - ColumnAndShifts::execution_prev_note_hash_tree_root, - ColumnAndShifts::execution_sel_write_note_hash, - ColumnAndShifts::execution_contract_address, - ColumnAndShifts::execution_sel_write_note_hash, - ColumnAndShifts::execution_prev_num_note_hashes_emitted, - ColumnAndShifts::execution_discard, - ColumnAndShifts::execution_note_hash_tree_root - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::note_hash_tree_check_note_hash, ColumnAndShifts::note_hash_tree_check_leaf_index, - ColumnAndShifts::note_hash_tree_check_prev_root, ColumnAndShifts::note_hash_tree_check_should_silo, - ColumnAndShifts::note_hash_tree_check_address, ColumnAndShifts::note_hash_tree_check_should_unique, - ColumnAndShifts::note_hash_tree_check_note_hash_index, ColumnAndShifts::note_hash_tree_check_discard, - ColumnAndShifts::note_hash_tree_check_next_root - }; }; using lookup_emit_notehash_notehash_tree_write_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_emit_nullifier.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_emit_nullifier.hpp index 2fa3fcbddf9d..fabfae89c122 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_emit_nullifier.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_emit_nullifier.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,32 +18,30 @@ struct lookup_emit_nullifier_write_nullifier_settings_ { static constexpr std::string_view NAME = "LOOKUP_EMIT_NULLIFIER_WRITE_NULLIFIER"; static constexpr std::string_view RELATION_NAME = "emit_nullifier"; static constexpr size_t LOOKUP_TUPLE_SIZE = 9; - static constexpr Column SRC_SELECTOR = Column::execution_sel_write_nullifier; - static constexpr Column DST_SELECTOR = Column::nullifier_check_write; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_write_nullifier); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::nullifier_check_write); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_register_0_), + ColumnExpression(ColumnAndShifts::execution_prev_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::execution_sel_opcode_error), + ColumnExpression(ColumnAndShifts::execution_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::execution_prev_nullifier_tree_size), + ColumnExpression(ColumnAndShifts::execution_discard), + ColumnExpression(ColumnAndShifts::execution_prev_num_nullifiers_emitted), + ColumnExpression(ColumnAndShifts::execution_sel_write_nullifier), + ColumnExpression(ColumnAndShifts::execution_contract_address)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::nullifier_check_nullifier), + ColumnExpression(ColumnAndShifts::nullifier_check_root), + ColumnExpression(ColumnAndShifts::nullifier_check_exists), + ColumnExpression(ColumnAndShifts::nullifier_check_write_root), + ColumnExpression(ColumnAndShifts::nullifier_check_tree_size_before_write), + ColumnExpression(ColumnAndShifts::nullifier_check_discard), + ColumnExpression(ColumnAndShifts::nullifier_check_nullifier_index), + ColumnExpression(ColumnAndShifts::nullifier_check_should_silo), + ColumnExpression(ColumnAndShifts::nullifier_check_address)); static constexpr Column COUNTS = Column::lookup_emit_nullifier_write_nullifier_counts; static constexpr Column INVERSES = Column::lookup_emit_nullifier_write_nullifier_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_register_0_, - ColumnAndShifts::execution_prev_nullifier_tree_root, - ColumnAndShifts::execution_sel_opcode_error, - ColumnAndShifts::execution_nullifier_tree_root, - ColumnAndShifts::execution_prev_nullifier_tree_size, - ColumnAndShifts::execution_discard, - ColumnAndShifts::execution_prev_num_nullifiers_emitted, - ColumnAndShifts::execution_sel_write_nullifier, - ColumnAndShifts::execution_contract_address - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::nullifier_check_nullifier, - ColumnAndShifts::nullifier_check_root, - ColumnAndShifts::nullifier_check_exists, - ColumnAndShifts::nullifier_check_write_root, - ColumnAndShifts::nullifier_check_tree_size_before_write, - ColumnAndShifts::nullifier_check_discard, - ColumnAndShifts::nullifier_check_nullifier_index, - ColumnAndShifts::nullifier_check_should_silo, - ColumnAndShifts::nullifier_check_address - }; }; using lookup_emit_nullifier_write_nullifier_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_emit_unencrypted_log.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_emit_unencrypted_log.hpp index 822ddf0dec6c..5aaf50e1e25d 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_emit_unencrypted_log.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_emit_unencrypted_log.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,18 +18,17 @@ struct lookup_emit_unencrypted_log_check_log_size_too_large_settings_ { static constexpr std::string_view NAME = "LOOKUP_EMIT_UNENCRYPTED_LOG_CHECK_LOG_SIZE_TOO_LARGE"; static constexpr std::string_view RELATION_NAME = "emit_unencrypted_log"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::emit_unencrypted_log_start; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::emit_unencrypted_log_start); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::emit_unencrypted_log_log_size), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_max_log_size), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_error_too_large)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_emit_unencrypted_log_check_log_size_too_large_counts; static constexpr Column INVERSES = Column::lookup_emit_unencrypted_log_check_log_size_too_large_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::emit_unencrypted_log_log_size, - ColumnAndShifts::emit_unencrypted_log_max_log_size, - ColumnAndShifts::emit_unencrypted_log_error_too_large - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_emit_unencrypted_log_check_log_size_too_large_settings = @@ -43,18 +43,17 @@ struct lookup_emit_unencrypted_log_check_memory_out_of_bounds_settings_ { static constexpr std::string_view NAME = "LOOKUP_EMIT_UNENCRYPTED_LOG_CHECK_MEMORY_OUT_OF_BOUNDS"; static constexpr std::string_view RELATION_NAME = "emit_unencrypted_log"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::emit_unencrypted_log_start; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::emit_unencrypted_log_start); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::emit_unencrypted_log_end_log_address), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_max_mem_addr), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_error_out_of_bounds)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_emit_unencrypted_log_check_memory_out_of_bounds_counts; static constexpr Column INVERSES = Column::lookup_emit_unencrypted_log_check_memory_out_of_bounds_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::emit_unencrypted_log_end_log_address, - ColumnAndShifts::emit_unencrypted_log_max_mem_addr, - ColumnAndShifts::emit_unencrypted_log_error_out_of_bounds - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_emit_unencrypted_log_check_memory_out_of_bounds_settings = @@ -69,19 +68,24 @@ struct lookup_emit_unencrypted_log_read_mem_settings_ { static constexpr std::string_view NAME = "LOOKUP_EMIT_UNENCRYPTED_LOG_READ_MEM"; static constexpr std::string_view RELATION_NAME = "emit_unencrypted_log"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::emit_unencrypted_log_sel_should_read_memory; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_sel_should_read_memory); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::emit_unencrypted_log_execution_clk), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_log_address), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_value), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_tag), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_space_id), + ColumnExpression(ColumnAndShifts::precomputed_zero)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_space_id), + ColumnExpression(ColumnAndShifts::memory_rw)); static constexpr Column COUNTS = Column::lookup_emit_unencrypted_log_read_mem_counts; static constexpr Column INVERSES = Column::lookup_emit_unencrypted_log_read_mem_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::emit_unencrypted_log_execution_clk, ColumnAndShifts::emit_unencrypted_log_log_address, - ColumnAndShifts::emit_unencrypted_log_value, ColumnAndShifts::emit_unencrypted_log_tag, - ColumnAndShifts::emit_unencrypted_log_space_id, ColumnAndShifts::precomputed_zero - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, - ColumnAndShifts::memory_tag, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_rw - }; }; using lookup_emit_unencrypted_log_read_mem_settings = lookup_settings; @@ -95,22 +99,20 @@ struct lookup_emit_unencrypted_log_write_log_to_public_inputs_settings_ { static constexpr std::string_view NAME = "LOOKUP_EMIT_UNENCRYPTED_LOG_WRITE_LOG_TO_PUBLIC_INPUTS"; static constexpr std::string_view RELATION_NAME = "emit_unencrypted_log"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::emit_unencrypted_log_sel_should_write_to_public_inputs; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_sel_should_write_to_public_inputs); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::emit_unencrypted_log_public_inputs_index), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_contract_address), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_log_size), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_value)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_1_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_2_)); static constexpr Column COUNTS = Column::lookup_emit_unencrypted_log_write_log_to_public_inputs_counts; static constexpr Column INVERSES = Column::lookup_emit_unencrypted_log_write_log_to_public_inputs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::emit_unencrypted_log_public_inputs_index, - ColumnAndShifts::emit_unencrypted_log_contract_address, - ColumnAndShifts::emit_unencrypted_log_log_size, - ColumnAndShifts::emit_unencrypted_log_value - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, - ColumnAndShifts::public_inputs_cols_0_, - ColumnAndShifts::public_inputs_cols_1_, - ColumnAndShifts::public_inputs_cols_2_ - }; }; using lookup_emit_unencrypted_log_write_log_to_public_inputs_settings = @@ -125,34 +127,33 @@ struct lookup_emit_unencrypted_log_dispatch_exec_emit_unencrypted_log_settings_ static constexpr std::string_view NAME = "LOOKUP_EMIT_UNENCRYPTED_LOG_DISPATCH_EXEC_EMIT_UNENCRYPTED_LOG"; static constexpr std::string_view RELATION_NAME = "emit_unencrypted_log"; static constexpr size_t LOOKUP_TUPLE_SIZE = 10; - static constexpr Column SRC_SELECTOR = Column::execution_sel_execute_emit_unencrypted_log; - static constexpr Column DST_SELECTOR = Column::emit_unencrypted_log_start; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::execution_sel_execute_emit_unencrypted_log); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::emit_unencrypted_log_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::execution_context_id), + ColumnExpression(ColumnAndShifts::execution_rop_0_), + ColumnExpression(ColumnAndShifts::execution_register_1_), + ColumnExpression(ColumnAndShifts::execution_contract_address), + ColumnExpression(ColumnAndShifts::execution_prev_num_unencrypted_logs), + ColumnExpression(ColumnAndShifts::execution_num_unencrypted_logs), + ColumnExpression(ColumnAndShifts::execution_is_static), + ColumnExpression(ColumnAndShifts::execution_sel_opcode_error), + ColumnExpression(ColumnAndShifts::execution_discard)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::emit_unencrypted_log_execution_clk), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_space_id), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_log_address), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_log_size), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_contract_address), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_prev_num_unencrypted_logs), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_next_num_unencrypted_logs), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_is_static), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_error), + ColumnExpression(ColumnAndShifts::emit_unencrypted_log_discard)); static constexpr Column COUNTS = Column::lookup_emit_unencrypted_log_dispatch_exec_emit_unencrypted_log_counts; static constexpr Column INVERSES = Column::lookup_emit_unencrypted_log_dispatch_exec_emit_unencrypted_log_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::precomputed_clk, - ColumnAndShifts::execution_context_id, - ColumnAndShifts::execution_rop_0_, - ColumnAndShifts::execution_register_1_, - ColumnAndShifts::execution_contract_address, - ColumnAndShifts::execution_prev_num_unencrypted_logs, - ColumnAndShifts::execution_num_unencrypted_logs, - ColumnAndShifts::execution_is_static, - ColumnAndShifts::execution_sel_opcode_error, - ColumnAndShifts::execution_discard - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::emit_unencrypted_log_execution_clk, - ColumnAndShifts::emit_unencrypted_log_space_id, - ColumnAndShifts::emit_unencrypted_log_log_address, - ColumnAndShifts::emit_unencrypted_log_log_size, - ColumnAndShifts::emit_unencrypted_log_contract_address, - ColumnAndShifts::emit_unencrypted_log_prev_num_unencrypted_logs, - ColumnAndShifts::emit_unencrypted_log_next_num_unencrypted_logs, - ColumnAndShifts::emit_unencrypted_log_is_static, - ColumnAndShifts::emit_unencrypted_log_error, - ColumnAndShifts::emit_unencrypted_log_discard - }; }; using lookup_emit_unencrypted_log_dispatch_exec_emit_unencrypted_log_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_execution.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_execution.hpp index 395e6909857a..fce14bafca6f 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_execution.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_execution.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,24 +18,22 @@ struct lookup_execution_bytecode_retrieval_result_settings_ { static constexpr std::string_view NAME = "LOOKUP_EXECUTION_BYTECODE_RETRIEVAL_RESULT"; static constexpr std::string_view RELATION_NAME = "execution"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::execution_sel_first_row_in_context; - static constexpr Column DST_SELECTOR = Column::bc_retrieval_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_first_row_in_context); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bc_retrieval_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_bytecode_id), + ColumnExpression(ColumnAndShifts::execution_contract_address), + ColumnExpression(ColumnAndShifts::execution_prev_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::execution_prev_public_data_tree_root), + ColumnExpression(ColumnAndShifts::execution_sel_bytecode_retrieval_failure)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::bc_retrieval_bytecode_id), + ColumnExpression(ColumnAndShifts::bc_retrieval_address), + ColumnExpression(ColumnAndShifts::bc_retrieval_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::bc_retrieval_public_data_tree_root), + ColumnExpression(ColumnAndShifts::bc_retrieval_error)); static constexpr Column COUNTS = Column::lookup_execution_bytecode_retrieval_result_counts; static constexpr Column INVERSES = Column::lookup_execution_bytecode_retrieval_result_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_bytecode_id, - ColumnAndShifts::execution_contract_address, - ColumnAndShifts::execution_prev_nullifier_tree_root, - ColumnAndShifts::execution_prev_public_data_tree_root, - ColumnAndShifts::execution_sel_bytecode_retrieval_failure - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::bc_retrieval_bytecode_id, - ColumnAndShifts::bc_retrieval_address, - ColumnAndShifts::bc_retrieval_nullifier_tree_root, - ColumnAndShifts::bc_retrieval_public_data_tree_root, - ColumnAndShifts::bc_retrieval_error - }; }; using lookup_execution_bytecode_retrieval_result_settings = @@ -49,20 +48,19 @@ struct lookup_execution_instruction_fetching_result_settings_ { static constexpr std::string_view NAME = "LOOKUP_EXECUTION_INSTRUCTION_FETCHING_RESULT"; static constexpr std::string_view RELATION_NAME = "execution"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::execution_sel_bytecode_retrieval_success; - static constexpr Column DST_SELECTOR = Column::instr_fetching_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::execution_sel_bytecode_retrieval_success); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::instr_fetching_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_pc), + ColumnExpression(ColumnAndShifts::execution_bytecode_id), + ColumnExpression(ColumnAndShifts::execution_sel_instruction_fetching_failure)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::instr_fetching_pc), + ColumnExpression(ColumnAndShifts::instr_fetching_bytecode_id), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_parsing_err)); static constexpr Column COUNTS = Column::lookup_execution_instruction_fetching_result_counts; static constexpr Column INVERSES = Column::lookup_execution_instruction_fetching_result_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_pc, - ColumnAndShifts::execution_bytecode_id, - ColumnAndShifts::execution_sel_instruction_fetching_failure - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::instr_fetching_pc, - ColumnAndShifts::instr_fetching_bytecode_id, - ColumnAndShifts::instr_fetching_sel_parsing_err - }; }; using lookup_execution_instruction_fetching_result_settings = @@ -77,26 +75,35 @@ struct lookup_execution_instruction_fetching_body_settings_ { static constexpr std::string_view NAME = "LOOKUP_EXECUTION_INSTRUCTION_FETCHING_BODY"; static constexpr std::string_view RELATION_NAME = "execution"; static constexpr size_t LOOKUP_TUPLE_SIZE = 12; - static constexpr Column SRC_SELECTOR = Column::execution_sel_instruction_fetching_success; - static constexpr Column DST_SELECTOR = Column::instr_fetching_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::execution_sel_instruction_fetching_success); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::instr_fetching_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::execution_pc), + ColumnExpression(ColumnAndShifts::execution_bytecode_id), + ColumnExpression(ColumnAndShifts::execution_ex_opcode), + ColumnExpression(ColumnAndShifts::execution_instr_length), + ColumnExpression(ColumnAndShifts::execution_indirect), + ColumnExpression(ColumnAndShifts::execution_op_0_), + ColumnExpression(ColumnAndShifts::execution_op_1_), + ColumnExpression(ColumnAndShifts::execution_op_2_), + ColumnExpression(ColumnAndShifts::execution_op_3_), + ColumnExpression(ColumnAndShifts::execution_op_4_), + ColumnExpression(ColumnAndShifts::execution_op_5_), + ColumnExpression(ColumnAndShifts::execution_op_6_)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::instr_fetching_pc), + ColumnExpression(ColumnAndShifts::instr_fetching_bytecode_id), + ColumnExpression(ColumnAndShifts::instr_fetching_exec_opcode), + ColumnExpression(ColumnAndShifts::instr_fetching_instr_size), + ColumnExpression(ColumnAndShifts::instr_fetching_indirect), + ColumnExpression(ColumnAndShifts::instr_fetching_op1), + ColumnExpression(ColumnAndShifts::instr_fetching_op2), + ColumnExpression(ColumnAndShifts::instr_fetching_op3), + ColumnExpression(ColumnAndShifts::instr_fetching_op4), + ColumnExpression(ColumnAndShifts::instr_fetching_op5), + ColumnExpression(ColumnAndShifts::instr_fetching_op6), + ColumnExpression(ColumnAndShifts::instr_fetching_op7)); static constexpr Column COUNTS = Column::lookup_execution_instruction_fetching_body_counts; static constexpr Column INVERSES = Column::lookup_execution_instruction_fetching_body_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_pc, ColumnAndShifts::execution_bytecode_id, - ColumnAndShifts::execution_ex_opcode, ColumnAndShifts::execution_instr_length, - ColumnAndShifts::execution_indirect, ColumnAndShifts::execution_op_0_, - ColumnAndShifts::execution_op_1_, ColumnAndShifts::execution_op_2_, - ColumnAndShifts::execution_op_3_, ColumnAndShifts::execution_op_4_, - ColumnAndShifts::execution_op_5_, ColumnAndShifts::execution_op_6_ - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::instr_fetching_pc, ColumnAndShifts::instr_fetching_bytecode_id, - ColumnAndShifts::instr_fetching_exec_opcode, ColumnAndShifts::instr_fetching_instr_size, - ColumnAndShifts::instr_fetching_indirect, ColumnAndShifts::instr_fetching_op1, - ColumnAndShifts::instr_fetching_op2, ColumnAndShifts::instr_fetching_op3, - ColumnAndShifts::instr_fetching_op4, ColumnAndShifts::instr_fetching_op5, - ColumnAndShifts::instr_fetching_op6, ColumnAndShifts::instr_fetching_op7 - }; }; using lookup_execution_instruction_fetching_body_settings = @@ -111,100 +118,99 @@ struct lookup_execution_exec_spec_read_settings_ { static constexpr std::string_view NAME = "LOOKUP_EXECUTION_EXEC_SPEC_READ"; static constexpr std::string_view RELATION_NAME = "execution"; static constexpr size_t LOOKUP_TUPLE_SIZE = 43; - static constexpr Column SRC_SELECTOR = Column::execution_sel_instruction_fetching_success; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_exec_spec; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::execution_sel_instruction_fetching_success); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_exec_spec); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_ex_opcode), + ColumnExpression(ColumnAndShifts::execution_opcode_gas), + ColumnExpression(ColumnAndShifts::execution_base_da_gas), + ColumnExpression(ColumnAndShifts::execution_dynamic_l2_gas), + ColumnExpression(ColumnAndShifts::execution_dynamic_da_gas), + ColumnExpression(ColumnAndShifts::execution_sel_op_is_address_0_), + ColumnExpression(ColumnAndShifts::execution_sel_op_is_address_1_), + ColumnExpression(ColumnAndShifts::execution_sel_op_is_address_2_), + ColumnExpression(ColumnAndShifts::execution_sel_op_is_address_3_), + ColumnExpression(ColumnAndShifts::execution_sel_op_is_address_4_), + ColumnExpression(ColumnAndShifts::execution_sel_op_is_address_5_), + ColumnExpression(ColumnAndShifts::execution_sel_op_is_address_6_), + ColumnExpression(ColumnAndShifts::execution_subtrace_id), + ColumnExpression(ColumnAndShifts::execution_subtrace_operation_id), + ColumnExpression(ColumnAndShifts::execution_dyn_gas_id), + ColumnExpression(ColumnAndShifts::execution_sel_mem_op_reg_0_), + ColumnExpression(ColumnAndShifts::execution_sel_mem_op_reg_1_), + ColumnExpression(ColumnAndShifts::execution_sel_mem_op_reg_2_), + ColumnExpression(ColumnAndShifts::execution_sel_mem_op_reg_3_), + ColumnExpression(ColumnAndShifts::execution_sel_mem_op_reg_4_), + ColumnExpression(ColumnAndShifts::execution_sel_mem_op_reg_5_), + ColumnExpression(ColumnAndShifts::execution_sel_mem_op_reg_6_), + ColumnExpression(ColumnAndShifts::execution_rw_reg_0_), + ColumnExpression(ColumnAndShifts::execution_rw_reg_1_), + ColumnExpression(ColumnAndShifts::execution_rw_reg_2_), + ColumnExpression(ColumnAndShifts::execution_rw_reg_3_), + ColumnExpression(ColumnAndShifts::execution_rw_reg_4_), + ColumnExpression(ColumnAndShifts::execution_rw_reg_5_), + ColumnExpression(ColumnAndShifts::execution_rw_reg_6_), + ColumnExpression(ColumnAndShifts::execution_sel_tag_check_reg_0_), + ColumnExpression(ColumnAndShifts::execution_sel_tag_check_reg_1_), + ColumnExpression(ColumnAndShifts::execution_sel_tag_check_reg_2_), + ColumnExpression(ColumnAndShifts::execution_sel_tag_check_reg_3_), + ColumnExpression(ColumnAndShifts::execution_sel_tag_check_reg_4_), + ColumnExpression(ColumnAndShifts::execution_sel_tag_check_reg_5_), + ColumnExpression(ColumnAndShifts::execution_sel_tag_check_reg_6_), + ColumnExpression(ColumnAndShifts::execution_expected_tag_reg_0_), + ColumnExpression(ColumnAndShifts::execution_expected_tag_reg_1_), + ColumnExpression(ColumnAndShifts::execution_expected_tag_reg_2_), + ColumnExpression(ColumnAndShifts::execution_expected_tag_reg_3_), + ColumnExpression(ColumnAndShifts::execution_expected_tag_reg_4_), + ColumnExpression(ColumnAndShifts::execution_expected_tag_reg_5_), + ColumnExpression(ColumnAndShifts::execution_expected_tag_reg_6_)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::precomputed_exec_opcode_opcode_gas), + ColumnExpression(ColumnAndShifts::precomputed_exec_opcode_base_da_gas), + ColumnExpression(ColumnAndShifts::precomputed_exec_opcode_dynamic_l2_gas), + ColumnExpression(ColumnAndShifts::precomputed_exec_opcode_dynamic_da_gas), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_is_address_0_), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_is_address_1_), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_is_address_2_), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_is_address_3_), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_is_address_4_), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_is_address_5_), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_is_address_6_), + ColumnExpression(ColumnAndShifts::precomputed_subtrace_id), + ColumnExpression(ColumnAndShifts::precomputed_subtrace_operation_id), + ColumnExpression(ColumnAndShifts::precomputed_dyn_gas_id), + ColumnExpression(ColumnAndShifts::precomputed_sel_mem_op_reg_0_), + ColumnExpression(ColumnAndShifts::precomputed_sel_mem_op_reg_1_), + ColumnExpression(ColumnAndShifts::precomputed_sel_mem_op_reg_2_), + ColumnExpression(ColumnAndShifts::precomputed_sel_mem_op_reg_3_), + ColumnExpression(ColumnAndShifts::precomputed_sel_mem_op_reg_4_), + ColumnExpression(ColumnAndShifts::precomputed_sel_mem_op_reg_5_), + ColumnExpression(ColumnAndShifts::precomputed_sel_mem_op_reg_6_), + ColumnExpression(ColumnAndShifts::precomputed_rw_reg_0_), + ColumnExpression(ColumnAndShifts::precomputed_rw_reg_1_), + ColumnExpression(ColumnAndShifts::precomputed_rw_reg_2_), + ColumnExpression(ColumnAndShifts::precomputed_rw_reg_3_), + ColumnExpression(ColumnAndShifts::precomputed_rw_reg_4_), + ColumnExpression(ColumnAndShifts::precomputed_rw_reg_5_), + ColumnExpression(ColumnAndShifts::precomputed_rw_reg_6_), + ColumnExpression(ColumnAndShifts::precomputed_sel_tag_check_reg_0_), + ColumnExpression(ColumnAndShifts::precomputed_sel_tag_check_reg_1_), + ColumnExpression(ColumnAndShifts::precomputed_sel_tag_check_reg_2_), + ColumnExpression(ColumnAndShifts::precomputed_sel_tag_check_reg_3_), + ColumnExpression(ColumnAndShifts::precomputed_sel_tag_check_reg_4_), + ColumnExpression(ColumnAndShifts::precomputed_sel_tag_check_reg_5_), + ColumnExpression(ColumnAndShifts::precomputed_sel_tag_check_reg_6_), + ColumnExpression(ColumnAndShifts::precomputed_expected_tag_reg_0_), + ColumnExpression(ColumnAndShifts::precomputed_expected_tag_reg_1_), + ColumnExpression(ColumnAndShifts::precomputed_expected_tag_reg_2_), + ColumnExpression(ColumnAndShifts::precomputed_expected_tag_reg_3_), + ColumnExpression(ColumnAndShifts::precomputed_expected_tag_reg_4_), + ColumnExpression(ColumnAndShifts::precomputed_expected_tag_reg_5_), + ColumnExpression(ColumnAndShifts::precomputed_expected_tag_reg_6_)); static constexpr Column COUNTS = Column::lookup_execution_exec_spec_read_counts; static constexpr Column INVERSES = Column::lookup_execution_exec_spec_read_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_ex_opcode, - ColumnAndShifts::execution_opcode_gas, - ColumnAndShifts::execution_base_da_gas, - ColumnAndShifts::execution_dynamic_l2_gas, - ColumnAndShifts::execution_dynamic_da_gas, - ColumnAndShifts::execution_sel_op_is_address_0_, - ColumnAndShifts::execution_sel_op_is_address_1_, - ColumnAndShifts::execution_sel_op_is_address_2_, - ColumnAndShifts::execution_sel_op_is_address_3_, - ColumnAndShifts::execution_sel_op_is_address_4_, - ColumnAndShifts::execution_sel_op_is_address_5_, - ColumnAndShifts::execution_sel_op_is_address_6_, - ColumnAndShifts::execution_subtrace_id, - ColumnAndShifts::execution_subtrace_operation_id, - ColumnAndShifts::execution_dyn_gas_id, - ColumnAndShifts::execution_sel_mem_op_reg_0_, - ColumnAndShifts::execution_sel_mem_op_reg_1_, - ColumnAndShifts::execution_sel_mem_op_reg_2_, - ColumnAndShifts::execution_sel_mem_op_reg_3_, - ColumnAndShifts::execution_sel_mem_op_reg_4_, - ColumnAndShifts::execution_sel_mem_op_reg_5_, - ColumnAndShifts::execution_sel_mem_op_reg_6_, - ColumnAndShifts::execution_rw_reg_0_, - ColumnAndShifts::execution_rw_reg_1_, - ColumnAndShifts::execution_rw_reg_2_, - ColumnAndShifts::execution_rw_reg_3_, - ColumnAndShifts::execution_rw_reg_4_, - ColumnAndShifts::execution_rw_reg_5_, - ColumnAndShifts::execution_rw_reg_6_, - ColumnAndShifts::execution_sel_tag_check_reg_0_, - ColumnAndShifts::execution_sel_tag_check_reg_1_, - ColumnAndShifts::execution_sel_tag_check_reg_2_, - ColumnAndShifts::execution_sel_tag_check_reg_3_, - ColumnAndShifts::execution_sel_tag_check_reg_4_, - ColumnAndShifts::execution_sel_tag_check_reg_5_, - ColumnAndShifts::execution_sel_tag_check_reg_6_, - ColumnAndShifts::execution_expected_tag_reg_0_, - ColumnAndShifts::execution_expected_tag_reg_1_, - ColumnAndShifts::execution_expected_tag_reg_2_, - ColumnAndShifts::execution_expected_tag_reg_3_, - ColumnAndShifts::execution_expected_tag_reg_4_, - ColumnAndShifts::execution_expected_tag_reg_5_, - ColumnAndShifts::execution_expected_tag_reg_6_ - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, - ColumnAndShifts::precomputed_exec_opcode_opcode_gas, - ColumnAndShifts::precomputed_exec_opcode_base_da_gas, - ColumnAndShifts::precomputed_exec_opcode_dynamic_l2_gas, - ColumnAndShifts::precomputed_exec_opcode_dynamic_da_gas, - ColumnAndShifts::precomputed_sel_op_is_address_0_, - ColumnAndShifts::precomputed_sel_op_is_address_1_, - ColumnAndShifts::precomputed_sel_op_is_address_2_, - ColumnAndShifts::precomputed_sel_op_is_address_3_, - ColumnAndShifts::precomputed_sel_op_is_address_4_, - ColumnAndShifts::precomputed_sel_op_is_address_5_, - ColumnAndShifts::precomputed_sel_op_is_address_6_, - ColumnAndShifts::precomputed_subtrace_id, - ColumnAndShifts::precomputed_subtrace_operation_id, - ColumnAndShifts::precomputed_dyn_gas_id, - ColumnAndShifts::precomputed_sel_mem_op_reg_0_, - ColumnAndShifts::precomputed_sel_mem_op_reg_1_, - ColumnAndShifts::precomputed_sel_mem_op_reg_2_, - ColumnAndShifts::precomputed_sel_mem_op_reg_3_, - ColumnAndShifts::precomputed_sel_mem_op_reg_4_, - ColumnAndShifts::precomputed_sel_mem_op_reg_5_, - ColumnAndShifts::precomputed_sel_mem_op_reg_6_, - ColumnAndShifts::precomputed_rw_reg_0_, - ColumnAndShifts::precomputed_rw_reg_1_, - ColumnAndShifts::precomputed_rw_reg_2_, - ColumnAndShifts::precomputed_rw_reg_3_, - ColumnAndShifts::precomputed_rw_reg_4_, - ColumnAndShifts::precomputed_rw_reg_5_, - ColumnAndShifts::precomputed_rw_reg_6_, - ColumnAndShifts::precomputed_sel_tag_check_reg_0_, - ColumnAndShifts::precomputed_sel_tag_check_reg_1_, - ColumnAndShifts::precomputed_sel_tag_check_reg_2_, - ColumnAndShifts::precomputed_sel_tag_check_reg_3_, - ColumnAndShifts::precomputed_sel_tag_check_reg_4_, - ColumnAndShifts::precomputed_sel_tag_check_reg_5_, - ColumnAndShifts::precomputed_sel_tag_check_reg_6_, - ColumnAndShifts::precomputed_expected_tag_reg_0_, - ColumnAndShifts::precomputed_expected_tag_reg_1_, - ColumnAndShifts::precomputed_expected_tag_reg_2_, - ColumnAndShifts::precomputed_expected_tag_reg_3_, - ColumnAndShifts::precomputed_expected_tag_reg_4_, - ColumnAndShifts::precomputed_expected_tag_reg_5_, - ColumnAndShifts::precomputed_expected_tag_reg_6_ - }; }; using lookup_execution_exec_spec_read_settings = lookup_settings; @@ -217,16 +223,15 @@ struct lookup_execution_dyn_l2_factor_bitwise_settings_ { static constexpr std::string_view NAME = "LOOKUP_EXECUTION_DYN_L2_FACTOR_BITWISE"; static constexpr std::string_view RELATION_NAME = "execution"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::execution_sel_gas_bitwise; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_tag_parameters; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_gas_bitwise); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_tag_parameters); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_mem_tag_reg_0_), + ColumnExpression(ColumnAndShifts::execution_dynamic_l2_gas_factor)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::precomputed_tag_byte_length)); static constexpr Column COUNTS = Column::lookup_execution_dyn_l2_factor_bitwise_counts; static constexpr Column INVERSES = Column::lookup_execution_dyn_l2_factor_bitwise_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_mem_tag_reg_0_, ColumnAndShifts::execution_dynamic_l2_gas_factor - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::precomputed_tag_byte_length - }; }; using lookup_execution_dyn_l2_factor_bitwise_settings = @@ -241,18 +246,16 @@ struct lookup_execution_check_radix_gt_256_settings_ { static constexpr std::string_view NAME = "LOOKUP_EXECUTION_CHECK_RADIX_GT_256"; static constexpr std::string_view RELATION_NAME = "execution"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::execution_sel_gas_to_radix; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_gas_to_radix); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::execution_register_1_), + ColumnExpression(ColumnAndShifts::execution_two_five_six), + ColumnExpression(ColumnAndShifts::execution_sel_radix_gt_256)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_execution_check_radix_gt_256_counts; static constexpr Column INVERSES = Column::lookup_execution_check_radix_gt_256_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_register_1_, - ColumnAndShifts::execution_two_five_six, - ColumnAndShifts::execution_sel_radix_gt_256 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_execution_check_radix_gt_256_settings = lookup_settings; @@ -266,16 +269,15 @@ struct lookup_execution_get_p_limbs_settings_ { static constexpr std::string_view NAME = "LOOKUP_EXECUTION_GET_P_LIMBS"; static constexpr std::string_view RELATION_NAME = "execution"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::execution_sel_lookup_num_p_limbs; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_to_radix_p_limb_counts; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_lookup_num_p_limbs); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_to_radix_p_limb_counts); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::execution_register_1_), + ColumnExpression(ColumnAndShifts::execution_num_p_limbs)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::precomputed_to_radix_num_limbs_for_p)); static constexpr Column COUNTS = Column::lookup_execution_get_p_limbs_counts; static constexpr Column INVERSES = Column::lookup_execution_get_p_limbs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_register_1_, ColumnAndShifts::execution_num_p_limbs - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::precomputed_to_radix_num_limbs_for_p - }; }; using lookup_execution_get_p_limbs_settings = lookup_settings; @@ -288,18 +290,16 @@ struct lookup_execution_get_max_limbs_settings_ { static constexpr std::string_view NAME = "LOOKUP_EXECUTION_GET_MAX_LIMBS"; static constexpr std::string_view RELATION_NAME = "execution"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::execution_sel_gas_to_radix; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_gas_to_radix); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::execution_register_2_), + ColumnExpression(ColumnAndShifts::execution_num_p_limbs), + ColumnExpression(ColumnAndShifts::execution_sel_use_num_limbs)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_execution_get_max_limbs_counts; static constexpr Column INVERSES = Column::lookup_execution_get_max_limbs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_register_2_, - ColumnAndShifts::execution_num_p_limbs, - ColumnAndShifts::execution_sel_use_num_limbs - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_execution_get_max_limbs_settings = lookup_settings; @@ -312,22 +312,21 @@ struct lookup_execution_check_written_storage_slot_settings_ { static constexpr std::string_view NAME = "LOOKUP_EXECUTION_CHECK_WRITTEN_STORAGE_SLOT"; static constexpr std::string_view RELATION_NAME = "execution"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::execution_sel_gas_sstore; - static constexpr Column DST_SELECTOR = Column::written_public_data_slots_tree_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_gas_sstore); + static constexpr auto DST_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_contract_address), + ColumnExpression(ColumnAndShifts::execution_register_1_), + ColumnExpression(ColumnAndShifts::execution_dynamic_da_gas_factor), + ColumnExpression(ColumnAndShifts::execution_prev_written_public_data_slots_tree_root)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_address), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_slot), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_leaf_not_exists), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_root)); static constexpr Column COUNTS = Column::lookup_execution_check_written_storage_slot_counts; static constexpr Column INVERSES = Column::lookup_execution_check_written_storage_slot_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_contract_address, - ColumnAndShifts::execution_register_1_, - ColumnAndShifts::execution_dynamic_da_gas_factor, - ColumnAndShifts::execution_prev_written_public_data_slots_tree_root - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::written_public_data_slots_tree_check_address, - ColumnAndShifts::written_public_data_slots_tree_check_slot, - ColumnAndShifts::written_public_data_slots_tree_check_leaf_not_exists, - ColumnAndShifts::written_public_data_slots_tree_check_root - }; }; using lookup_execution_check_written_storage_slot_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_external_call.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_external_call.hpp index 5e70144ea65b..e967fc5815e1 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_external_call.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_external_call.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,16 +18,15 @@ struct lookup_external_call_call_allocated_left_l2_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_EXTERNAL_CALL_CALL_ALLOCATED_LEFT_L2_RANGE"; static constexpr std::string_view RELATION_NAME = "external_call"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::execution_sel_enter_call; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_enter_call); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_call_allocated_left_l2_cmp_diff), + ColumnExpression(ColumnAndShifts::execution_constant_32)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_external_call_call_allocated_left_l2_range_counts; static constexpr Column INVERSES = Column::lookup_external_call_call_allocated_left_l2_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_call_allocated_left_l2_cmp_diff, ColumnAndShifts::execution_constant_32 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_external_call_call_allocated_left_l2_range_settings = @@ -41,16 +41,15 @@ struct lookup_external_call_call_allocated_left_da_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_EXTERNAL_CALL_CALL_ALLOCATED_LEFT_DA_RANGE"; static constexpr std::string_view RELATION_NAME = "external_call"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::execution_sel_enter_call; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_enter_call); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_call_allocated_left_da_cmp_diff), + ColumnExpression(ColumnAndShifts::execution_constant_32)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_external_call_call_allocated_left_da_range_counts; static constexpr Column INVERSES = Column::lookup_external_call_call_allocated_left_da_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_call_allocated_left_da_cmp_diff, ColumnAndShifts::execution_constant_32 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_external_call_call_allocated_left_da_range_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_ff_gt.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_ff_gt.hpp index 47bc4500beae..980476ad9036 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_ff_gt.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_ff_gt.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,16 +18,14 @@ struct lookup_ff_gt_a_lo_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_FF_GT_A_LO_RANGE"; static constexpr std::string_view RELATION_NAME = "ff_gt"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::ff_gt_sel; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ff_gt_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ff_gt_a_lo), + ColumnExpression(ColumnAndShifts::ff_gt_constant_128)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_ff_gt_a_lo_range_counts; static constexpr Column INVERSES = Column::lookup_ff_gt_a_lo_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::ff_gt_a_lo, ColumnAndShifts::ff_gt_constant_128 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_ff_gt_a_lo_range_settings = lookup_settings; @@ -39,16 +38,14 @@ struct lookup_ff_gt_a_hi_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_FF_GT_A_HI_RANGE"; static constexpr std::string_view RELATION_NAME = "ff_gt"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::ff_gt_sel; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ff_gt_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ff_gt_a_hi), + ColumnExpression(ColumnAndShifts::ff_gt_constant_128)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_ff_gt_a_hi_range_counts; static constexpr Column INVERSES = Column::lookup_ff_gt_a_hi_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::ff_gt_a_hi, ColumnAndShifts::ff_gt_constant_128 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_ff_gt_a_hi_range_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_gas.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_gas.hpp index b2eef2790aa5..8681b3c0fb97 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_gas.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_gas.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,16 +18,14 @@ struct lookup_gas_addressing_gas_read_settings_ { static constexpr std::string_view NAME = "LOOKUP_GAS_ADDRESSING_GAS_READ"; static constexpr std::string_view RELATION_NAME = "gas"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::execution_sel_should_check_gas; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_addressing_gas; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_should_check_gas); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_addressing_gas); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::execution_indirect), + ColumnExpression(ColumnAndShifts::execution_addressing_gas)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::precomputed_addressing_gas)); static constexpr Column COUNTS = Column::lookup_gas_addressing_gas_read_counts; static constexpr Column INVERSES = Column::lookup_gas_addressing_gas_read_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_indirect, ColumnAndShifts::execution_addressing_gas - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::precomputed_addressing_gas - }; }; using lookup_gas_addressing_gas_read_settings = lookup_settings; @@ -39,16 +38,15 @@ struct lookup_gas_limit_used_l2_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_GAS_LIMIT_USED_L2_RANGE"; static constexpr std::string_view RELATION_NAME = "gas"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::execution_sel_should_check_gas; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_should_check_gas); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_limit_used_l2_cmp_diff), + ColumnExpression(ColumnAndShifts::execution_constant_64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_gas_limit_used_l2_range_counts; static constexpr Column INVERSES = Column::lookup_gas_limit_used_l2_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_limit_used_l2_cmp_diff, ColumnAndShifts::execution_constant_64 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_gas_limit_used_l2_range_settings = lookup_settings; @@ -61,16 +59,15 @@ struct lookup_gas_limit_used_da_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_GAS_LIMIT_USED_DA_RANGE"; static constexpr std::string_view RELATION_NAME = "gas"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::execution_sel_should_check_gas; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_should_check_gas); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_limit_used_da_cmp_diff), + ColumnExpression(ColumnAndShifts::execution_constant_64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_gas_limit_used_da_range_counts; static constexpr Column INVERSES = Column::lookup_gas_limit_used_da_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_limit_used_da_cmp_diff, ColumnAndShifts::execution_constant_64 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_gas_limit_used_da_range_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_get_contract_instance.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_get_contract_instance.hpp index 70df4f191c5d..a082aed3f9b5 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_get_contract_instance.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_get_contract_instance.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,24 +18,23 @@ struct lookup_get_contract_instance_precomputed_info_settings_ { static constexpr std::string_view NAME = "LOOKUP_GET_CONTRACT_INSTANCE_PRECOMPUTED_INFO"; static constexpr std::string_view RELATION_NAME = "get_contract_instance"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::get_contract_instance_is_valid_writes_in_bounds; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_8; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::get_contract_instance_is_valid_writes_in_bounds); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_8); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::get_contract_instance_member_enum), + ColumnExpression(ColumnAndShifts::get_contract_instance_is_valid_member_enum), + ColumnExpression(ColumnAndShifts::get_contract_instance_is_deployer), + ColumnExpression(ColumnAndShifts::get_contract_instance_is_class_id), + ColumnExpression(ColumnAndShifts::get_contract_instance_is_init_hash)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::precomputed_is_valid_member_enum), + ColumnExpression(ColumnAndShifts::precomputed_is_deployer), + ColumnExpression(ColumnAndShifts::precomputed_is_class_id), + ColumnExpression(ColumnAndShifts::precomputed_is_init_hash)); static constexpr Column COUNTS = Column::lookup_get_contract_instance_precomputed_info_counts; static constexpr Column INVERSES = Column::lookup_get_contract_instance_precomputed_info_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::get_contract_instance_member_enum, - ColumnAndShifts::get_contract_instance_is_valid_member_enum, - ColumnAndShifts::get_contract_instance_is_deployer, - ColumnAndShifts::get_contract_instance_is_class_id, - ColumnAndShifts::get_contract_instance_is_init_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, - ColumnAndShifts::precomputed_is_valid_member_enum, - ColumnAndShifts::precomputed_is_deployer, - ColumnAndShifts::precomputed_is_class_id, - ColumnAndShifts::precomputed_is_init_hash - }; }; using lookup_get_contract_instance_precomputed_info_settings = @@ -49,28 +49,27 @@ struct lookup_get_contract_instance_contract_instance_retrieval_settings_ { static constexpr std::string_view NAME = "LOOKUP_GET_CONTRACT_INSTANCE_CONTRACT_INSTANCE_RETRIEVAL"; static constexpr std::string_view RELATION_NAME = "get_contract_instance"; static constexpr size_t LOOKUP_TUPLE_SIZE = 7; - static constexpr Column SRC_SELECTOR = Column::get_contract_instance_is_valid_member_enum; - static constexpr Column DST_SELECTOR = Column::contract_instance_retrieval_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::get_contract_instance_is_valid_member_enum); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::contract_instance_retrieval_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::get_contract_instance_contract_address), + ColumnExpression(ColumnAndShifts::get_contract_instance_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::get_contract_instance_public_data_tree_root), + ColumnExpression(ColumnAndShifts::get_contract_instance_instance_exists), + ColumnExpression(ColumnAndShifts::get_contract_instance_retrieved_deployer_addr), + ColumnExpression(ColumnAndShifts::get_contract_instance_retrieved_class_id), + ColumnExpression(ColumnAndShifts::get_contract_instance_retrieved_init_hash)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::contract_instance_retrieval_address), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_public_data_tree_root), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_exists), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_deployer_addr), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_current_class_id), + ColumnExpression(ColumnAndShifts::contract_instance_retrieval_init_hash)); static constexpr Column COUNTS = Column::lookup_get_contract_instance_contract_instance_retrieval_counts; static constexpr Column INVERSES = Column::lookup_get_contract_instance_contract_instance_retrieval_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::get_contract_instance_contract_address, - ColumnAndShifts::get_contract_instance_nullifier_tree_root, - ColumnAndShifts::get_contract_instance_public_data_tree_root, - ColumnAndShifts::get_contract_instance_instance_exists, - ColumnAndShifts::get_contract_instance_retrieved_deployer_addr, - ColumnAndShifts::get_contract_instance_retrieved_class_id, - ColumnAndShifts::get_contract_instance_retrieved_init_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::contract_instance_retrieval_address, - ColumnAndShifts::contract_instance_retrieval_nullifier_tree_root, - ColumnAndShifts::contract_instance_retrieval_public_data_tree_root, - ColumnAndShifts::contract_instance_retrieval_exists, - ColumnAndShifts::contract_instance_retrieval_deployer_addr, - ColumnAndShifts::contract_instance_retrieval_current_class_id, - ColumnAndShifts::contract_instance_retrieval_init_hash - }; }; using lookup_get_contract_instance_contract_instance_retrieval_settings = @@ -85,22 +84,24 @@ struct lookup_get_contract_instance_mem_write_contract_instance_exists_settings_ static constexpr std::string_view NAME = "LOOKUP_GET_CONTRACT_INSTANCE_MEM_WRITE_CONTRACT_INSTANCE_EXISTS"; static constexpr std::string_view RELATION_NAME = "get_contract_instance"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::get_contract_instance_is_valid_member_enum; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::get_contract_instance_is_valid_member_enum); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::get_contract_instance_clk), + ColumnExpression(ColumnAndShifts::get_contract_instance_dst_offset), + ColumnExpression(ColumnAndShifts::get_contract_instance_instance_exists), + ColumnExpression(ColumnAndShifts::get_contract_instance_exists_tag), + ColumnExpression(ColumnAndShifts::get_contract_instance_is_valid_member_enum), + ColumnExpression(ColumnAndShifts::get_contract_instance_space_id)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_rw), + ColumnExpression(ColumnAndShifts::memory_space_id)); static constexpr Column COUNTS = Column::lookup_get_contract_instance_mem_write_contract_instance_exists_counts; static constexpr Column INVERSES = Column::lookup_get_contract_instance_mem_write_contract_instance_exists_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::get_contract_instance_clk, - ColumnAndShifts::get_contract_instance_dst_offset, - ColumnAndShifts::get_contract_instance_instance_exists, - ColumnAndShifts::get_contract_instance_exists_tag, - ColumnAndShifts::get_contract_instance_is_valid_member_enum, - ColumnAndShifts::get_contract_instance_space_id - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, - ColumnAndShifts::memory_tag, ColumnAndShifts::memory_rw, ColumnAndShifts::memory_space_id - }; }; using lookup_get_contract_instance_mem_write_contract_instance_exists_settings = @@ -115,22 +116,24 @@ struct lookup_get_contract_instance_mem_write_contract_instance_member_settings_ static constexpr std::string_view NAME = "LOOKUP_GET_CONTRACT_INSTANCE_MEM_WRITE_CONTRACT_INSTANCE_MEMBER"; static constexpr std::string_view RELATION_NAME = "get_contract_instance"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::get_contract_instance_is_valid_member_enum; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::get_contract_instance_is_valid_member_enum); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::get_contract_instance_clk), + ColumnExpression(ColumnAndShifts::get_contract_instance_member_write_offset), + ColumnExpression(ColumnAndShifts::get_contract_instance_selected_member), + ColumnExpression(ColumnAndShifts::get_contract_instance_member_tag), + ColumnExpression(ColumnAndShifts::get_contract_instance_is_valid_member_enum), + ColumnExpression(ColumnAndShifts::get_contract_instance_space_id)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_rw), + ColumnExpression(ColumnAndShifts::memory_space_id)); static constexpr Column COUNTS = Column::lookup_get_contract_instance_mem_write_contract_instance_member_counts; static constexpr Column INVERSES = Column::lookup_get_contract_instance_mem_write_contract_instance_member_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::get_contract_instance_clk, - ColumnAndShifts::get_contract_instance_member_write_offset, - ColumnAndShifts::get_contract_instance_selected_member, - ColumnAndShifts::get_contract_instance_member_tag, - ColumnAndShifts::get_contract_instance_is_valid_member_enum, - ColumnAndShifts::get_contract_instance_space_id - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, - ColumnAndShifts::memory_tag, ColumnAndShifts::memory_rw, ColumnAndShifts::memory_space_id - }; }; using lookup_get_contract_instance_mem_write_contract_instance_member_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_get_env_var.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_get_env_var.hpp index 26a4531479a2..d150dcbf03cf 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_get_env_var.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_get_env_var.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,38 +18,36 @@ struct lookup_get_env_var_precomputed_info_settings_ { static constexpr std::string_view NAME = "LOOKUP_GET_ENV_VAR_PRECOMPUTED_INFO"; static constexpr std::string_view RELATION_NAME = "get_env_var"; static constexpr size_t LOOKUP_TUPLE_SIZE = 12; - static constexpr Column SRC_SELECTOR = Column::execution_sel_execute_get_env_var; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_8; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_execute_get_env_var); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_8); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_rop_1_), + ColumnExpression(ColumnAndShifts::execution_sel_opcode_error), + ColumnExpression(ColumnAndShifts::execution_sel_envvar_pi_lookup_col0), + ColumnExpression(ColumnAndShifts::execution_sel_envvar_pi_lookup_col1), + ColumnExpression(ColumnAndShifts::execution_envvar_pi_row_idx), + ColumnExpression(ColumnAndShifts::execution_is_address), + ColumnExpression(ColumnAndShifts::execution_is_sender), + ColumnExpression(ColumnAndShifts::execution_is_transactionfee), + ColumnExpression(ColumnAndShifts::execution_is_isstaticcall), + ColumnExpression(ColumnAndShifts::execution_is_l2gasleft), + ColumnExpression(ColumnAndShifts::execution_is_dagasleft), + ColumnExpression(ColumnAndShifts::execution_mem_tag_reg_0_)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::precomputed_invalid_envvar_enum), + ColumnExpression(ColumnAndShifts::precomputed_sel_envvar_pi_lookup_col0), + ColumnExpression(ColumnAndShifts::precomputed_sel_envvar_pi_lookup_col1), + ColumnExpression(ColumnAndShifts::precomputed_envvar_pi_row_idx), + ColumnExpression(ColumnAndShifts::precomputed_is_address), + ColumnExpression(ColumnAndShifts::precomputed_is_sender), + ColumnExpression(ColumnAndShifts::precomputed_is_transactionfee), + ColumnExpression(ColumnAndShifts::precomputed_is_isstaticcall), + ColumnExpression(ColumnAndShifts::precomputed_is_l2gasleft), + ColumnExpression(ColumnAndShifts::precomputed_is_dagasleft), + ColumnExpression(ColumnAndShifts::precomputed_out_tag)); static constexpr Column COUNTS = Column::lookup_get_env_var_precomputed_info_counts; static constexpr Column INVERSES = Column::lookup_get_env_var_precomputed_info_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_rop_1_, - ColumnAndShifts::execution_sel_opcode_error, - ColumnAndShifts::execution_sel_envvar_pi_lookup_col0, - ColumnAndShifts::execution_sel_envvar_pi_lookup_col1, - ColumnAndShifts::execution_envvar_pi_row_idx, - ColumnAndShifts::execution_is_address, - ColumnAndShifts::execution_is_sender, - ColumnAndShifts::execution_is_transactionfee, - ColumnAndShifts::execution_is_isstaticcall, - ColumnAndShifts::execution_is_l2gasleft, - ColumnAndShifts::execution_is_dagasleft, - ColumnAndShifts::execution_mem_tag_reg_0_ - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, - ColumnAndShifts::precomputed_invalid_envvar_enum, - ColumnAndShifts::precomputed_sel_envvar_pi_lookup_col0, - ColumnAndShifts::precomputed_sel_envvar_pi_lookup_col1, - ColumnAndShifts::precomputed_envvar_pi_row_idx, - ColumnAndShifts::precomputed_is_address, - ColumnAndShifts::precomputed_is_sender, - ColumnAndShifts::precomputed_is_transactionfee, - ColumnAndShifts::precomputed_is_isstaticcall, - ColumnAndShifts::precomputed_is_l2gasleft, - ColumnAndShifts::precomputed_is_dagasleft, - ColumnAndShifts::precomputed_out_tag - }; }; using lookup_get_env_var_precomputed_info_settings = lookup_settings; @@ -62,16 +61,14 @@ struct lookup_get_env_var_read_from_public_inputs_col0_settings_ { static constexpr std::string_view NAME = "LOOKUP_GET_ENV_VAR_READ_FROM_PUBLIC_INPUTS_COL0"; static constexpr std::string_view RELATION_NAME = "get_env_var"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::execution_sel_envvar_pi_lookup_col0; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_envvar_pi_lookup_col0); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::execution_envvar_pi_row_idx), + ColumnExpression(ColumnAndShifts::execution_value_from_pi)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_)); static constexpr Column COUNTS = Column::lookup_get_env_var_read_from_public_inputs_col0_counts; static constexpr Column INVERSES = Column::lookup_get_env_var_read_from_public_inputs_col0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_envvar_pi_row_idx, ColumnAndShifts::execution_value_from_pi - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_ - }; }; using lookup_get_env_var_read_from_public_inputs_col0_settings = @@ -86,16 +83,14 @@ struct lookup_get_env_var_read_from_public_inputs_col1_settings_ { static constexpr std::string_view NAME = "LOOKUP_GET_ENV_VAR_READ_FROM_PUBLIC_INPUTS_COL1"; static constexpr std::string_view RELATION_NAME = "get_env_var"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::execution_sel_envvar_pi_lookup_col1; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_envvar_pi_lookup_col1); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::execution_envvar_pi_row_idx), + ColumnExpression(ColumnAndShifts::execution_value_from_pi)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_1_)); static constexpr Column COUNTS = Column::lookup_get_env_var_read_from_public_inputs_col1_counts; static constexpr Column INVERSES = Column::lookup_get_env_var_read_from_public_inputs_col1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_envvar_pi_row_idx, ColumnAndShifts::execution_value_from_pi - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_1_ - }; }; using lookup_get_env_var_read_from_public_inputs_col1_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_gt.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_gt.hpp index 8e1f3277dace..2ea7be876e75 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_gt.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_gt.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,15 +18,14 @@ struct lookup_gt_gt_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_GT_GT_RANGE"; static constexpr std::string_view RELATION_NAME = "gt"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::gt_sel; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::gt_abs_diff), ColumnExpression(ColumnAndShifts::gt_num_bits)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_gt_gt_range_counts; static constexpr Column INVERSES = Column::lookup_gt_gt_range_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::gt_abs_diff, - ColumnAndShifts::gt_num_bits }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_gt_gt_range_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_instr_fetching.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_instr_fetching.hpp index 376e367d574e..f134da58c9cc 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_instr_fetching.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_instr_fetching.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,16 +18,15 @@ struct lookup_instr_fetching_pc_abs_diff_positive_settings_ { static constexpr std::string_view NAME = "LOOKUP_INSTR_FETCHING_PC_ABS_DIFF_POSITIVE"; static constexpr std::string_view RELATION_NAME = "instr_fetching"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::instr_fetching_sel; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::instr_fetching_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::instr_fetching_pc_abs_diff), + ColumnExpression(ColumnAndShifts::instr_fetching_pc_size_in_bits)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_instr_fetching_pc_abs_diff_positive_counts; static constexpr Column INVERSES = Column::lookup_instr_fetching_pc_abs_diff_positive_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::instr_fetching_pc_abs_diff, ColumnAndShifts::instr_fetching_pc_size_in_bits - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_instr_fetching_pc_abs_diff_positive_settings = @@ -41,14 +41,12 @@ struct lookup_instr_fetching_instr_abs_diff_positive_settings_ { static constexpr std::string_view NAME = "LOOKUP_INSTR_FETCHING_INSTR_ABS_DIFF_POSITIVE"; static constexpr std::string_view RELATION_NAME = "instr_fetching"; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; - static constexpr Column SRC_SELECTOR = Column::instr_fetching_sel; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_8; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::instr_fetching_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_8); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::instr_fetching_instr_abs_diff)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk)); static constexpr Column COUNTS = Column::lookup_instr_fetching_instr_abs_diff_positive_counts; static constexpr Column INVERSES = Column::lookup_instr_fetching_instr_abs_diff_positive_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::instr_fetching_instr_abs_diff - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::precomputed_clk }; }; using lookup_instr_fetching_instr_abs_diff_positive_settings = @@ -63,16 +61,16 @@ struct lookup_instr_fetching_tag_value_validation_settings_ { static constexpr std::string_view NAME = "LOOKUP_INSTR_FETCHING_TAG_VALUE_VALIDATION"; static constexpr std::string_view RELATION_NAME = "instr_fetching"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::instr_fetching_sel_has_tag; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_8; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::instr_fetching_sel_has_tag); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_8); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::instr_fetching_tag_value), + ColumnExpression(ColumnAndShifts::instr_fetching_tag_out_of_range)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::precomputed_sel_mem_tag_out_of_range)); static constexpr Column COUNTS = Column::lookup_instr_fetching_tag_value_validation_counts; static constexpr Column INVERSES = Column::lookup_instr_fetching_tag_value_validation_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::instr_fetching_tag_value, ColumnAndShifts::instr_fetching_tag_out_of_range - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::precomputed_sel_mem_tag_out_of_range - }; }; using lookup_instr_fetching_tag_value_validation_settings = @@ -87,20 +85,17 @@ struct lookup_instr_fetching_bytecode_size_from_bc_dec_settings_ { static constexpr std::string_view NAME = "LOOKUP_INSTR_FETCHING_BYTECODE_SIZE_FROM_BC_DEC"; static constexpr std::string_view RELATION_NAME = "instr_fetching"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::instr_fetching_sel; - static constexpr Column DST_SELECTOR = Column::bc_decomposition_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::instr_fetching_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bc_decomposition_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::instr_fetching_bytecode_id), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::instr_fetching_bytecode_size)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::bc_decomposition_id), + ColumnExpression(ColumnAndShifts::bc_decomposition_pc), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_remaining)); static constexpr Column COUNTS = Column::lookup_instr_fetching_bytecode_size_from_bc_dec_counts; static constexpr Column INVERSES = Column::lookup_instr_fetching_bytecode_size_from_bc_dec_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::instr_fetching_bytecode_id, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::instr_fetching_bytecode_size - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::bc_decomposition_id, - ColumnAndShifts::bc_decomposition_pc, - ColumnAndShifts::bc_decomposition_bytes_remaining - }; }; using lookup_instr_fetching_bytecode_size_from_bc_dec_settings = @@ -115,74 +110,91 @@ struct lookup_instr_fetching_bytes_from_bc_dec_settings_ { static constexpr std::string_view NAME = "LOOKUP_INSTR_FETCHING_BYTES_FROM_BC_DEC"; static constexpr std::string_view RELATION_NAME = "instr_fetching"; static constexpr size_t LOOKUP_TUPLE_SIZE = 40; - static constexpr Column SRC_SELECTOR = Column::instr_fetching_sel_pc_in_range; - static constexpr Column DST_SELECTOR = Column::bc_decomposition_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::instr_fetching_sel_pc_in_range); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bc_decomposition_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::instr_fetching_bytecode_id), + ColumnExpression(ColumnAndShifts::instr_fetching_pc), + ColumnExpression(ColumnAndShifts::instr_fetching_bytes_to_read), + ColumnExpression(ColumnAndShifts::instr_fetching_bd0), + ColumnExpression(ColumnAndShifts::instr_fetching_bd1), + ColumnExpression(ColumnAndShifts::instr_fetching_bd2), + ColumnExpression(ColumnAndShifts::instr_fetching_bd3), + ColumnExpression(ColumnAndShifts::instr_fetching_bd4), + ColumnExpression(ColumnAndShifts::instr_fetching_bd5), + ColumnExpression(ColumnAndShifts::instr_fetching_bd6), + ColumnExpression(ColumnAndShifts::instr_fetching_bd7), + ColumnExpression(ColumnAndShifts::instr_fetching_bd8), + ColumnExpression(ColumnAndShifts::instr_fetching_bd9), + ColumnExpression(ColumnAndShifts::instr_fetching_bd10), + ColumnExpression(ColumnAndShifts::instr_fetching_bd11), + ColumnExpression(ColumnAndShifts::instr_fetching_bd12), + ColumnExpression(ColumnAndShifts::instr_fetching_bd13), + ColumnExpression(ColumnAndShifts::instr_fetching_bd14), + ColumnExpression(ColumnAndShifts::instr_fetching_bd15), + ColumnExpression(ColumnAndShifts::instr_fetching_bd16), + ColumnExpression(ColumnAndShifts::instr_fetching_bd17), + ColumnExpression(ColumnAndShifts::instr_fetching_bd18), + ColumnExpression(ColumnAndShifts::instr_fetching_bd19), + ColumnExpression(ColumnAndShifts::instr_fetching_bd20), + ColumnExpression(ColumnAndShifts::instr_fetching_bd21), + ColumnExpression(ColumnAndShifts::instr_fetching_bd22), + ColumnExpression(ColumnAndShifts::instr_fetching_bd23), + ColumnExpression(ColumnAndShifts::instr_fetching_bd24), + ColumnExpression(ColumnAndShifts::instr_fetching_bd25), + ColumnExpression(ColumnAndShifts::instr_fetching_bd26), + ColumnExpression(ColumnAndShifts::instr_fetching_bd27), + ColumnExpression(ColumnAndShifts::instr_fetching_bd28), + ColumnExpression(ColumnAndShifts::instr_fetching_bd29), + ColumnExpression(ColumnAndShifts::instr_fetching_bd30), + ColumnExpression(ColumnAndShifts::instr_fetching_bd31), + ColumnExpression(ColumnAndShifts::instr_fetching_bd32), + ColumnExpression(ColumnAndShifts::instr_fetching_bd33), + ColumnExpression(ColumnAndShifts::instr_fetching_bd34), + ColumnExpression(ColumnAndShifts::instr_fetching_bd35), + ColumnExpression(ColumnAndShifts::instr_fetching_bd36)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::bc_decomposition_id), + ColumnExpression(ColumnAndShifts::bc_decomposition_pc), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_to_read), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_1), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_2), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_3), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_4), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_5), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_6), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_7), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_8), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_9), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_10), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_11), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_12), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_13), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_14), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_15), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_16), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_17), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_18), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_19), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_20), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_21), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_22), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_23), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_24), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_25), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_26), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_27), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_28), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_29), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_30), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_31), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_32), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_33), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_34), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_35), + ColumnExpression(ColumnAndShifts::bc_decomposition_bytes_pc_plus_36)); static constexpr Column COUNTS = Column::lookup_instr_fetching_bytes_from_bc_dec_counts; static constexpr Column INVERSES = Column::lookup_instr_fetching_bytes_from_bc_dec_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::instr_fetching_bytecode_id, ColumnAndShifts::instr_fetching_pc, - ColumnAndShifts::instr_fetching_bytes_to_read, ColumnAndShifts::instr_fetching_bd0, - ColumnAndShifts::instr_fetching_bd1, ColumnAndShifts::instr_fetching_bd2, - ColumnAndShifts::instr_fetching_bd3, ColumnAndShifts::instr_fetching_bd4, - ColumnAndShifts::instr_fetching_bd5, ColumnAndShifts::instr_fetching_bd6, - ColumnAndShifts::instr_fetching_bd7, ColumnAndShifts::instr_fetching_bd8, - ColumnAndShifts::instr_fetching_bd9, ColumnAndShifts::instr_fetching_bd10, - ColumnAndShifts::instr_fetching_bd11, ColumnAndShifts::instr_fetching_bd12, - ColumnAndShifts::instr_fetching_bd13, ColumnAndShifts::instr_fetching_bd14, - ColumnAndShifts::instr_fetching_bd15, ColumnAndShifts::instr_fetching_bd16, - ColumnAndShifts::instr_fetching_bd17, ColumnAndShifts::instr_fetching_bd18, - ColumnAndShifts::instr_fetching_bd19, ColumnAndShifts::instr_fetching_bd20, - ColumnAndShifts::instr_fetching_bd21, ColumnAndShifts::instr_fetching_bd22, - ColumnAndShifts::instr_fetching_bd23, ColumnAndShifts::instr_fetching_bd24, - ColumnAndShifts::instr_fetching_bd25, ColumnAndShifts::instr_fetching_bd26, - ColumnAndShifts::instr_fetching_bd27, ColumnAndShifts::instr_fetching_bd28, - ColumnAndShifts::instr_fetching_bd29, ColumnAndShifts::instr_fetching_bd30, - ColumnAndShifts::instr_fetching_bd31, ColumnAndShifts::instr_fetching_bd32, - ColumnAndShifts::instr_fetching_bd33, ColumnAndShifts::instr_fetching_bd34, - ColumnAndShifts::instr_fetching_bd35, ColumnAndShifts::instr_fetching_bd36 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::bc_decomposition_id, - ColumnAndShifts::bc_decomposition_pc, - ColumnAndShifts::bc_decomposition_bytes_to_read, - ColumnAndShifts::bc_decomposition_bytes, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_1, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_2, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_3, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_4, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_5, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_6, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_7, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_8, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_9, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_10, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_11, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_12, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_13, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_14, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_15, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_16, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_17, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_18, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_19, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_20, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_21, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_22, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_23, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_24, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_25, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_26, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_27, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_28, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_29, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_30, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_31, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_32, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_33, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_34, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_35, - ColumnAndShifts::bc_decomposition_bytes_pc_plus_36 - }; }; using lookup_instr_fetching_bytes_from_bc_dec_settings = @@ -197,38 +209,58 @@ struct lookup_instr_fetching_wire_instruction_info_settings_ { static constexpr std::string_view NAME = "LOOKUP_INSTR_FETCHING_WIRE_INSTRUCTION_INFO"; static constexpr std::string_view RELATION_NAME = "instr_fetching"; static constexpr size_t LOOKUP_TUPLE_SIZE = 23; - static constexpr Column SRC_SELECTOR = Column::instr_fetching_sel_pc_in_range; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_8; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::instr_fetching_sel_pc_in_range); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_8); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::instr_fetching_bd0), + ColumnExpression(ColumnAndShifts::instr_fetching_opcode_out_of_range), + ColumnExpression(ColumnAndShifts::instr_fetching_exec_opcode), + ColumnExpression(ColumnAndShifts::instr_fetching_instr_size), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_has_tag), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_tag_is_op2), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_op_dc_0), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_op_dc_1), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_op_dc_2), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_op_dc_3), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_op_dc_4), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_op_dc_5), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_op_dc_6), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_op_dc_7), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_op_dc_8), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_op_dc_9), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_op_dc_10), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_op_dc_11), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_op_dc_12), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_op_dc_13), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_op_dc_14), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_op_dc_15), + ColumnExpression(ColumnAndShifts::instr_fetching_sel_op_dc_16)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::precomputed_opcode_out_of_range), + ColumnExpression(ColumnAndShifts::precomputed_exec_opcode), + ColumnExpression(ColumnAndShifts::precomputed_instr_size), + ColumnExpression(ColumnAndShifts::precomputed_sel_has_tag), + ColumnExpression(ColumnAndShifts::precomputed_sel_tag_is_op2), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_dc_0), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_dc_1), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_dc_2), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_dc_3), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_dc_4), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_dc_5), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_dc_6), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_dc_7), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_dc_8), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_dc_9), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_dc_10), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_dc_11), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_dc_12), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_dc_13), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_dc_14), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_dc_15), + ColumnExpression(ColumnAndShifts::precomputed_sel_op_dc_16)); static constexpr Column COUNTS = Column::lookup_instr_fetching_wire_instruction_info_counts; static constexpr Column INVERSES = Column::lookup_instr_fetching_wire_instruction_info_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::instr_fetching_bd0, ColumnAndShifts::instr_fetching_opcode_out_of_range, - ColumnAndShifts::instr_fetching_exec_opcode, ColumnAndShifts::instr_fetching_instr_size, - ColumnAndShifts::instr_fetching_sel_has_tag, ColumnAndShifts::instr_fetching_sel_tag_is_op2, - ColumnAndShifts::instr_fetching_sel_op_dc_0, ColumnAndShifts::instr_fetching_sel_op_dc_1, - ColumnAndShifts::instr_fetching_sel_op_dc_2, ColumnAndShifts::instr_fetching_sel_op_dc_3, - ColumnAndShifts::instr_fetching_sel_op_dc_4, ColumnAndShifts::instr_fetching_sel_op_dc_5, - ColumnAndShifts::instr_fetching_sel_op_dc_6, ColumnAndShifts::instr_fetching_sel_op_dc_7, - ColumnAndShifts::instr_fetching_sel_op_dc_8, ColumnAndShifts::instr_fetching_sel_op_dc_9, - ColumnAndShifts::instr_fetching_sel_op_dc_10, ColumnAndShifts::instr_fetching_sel_op_dc_11, - ColumnAndShifts::instr_fetching_sel_op_dc_12, ColumnAndShifts::instr_fetching_sel_op_dc_13, - ColumnAndShifts::instr_fetching_sel_op_dc_14, ColumnAndShifts::instr_fetching_sel_op_dc_15, - ColumnAndShifts::instr_fetching_sel_op_dc_16 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::precomputed_opcode_out_of_range, - ColumnAndShifts::precomputed_exec_opcode, ColumnAndShifts::precomputed_instr_size, - ColumnAndShifts::precomputed_sel_has_tag, ColumnAndShifts::precomputed_sel_tag_is_op2, - ColumnAndShifts::precomputed_sel_op_dc_0, ColumnAndShifts::precomputed_sel_op_dc_1, - ColumnAndShifts::precomputed_sel_op_dc_2, ColumnAndShifts::precomputed_sel_op_dc_3, - ColumnAndShifts::precomputed_sel_op_dc_4, ColumnAndShifts::precomputed_sel_op_dc_5, - ColumnAndShifts::precomputed_sel_op_dc_6, ColumnAndShifts::precomputed_sel_op_dc_7, - ColumnAndShifts::precomputed_sel_op_dc_8, ColumnAndShifts::precomputed_sel_op_dc_9, - ColumnAndShifts::precomputed_sel_op_dc_10, ColumnAndShifts::precomputed_sel_op_dc_11, - ColumnAndShifts::precomputed_sel_op_dc_12, ColumnAndShifts::precomputed_sel_op_dc_13, - ColumnAndShifts::precomputed_sel_op_dc_14, ColumnAndShifts::precomputed_sel_op_dc_15, - ColumnAndShifts::precomputed_sel_op_dc_16 - }; }; using lookup_instr_fetching_wire_instruction_info_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_internal_call.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_internal_call.hpp index d2f4f2115bb4..94597a68e2e3 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_internal_call.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_internal_call.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,24 +18,22 @@ struct lookup_internal_call_push_call_stack_settings_ { static constexpr std::string_view NAME = "LOOKUP_INTERNAL_CALL_PUSH_CALL_STACK"; static constexpr std::string_view RELATION_NAME = "internal_call"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::execution_sel_execute_internal_call; - static constexpr Column DST_SELECTOR = Column::internal_call_stack_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_execute_internal_call); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::internal_call_stack_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_context_id), + ColumnExpression(ColumnAndShifts::execution_next_internal_call_id), + ColumnExpression(ColumnAndShifts::execution_internal_call_id), + ColumnExpression(ColumnAndShifts::execution_internal_call_return_id), + ColumnExpression(ColumnAndShifts::execution_next_pc)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::internal_call_stack_context_id), + ColumnExpression(ColumnAndShifts::internal_call_stack_entered_call_id), + ColumnExpression(ColumnAndShifts::internal_call_stack_id), + ColumnExpression(ColumnAndShifts::internal_call_stack_return_id), + ColumnExpression(ColumnAndShifts::internal_call_stack_return_pc)); static constexpr Column COUNTS = Column::lookup_internal_call_push_call_stack_counts; static constexpr Column INVERSES = Column::lookup_internal_call_push_call_stack_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_context_id, - ColumnAndShifts::execution_next_internal_call_id, - ColumnAndShifts::execution_internal_call_id, - ColumnAndShifts::execution_internal_call_return_id, - ColumnAndShifts::execution_next_pc - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::internal_call_stack_context_id, - ColumnAndShifts::internal_call_stack_entered_call_id, - ColumnAndShifts::internal_call_stack_id, - ColumnAndShifts::internal_call_stack_return_id, - ColumnAndShifts::internal_call_stack_return_pc - }; }; using lookup_internal_call_push_call_stack_settings = lookup_settings; @@ -48,24 +47,22 @@ struct lookup_internal_call_unwind_call_stack_settings_ { static constexpr std::string_view NAME = "LOOKUP_INTERNAL_CALL_UNWIND_CALL_STACK"; static constexpr std::string_view RELATION_NAME = "internal_call"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::execution_sel_execute_internal_return; - static constexpr Column DST_SELECTOR = Column::internal_call_stack_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_execute_internal_return); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::internal_call_stack_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_context_id), + ColumnExpression(ColumnAndShifts::execution_internal_call_id), + ColumnExpression(ColumnAndShifts::execution_internal_call_id_shift), + ColumnExpression(ColumnAndShifts::execution_internal_call_return_id_shift), + ColumnExpression(ColumnAndShifts::execution_pc_shift)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::internal_call_stack_context_id), + ColumnExpression(ColumnAndShifts::internal_call_stack_entered_call_id), + ColumnExpression(ColumnAndShifts::internal_call_stack_id), + ColumnExpression(ColumnAndShifts::internal_call_stack_return_id), + ColumnExpression(ColumnAndShifts::internal_call_stack_return_pc)); static constexpr Column COUNTS = Column::lookup_internal_call_unwind_call_stack_counts; static constexpr Column INVERSES = Column::lookup_internal_call_unwind_call_stack_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_context_id, - ColumnAndShifts::execution_internal_call_id, - ColumnAndShifts::execution_internal_call_id_shift, - ColumnAndShifts::execution_internal_call_return_id_shift, - ColumnAndShifts::execution_pc_shift - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::internal_call_stack_context_id, - ColumnAndShifts::internal_call_stack_entered_call_id, - ColumnAndShifts::internal_call_stack_id, - ColumnAndShifts::internal_call_stack_return_id, - ColumnAndShifts::internal_call_stack_return_pc - }; }; using lookup_internal_call_unwind_call_stack_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_keccakf1600.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_keccakf1600.hpp index 6ac2ce5b256f..5e2433057c0f 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_keccakf1600.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_keccakf1600.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,22 +18,20 @@ struct lookup_keccakf1600_theta_xor_01_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_01"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_00), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_01), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_01), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_01_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_01_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_00, - ColumnAndShifts::keccakf1600_state_in_01, - ColumnAndShifts::keccakf1600_theta_xor_01, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_01_settings = lookup_settings; @@ -45,22 +44,20 @@ struct lookup_keccakf1600_theta_xor_02_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_02"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_01), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_02), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_02), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_02_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_02_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_01, - ColumnAndShifts::keccakf1600_state_in_02, - ColumnAndShifts::keccakf1600_theta_xor_02, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_02_settings = lookup_settings; @@ -73,22 +70,20 @@ struct lookup_keccakf1600_theta_xor_03_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_03"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_02), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_03), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_03), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_03_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_03_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_02, - ColumnAndShifts::keccakf1600_state_in_03, - ColumnAndShifts::keccakf1600_theta_xor_03, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_03_settings = lookup_settings; @@ -101,22 +96,20 @@ struct lookup_keccakf1600_theta_xor_row_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_ROW_0"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_03), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_04), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_row_0), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_row_0_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_row_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_03, - ColumnAndShifts::keccakf1600_state_in_04, - ColumnAndShifts::keccakf1600_theta_xor_row_0, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_row_0_settings = lookup_settings; @@ -130,22 +123,20 @@ struct lookup_keccakf1600_theta_xor_11_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_11"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_10), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_11), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_11), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_11_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_11_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_10, - ColumnAndShifts::keccakf1600_state_in_11, - ColumnAndShifts::keccakf1600_theta_xor_11, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_11_settings = lookup_settings; @@ -158,22 +149,20 @@ struct lookup_keccakf1600_theta_xor_12_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_12"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_11), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_12), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_12), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_12_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_12_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_11, - ColumnAndShifts::keccakf1600_state_in_12, - ColumnAndShifts::keccakf1600_theta_xor_12, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_12_settings = lookup_settings; @@ -186,22 +175,20 @@ struct lookup_keccakf1600_theta_xor_13_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_13"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_12), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_13), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_13), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_13_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_13_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_12, - ColumnAndShifts::keccakf1600_state_in_13, - ColumnAndShifts::keccakf1600_theta_xor_13, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_13_settings = lookup_settings; @@ -214,22 +201,20 @@ struct lookup_keccakf1600_theta_xor_row_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_ROW_1"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_13), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_14), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_row_1), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_row_1_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_row_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_13, - ColumnAndShifts::keccakf1600_state_in_14, - ColumnAndShifts::keccakf1600_theta_xor_row_1, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_row_1_settings = lookup_settings; @@ -243,22 +228,20 @@ struct lookup_keccakf1600_theta_xor_21_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_21"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_20), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_21), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_21), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_21_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_21_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_20, - ColumnAndShifts::keccakf1600_state_in_21, - ColumnAndShifts::keccakf1600_theta_xor_21, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_21_settings = lookup_settings; @@ -271,22 +254,20 @@ struct lookup_keccakf1600_theta_xor_22_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_22"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_21), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_22), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_22), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_22_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_22_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_21, - ColumnAndShifts::keccakf1600_state_in_22, - ColumnAndShifts::keccakf1600_theta_xor_22, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_22_settings = lookup_settings; @@ -299,22 +280,20 @@ struct lookup_keccakf1600_theta_xor_23_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_23"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_22), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_23), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_23), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_23_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_23_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_22, - ColumnAndShifts::keccakf1600_state_in_23, - ColumnAndShifts::keccakf1600_theta_xor_23, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_23_settings = lookup_settings; @@ -327,22 +306,20 @@ struct lookup_keccakf1600_theta_xor_row_2_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_ROW_2"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_23), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_24), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_row_2), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_row_2_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_row_2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_23, - ColumnAndShifts::keccakf1600_state_in_24, - ColumnAndShifts::keccakf1600_theta_xor_row_2, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_row_2_settings = lookup_settings; @@ -356,22 +333,20 @@ struct lookup_keccakf1600_theta_xor_31_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_31"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_30), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_31), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_31), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_31_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_31_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_30, - ColumnAndShifts::keccakf1600_state_in_31, - ColumnAndShifts::keccakf1600_theta_xor_31, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_31_settings = lookup_settings; @@ -384,22 +359,20 @@ struct lookup_keccakf1600_theta_xor_32_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_32"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_31), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_32), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_32), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_32_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_32_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_31, - ColumnAndShifts::keccakf1600_state_in_32, - ColumnAndShifts::keccakf1600_theta_xor_32, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_32_settings = lookup_settings; @@ -412,22 +385,20 @@ struct lookup_keccakf1600_theta_xor_33_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_33"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_32), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_33), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_33), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_33_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_33_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_32, - ColumnAndShifts::keccakf1600_state_in_33, - ColumnAndShifts::keccakf1600_theta_xor_33, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_33_settings = lookup_settings; @@ -440,22 +411,20 @@ struct lookup_keccakf1600_theta_xor_row_3_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_ROW_3"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_33), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_34), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_row_3), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_row_3_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_row_3_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_33, - ColumnAndShifts::keccakf1600_state_in_34, - ColumnAndShifts::keccakf1600_theta_xor_row_3, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_row_3_settings = lookup_settings; @@ -469,22 +438,20 @@ struct lookup_keccakf1600_theta_xor_41_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_41"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_40), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_41), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_41), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_41_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_41_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_40, - ColumnAndShifts::keccakf1600_state_in_41, - ColumnAndShifts::keccakf1600_theta_xor_41, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_41_settings = lookup_settings; @@ -497,22 +464,20 @@ struct lookup_keccakf1600_theta_xor_42_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_42"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_41), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_42), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_42), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_42_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_42_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_41, - ColumnAndShifts::keccakf1600_state_in_42, - ColumnAndShifts::keccakf1600_theta_xor_42, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_42_settings = lookup_settings; @@ -525,22 +490,20 @@ struct lookup_keccakf1600_theta_xor_43_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_43"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_42), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_43), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_43), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_43_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_43_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_42, - ColumnAndShifts::keccakf1600_state_in_43, - ColumnAndShifts::keccakf1600_theta_xor_43, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_43_settings = lookup_settings; @@ -553,22 +516,20 @@ struct lookup_keccakf1600_theta_xor_row_4_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_XOR_ROW_4"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_43), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_44), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_row_4), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_xor_row_4_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_xor_row_4_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_43, - ColumnAndShifts::keccakf1600_state_in_44, - ColumnAndShifts::keccakf1600_theta_xor_row_4, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_xor_row_4_settings = lookup_settings; @@ -582,22 +543,21 @@ struct lookup_keccakf1600_theta_combined_xor_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_COMBINED_XOR_0"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_row_4), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_row_rotl1_1), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_0), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_combined_xor_0_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_combined_xor_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_row_4, - ColumnAndShifts::keccakf1600_theta_xor_row_rotl1_1, - ColumnAndShifts::keccakf1600_theta_combined_xor_0, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_combined_xor_0_settings = @@ -612,22 +572,21 @@ struct lookup_keccakf1600_theta_combined_xor_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_COMBINED_XOR_1"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_row_0), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_row_rotl1_2), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_1), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_combined_xor_1_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_combined_xor_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_row_0, - ColumnAndShifts::keccakf1600_theta_xor_row_rotl1_2, - ColumnAndShifts::keccakf1600_theta_combined_xor_1, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_combined_xor_1_settings = @@ -642,22 +601,21 @@ struct lookup_keccakf1600_theta_combined_xor_2_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_COMBINED_XOR_2"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_row_1), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_row_rotl1_3), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_2), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_combined_xor_2_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_combined_xor_2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_row_1, - ColumnAndShifts::keccakf1600_theta_xor_row_rotl1_3, - ColumnAndShifts::keccakf1600_theta_combined_xor_2, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_combined_xor_2_settings = @@ -672,22 +630,21 @@ struct lookup_keccakf1600_theta_combined_xor_3_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_COMBINED_XOR_3"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_row_2), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_row_rotl1_4), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_3), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_combined_xor_3_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_combined_xor_3_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_row_2, - ColumnAndShifts::keccakf1600_theta_xor_row_rotl1_4, - ColumnAndShifts::keccakf1600_theta_combined_xor_3, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_combined_xor_3_settings = @@ -702,22 +659,21 @@ struct lookup_keccakf1600_theta_combined_xor_4_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_COMBINED_XOR_4"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_row_3), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_xor_row_rotl1_0), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_4), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_combined_xor_4_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_combined_xor_4_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_theta_xor_row_3, - ColumnAndShifts::keccakf1600_theta_xor_row_rotl1_0, - ColumnAndShifts::keccakf1600_theta_combined_xor_4, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_theta_combined_xor_4_settings = @@ -732,22 +688,21 @@ struct lookup_keccakf1600_state_theta_00_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_00"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_00), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_0), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_00), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_00_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_00_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_00, - ColumnAndShifts::keccakf1600_theta_combined_xor_0, - ColumnAndShifts::keccakf1600_state_theta_00, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_00_settings = lookup_settings; @@ -761,22 +716,21 @@ struct lookup_keccakf1600_state_theta_01_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_01"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_01), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_0), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_01), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_01_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_01_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_01, - ColumnAndShifts::keccakf1600_theta_combined_xor_0, - ColumnAndShifts::keccakf1600_state_theta_01, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_01_settings = lookup_settings; @@ -790,22 +744,21 @@ struct lookup_keccakf1600_state_theta_02_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_02"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_02), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_0), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_02), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_02_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_02_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_02, - ColumnAndShifts::keccakf1600_theta_combined_xor_0, - ColumnAndShifts::keccakf1600_state_theta_02, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_02_settings = lookup_settings; @@ -819,22 +772,21 @@ struct lookup_keccakf1600_state_theta_03_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_03"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_03), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_0), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_03), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_03_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_03_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_03, - ColumnAndShifts::keccakf1600_theta_combined_xor_0, - ColumnAndShifts::keccakf1600_state_theta_03, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_03_settings = lookup_settings; @@ -848,22 +800,21 @@ struct lookup_keccakf1600_state_theta_04_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_04"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_04), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_0), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_04), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_04_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_04_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_04, - ColumnAndShifts::keccakf1600_theta_combined_xor_0, - ColumnAndShifts::keccakf1600_state_theta_04, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_04_settings = lookup_settings; @@ -877,22 +828,21 @@ struct lookup_keccakf1600_state_theta_10_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_10"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_10), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_1), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_10), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_10_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_10_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_10, - ColumnAndShifts::keccakf1600_theta_combined_xor_1, - ColumnAndShifts::keccakf1600_state_theta_10, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_10_settings = lookup_settings; @@ -906,22 +856,21 @@ struct lookup_keccakf1600_state_theta_11_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_11"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_11), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_1), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_11), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_11_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_11_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_11, - ColumnAndShifts::keccakf1600_theta_combined_xor_1, - ColumnAndShifts::keccakf1600_state_theta_11, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_11_settings = lookup_settings; @@ -935,22 +884,21 @@ struct lookup_keccakf1600_state_theta_12_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_12"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_12), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_1), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_12), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_12_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_12_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_12, - ColumnAndShifts::keccakf1600_theta_combined_xor_1, - ColumnAndShifts::keccakf1600_state_theta_12, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_12_settings = lookup_settings; @@ -964,22 +912,21 @@ struct lookup_keccakf1600_state_theta_13_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_13"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_13), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_1), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_13), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_13_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_13_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_13, - ColumnAndShifts::keccakf1600_theta_combined_xor_1, - ColumnAndShifts::keccakf1600_state_theta_13, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_13_settings = lookup_settings; @@ -993,22 +940,21 @@ struct lookup_keccakf1600_state_theta_14_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_14"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_14), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_1), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_14), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_14_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_14_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_14, - ColumnAndShifts::keccakf1600_theta_combined_xor_1, - ColumnAndShifts::keccakf1600_state_theta_14, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_14_settings = lookup_settings; @@ -1022,22 +968,21 @@ struct lookup_keccakf1600_state_theta_20_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_20"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_20), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_2), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_20), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_20_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_20_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_20, - ColumnAndShifts::keccakf1600_theta_combined_xor_2, - ColumnAndShifts::keccakf1600_state_theta_20, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_20_settings = lookup_settings; @@ -1051,22 +996,21 @@ struct lookup_keccakf1600_state_theta_21_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_21"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_21), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_2), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_21), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_21_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_21_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_21, - ColumnAndShifts::keccakf1600_theta_combined_xor_2, - ColumnAndShifts::keccakf1600_state_theta_21, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_21_settings = lookup_settings; @@ -1080,22 +1024,21 @@ struct lookup_keccakf1600_state_theta_22_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_22"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_22), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_2), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_22), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_22_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_22_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_22, - ColumnAndShifts::keccakf1600_theta_combined_xor_2, - ColumnAndShifts::keccakf1600_state_theta_22, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_22_settings = lookup_settings; @@ -1109,22 +1052,21 @@ struct lookup_keccakf1600_state_theta_23_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_23"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_23), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_2), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_23), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_23_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_23_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_23, - ColumnAndShifts::keccakf1600_theta_combined_xor_2, - ColumnAndShifts::keccakf1600_state_theta_23, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_23_settings = lookup_settings; @@ -1138,22 +1080,21 @@ struct lookup_keccakf1600_state_theta_24_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_24"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_24), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_2), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_24), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_24_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_24_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_24, - ColumnAndShifts::keccakf1600_theta_combined_xor_2, - ColumnAndShifts::keccakf1600_state_theta_24, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_24_settings = lookup_settings; @@ -1167,22 +1108,21 @@ struct lookup_keccakf1600_state_theta_30_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_30"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_30), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_3), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_30), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_30_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_30_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_30, - ColumnAndShifts::keccakf1600_theta_combined_xor_3, - ColumnAndShifts::keccakf1600_state_theta_30, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_30_settings = lookup_settings; @@ -1196,22 +1136,21 @@ struct lookup_keccakf1600_state_theta_31_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_31"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_31), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_3), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_31), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_31_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_31_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_31, - ColumnAndShifts::keccakf1600_theta_combined_xor_3, - ColumnAndShifts::keccakf1600_state_theta_31, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_31_settings = lookup_settings; @@ -1225,22 +1164,21 @@ struct lookup_keccakf1600_state_theta_32_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_32"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_32), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_3), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_32), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_32_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_32_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_32, - ColumnAndShifts::keccakf1600_theta_combined_xor_3, - ColumnAndShifts::keccakf1600_state_theta_32, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_32_settings = lookup_settings; @@ -1254,22 +1192,21 @@ struct lookup_keccakf1600_state_theta_33_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_33"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_33), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_3), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_33), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_33_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_33_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_33, - ColumnAndShifts::keccakf1600_theta_combined_xor_3, - ColumnAndShifts::keccakf1600_state_theta_33, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_33_settings = lookup_settings; @@ -1283,22 +1220,21 @@ struct lookup_keccakf1600_state_theta_34_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_34"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_34), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_3), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_34), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_34_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_34_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_34, - ColumnAndShifts::keccakf1600_theta_combined_xor_3, - ColumnAndShifts::keccakf1600_state_theta_34, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_34_settings = lookup_settings; @@ -1312,22 +1248,21 @@ struct lookup_keccakf1600_state_theta_40_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_40"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_40), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_4), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_40), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_40_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_40_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_40, - ColumnAndShifts::keccakf1600_theta_combined_xor_4, - ColumnAndShifts::keccakf1600_state_theta_40, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_40_settings = lookup_settings; @@ -1341,22 +1276,21 @@ struct lookup_keccakf1600_state_theta_41_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_41"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_41), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_4), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_41), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_41_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_41_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_41, - ColumnAndShifts::keccakf1600_theta_combined_xor_4, - ColumnAndShifts::keccakf1600_state_theta_41, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_41_settings = lookup_settings; @@ -1370,22 +1304,21 @@ struct lookup_keccakf1600_state_theta_42_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_42"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_42), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_4), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_42), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_42_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_42_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_42, - ColumnAndShifts::keccakf1600_theta_combined_xor_4, - ColumnAndShifts::keccakf1600_state_theta_42, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_42_settings = lookup_settings; @@ -1399,22 +1332,21 @@ struct lookup_keccakf1600_state_theta_43_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_43"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_43), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_4), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_43), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_43_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_43_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_43, - ColumnAndShifts::keccakf1600_theta_combined_xor_4, - ColumnAndShifts::keccakf1600_state_theta_43, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_43_settings = lookup_settings; @@ -1428,22 +1360,21 @@ struct lookup_keccakf1600_state_theta_44_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_THETA_44"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_in_44), + ColumnExpression(ColumnAndShifts::keccakf1600_theta_combined_xor_4), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_44), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_theta_44_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_theta_44_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_in_44, - ColumnAndShifts::keccakf1600_theta_combined_xor_4, - ColumnAndShifts::keccakf1600_state_theta_44, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_theta_44_settings = lookup_settings; @@ -1457,16 +1388,14 @@ struct lookup_keccakf1600_theta_limb_02_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_02_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_hi_02), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_len_02)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_02_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_02_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_hi_02, ColumnAndShifts::keccakf1600_rot_len_02 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_02_range_settings = @@ -1481,16 +1410,14 @@ struct lookup_keccakf1600_theta_limb_04_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_04_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_hi_04), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_len_04)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_04_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_04_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_hi_04, ColumnAndShifts::keccakf1600_rot_len_04 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_04_range_settings = @@ -1505,16 +1432,14 @@ struct lookup_keccakf1600_theta_limb_10_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_10_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_hi_10), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_len_10)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_10_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_10_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_hi_10, ColumnAndShifts::keccakf1600_rot_len_10 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_10_range_settings = @@ -1529,16 +1454,14 @@ struct lookup_keccakf1600_theta_limb_12_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_12_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_hi_12), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_len_12)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_12_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_12_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_hi_12, ColumnAndShifts::keccakf1600_rot_len_12 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_12_range_settings = @@ -1553,16 +1476,14 @@ struct lookup_keccakf1600_theta_limb_14_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_14_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_hi_14), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_len_14)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_14_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_14_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_hi_14, ColumnAndShifts::keccakf1600_rot_len_14 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_14_range_settings = @@ -1577,16 +1498,14 @@ struct lookup_keccakf1600_theta_limb_21_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_21_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_hi_21), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_len_21)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_21_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_21_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_hi_21, ColumnAndShifts::keccakf1600_rot_len_21 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_21_range_settings = @@ -1601,16 +1520,14 @@ struct lookup_keccakf1600_theta_limb_23_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_23_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_hi_23), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_len_23)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_23_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_23_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_hi_23, ColumnAndShifts::keccakf1600_rot_len_23 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_23_range_settings = @@ -1625,16 +1542,14 @@ struct lookup_keccakf1600_theta_limb_30_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_30_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_hi_30), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_len_30)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_30_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_30_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_hi_30, ColumnAndShifts::keccakf1600_rot_len_30 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_30_range_settings = @@ -1649,16 +1564,14 @@ struct lookup_keccakf1600_theta_limb_32_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_32_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_hi_32), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_len_32)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_32_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_32_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_hi_32, ColumnAndShifts::keccakf1600_rot_len_32 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_32_range_settings = @@ -1673,16 +1586,14 @@ struct lookup_keccakf1600_theta_limb_33_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_33_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_hi_33), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_len_33)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_33_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_33_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_hi_33, ColumnAndShifts::keccakf1600_rot_len_33 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_33_range_settings = @@ -1697,16 +1608,14 @@ struct lookup_keccakf1600_theta_limb_40_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_40_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_hi_40), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_len_40)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_40_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_40_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_hi_40, ColumnAndShifts::keccakf1600_rot_len_40 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_40_range_settings = @@ -1721,16 +1630,14 @@ struct lookup_keccakf1600_theta_limb_41_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_41_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_hi_41), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_len_41)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_41_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_41_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_hi_41, ColumnAndShifts::keccakf1600_rot_len_41 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_41_range_settings = @@ -1745,16 +1652,14 @@ struct lookup_keccakf1600_theta_limb_43_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_43_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_hi_43), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_len_43)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_43_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_43_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_hi_43, ColumnAndShifts::keccakf1600_rot_len_43 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_43_range_settings = @@ -1769,16 +1674,14 @@ struct lookup_keccakf1600_theta_limb_44_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_44_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_hi_44), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_len_44)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_44_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_44_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_hi_44, ColumnAndShifts::keccakf1600_rot_len_44 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_44_range_settings = @@ -1793,16 +1696,14 @@ struct lookup_keccakf1600_theta_limb_01_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_01_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_low_01), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_64_min_len_01)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_01_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_01_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_low_01, ColumnAndShifts::keccakf1600_rot_64_min_len_01 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_01_range_settings = @@ -1817,16 +1718,14 @@ struct lookup_keccakf1600_theta_limb_03_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_03_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_low_03), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_64_min_len_03)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_03_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_03_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_low_03, ColumnAndShifts::keccakf1600_rot_64_min_len_03 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_03_range_settings = @@ -1841,16 +1740,14 @@ struct lookup_keccakf1600_theta_limb_11_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_11_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_low_11), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_64_min_len_11)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_11_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_11_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_low_11, ColumnAndShifts::keccakf1600_rot_64_min_len_11 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_11_range_settings = @@ -1865,16 +1762,14 @@ struct lookup_keccakf1600_theta_limb_13_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_13_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_low_13), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_64_min_len_13)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_13_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_13_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_low_13, ColumnAndShifts::keccakf1600_rot_64_min_len_13 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_13_range_settings = @@ -1889,16 +1784,14 @@ struct lookup_keccakf1600_theta_limb_20_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_20_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_low_20), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_64_min_len_20)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_20_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_20_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_low_20, ColumnAndShifts::keccakf1600_rot_64_min_len_20 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_20_range_settings = @@ -1913,16 +1806,14 @@ struct lookup_keccakf1600_theta_limb_22_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_22_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_low_22), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_64_min_len_22)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_22_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_22_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_low_22, ColumnAndShifts::keccakf1600_rot_64_min_len_22 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_22_range_settings = @@ -1937,16 +1828,14 @@ struct lookup_keccakf1600_theta_limb_24_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_24_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_low_24), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_64_min_len_24)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_24_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_24_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_low_24, ColumnAndShifts::keccakf1600_rot_64_min_len_24 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_24_range_settings = @@ -1961,16 +1850,14 @@ struct lookup_keccakf1600_theta_limb_31_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_31_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_low_31), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_64_min_len_31)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_31_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_31_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_low_31, ColumnAndShifts::keccakf1600_rot_64_min_len_31 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_31_range_settings = @@ -1985,16 +1872,14 @@ struct lookup_keccakf1600_theta_limb_34_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_34_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_low_34), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_64_min_len_34)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_34_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_34_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_low_34, ColumnAndShifts::keccakf1600_rot_64_min_len_34 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_34_range_settings = @@ -2009,16 +1894,14 @@ struct lookup_keccakf1600_theta_limb_42_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_THETA_LIMB_42_RANGE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_low_42), + ColumnExpression(ColumnAndShifts::keccakf1600_rot_64_min_len_42)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_theta_limb_42_range_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_theta_limb_42_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_state_theta_low_42, ColumnAndShifts::keccakf1600_rot_64_min_len_42 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_theta_limb_42_range_settings = @@ -2033,22 +1916,20 @@ struct lookup_keccakf1600_state_pi_and_00_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_00"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_10), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_22), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_00), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_00_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_00_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_10, - ColumnAndShifts::keccakf1600_state_rho_22, - ColumnAndShifts::keccakf1600_state_pi_and_00, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_00_settings = lookup_settings; @@ -2062,22 +1943,20 @@ struct lookup_keccakf1600_state_pi_and_01_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_01"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_11), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_02), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_01), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_01_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_01_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_11, - ColumnAndShifts::keccakf1600_state_rho_02, - ColumnAndShifts::keccakf1600_state_pi_and_01, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_01_settings = lookup_settings; @@ -2091,22 +1970,20 @@ struct lookup_keccakf1600_state_pi_and_02_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_02"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_12), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_32), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_02), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_02_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_02_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_12, - ColumnAndShifts::keccakf1600_state_rho_32, - ColumnAndShifts::keccakf1600_state_pi_and_02, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_02_settings = lookup_settings; @@ -2120,22 +1997,20 @@ struct lookup_keccakf1600_state_pi_and_03_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_03"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_13), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_12), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_03), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_03_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_03_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_13, - ColumnAndShifts::keccakf1600_state_rho_12, - ColumnAndShifts::keccakf1600_state_pi_and_03, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_03_settings = lookup_settings; @@ -2149,22 +2024,20 @@ struct lookup_keccakf1600_state_pi_and_04_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_04"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_14), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_42), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_04), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_04_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_04_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_14, - ColumnAndShifts::keccakf1600_state_rho_42, - ColumnAndShifts::keccakf1600_state_pi_and_04, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_04_settings = lookup_settings; @@ -2178,22 +2051,20 @@ struct lookup_keccakf1600_state_pi_and_10_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_10"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_20), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_33), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_10), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_10_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_10_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_20, - ColumnAndShifts::keccakf1600_state_rho_33, - ColumnAndShifts::keccakf1600_state_pi_and_10, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_10_settings = lookup_settings; @@ -2207,22 +2078,20 @@ struct lookup_keccakf1600_state_pi_and_11_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_11"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_21), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_13), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_11), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_11_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_11_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_21, - ColumnAndShifts::keccakf1600_state_rho_13, - ColumnAndShifts::keccakf1600_state_pi_and_11, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_11_settings = lookup_settings; @@ -2236,22 +2105,20 @@ struct lookup_keccakf1600_state_pi_and_12_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_12"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_22), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_43), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_12), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_12_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_12_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_22, - ColumnAndShifts::keccakf1600_state_rho_43, - ColumnAndShifts::keccakf1600_state_pi_and_12, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_12_settings = lookup_settings; @@ -2265,22 +2132,20 @@ struct lookup_keccakf1600_state_pi_and_13_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_13"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_23), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_23), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_13), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_13_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_13_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_23, - ColumnAndShifts::keccakf1600_state_rho_23, - ColumnAndShifts::keccakf1600_state_pi_and_13, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_13_settings = lookup_settings; @@ -2294,22 +2159,20 @@ struct lookup_keccakf1600_state_pi_and_14_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_14"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_24), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_03), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_14), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_14_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_14_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_24, - ColumnAndShifts::keccakf1600_state_rho_03, - ColumnAndShifts::keccakf1600_state_pi_and_14, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_14_settings = lookup_settings; @@ -2323,22 +2186,20 @@ struct lookup_keccakf1600_state_pi_and_20_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_20"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_30), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_44), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_20), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_20_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_20_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_30, - ColumnAndShifts::keccakf1600_state_rho_44, - ColumnAndShifts::keccakf1600_state_pi_and_20, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_20_settings = lookup_settings; @@ -2352,22 +2213,20 @@ struct lookup_keccakf1600_state_pi_and_21_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_21"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_31), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_24), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_21), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_21_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_21_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_31, - ColumnAndShifts::keccakf1600_state_rho_24, - ColumnAndShifts::keccakf1600_state_pi_and_21, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_21_settings = lookup_settings; @@ -2381,22 +2240,20 @@ struct lookup_keccakf1600_state_pi_and_22_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_22"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_32), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_04), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_22), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_22_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_22_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_32, - ColumnAndShifts::keccakf1600_state_rho_04, - ColumnAndShifts::keccakf1600_state_pi_and_22, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_22_settings = lookup_settings; @@ -2410,22 +2267,20 @@ struct lookup_keccakf1600_state_pi_and_23_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_23"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_33), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_34), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_23), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_23_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_23_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_33, - ColumnAndShifts::keccakf1600_state_rho_34, - ColumnAndShifts::keccakf1600_state_pi_and_23, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_23_settings = lookup_settings; @@ -2439,22 +2294,20 @@ struct lookup_keccakf1600_state_pi_and_24_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_24"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_34), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_14), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_24), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_24_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_24_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_34, - ColumnAndShifts::keccakf1600_state_rho_14, - ColumnAndShifts::keccakf1600_state_pi_and_24, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_24_settings = lookup_settings; @@ -2468,22 +2321,20 @@ struct lookup_keccakf1600_state_pi_and_30_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_30"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_40), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_00), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_30), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_30_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_30_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_40, - ColumnAndShifts::keccakf1600_state_theta_00, - ColumnAndShifts::keccakf1600_state_pi_and_30, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_30_settings = lookup_settings; @@ -2497,22 +2348,20 @@ struct lookup_keccakf1600_state_pi_and_31_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_31"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_41), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_30), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_31), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_31_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_31_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_41, - ColumnAndShifts::keccakf1600_state_rho_30, - ColumnAndShifts::keccakf1600_state_pi_and_31, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_31_settings = lookup_settings; @@ -2526,22 +2375,20 @@ struct lookup_keccakf1600_state_pi_and_32_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_32"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_42), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_10), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_32), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_32_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_32_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_42, - ColumnAndShifts::keccakf1600_state_rho_10, - ColumnAndShifts::keccakf1600_state_pi_and_32, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_32_settings = lookup_settings; @@ -2555,22 +2402,20 @@ struct lookup_keccakf1600_state_pi_and_33_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_33"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_43), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_40), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_33), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_33_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_33_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_43, - ColumnAndShifts::keccakf1600_state_rho_40, - ColumnAndShifts::keccakf1600_state_pi_and_33, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_33_settings = lookup_settings; @@ -2584,22 +2429,20 @@ struct lookup_keccakf1600_state_pi_and_34_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_34"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_44), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_20), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_34), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_34_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_34_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_44, - ColumnAndShifts::keccakf1600_state_rho_20, - ColumnAndShifts::keccakf1600_state_pi_and_34, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_34_settings = lookup_settings; @@ -2613,22 +2456,20 @@ struct lookup_keccakf1600_state_pi_and_40_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_40"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_00), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_11), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_40), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_40_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_40_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_00, - ColumnAndShifts::keccakf1600_state_rho_11, - ColumnAndShifts::keccakf1600_state_pi_and_40, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_40_settings = lookup_settings; @@ -2642,22 +2483,20 @@ struct lookup_keccakf1600_state_pi_and_41_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_41"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_01), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_41), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_41), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_41_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_41_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_01, - ColumnAndShifts::keccakf1600_state_rho_41, - ColumnAndShifts::keccakf1600_state_pi_and_41, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_41_settings = lookup_settings; @@ -2671,22 +2510,20 @@ struct lookup_keccakf1600_state_pi_and_42_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_42"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_02), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_21), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_42), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_42_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_42_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_02, - ColumnAndShifts::keccakf1600_state_rho_21, - ColumnAndShifts::keccakf1600_state_pi_and_42, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_42_settings = lookup_settings; @@ -2700,22 +2537,20 @@ struct lookup_keccakf1600_state_pi_and_43_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_43"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_03), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_01), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_43), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_43_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_43_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_03, - ColumnAndShifts::keccakf1600_state_rho_01, - ColumnAndShifts::keccakf1600_state_pi_and_43, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_43_settings = lookup_settings; @@ -2729,22 +2564,20 @@ struct lookup_keccakf1600_state_pi_and_44_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_PI_AND_44"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_and_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_not_04), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_31), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_44), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_pi_and_44_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_pi_and_44_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_and_op_id, - ColumnAndShifts::keccakf1600_state_pi_not_04, - ColumnAndShifts::keccakf1600_state_rho_31, - ColumnAndShifts::keccakf1600_state_pi_and_44, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_pi_and_44_settings = lookup_settings; @@ -2758,22 +2591,20 @@ struct lookup_keccakf1600_state_chi_00_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_00"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_theta_00), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_00), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_00), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_00_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_00_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_theta_00, - ColumnAndShifts::keccakf1600_state_pi_and_00, - ColumnAndShifts::keccakf1600_state_chi_00, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_00_settings = lookup_settings; @@ -2786,22 +2617,20 @@ struct lookup_keccakf1600_state_chi_01_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_01"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_30), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_01), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_01), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_01_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_01_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_30, - ColumnAndShifts::keccakf1600_state_pi_and_01, - ColumnAndShifts::keccakf1600_state_chi_01, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_01_settings = lookup_settings; @@ -2814,22 +2643,20 @@ struct lookup_keccakf1600_state_chi_02_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_02"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_10), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_02), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_02), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_02_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_02_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_10, - ColumnAndShifts::keccakf1600_state_pi_and_02, - ColumnAndShifts::keccakf1600_state_chi_02, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_02_settings = lookup_settings; @@ -2842,22 +2669,20 @@ struct lookup_keccakf1600_state_chi_03_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_03"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_40), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_03), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_03), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_03_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_03_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_40, - ColumnAndShifts::keccakf1600_state_pi_and_03, - ColumnAndShifts::keccakf1600_state_chi_03, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_03_settings = lookup_settings; @@ -2870,22 +2695,20 @@ struct lookup_keccakf1600_state_chi_04_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_04"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_20), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_04), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_04), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_04_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_04_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_20, - ColumnAndShifts::keccakf1600_state_pi_and_04, - ColumnAndShifts::keccakf1600_state_chi_04, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_04_settings = lookup_settings; @@ -2898,22 +2721,20 @@ struct lookup_keccakf1600_state_chi_10_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_10"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_11), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_10), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_10), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_10_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_10_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_11, - ColumnAndShifts::keccakf1600_state_pi_and_10, - ColumnAndShifts::keccakf1600_state_chi_10, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_10_settings = lookup_settings; @@ -2926,22 +2747,20 @@ struct lookup_keccakf1600_state_chi_11_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_11"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_41), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_11), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_11), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_11_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_11_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_41, - ColumnAndShifts::keccakf1600_state_pi_and_11, - ColumnAndShifts::keccakf1600_state_chi_11, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_11_settings = lookup_settings; @@ -2954,22 +2773,20 @@ struct lookup_keccakf1600_state_chi_12_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_12"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_21), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_12), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_12), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_12_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_12_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_21, - ColumnAndShifts::keccakf1600_state_pi_and_12, - ColumnAndShifts::keccakf1600_state_chi_12, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_12_settings = lookup_settings; @@ -2982,22 +2799,20 @@ struct lookup_keccakf1600_state_chi_13_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_13"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_01), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_13), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_13), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_13_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_13_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_01, - ColumnAndShifts::keccakf1600_state_pi_and_13, - ColumnAndShifts::keccakf1600_state_chi_13, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_13_settings = lookup_settings; @@ -3010,22 +2825,20 @@ struct lookup_keccakf1600_state_chi_14_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_14"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_31), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_14), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_14), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_14_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_14_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_31, - ColumnAndShifts::keccakf1600_state_pi_and_14, - ColumnAndShifts::keccakf1600_state_chi_14, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_14_settings = lookup_settings; @@ -3038,22 +2851,20 @@ struct lookup_keccakf1600_state_chi_20_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_20"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_22), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_20), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_20), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_20_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_20_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_22, - ColumnAndShifts::keccakf1600_state_pi_and_20, - ColumnAndShifts::keccakf1600_state_chi_20, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_20_settings = lookup_settings; @@ -3066,22 +2877,20 @@ struct lookup_keccakf1600_state_chi_21_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_21"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_02), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_21), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_21), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_21_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_21_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_02, - ColumnAndShifts::keccakf1600_state_pi_and_21, - ColumnAndShifts::keccakf1600_state_chi_21, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_21_settings = lookup_settings; @@ -3094,22 +2903,20 @@ struct lookup_keccakf1600_state_chi_22_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_22"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_32), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_22), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_22), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_22_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_22_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_32, - ColumnAndShifts::keccakf1600_state_pi_and_22, - ColumnAndShifts::keccakf1600_state_chi_22, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_22_settings = lookup_settings; @@ -3122,22 +2929,20 @@ struct lookup_keccakf1600_state_chi_23_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_23"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_12), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_23), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_23), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_23_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_23_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_12, - ColumnAndShifts::keccakf1600_state_pi_and_23, - ColumnAndShifts::keccakf1600_state_chi_23, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_23_settings = lookup_settings; @@ -3150,22 +2955,20 @@ struct lookup_keccakf1600_state_chi_24_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_24"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_42), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_24), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_24), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_24_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_24_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_42, - ColumnAndShifts::keccakf1600_state_pi_and_24, - ColumnAndShifts::keccakf1600_state_chi_24, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_24_settings = lookup_settings; @@ -3178,22 +2981,20 @@ struct lookup_keccakf1600_state_chi_30_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_30"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_33), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_30), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_30), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_30_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_30_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_33, - ColumnAndShifts::keccakf1600_state_pi_and_30, - ColumnAndShifts::keccakf1600_state_chi_30, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_30_settings = lookup_settings; @@ -3206,22 +3007,20 @@ struct lookup_keccakf1600_state_chi_31_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_31"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_13), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_31), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_31), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_31_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_31_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_13, - ColumnAndShifts::keccakf1600_state_pi_and_31, - ColumnAndShifts::keccakf1600_state_chi_31, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_31_settings = lookup_settings; @@ -3234,22 +3033,20 @@ struct lookup_keccakf1600_state_chi_32_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_32"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_43), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_32), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_32), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_32_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_32_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_43, - ColumnAndShifts::keccakf1600_state_pi_and_32, - ColumnAndShifts::keccakf1600_state_chi_32, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_32_settings = lookup_settings; @@ -3262,22 +3059,20 @@ struct lookup_keccakf1600_state_chi_33_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_33"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_23), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_33), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_33), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_33_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_33_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_23, - ColumnAndShifts::keccakf1600_state_pi_and_33, - ColumnAndShifts::keccakf1600_state_chi_33, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_33_settings = lookup_settings; @@ -3290,22 +3085,20 @@ struct lookup_keccakf1600_state_chi_34_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_34"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_03), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_34), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_34), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_34_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_34_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_03, - ColumnAndShifts::keccakf1600_state_pi_and_34, - ColumnAndShifts::keccakf1600_state_chi_34, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_34_settings = lookup_settings; @@ -3318,22 +3111,20 @@ struct lookup_keccakf1600_state_chi_40_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_40"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_44), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_40), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_40), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_40_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_40_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_44, - ColumnAndShifts::keccakf1600_state_pi_and_40, - ColumnAndShifts::keccakf1600_state_chi_40, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_40_settings = lookup_settings; @@ -3346,22 +3137,20 @@ struct lookup_keccakf1600_state_chi_41_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_41"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_24), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_41), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_41), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_41_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_41_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_24, - ColumnAndShifts::keccakf1600_state_pi_and_41, - ColumnAndShifts::keccakf1600_state_chi_41, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_41_settings = lookup_settings; @@ -3374,22 +3163,20 @@ struct lookup_keccakf1600_state_chi_42_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_42"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_04), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_42), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_42), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_42_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_42_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_04, - ColumnAndShifts::keccakf1600_state_pi_and_42, - ColumnAndShifts::keccakf1600_state_chi_42, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_42_settings = lookup_settings; @@ -3402,22 +3189,20 @@ struct lookup_keccakf1600_state_chi_43_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_43"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_34), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_43), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_43), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_43_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_43_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_34, - ColumnAndShifts::keccakf1600_state_pi_and_43, - ColumnAndShifts::keccakf1600_state_chi_43, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_43_settings = lookup_settings; @@ -3430,22 +3215,20 @@ struct lookup_keccakf1600_state_chi_44_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_CHI_44"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_rho_14), + ColumnExpression(ColumnAndShifts::keccakf1600_state_pi_and_44), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_44), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_chi_44_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_chi_44_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_rho_14, - ColumnAndShifts::keccakf1600_state_pi_and_44, - ColumnAndShifts::keccakf1600_state_chi_44, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_chi_44_settings = lookup_settings; @@ -3458,16 +3241,15 @@ struct lookup_keccakf1600_round_cst_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_ROUND_CST"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_keccak; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_keccak); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_round), + ColumnExpression(ColumnAndShifts::keccakf1600_round_cst)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::precomputed_keccak_round_constant)); static constexpr Column COUNTS = Column::lookup_keccakf1600_round_cst_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_round_cst_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_round, ColumnAndShifts::keccakf1600_round_cst - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::precomputed_keccak_round_constant - }; }; using lookup_keccakf1600_round_cst_settings = lookup_settings; @@ -3480,22 +3262,20 @@ struct lookup_keccakf1600_state_iota_00_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_STATE_IOTA_00"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_sel_no_error; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_sel_no_error); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_bitwise_xor_op_id), + ColumnExpression(ColumnAndShifts::keccakf1600_state_chi_00), + ColumnExpression(ColumnAndShifts::keccakf1600_round_cst), + ColumnExpression(ColumnAndShifts::keccakf1600_state_iota_00), + ColumnExpression(ColumnAndShifts::keccakf1600_tag_u64)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_keccakf1600_state_iota_00_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_state_iota_00_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_bitwise_xor_op_id, - ColumnAndShifts::keccakf1600_state_chi_00, - ColumnAndShifts::keccakf1600_round_cst, - ColumnAndShifts::keccakf1600_state_iota_00, - ColumnAndShifts::keccakf1600_tag_u64 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_keccakf1600_state_iota_00_settings = lookup_settings; @@ -3508,16 +3288,14 @@ struct lookup_keccakf1600_src_abs_diff_positive_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_SRC_ABS_DIFF_POSITIVE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_start; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_start); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_src_abs_diff), + ColumnExpression(ColumnAndShifts::keccakf1600_thirty_two)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_src_abs_diff_positive_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_src_abs_diff_positive_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_src_abs_diff, ColumnAndShifts::keccakf1600_thirty_two - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_src_abs_diff_positive_settings = @@ -3532,16 +3310,14 @@ struct lookup_keccakf1600_dst_abs_diff_positive_settings_ { static constexpr std::string_view NAME = "LOOKUP_KECCAKF1600_DST_ABS_DIFF_POSITIVE"; static constexpr std::string_view RELATION_NAME = "keccakf1600"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::keccakf1600_start; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::keccakf1600_start); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::keccakf1600_dst_abs_diff), + ColumnExpression(ColumnAndShifts::keccakf1600_thirty_two)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_keccakf1600_dst_abs_diff_positive_counts; static constexpr Column INVERSES = Column::lookup_keccakf1600_dst_abs_diff_positive_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::keccakf1600_dst_abs_diff, ColumnAndShifts::keccakf1600_thirty_two - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_keccakf1600_dst_abs_diff_positive_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_l1_to_l2_message_exists.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_l1_to_l2_message_exists.hpp index 65b64d851081..f40b43fd8f7c 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_l1_to_l2_message_exists.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_l1_to_l2_message_exists.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,18 +18,18 @@ struct lookup_l1_to_l2_message_exists_l1_to_l2_msg_leaf_index_in_range_settings_ static constexpr std::string_view NAME = "LOOKUP_L1_TO_L2_MESSAGE_EXISTS_L1_TO_L2_MSG_LEAF_INDEX_IN_RANGE"; static constexpr std::string_view RELATION_NAME = "l1_to_l2_message_exists"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::execution_sel_execute_l1_to_l2_message_exists; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::execution_sel_execute_l1_to_l2_message_exists); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_l1_to_l2_msg_tree_leaf_count), + ColumnExpression(ColumnAndShifts::execution_register_1_), + ColumnExpression(ColumnAndShifts::execution_l1_to_l2_msg_leaf_in_range)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_l1_to_l2_message_exists_l1_to_l2_msg_leaf_index_in_range_counts; static constexpr Column INVERSES = Column::lookup_l1_to_l2_message_exists_l1_to_l2_msg_leaf_index_in_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_l1_to_l2_msg_tree_leaf_count, - ColumnAndShifts::execution_register_1_, - ColumnAndShifts::execution_l1_to_l2_msg_leaf_in_range - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_l1_to_l2_message_exists_l1_to_l2_msg_leaf_index_in_range_settings = @@ -43,22 +44,19 @@ struct lookup_l1_to_l2_message_exists_l1_to_l2_msg_read_settings_ { static constexpr std::string_view NAME = "LOOKUP_L1_TO_L2_MESSAGE_EXISTS_L1_TO_L2_MSG_READ"; static constexpr std::string_view RELATION_NAME = "l1_to_l2_message_exists"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::execution_l1_to_l2_msg_leaf_in_range; - static constexpr Column DST_SELECTOR = Column::l1_to_l2_message_tree_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_l1_to_l2_msg_leaf_in_range); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::l1_to_l2_message_tree_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::execution_register_0_), + ColumnExpression(ColumnAndShifts::execution_register_1_), + ColumnExpression(ColumnAndShifts::execution_l1_l2_tree_root), + ColumnExpression(ColumnAndShifts::execution_register_2_)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::l1_to_l2_message_tree_check_msg_hash), + ColumnExpression(ColumnAndShifts::l1_to_l2_message_tree_check_leaf_index), + ColumnExpression(ColumnAndShifts::l1_to_l2_message_tree_check_root), + ColumnExpression(ColumnAndShifts::l1_to_l2_message_tree_check_exists)); static constexpr Column COUNTS = Column::lookup_l1_to_l2_message_exists_l1_to_l2_msg_read_counts; static constexpr Column INVERSES = Column::lookup_l1_to_l2_message_exists_l1_to_l2_msg_read_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_register_0_, - ColumnAndShifts::execution_register_1_, - ColumnAndShifts::execution_l1_l2_tree_root, - ColumnAndShifts::execution_register_2_ - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::l1_to_l2_message_tree_check_msg_hash, - ColumnAndShifts::l1_to_l2_message_tree_check_leaf_index, - ColumnAndShifts::l1_to_l2_message_tree_check_root, - ColumnAndShifts::l1_to_l2_message_tree_check_exists - }; }; using lookup_l1_to_l2_message_exists_l1_to_l2_msg_read_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_l1_to_l2_message_tree_check.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_l1_to_l2_message_tree_check.hpp index 2f55ce14bb58..ad6d95e54de3 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_l1_to_l2_message_tree_check.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_l1_to_l2_message_tree_check.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,22 +18,19 @@ struct lookup_l1_to_l2_message_tree_check_merkle_check_settings_ { static constexpr std::string_view NAME = "LOOKUP_L1_TO_L2_MESSAGE_TREE_CHECK_MERKLE_CHECK"; static constexpr std::string_view RELATION_NAME = "l1_to_l2_message_tree_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::l1_to_l2_message_tree_check_sel; - static constexpr Column DST_SELECTOR = Column::merkle_check_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::l1_to_l2_message_tree_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::merkle_check_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::l1_to_l2_message_tree_check_leaf_value), + ColumnExpression(ColumnAndShifts::l1_to_l2_message_tree_check_leaf_index), + ColumnExpression(ColumnAndShifts::l1_to_l2_message_tree_check_l1_to_l2_message_tree_height), + ColumnExpression(ColumnAndShifts::l1_to_l2_message_tree_check_root)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::merkle_check_read_node), + ColumnExpression(ColumnAndShifts::merkle_check_index), + ColumnExpression(ColumnAndShifts::merkle_check_path_len), + ColumnExpression(ColumnAndShifts::merkle_check_read_root)); static constexpr Column COUNTS = Column::lookup_l1_to_l2_message_tree_check_merkle_check_counts; static constexpr Column INVERSES = Column::lookup_l1_to_l2_message_tree_check_merkle_check_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::l1_to_l2_message_tree_check_leaf_value, - ColumnAndShifts::l1_to_l2_message_tree_check_leaf_index, - ColumnAndShifts::l1_to_l2_message_tree_check_l1_to_l2_message_tree_height, - ColumnAndShifts::l1_to_l2_message_tree_check_root - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::merkle_check_read_node, - ColumnAndShifts::merkle_check_index, - ColumnAndShifts::merkle_check_path_len, - ColumnAndShifts::merkle_check_read_root - }; }; using lookup_l1_to_l2_message_tree_check_merkle_check_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_merkle_check.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_merkle_check.hpp index 86ecf0ce4611..33529b6957b4 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_merkle_check.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_merkle_check.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,24 +18,20 @@ struct lookup_merkle_check_merkle_poseidon2_read_settings_ { static constexpr std::string_view NAME = "LOOKUP_MERKLE_CHECK_MERKLE_POSEIDON2_READ"; static constexpr std::string_view RELATION_NAME = "merkle_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::merkle_check_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::merkle_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::merkle_check_read_left_node), + ColumnExpression(ColumnAndShifts::merkle_check_read_right_node), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::merkle_check_constant_2), + ColumnExpression(ColumnAndShifts::merkle_check_read_output_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_len), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_merkle_check_merkle_poseidon2_read_counts; static constexpr Column INVERSES = Column::lookup_merkle_check_merkle_poseidon2_read_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::merkle_check_read_left_node, - ColumnAndShifts::merkle_check_read_right_node, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::merkle_check_constant_2, - ColumnAndShifts::merkle_check_read_output_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_input_len, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_merkle_check_merkle_poseidon2_read_settings = @@ -49,24 +46,21 @@ struct lookup_merkle_check_merkle_poseidon2_write_settings_ { static constexpr std::string_view NAME = "LOOKUP_MERKLE_CHECK_MERKLE_POSEIDON2_WRITE"; static constexpr std::string_view RELATION_NAME = "merkle_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::merkle_check_write; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::merkle_check_write); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::merkle_check_write_left_node), + ColumnExpression(ColumnAndShifts::merkle_check_write_right_node), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::merkle_check_constant_2), + ColumnExpression(ColumnAndShifts::merkle_check_write_output_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_len), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_merkle_check_merkle_poseidon2_write_counts; static constexpr Column INVERSES = Column::lookup_merkle_check_merkle_poseidon2_write_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::merkle_check_write_left_node, - ColumnAndShifts::merkle_check_write_right_node, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::merkle_check_constant_2, - ColumnAndShifts::merkle_check_write_output_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_input_len, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_merkle_check_merkle_poseidon2_write_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_note_hash_tree_check.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_note_hash_tree_check.hpp index 6e5703abf978..43949132b286 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_note_hash_tree_check.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_note_hash_tree_check.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,24 +18,21 @@ struct lookup_note_hash_tree_check_silo_poseidon2_settings_ { static constexpr std::string_view NAME = "LOOKUP_NOTE_HASH_TREE_CHECK_SILO_POSEIDON2"; static constexpr std::string_view RELATION_NAME = "note_hash_tree_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::note_hash_tree_check_should_silo; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::note_hash_tree_check_should_silo); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::note_hash_tree_check_sel), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_siloing_separator), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_address), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_note_hash), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_siloed_note_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_start), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_note_hash_tree_check_silo_poseidon2_counts; static constexpr Column INVERSES = Column::lookup_note_hash_tree_check_silo_poseidon2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::note_hash_tree_check_sel, - ColumnAndShifts::note_hash_tree_check_siloing_separator, - ColumnAndShifts::note_hash_tree_check_address, - ColumnAndShifts::note_hash_tree_check_note_hash, - ColumnAndShifts::note_hash_tree_check_siloed_note_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_start, - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_note_hash_tree_check_silo_poseidon2_settings = @@ -49,17 +47,15 @@ struct lookup_note_hash_tree_check_read_first_nullifier_settings_ { static constexpr std::string_view NAME = "LOOKUP_NOTE_HASH_TREE_CHECK_READ_FIRST_NULLIFIER"; static constexpr std::string_view RELATION_NAME = "note_hash_tree_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::note_hash_tree_check_should_unique; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::note_hash_tree_check_should_unique); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::note_hash_tree_check_first_nullifier_pi_index), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_first_nullifier)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_)); static constexpr Column COUNTS = Column::lookup_note_hash_tree_check_read_first_nullifier_counts; static constexpr Column INVERSES = Column::lookup_note_hash_tree_check_read_first_nullifier_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::note_hash_tree_check_first_nullifier_pi_index, - ColumnAndShifts::note_hash_tree_check_first_nullifier - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_ - }; }; using lookup_note_hash_tree_check_read_first_nullifier_settings = @@ -74,24 +70,21 @@ struct lookup_note_hash_tree_check_nonce_computation_poseidon2_settings_ { static constexpr std::string_view NAME = "LOOKUP_NOTE_HASH_TREE_CHECK_NONCE_COMPUTATION_POSEIDON2"; static constexpr std::string_view RELATION_NAME = "note_hash_tree_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::note_hash_tree_check_should_unique; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::note_hash_tree_check_should_unique); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::note_hash_tree_check_sel), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_nonce_separator), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_first_nullifier), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_note_hash_index), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_nonce)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_start), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_note_hash_tree_check_nonce_computation_poseidon2_counts; static constexpr Column INVERSES = Column::lookup_note_hash_tree_check_nonce_computation_poseidon2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::note_hash_tree_check_sel, - ColumnAndShifts::note_hash_tree_check_nonce_separator, - ColumnAndShifts::note_hash_tree_check_first_nullifier, - ColumnAndShifts::note_hash_tree_check_note_hash_index, - ColumnAndShifts::note_hash_tree_check_nonce - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_start, - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_note_hash_tree_check_nonce_computation_poseidon2_settings = @@ -106,24 +99,21 @@ struct lookup_note_hash_tree_check_unique_note_hash_poseidon2_settings_ { static constexpr std::string_view NAME = "LOOKUP_NOTE_HASH_TREE_CHECK_UNIQUE_NOTE_HASH_POSEIDON2"; static constexpr std::string_view RELATION_NAME = "note_hash_tree_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::note_hash_tree_check_should_unique; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::note_hash_tree_check_should_unique); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::note_hash_tree_check_sel), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_unique_note_hash_separator), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_nonce), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_siloed_note_hash), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_unique_note_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_start), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_note_hash_tree_check_unique_note_hash_poseidon2_counts; static constexpr Column INVERSES = Column::lookup_note_hash_tree_check_unique_note_hash_poseidon2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::note_hash_tree_check_sel, - ColumnAndShifts::note_hash_tree_check_unique_note_hash_separator, - ColumnAndShifts::note_hash_tree_check_nonce, - ColumnAndShifts::note_hash_tree_check_siloed_note_hash, - ColumnAndShifts::note_hash_tree_check_unique_note_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_start, - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_note_hash_tree_check_unique_note_hash_poseidon2_settings = @@ -138,25 +128,25 @@ struct lookup_note_hash_tree_check_merkle_check_settings_ { static constexpr std::string_view NAME = "LOOKUP_NOTE_HASH_TREE_CHECK_MERKLE_CHECK"; static constexpr std::string_view RELATION_NAME = "note_hash_tree_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 7; - static constexpr Column SRC_SELECTOR = Column::note_hash_tree_check_sel; - static constexpr Column DST_SELECTOR = Column::merkle_check_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::note_hash_tree_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::merkle_check_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::note_hash_tree_check_write), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_prev_leaf_value), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_next_leaf_value), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_leaf_index), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_note_hash_tree_height), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_prev_root), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_next_root)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::merkle_check_write), + ColumnExpression(ColumnAndShifts::merkle_check_read_node), + ColumnExpression(ColumnAndShifts::merkle_check_write_node), + ColumnExpression(ColumnAndShifts::merkle_check_index), + ColumnExpression(ColumnAndShifts::merkle_check_path_len), + ColumnExpression(ColumnAndShifts::merkle_check_read_root), + ColumnExpression(ColumnAndShifts::merkle_check_write_root)); static constexpr Column COUNTS = Column::lookup_note_hash_tree_check_merkle_check_counts; static constexpr Column INVERSES = Column::lookup_note_hash_tree_check_merkle_check_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::note_hash_tree_check_write, - ColumnAndShifts::note_hash_tree_check_prev_leaf_value, - ColumnAndShifts::note_hash_tree_check_next_leaf_value, - ColumnAndShifts::note_hash_tree_check_leaf_index, - ColumnAndShifts::note_hash_tree_check_note_hash_tree_height, - ColumnAndShifts::note_hash_tree_check_prev_root, - ColumnAndShifts::note_hash_tree_check_next_root - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::merkle_check_write, ColumnAndShifts::merkle_check_read_node, - ColumnAndShifts::merkle_check_write_node, ColumnAndShifts::merkle_check_index, - ColumnAndShifts::merkle_check_path_len, ColumnAndShifts::merkle_check_read_root, - ColumnAndShifts::merkle_check_write_root - }; }; using lookup_note_hash_tree_check_merkle_check_settings = @@ -171,17 +161,16 @@ struct lookup_note_hash_tree_check_write_note_hash_to_public_inputs_settings_ { static constexpr std::string_view NAME = "LOOKUP_NOTE_HASH_TREE_CHECK_WRITE_NOTE_HASH_TO_PUBLIC_INPUTS"; static constexpr std::string_view RELATION_NAME = "note_hash_tree_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::note_hash_tree_check_should_write_to_public_inputs; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::note_hash_tree_check_should_write_to_public_inputs); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::note_hash_tree_check_public_inputs_index), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_unique_note_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_)); static constexpr Column COUNTS = Column::lookup_note_hash_tree_check_write_note_hash_to_public_inputs_counts; static constexpr Column INVERSES = Column::lookup_note_hash_tree_check_write_note_hash_to_public_inputs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::note_hash_tree_check_public_inputs_index, - ColumnAndShifts::note_hash_tree_check_unique_note_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_ - }; }; using lookup_note_hash_tree_check_write_note_hash_to_public_inputs_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_notehash_exists.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_notehash_exists.hpp index 86533b71a487..ed8c4bdfe345 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_notehash_exists.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_notehash_exists.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,18 +18,17 @@ struct lookup_notehash_exists_note_hash_leaf_index_in_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_NOTEHASH_EXISTS_NOTE_HASH_LEAF_INDEX_IN_RANGE"; static constexpr std::string_view RELATION_NAME = "notehash_exists"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::execution_sel_execute_notehash_exists; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_execute_notehash_exists); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_note_hash_tree_leaf_count), + ColumnExpression(ColumnAndShifts::execution_register_1_), + ColumnExpression(ColumnAndShifts::execution_note_hash_leaf_in_range)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_notehash_exists_note_hash_leaf_index_in_range_counts; static constexpr Column INVERSES = Column::lookup_notehash_exists_note_hash_leaf_index_in_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_note_hash_tree_leaf_count, - ColumnAndShifts::execution_register_1_, - ColumnAndShifts::execution_note_hash_leaf_in_range - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_notehash_exists_note_hash_leaf_index_in_range_settings = @@ -43,24 +43,22 @@ struct lookup_notehash_exists_note_hash_read_settings_ { static constexpr std::string_view NAME = "LOOKUP_NOTEHASH_EXISTS_NOTE_HASH_READ"; static constexpr std::string_view RELATION_NAME = "notehash_exists"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::execution_note_hash_leaf_in_range; - static constexpr Column DST_SELECTOR = Column::note_hash_tree_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_note_hash_leaf_in_range); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::note_hash_tree_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::execution_register_0_), + ColumnExpression(ColumnAndShifts::execution_register_1_), + ColumnExpression(ColumnAndShifts::execution_prev_note_hash_tree_root), + ColumnExpression(ColumnAndShifts::execution_register_2_)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::note_hash_tree_check_write), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_note_hash), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_leaf_index), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_prev_root), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_exists)); static constexpr Column COUNTS = Column::lookup_notehash_exists_note_hash_read_counts; static constexpr Column INVERSES = Column::lookup_notehash_exists_note_hash_read_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::execution_register_0_, - ColumnAndShifts::execution_register_1_, - ColumnAndShifts::execution_prev_note_hash_tree_root, - ColumnAndShifts::execution_register_2_ - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::note_hash_tree_check_write, - ColumnAndShifts::note_hash_tree_check_note_hash, - ColumnAndShifts::note_hash_tree_check_leaf_index, - ColumnAndShifts::note_hash_tree_check_prev_root, - ColumnAndShifts::note_hash_tree_check_exists - }; }; using lookup_notehash_exists_note_hash_read_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_nullifier_check.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_nullifier_check.hpp index f185ad23ff6c..56dac69f0acf 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_nullifier_check.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_nullifier_check.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,24 +18,21 @@ struct lookup_nullifier_check_silo_poseidon2_settings_ { static constexpr std::string_view NAME = "LOOKUP_NULLIFIER_CHECK_SILO_POSEIDON2"; static constexpr std::string_view RELATION_NAME = "nullifier_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::nullifier_check_should_silo; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::nullifier_check_should_silo); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::nullifier_check_sel), + ColumnExpression(ColumnAndShifts::nullifier_check_siloing_separator), + ColumnExpression(ColumnAndShifts::nullifier_check_address), + ColumnExpression(ColumnAndShifts::nullifier_check_nullifier), + ColumnExpression(ColumnAndShifts::nullifier_check_siloed_nullifier)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_start), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_nullifier_check_silo_poseidon2_counts; static constexpr Column INVERSES = Column::lookup_nullifier_check_silo_poseidon2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::nullifier_check_sel, - ColumnAndShifts::nullifier_check_siloing_separator, - ColumnAndShifts::nullifier_check_address, - ColumnAndShifts::nullifier_check_nullifier, - ColumnAndShifts::nullifier_check_siloed_nullifier - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_start, - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_nullifier_check_silo_poseidon2_settings = lookup_settings; @@ -48,22 +46,19 @@ struct lookup_nullifier_check_low_leaf_poseidon2_settings_ { static constexpr std::string_view NAME = "LOOKUP_NULLIFIER_CHECK_LOW_LEAF_POSEIDON2"; static constexpr std::string_view RELATION_NAME = "nullifier_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::nullifier_check_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::nullifier_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::nullifier_check_low_leaf_nullifier), + ColumnExpression(ColumnAndShifts::nullifier_check_low_leaf_next_nullifier), + ColumnExpression(ColumnAndShifts::nullifier_check_low_leaf_next_index), + ColumnExpression(ColumnAndShifts::nullifier_check_low_leaf_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_nullifier_check_low_leaf_poseidon2_counts; static constexpr Column INVERSES = Column::lookup_nullifier_check_low_leaf_poseidon2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::nullifier_check_low_leaf_nullifier, - ColumnAndShifts::nullifier_check_low_leaf_next_nullifier, - ColumnAndShifts::nullifier_check_low_leaf_next_index, - ColumnAndShifts::nullifier_check_low_leaf_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_nullifier_check_low_leaf_poseidon2_settings = @@ -78,22 +73,19 @@ struct lookup_nullifier_check_updated_low_leaf_poseidon2_settings_ { static constexpr std::string_view NAME = "LOOKUP_NULLIFIER_CHECK_UPDATED_LOW_LEAF_POSEIDON2"; static constexpr std::string_view RELATION_NAME = "nullifier_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::nullifier_check_should_insert; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::nullifier_check_should_insert); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::nullifier_check_low_leaf_nullifier), + ColumnExpression(ColumnAndShifts::nullifier_check_updated_low_leaf_next_nullifier), + ColumnExpression(ColumnAndShifts::nullifier_check_updated_low_leaf_next_index), + ColumnExpression(ColumnAndShifts::nullifier_check_updated_low_leaf_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_nullifier_check_updated_low_leaf_poseidon2_counts; static constexpr Column INVERSES = Column::lookup_nullifier_check_updated_low_leaf_poseidon2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::nullifier_check_low_leaf_nullifier, - ColumnAndShifts::nullifier_check_updated_low_leaf_next_nullifier, - ColumnAndShifts::nullifier_check_updated_low_leaf_next_index, - ColumnAndShifts::nullifier_check_updated_low_leaf_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_nullifier_check_updated_low_leaf_poseidon2_settings = @@ -108,22 +100,25 @@ struct lookup_nullifier_check_low_leaf_merkle_check_settings_ { static constexpr std::string_view NAME = "LOOKUP_NULLIFIER_CHECK_LOW_LEAF_MERKLE_CHECK"; static constexpr std::string_view RELATION_NAME = "nullifier_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 7; - static constexpr Column SRC_SELECTOR = Column::nullifier_check_sel; - static constexpr Column DST_SELECTOR = Column::merkle_check_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::nullifier_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::merkle_check_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::nullifier_check_should_insert), + ColumnExpression(ColumnAndShifts::nullifier_check_low_leaf_hash), + ColumnExpression(ColumnAndShifts::nullifier_check_updated_low_leaf_hash), + ColumnExpression(ColumnAndShifts::nullifier_check_low_leaf_index), + ColumnExpression(ColumnAndShifts::nullifier_check_tree_height), + ColumnExpression(ColumnAndShifts::nullifier_check_root), + ColumnExpression(ColumnAndShifts::nullifier_check_intermediate_root)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::merkle_check_write), + ColumnExpression(ColumnAndShifts::merkle_check_read_node), + ColumnExpression(ColumnAndShifts::merkle_check_write_node), + ColumnExpression(ColumnAndShifts::merkle_check_index), + ColumnExpression(ColumnAndShifts::merkle_check_path_len), + ColumnExpression(ColumnAndShifts::merkle_check_read_root), + ColumnExpression(ColumnAndShifts::merkle_check_write_root)); static constexpr Column COUNTS = Column::lookup_nullifier_check_low_leaf_merkle_check_counts; static constexpr Column INVERSES = Column::lookup_nullifier_check_low_leaf_merkle_check_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::nullifier_check_should_insert, ColumnAndShifts::nullifier_check_low_leaf_hash, - ColumnAndShifts::nullifier_check_updated_low_leaf_hash, ColumnAndShifts::nullifier_check_low_leaf_index, - ColumnAndShifts::nullifier_check_tree_height, ColumnAndShifts::nullifier_check_root, - ColumnAndShifts::nullifier_check_intermediate_root - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::merkle_check_write, ColumnAndShifts::merkle_check_read_node, - ColumnAndShifts::merkle_check_write_node, ColumnAndShifts::merkle_check_index, - ColumnAndShifts::merkle_check_path_len, ColumnAndShifts::merkle_check_read_root, - ColumnAndShifts::merkle_check_write_root - }; }; using lookup_nullifier_check_low_leaf_merkle_check_settings = @@ -138,18 +133,17 @@ struct lookup_nullifier_check_low_leaf_nullifier_validation_settings_ { static constexpr std::string_view NAME = "LOOKUP_NULLIFIER_CHECK_LOW_LEAF_NULLIFIER_VALIDATION"; static constexpr std::string_view RELATION_NAME = "nullifier_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::nullifier_check_leaf_not_exists; - static constexpr Column DST_SELECTOR = Column::ff_gt_sel_gt; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::nullifier_check_leaf_not_exists); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ff_gt_sel_gt); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::nullifier_check_siloed_nullifier), + ColumnExpression(ColumnAndShifts::nullifier_check_low_leaf_nullifier), + ColumnExpression(ColumnAndShifts::nullifier_check_sel)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ff_gt_a), + ColumnExpression(ColumnAndShifts::ff_gt_b), + ColumnExpression(ColumnAndShifts::ff_gt_result)); static constexpr Column COUNTS = Column::lookup_nullifier_check_low_leaf_nullifier_validation_counts; static constexpr Column INVERSES = Column::lookup_nullifier_check_low_leaf_nullifier_validation_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::nullifier_check_siloed_nullifier, - ColumnAndShifts::nullifier_check_low_leaf_nullifier, - ColumnAndShifts::nullifier_check_sel - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::ff_gt_a, - ColumnAndShifts::ff_gt_b, - ColumnAndShifts::ff_gt_result }; }; using lookup_nullifier_check_low_leaf_nullifier_validation_settings = @@ -164,18 +158,18 @@ struct lookup_nullifier_check_low_leaf_next_nullifier_validation_settings_ { static constexpr std::string_view NAME = "LOOKUP_NULLIFIER_CHECK_LOW_LEAF_NEXT_NULLIFIER_VALIDATION"; static constexpr std::string_view RELATION_NAME = "nullifier_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::nullifier_check_next_nullifier_is_nonzero; - static constexpr Column DST_SELECTOR = Column::ff_gt_sel_gt; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::nullifier_check_next_nullifier_is_nonzero); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ff_gt_sel_gt); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::nullifier_check_low_leaf_next_nullifier), + ColumnExpression(ColumnAndShifts::nullifier_check_siloed_nullifier), + ColumnExpression(ColumnAndShifts::nullifier_check_sel)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ff_gt_a), + ColumnExpression(ColumnAndShifts::ff_gt_b), + ColumnExpression(ColumnAndShifts::ff_gt_result)); static constexpr Column COUNTS = Column::lookup_nullifier_check_low_leaf_next_nullifier_validation_counts; static constexpr Column INVERSES = Column::lookup_nullifier_check_low_leaf_next_nullifier_validation_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::nullifier_check_low_leaf_next_nullifier, - ColumnAndShifts::nullifier_check_siloed_nullifier, - ColumnAndShifts::nullifier_check_sel - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::ff_gt_a, - ColumnAndShifts::ff_gt_b, - ColumnAndShifts::ff_gt_result }; }; using lookup_nullifier_check_low_leaf_next_nullifier_validation_settings = @@ -190,22 +184,19 @@ struct lookup_nullifier_check_new_leaf_poseidon2_settings_ { static constexpr std::string_view NAME = "LOOKUP_NULLIFIER_CHECK_NEW_LEAF_POSEIDON2"; static constexpr std::string_view RELATION_NAME = "nullifier_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::nullifier_check_should_insert; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::nullifier_check_should_insert); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::nullifier_check_siloed_nullifier), + ColumnExpression(ColumnAndShifts::nullifier_check_low_leaf_next_nullifier), + ColumnExpression(ColumnAndShifts::nullifier_check_low_leaf_next_index), + ColumnExpression(ColumnAndShifts::nullifier_check_new_leaf_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_nullifier_check_new_leaf_poseidon2_counts; static constexpr Column INVERSES = Column::lookup_nullifier_check_new_leaf_poseidon2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::nullifier_check_siloed_nullifier, - ColumnAndShifts::nullifier_check_low_leaf_next_nullifier, - ColumnAndShifts::nullifier_check_low_leaf_next_index, - ColumnAndShifts::nullifier_check_new_leaf_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_nullifier_check_new_leaf_poseidon2_settings = @@ -220,22 +211,25 @@ struct lookup_nullifier_check_new_leaf_merkle_check_settings_ { static constexpr std::string_view NAME = "LOOKUP_NULLIFIER_CHECK_NEW_LEAF_MERKLE_CHECK"; static constexpr std::string_view RELATION_NAME = "nullifier_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 7; - static constexpr Column SRC_SELECTOR = Column::nullifier_check_should_insert; - static constexpr Column DST_SELECTOR = Column::merkle_check_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::nullifier_check_should_insert); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::merkle_check_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::nullifier_check_sel), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::nullifier_check_new_leaf_hash), + ColumnExpression(ColumnAndShifts::nullifier_check_tree_size_before_write), + ColumnExpression(ColumnAndShifts::nullifier_check_tree_height), + ColumnExpression(ColumnAndShifts::nullifier_check_intermediate_root), + ColumnExpression(ColumnAndShifts::nullifier_check_write_root)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::merkle_check_write), + ColumnExpression(ColumnAndShifts::merkle_check_read_node), + ColumnExpression(ColumnAndShifts::merkle_check_write_node), + ColumnExpression(ColumnAndShifts::merkle_check_index), + ColumnExpression(ColumnAndShifts::merkle_check_path_len), + ColumnExpression(ColumnAndShifts::merkle_check_read_root), + ColumnExpression(ColumnAndShifts::merkle_check_write_root)); static constexpr Column COUNTS = Column::lookup_nullifier_check_new_leaf_merkle_check_counts; static constexpr Column INVERSES = Column::lookup_nullifier_check_new_leaf_merkle_check_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::nullifier_check_sel, ColumnAndShifts::precomputed_zero, - ColumnAndShifts::nullifier_check_new_leaf_hash, ColumnAndShifts::nullifier_check_tree_size_before_write, - ColumnAndShifts::nullifier_check_tree_height, ColumnAndShifts::nullifier_check_intermediate_root, - ColumnAndShifts::nullifier_check_write_root - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::merkle_check_write, ColumnAndShifts::merkle_check_read_node, - ColumnAndShifts::merkle_check_write_node, ColumnAndShifts::merkle_check_index, - ColumnAndShifts::merkle_check_path_len, ColumnAndShifts::merkle_check_read_root, - ColumnAndShifts::merkle_check_write_root - }; }; using lookup_nullifier_check_new_leaf_merkle_check_settings = @@ -250,16 +244,16 @@ struct lookup_nullifier_check_write_nullifier_to_public_inputs_settings_ { static constexpr std::string_view NAME = "LOOKUP_NULLIFIER_CHECK_WRITE_NULLIFIER_TO_PUBLIC_INPUTS"; static constexpr std::string_view RELATION_NAME = "nullifier_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::nullifier_check_should_write_to_public_inputs; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::nullifier_check_should_write_to_public_inputs); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::nullifier_check_public_inputs_index), + ColumnExpression(ColumnAndShifts::nullifier_check_siloed_nullifier)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_)); static constexpr Column COUNTS = Column::lookup_nullifier_check_write_nullifier_to_public_inputs_counts; static constexpr Column INVERSES = Column::lookup_nullifier_check_write_nullifier_to_public_inputs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::nullifier_check_public_inputs_index, ColumnAndShifts::nullifier_check_siloed_nullifier - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_ - }; }; using lookup_nullifier_check_write_nullifier_to_public_inputs_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_nullifier_exists.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_nullifier_exists.hpp index 30b3fa3e2693..f35368c3ede3 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_nullifier_exists.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_nullifier_exists.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,24 +18,21 @@ struct lookup_nullifier_exists_nullifier_exists_check_settings_ { static constexpr std::string_view NAME = "LOOKUP_NULLIFIER_EXISTS_NULLIFIER_EXISTS_CHECK"; static constexpr std::string_view RELATION_NAME = "nullifier_exists"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::execution_sel_execute_nullifier_exists; - static constexpr Column DST_SELECTOR = Column::nullifier_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_execute_nullifier_exists); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::nullifier_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_register_2_), + ColumnExpression(ColumnAndShifts::execution_register_0_), + ColumnExpression(ColumnAndShifts::execution_prev_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::execution_sel_execute_nullifier_exists), + ColumnExpression(ColumnAndShifts::execution_register_1_)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::nullifier_check_exists), + ColumnExpression(ColumnAndShifts::nullifier_check_nullifier), + ColumnExpression(ColumnAndShifts::nullifier_check_root), + ColumnExpression(ColumnAndShifts::nullifier_check_should_silo), + ColumnExpression(ColumnAndShifts::nullifier_check_address)); static constexpr Column COUNTS = Column::lookup_nullifier_exists_nullifier_exists_check_counts; static constexpr Column INVERSES = Column::lookup_nullifier_exists_nullifier_exists_check_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_register_2_, - ColumnAndShifts::execution_register_0_, - ColumnAndShifts::execution_prev_nullifier_tree_root, - ColumnAndShifts::execution_sel_execute_nullifier_exists, - ColumnAndShifts::execution_register_1_ - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::nullifier_check_exists, - ColumnAndShifts::nullifier_check_nullifier, - ColumnAndShifts::nullifier_check_root, - ColumnAndShifts::nullifier_check_should_silo, - ColumnAndShifts::nullifier_check_address - }; }; using lookup_nullifier_exists_nullifier_exists_check_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_poseidon2_hash.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_poseidon2_hash.hpp index 35790479c666..26ed0b94aabd 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_poseidon2_hash.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_poseidon2_hash.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,20 +18,26 @@ struct lookup_poseidon2_hash_poseidon2_perm_settings_ { static constexpr std::string_view NAME = "LOOKUP_POSEIDON2_HASH_POSEIDON2_PERM"; static constexpr std::string_view RELATION_NAME = "poseidon2_hash"; static constexpr size_t LOOKUP_TUPLE_SIZE = 8; - static constexpr Column SRC_SELECTOR = Column::poseidon2_hash_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_perm_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_perm_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_a_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_a_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_a_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_a_3), + ColumnExpression(ColumnAndShifts::poseidon2_hash_b_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_b_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_b_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_b_3)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_perm_a_0), + ColumnExpression(ColumnAndShifts::poseidon2_perm_a_1), + ColumnExpression(ColumnAndShifts::poseidon2_perm_a_2), + ColumnExpression(ColumnAndShifts::poseidon2_perm_a_3), + ColumnExpression(ColumnAndShifts::poseidon2_perm_b_0), + ColumnExpression(ColumnAndShifts::poseidon2_perm_b_1), + ColumnExpression(ColumnAndShifts::poseidon2_perm_b_2), + ColumnExpression(ColumnAndShifts::poseidon2_perm_b_3)); static constexpr Column COUNTS = Column::lookup_poseidon2_hash_poseidon2_perm_counts; static constexpr Column INVERSES = Column::lookup_poseidon2_hash_poseidon2_perm_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::poseidon2_hash_a_0, ColumnAndShifts::poseidon2_hash_a_1, ColumnAndShifts::poseidon2_hash_a_2, - ColumnAndShifts::poseidon2_hash_a_3, ColumnAndShifts::poseidon2_hash_b_0, ColumnAndShifts::poseidon2_hash_b_1, - ColumnAndShifts::poseidon2_hash_b_2, ColumnAndShifts::poseidon2_hash_b_3 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_perm_a_0, ColumnAndShifts::poseidon2_perm_a_1, ColumnAndShifts::poseidon2_perm_a_2, - ColumnAndShifts::poseidon2_perm_a_3, ColumnAndShifts::poseidon2_perm_b_0, ColumnAndShifts::poseidon2_perm_b_1, - ColumnAndShifts::poseidon2_perm_b_2, ColumnAndShifts::poseidon2_perm_b_3 - }; }; using lookup_poseidon2_hash_poseidon2_perm_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_poseidon2_mem.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_poseidon2_mem.hpp index 0936b7cc9975..7ebdc665b340 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_poseidon2_mem.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_poseidon2_mem.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,18 +18,17 @@ struct lookup_poseidon2_mem_check_src_addr_in_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_POSEIDON2_MEM_CHECK_SRC_ADDR_IN_RANGE"; static constexpr std::string_view RELATION_NAME = "poseidon2_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::poseidon2_perm_mem_sel; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_read_address_3_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_max_mem_addr), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_sel_src_out_of_range_err)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_poseidon2_mem_check_src_addr_in_range_counts; static constexpr Column INVERSES = Column::lookup_poseidon2_mem_check_src_addr_in_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::poseidon2_perm_mem_read_address_3_, - ColumnAndShifts::poseidon2_perm_mem_max_mem_addr, - ColumnAndShifts::poseidon2_perm_mem_sel_src_out_of_range_err - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_poseidon2_mem_check_src_addr_in_range_settings = @@ -43,18 +43,17 @@ struct lookup_poseidon2_mem_check_dst_addr_in_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_POSEIDON2_MEM_CHECK_DST_ADDR_IN_RANGE"; static constexpr std::string_view RELATION_NAME = "poseidon2_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::poseidon2_perm_mem_sel; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_write_address_3_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_max_mem_addr), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_sel_dst_out_of_range_err)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_poseidon2_mem_check_dst_addr_in_range_counts; static constexpr Column INVERSES = Column::lookup_poseidon2_mem_check_dst_addr_in_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::poseidon2_perm_mem_write_address_3_, - ColumnAndShifts::poseidon2_perm_mem_max_mem_addr, - ColumnAndShifts::poseidon2_perm_mem_sel_dst_out_of_range_err - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_poseidon2_mem_check_dst_addr_in_range_settings = @@ -69,19 +68,23 @@ struct lookup_poseidon2_mem_pos_read_mem_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_POSEIDON2_MEM_POS_READ_MEM_0"; static constexpr std::string_view RELATION_NAME = "poseidon2_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::poseidon2_perm_mem_sel_should_read_mem; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_sel_should_read_mem); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_execution_clk), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_read_address_0_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_input_0_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_input_tag_0_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_space_id), + ColumnExpression(ColumnAndShifts::precomputed_zero)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_space_id), + ColumnExpression(ColumnAndShifts::memory_rw)); static constexpr Column COUNTS = Column::lookup_poseidon2_mem_pos_read_mem_0_counts; static constexpr Column INVERSES = Column::lookup_poseidon2_mem_pos_read_mem_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::poseidon2_perm_mem_execution_clk, ColumnAndShifts::poseidon2_perm_mem_read_address_0_, - ColumnAndShifts::poseidon2_perm_mem_input_0_, ColumnAndShifts::poseidon2_perm_mem_input_tag_0_, - ColumnAndShifts::poseidon2_perm_mem_space_id, ColumnAndShifts::precomputed_zero - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, - ColumnAndShifts::memory_tag, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_rw - }; }; using lookup_poseidon2_mem_pos_read_mem_0_settings = lookup_settings; @@ -95,19 +98,23 @@ struct lookup_poseidon2_mem_pos_read_mem_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_POSEIDON2_MEM_POS_READ_MEM_1"; static constexpr std::string_view RELATION_NAME = "poseidon2_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::poseidon2_perm_mem_sel_should_read_mem; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_sel_should_read_mem); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_execution_clk), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_read_address_1_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_input_1_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_input_tag_1_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_space_id), + ColumnExpression(ColumnAndShifts::precomputed_zero)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_space_id), + ColumnExpression(ColumnAndShifts::memory_rw)); static constexpr Column COUNTS = Column::lookup_poseidon2_mem_pos_read_mem_1_counts; static constexpr Column INVERSES = Column::lookup_poseidon2_mem_pos_read_mem_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::poseidon2_perm_mem_execution_clk, ColumnAndShifts::poseidon2_perm_mem_read_address_1_, - ColumnAndShifts::poseidon2_perm_mem_input_1_, ColumnAndShifts::poseidon2_perm_mem_input_tag_1_, - ColumnAndShifts::poseidon2_perm_mem_space_id, ColumnAndShifts::precomputed_zero - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, - ColumnAndShifts::memory_tag, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_rw - }; }; using lookup_poseidon2_mem_pos_read_mem_1_settings = lookup_settings; @@ -121,19 +128,23 @@ struct lookup_poseidon2_mem_pos_read_mem_2_settings_ { static constexpr std::string_view NAME = "LOOKUP_POSEIDON2_MEM_POS_READ_MEM_2"; static constexpr std::string_view RELATION_NAME = "poseidon2_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::poseidon2_perm_mem_sel_should_read_mem; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_sel_should_read_mem); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_execution_clk), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_read_address_2_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_input_2_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_input_tag_2_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_space_id), + ColumnExpression(ColumnAndShifts::precomputed_zero)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_space_id), + ColumnExpression(ColumnAndShifts::memory_rw)); static constexpr Column COUNTS = Column::lookup_poseidon2_mem_pos_read_mem_2_counts; static constexpr Column INVERSES = Column::lookup_poseidon2_mem_pos_read_mem_2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::poseidon2_perm_mem_execution_clk, ColumnAndShifts::poseidon2_perm_mem_read_address_2_, - ColumnAndShifts::poseidon2_perm_mem_input_2_, ColumnAndShifts::poseidon2_perm_mem_input_tag_2_, - ColumnAndShifts::poseidon2_perm_mem_space_id, ColumnAndShifts::precomputed_zero - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, - ColumnAndShifts::memory_tag, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_rw - }; }; using lookup_poseidon2_mem_pos_read_mem_2_settings = lookup_settings; @@ -147,19 +158,23 @@ struct lookup_poseidon2_mem_pos_read_mem_3_settings_ { static constexpr std::string_view NAME = "LOOKUP_POSEIDON2_MEM_POS_READ_MEM_3"; static constexpr std::string_view RELATION_NAME = "poseidon2_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::poseidon2_perm_mem_sel_should_read_mem; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_sel_should_read_mem); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_execution_clk), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_read_address_3_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_input_3_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_input_tag_3_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_space_id), + ColumnExpression(ColumnAndShifts::precomputed_zero)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_space_id), + ColumnExpression(ColumnAndShifts::memory_rw)); static constexpr Column COUNTS = Column::lookup_poseidon2_mem_pos_read_mem_3_counts; static constexpr Column INVERSES = Column::lookup_poseidon2_mem_pos_read_mem_3_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::poseidon2_perm_mem_execution_clk, ColumnAndShifts::poseidon2_perm_mem_read_address_3_, - ColumnAndShifts::poseidon2_perm_mem_input_3_, ColumnAndShifts::poseidon2_perm_mem_input_tag_3_, - ColumnAndShifts::poseidon2_perm_mem_space_id, ColumnAndShifts::precomputed_zero - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, - ColumnAndShifts::memory_tag, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_rw - }; }; using lookup_poseidon2_mem_pos_read_mem_3_settings = lookup_settings; @@ -173,21 +188,26 @@ struct lookup_poseidon2_mem_input_output_poseidon2_perm_settings_ { static constexpr std::string_view NAME = "LOOKUP_POSEIDON2_MEM_INPUT_OUTPUT_POSEIDON2_PERM"; static constexpr std::string_view RELATION_NAME = "poseidon2_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 8; - static constexpr Column SRC_SELECTOR = Column::poseidon2_perm_mem_sel_should_exec; - static constexpr Column DST_SELECTOR = Column::poseidon2_perm_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_sel_should_exec); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_perm_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_input_0_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_input_1_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_input_2_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_input_3_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_output_0_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_output_1_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_output_2_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_output_3_)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_perm_a_0), + ColumnExpression(ColumnAndShifts::poseidon2_perm_a_1), + ColumnExpression(ColumnAndShifts::poseidon2_perm_a_2), + ColumnExpression(ColumnAndShifts::poseidon2_perm_a_3), + ColumnExpression(ColumnAndShifts::poseidon2_perm_b_0), + ColumnExpression(ColumnAndShifts::poseidon2_perm_b_1), + ColumnExpression(ColumnAndShifts::poseidon2_perm_b_2), + ColumnExpression(ColumnAndShifts::poseidon2_perm_b_3)); static constexpr Column COUNTS = Column::lookup_poseidon2_mem_input_output_poseidon2_perm_counts; static constexpr Column INVERSES = Column::lookup_poseidon2_mem_input_output_poseidon2_perm_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::poseidon2_perm_mem_input_0_, ColumnAndShifts::poseidon2_perm_mem_input_1_, - ColumnAndShifts::poseidon2_perm_mem_input_2_, ColumnAndShifts::poseidon2_perm_mem_input_3_, - ColumnAndShifts::poseidon2_perm_mem_output_0_, ColumnAndShifts::poseidon2_perm_mem_output_1_, - ColumnAndShifts::poseidon2_perm_mem_output_2_, ColumnAndShifts::poseidon2_perm_mem_output_3_ - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_perm_a_0, ColumnAndShifts::poseidon2_perm_a_1, ColumnAndShifts::poseidon2_perm_a_2, - ColumnAndShifts::poseidon2_perm_a_3, ColumnAndShifts::poseidon2_perm_b_0, ColumnAndShifts::poseidon2_perm_b_1, - ColumnAndShifts::poseidon2_perm_b_2, ColumnAndShifts::poseidon2_perm_b_3 - }; }; using lookup_poseidon2_mem_input_output_poseidon2_perm_settings = @@ -202,19 +222,23 @@ struct lookup_poseidon2_mem_pos_write_mem_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_POSEIDON2_MEM_POS_WRITE_MEM_0"; static constexpr std::string_view RELATION_NAME = "poseidon2_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::poseidon2_perm_mem_sel_should_exec; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_sel_should_exec); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_execution_clk), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_write_address_0_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_output_0_), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_space_id), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_sel_should_exec)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_space_id), + ColumnExpression(ColumnAndShifts::memory_rw)); static constexpr Column COUNTS = Column::lookup_poseidon2_mem_pos_write_mem_0_counts; static constexpr Column INVERSES = Column::lookup_poseidon2_mem_pos_write_mem_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::poseidon2_perm_mem_execution_clk, ColumnAndShifts::poseidon2_perm_mem_write_address_0_, - ColumnAndShifts::poseidon2_perm_mem_output_0_, ColumnAndShifts::precomputed_zero, - ColumnAndShifts::poseidon2_perm_mem_space_id, ColumnAndShifts::poseidon2_perm_mem_sel_should_exec - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, - ColumnAndShifts::memory_tag, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_rw - }; }; using lookup_poseidon2_mem_pos_write_mem_0_settings = lookup_settings; @@ -228,19 +252,23 @@ struct lookup_poseidon2_mem_pos_write_mem_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_POSEIDON2_MEM_POS_WRITE_MEM_1"; static constexpr std::string_view RELATION_NAME = "poseidon2_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::poseidon2_perm_mem_sel_should_exec; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_sel_should_exec); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_execution_clk), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_write_address_1_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_output_1_), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_space_id), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_sel_should_exec)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_space_id), + ColumnExpression(ColumnAndShifts::memory_rw)); static constexpr Column COUNTS = Column::lookup_poseidon2_mem_pos_write_mem_1_counts; static constexpr Column INVERSES = Column::lookup_poseidon2_mem_pos_write_mem_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::poseidon2_perm_mem_execution_clk, ColumnAndShifts::poseidon2_perm_mem_write_address_1_, - ColumnAndShifts::poseidon2_perm_mem_output_1_, ColumnAndShifts::precomputed_zero, - ColumnAndShifts::poseidon2_perm_mem_space_id, ColumnAndShifts::poseidon2_perm_mem_sel_should_exec - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, - ColumnAndShifts::memory_tag, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_rw - }; }; using lookup_poseidon2_mem_pos_write_mem_1_settings = lookup_settings; @@ -254,19 +282,23 @@ struct lookup_poseidon2_mem_pos_write_mem_2_settings_ { static constexpr std::string_view NAME = "LOOKUP_POSEIDON2_MEM_POS_WRITE_MEM_2"; static constexpr std::string_view RELATION_NAME = "poseidon2_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::poseidon2_perm_mem_sel_should_exec; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_sel_should_exec); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_execution_clk), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_write_address_2_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_output_2_), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_space_id), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_sel_should_exec)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_space_id), + ColumnExpression(ColumnAndShifts::memory_rw)); static constexpr Column COUNTS = Column::lookup_poseidon2_mem_pos_write_mem_2_counts; static constexpr Column INVERSES = Column::lookup_poseidon2_mem_pos_write_mem_2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::poseidon2_perm_mem_execution_clk, ColumnAndShifts::poseidon2_perm_mem_write_address_2_, - ColumnAndShifts::poseidon2_perm_mem_output_2_, ColumnAndShifts::precomputed_zero, - ColumnAndShifts::poseidon2_perm_mem_space_id, ColumnAndShifts::poseidon2_perm_mem_sel_should_exec - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, - ColumnAndShifts::memory_tag, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_rw - }; }; using lookup_poseidon2_mem_pos_write_mem_2_settings = lookup_settings; @@ -280,19 +312,23 @@ struct lookup_poseidon2_mem_pos_write_mem_3_settings_ { static constexpr std::string_view NAME = "LOOKUP_POSEIDON2_MEM_POS_WRITE_MEM_3"; static constexpr std::string_view RELATION_NAME = "poseidon2_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::poseidon2_perm_mem_sel_should_exec; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_sel_should_exec); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_execution_clk), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_write_address_3_), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_output_3_), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_space_id), + ColumnExpression(ColumnAndShifts::poseidon2_perm_mem_sel_should_exec)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_space_id), + ColumnExpression(ColumnAndShifts::memory_rw)); static constexpr Column COUNTS = Column::lookup_poseidon2_mem_pos_write_mem_3_counts; static constexpr Column INVERSES = Column::lookup_poseidon2_mem_pos_write_mem_3_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::poseidon2_perm_mem_execution_clk, ColumnAndShifts::poseidon2_perm_mem_write_address_3_, - ColumnAndShifts::poseidon2_perm_mem_output_3_, ColumnAndShifts::precomputed_zero, - ColumnAndShifts::poseidon2_perm_mem_space_id, ColumnAndShifts::poseidon2_perm_mem_sel_should_exec - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, - ColumnAndShifts::memory_tag, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_rw - }; }; using lookup_poseidon2_mem_pos_write_mem_3_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_public_data_check.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_public_data_check.hpp index 074d3eea8333..62f0b6291915 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_public_data_check.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_public_data_check.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,24 +18,21 @@ struct lookup_public_data_check_silo_poseidon2_settings_ { static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_SILO_POSEIDON2"; static constexpr std::string_view RELATION_NAME = "public_data_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::public_data_check_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_data_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_sel), + ColumnExpression(ColumnAndShifts::public_data_check_siloing_separator), + ColumnExpression(ColumnAndShifts::public_data_check_address), + ColumnExpression(ColumnAndShifts::public_data_check_slot), + ColumnExpression(ColumnAndShifts::public_data_check_leaf_slot)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_start), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_public_data_check_silo_poseidon2_counts; static constexpr Column INVERSES = Column::lookup_public_data_check_silo_poseidon2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::public_data_check_sel, - ColumnAndShifts::public_data_check_siloing_separator, - ColumnAndShifts::public_data_check_address, - ColumnAndShifts::public_data_check_slot, - ColumnAndShifts::public_data_check_leaf_slot - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_start, - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_public_data_check_silo_poseidon2_settings = @@ -49,18 +47,17 @@ struct lookup_public_data_check_low_leaf_slot_validation_settings_ { static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_LOW_LEAF_SLOT_VALIDATION"; static constexpr std::string_view RELATION_NAME = "public_data_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::public_data_check_leaf_not_exists; - static constexpr Column DST_SELECTOR = Column::ff_gt_sel_gt; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_data_check_leaf_not_exists); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ff_gt_sel_gt); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_leaf_slot), + ColumnExpression(ColumnAndShifts::public_data_check_low_leaf_slot), + ColumnExpression(ColumnAndShifts::public_data_check_sel)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ff_gt_a), + ColumnExpression(ColumnAndShifts::ff_gt_b), + ColumnExpression(ColumnAndShifts::ff_gt_result)); static constexpr Column COUNTS = Column::lookup_public_data_check_low_leaf_slot_validation_counts; static constexpr Column INVERSES = Column::lookup_public_data_check_low_leaf_slot_validation_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::public_data_check_leaf_slot, - ColumnAndShifts::public_data_check_low_leaf_slot, - ColumnAndShifts::public_data_check_sel - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::ff_gt_a, - ColumnAndShifts::ff_gt_b, - ColumnAndShifts::ff_gt_result }; }; using lookup_public_data_check_low_leaf_slot_validation_settings = @@ -75,18 +72,17 @@ struct lookup_public_data_check_low_leaf_next_slot_validation_settings_ { static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_LOW_LEAF_NEXT_SLOT_VALIDATION"; static constexpr std::string_view RELATION_NAME = "public_data_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::public_data_check_next_slot_is_nonzero; - static constexpr Column DST_SELECTOR = Column::ff_gt_sel_gt; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_data_check_next_slot_is_nonzero); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ff_gt_sel_gt); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_low_leaf_next_slot), + ColumnExpression(ColumnAndShifts::public_data_check_leaf_slot), + ColumnExpression(ColumnAndShifts::public_data_check_sel)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ff_gt_a), + ColumnExpression(ColumnAndShifts::ff_gt_b), + ColumnExpression(ColumnAndShifts::ff_gt_result)); static constexpr Column COUNTS = Column::lookup_public_data_check_low_leaf_next_slot_validation_counts; static constexpr Column INVERSES = Column::lookup_public_data_check_low_leaf_next_slot_validation_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::public_data_check_low_leaf_next_slot, - ColumnAndShifts::public_data_check_leaf_slot, - ColumnAndShifts::public_data_check_sel - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::ff_gt_a, - ColumnAndShifts::ff_gt_b, - ColumnAndShifts::ff_gt_result }; }; using lookup_public_data_check_low_leaf_next_slot_validation_settings = @@ -101,22 +97,19 @@ struct lookup_public_data_check_low_leaf_poseidon2_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_LOW_LEAF_POSEIDON2_0"; static constexpr std::string_view RELATION_NAME = "public_data_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::public_data_check_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_data_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_low_leaf_slot), + ColumnExpression(ColumnAndShifts::public_data_check_low_leaf_value), + ColumnExpression(ColumnAndShifts::public_data_check_low_leaf_next_index), + ColumnExpression(ColumnAndShifts::public_data_check_low_leaf_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_public_data_check_low_leaf_poseidon2_0_counts; static constexpr Column INVERSES = Column::lookup_public_data_check_low_leaf_poseidon2_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::public_data_check_low_leaf_slot, - ColumnAndShifts::public_data_check_low_leaf_value, - ColumnAndShifts::public_data_check_low_leaf_next_index, - ColumnAndShifts::public_data_check_low_leaf_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_public_data_check_low_leaf_poseidon2_0_settings = @@ -131,22 +124,19 @@ struct lookup_public_data_check_low_leaf_poseidon2_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_LOW_LEAF_POSEIDON2_1"; static constexpr std::string_view RELATION_NAME = "public_data_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::public_data_check_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_data_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_low_leaf_next_slot), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::public_data_check_low_leaf_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_public_data_check_low_leaf_poseidon2_1_counts; static constexpr Column INVERSES = Column::lookup_public_data_check_low_leaf_poseidon2_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::public_data_check_low_leaf_next_slot, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::public_data_check_low_leaf_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_public_data_check_low_leaf_poseidon2_1_settings = @@ -161,22 +151,19 @@ struct lookup_public_data_check_updated_low_leaf_poseidon2_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_UPDATED_LOW_LEAF_POSEIDON2_0"; static constexpr std::string_view RELATION_NAME = "public_data_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::public_data_check_write; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_data_check_write); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_low_leaf_slot), + ColumnExpression(ColumnAndShifts::public_data_check_updated_low_leaf_value), + ColumnExpression(ColumnAndShifts::public_data_check_updated_low_leaf_next_index), + ColumnExpression(ColumnAndShifts::public_data_check_updated_low_leaf_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_public_data_check_updated_low_leaf_poseidon2_0_counts; static constexpr Column INVERSES = Column::lookup_public_data_check_updated_low_leaf_poseidon2_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::public_data_check_low_leaf_slot, - ColumnAndShifts::public_data_check_updated_low_leaf_value, - ColumnAndShifts::public_data_check_updated_low_leaf_next_index, - ColumnAndShifts::public_data_check_updated_low_leaf_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_public_data_check_updated_low_leaf_poseidon2_0_settings = @@ -191,22 +178,19 @@ struct lookup_public_data_check_updated_low_leaf_poseidon2_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_UPDATED_LOW_LEAF_POSEIDON2_1"; static constexpr std::string_view RELATION_NAME = "public_data_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::public_data_check_write; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_data_check_write); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_updated_low_leaf_next_slot), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::public_data_check_updated_low_leaf_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_public_data_check_updated_low_leaf_poseidon2_1_counts; static constexpr Column INVERSES = Column::lookup_public_data_check_updated_low_leaf_poseidon2_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::public_data_check_updated_low_leaf_next_slot, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::public_data_check_updated_low_leaf_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_public_data_check_updated_low_leaf_poseidon2_1_settings = @@ -221,25 +205,25 @@ struct lookup_public_data_check_low_leaf_merkle_check_settings_ { static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_LOW_LEAF_MERKLE_CHECK"; static constexpr std::string_view RELATION_NAME = "public_data_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 7; - static constexpr Column SRC_SELECTOR = Column::public_data_check_sel; - static constexpr Column DST_SELECTOR = Column::merkle_check_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_data_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::merkle_check_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_write), + ColumnExpression(ColumnAndShifts::public_data_check_low_leaf_hash), + ColumnExpression(ColumnAndShifts::public_data_check_updated_low_leaf_hash), + ColumnExpression(ColumnAndShifts::public_data_check_low_leaf_index), + ColumnExpression(ColumnAndShifts::public_data_check_tree_height), + ColumnExpression(ColumnAndShifts::public_data_check_root), + ColumnExpression(ColumnAndShifts::public_data_check_intermediate_root)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::merkle_check_write), + ColumnExpression(ColumnAndShifts::merkle_check_read_node), + ColumnExpression(ColumnAndShifts::merkle_check_write_node), + ColumnExpression(ColumnAndShifts::merkle_check_index), + ColumnExpression(ColumnAndShifts::merkle_check_path_len), + ColumnExpression(ColumnAndShifts::merkle_check_read_root), + ColumnExpression(ColumnAndShifts::merkle_check_write_root)); static constexpr Column COUNTS = Column::lookup_public_data_check_low_leaf_merkle_check_counts; static constexpr Column INVERSES = Column::lookup_public_data_check_low_leaf_merkle_check_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::public_data_check_write, - ColumnAndShifts::public_data_check_low_leaf_hash, - ColumnAndShifts::public_data_check_updated_low_leaf_hash, - ColumnAndShifts::public_data_check_low_leaf_index, - ColumnAndShifts::public_data_check_tree_height, - ColumnAndShifts::public_data_check_root, - ColumnAndShifts::public_data_check_intermediate_root - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::merkle_check_write, ColumnAndShifts::merkle_check_read_node, - ColumnAndShifts::merkle_check_write_node, ColumnAndShifts::merkle_check_index, - ColumnAndShifts::merkle_check_path_len, ColumnAndShifts::merkle_check_read_root, - ColumnAndShifts::merkle_check_write_root - }; }; using lookup_public_data_check_low_leaf_merkle_check_settings = @@ -254,22 +238,19 @@ struct lookup_public_data_check_new_leaf_poseidon2_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_NEW_LEAF_POSEIDON2_0"; static constexpr std::string_view RELATION_NAME = "public_data_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::public_data_check_should_insert; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_data_check_should_insert); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_leaf_slot), + ColumnExpression(ColumnAndShifts::public_data_check_value), + ColumnExpression(ColumnAndShifts::public_data_check_low_leaf_next_index), + ColumnExpression(ColumnAndShifts::public_data_check_new_leaf_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_public_data_check_new_leaf_poseidon2_0_counts; static constexpr Column INVERSES = Column::lookup_public_data_check_new_leaf_poseidon2_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::public_data_check_leaf_slot, - ColumnAndShifts::public_data_check_value, - ColumnAndShifts::public_data_check_low_leaf_next_index, - ColumnAndShifts::public_data_check_new_leaf_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_public_data_check_new_leaf_poseidon2_0_settings = @@ -284,22 +265,19 @@ struct lookup_public_data_check_new_leaf_poseidon2_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_NEW_LEAF_POSEIDON2_1"; static constexpr std::string_view RELATION_NAME = "public_data_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::public_data_check_should_insert; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_data_check_should_insert); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_low_leaf_next_slot), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::public_data_check_new_leaf_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_public_data_check_new_leaf_poseidon2_1_counts; static constexpr Column INVERSES = Column::lookup_public_data_check_new_leaf_poseidon2_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::public_data_check_low_leaf_next_slot, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::public_data_check_new_leaf_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_public_data_check_new_leaf_poseidon2_1_settings = @@ -314,22 +292,25 @@ struct lookup_public_data_check_new_leaf_merkle_check_settings_ { static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_NEW_LEAF_MERKLE_CHECK"; static constexpr std::string_view RELATION_NAME = "public_data_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 7; - static constexpr Column SRC_SELECTOR = Column::public_data_check_should_insert; - static constexpr Column DST_SELECTOR = Column::merkle_check_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_data_check_should_insert); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::merkle_check_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_sel), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::public_data_check_new_leaf_hash), + ColumnExpression(ColumnAndShifts::public_data_check_tree_size_before_write), + ColumnExpression(ColumnAndShifts::public_data_check_tree_height), + ColumnExpression(ColumnAndShifts::public_data_check_intermediate_root), + ColumnExpression(ColumnAndShifts::public_data_check_write_root)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::merkle_check_write), + ColumnExpression(ColumnAndShifts::merkle_check_read_node), + ColumnExpression(ColumnAndShifts::merkle_check_write_node), + ColumnExpression(ColumnAndShifts::merkle_check_index), + ColumnExpression(ColumnAndShifts::merkle_check_path_len), + ColumnExpression(ColumnAndShifts::merkle_check_read_root), + ColumnExpression(ColumnAndShifts::merkle_check_write_root)); static constexpr Column COUNTS = Column::lookup_public_data_check_new_leaf_merkle_check_counts; static constexpr Column INVERSES = Column::lookup_public_data_check_new_leaf_merkle_check_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::public_data_check_sel, ColumnAndShifts::precomputed_zero, - ColumnAndShifts::public_data_check_new_leaf_hash, ColumnAndShifts::public_data_check_tree_size_before_write, - ColumnAndShifts::public_data_check_tree_height, ColumnAndShifts::public_data_check_intermediate_root, - ColumnAndShifts::public_data_check_write_root - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::merkle_check_write, ColumnAndShifts::merkle_check_read_node, - ColumnAndShifts::merkle_check_write_node, ColumnAndShifts::merkle_check_index, - ColumnAndShifts::merkle_check_path_len, ColumnAndShifts::merkle_check_read_root, - ColumnAndShifts::merkle_check_write_root - }; }; using lookup_public_data_check_new_leaf_merkle_check_settings = @@ -344,18 +325,17 @@ struct lookup_public_data_check_write_public_data_to_public_inputs_settings_ { static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_WRITE_PUBLIC_DATA_TO_PUBLIC_INPUTS"; static constexpr std::string_view RELATION_NAME = "public_data_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::public_data_check_should_write_to_public_inputs; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::public_data_check_should_write_to_public_inputs); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_write_idx), + ColumnExpression(ColumnAndShifts::public_data_check_leaf_slot), + ColumnExpression(ColumnAndShifts::public_data_check_final_value)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_1_)); static constexpr Column COUNTS = Column::lookup_public_data_check_write_public_data_to_public_inputs_counts; static constexpr Column INVERSES = Column::lookup_public_data_check_write_public_data_to_public_inputs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::public_data_check_write_idx, - ColumnAndShifts::public_data_check_leaf_slot, - ColumnAndShifts::public_data_check_final_value - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_, ColumnAndShifts::public_inputs_cols_1_ - }; }; using lookup_public_data_check_write_public_data_to_public_inputs_settings = @@ -370,16 +350,15 @@ struct lookup_public_data_check_write_writes_length_to_public_inputs_settings_ { static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_WRITE_WRITES_LENGTH_TO_PUBLIC_INPUTS"; static constexpr std::string_view RELATION_NAME = "public_data_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::public_data_check_end; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_data_check_end); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_length_pi_idx), + ColumnExpression(ColumnAndShifts::public_data_check_public_data_writes_length)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_)); static constexpr Column COUNTS = Column::lookup_public_data_check_write_writes_length_to_public_inputs_counts; static constexpr Column INVERSES = Column::lookup_public_data_check_write_writes_length_to_public_inputs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::public_data_check_length_pi_idx, ColumnAndShifts::public_data_check_public_data_writes_length - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_ - }; }; using lookup_public_data_check_write_writes_length_to_public_inputs_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_range_check.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_range_check.hpp index d88ff1772d47..34846a7ae451 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_range_check.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_range_check.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,16 +18,14 @@ struct lookup_range_check_dyn_rng_chk_pow_2_settings_ { static constexpr std::string_view NAME = "LOOKUP_RANGE_CHECK_DYN_RNG_CHK_POW_2"; static constexpr std::string_view RELATION_NAME = "range_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::range_check_sel; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_8; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_8); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_dyn_rng_chk_bits), + ColumnExpression(ColumnAndShifts::range_check_dyn_rng_chk_pow_2)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::precomputed_power_of_2)); static constexpr Column COUNTS = Column::lookup_range_check_dyn_rng_chk_pow_2_counts; static constexpr Column INVERSES = Column::lookup_range_check_dyn_rng_chk_pow_2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::range_check_dyn_rng_chk_bits, ColumnAndShifts::range_check_dyn_rng_chk_pow_2 - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::precomputed_power_of_2 - }; }; using lookup_range_check_dyn_rng_chk_pow_2_settings = lookup_settings; @@ -40,14 +39,12 @@ struct lookup_range_check_dyn_diff_is_u16_settings_ { static constexpr std::string_view NAME = "LOOKUP_RANGE_CHECK_DYN_DIFF_IS_U16"; static constexpr std::string_view RELATION_NAME = "range_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; - static constexpr Column SRC_SELECTOR = Column::range_check_sel; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_16; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_16); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_dyn_diff)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk)); static constexpr Column COUNTS = Column::lookup_range_check_dyn_diff_is_u16_counts; static constexpr Column INVERSES = Column::lookup_range_check_dyn_diff_is_u16_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::range_check_dyn_diff - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::precomputed_clk }; }; using lookup_range_check_dyn_diff_is_u16_settings = lookup_settings; @@ -61,14 +58,12 @@ struct lookup_range_check_r0_is_u16_settings_ { static constexpr std::string_view NAME = "LOOKUP_RANGE_CHECK_R0_IS_U16"; static constexpr std::string_view RELATION_NAME = "range_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; - static constexpr Column SRC_SELECTOR = Column::range_check_sel_r0_16_bit_rng_lookup; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_16; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel_r0_16_bit_rng_lookup); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_16); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_u16_r0)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk)); static constexpr Column COUNTS = Column::lookup_range_check_r0_is_u16_counts; static constexpr Column INVERSES = Column::lookup_range_check_r0_is_u16_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::range_check_u16_r0 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::precomputed_clk }; }; using lookup_range_check_r0_is_u16_settings = lookup_settings; @@ -81,14 +76,12 @@ struct lookup_range_check_r1_is_u16_settings_ { static constexpr std::string_view NAME = "LOOKUP_RANGE_CHECK_R1_IS_U16"; static constexpr std::string_view RELATION_NAME = "range_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; - static constexpr Column SRC_SELECTOR = Column::range_check_sel_r1_16_bit_rng_lookup; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_16; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel_r1_16_bit_rng_lookup); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_16); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_u16_r1)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk)); static constexpr Column COUNTS = Column::lookup_range_check_r1_is_u16_counts; static constexpr Column INVERSES = Column::lookup_range_check_r1_is_u16_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::range_check_u16_r1 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::precomputed_clk }; }; using lookup_range_check_r1_is_u16_settings = lookup_settings; @@ -101,14 +94,12 @@ struct lookup_range_check_r2_is_u16_settings_ { static constexpr std::string_view NAME = "LOOKUP_RANGE_CHECK_R2_IS_U16"; static constexpr std::string_view RELATION_NAME = "range_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; - static constexpr Column SRC_SELECTOR = Column::range_check_sel_r2_16_bit_rng_lookup; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_16; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel_r2_16_bit_rng_lookup); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_16); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_u16_r2)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk)); static constexpr Column COUNTS = Column::lookup_range_check_r2_is_u16_counts; static constexpr Column INVERSES = Column::lookup_range_check_r2_is_u16_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::range_check_u16_r2 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::precomputed_clk }; }; using lookup_range_check_r2_is_u16_settings = lookup_settings; @@ -121,14 +112,12 @@ struct lookup_range_check_r3_is_u16_settings_ { static constexpr std::string_view NAME = "LOOKUP_RANGE_CHECK_R3_IS_U16"; static constexpr std::string_view RELATION_NAME = "range_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; - static constexpr Column SRC_SELECTOR = Column::range_check_sel_r3_16_bit_rng_lookup; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_16; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel_r3_16_bit_rng_lookup); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_16); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_u16_r3)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk)); static constexpr Column COUNTS = Column::lookup_range_check_r3_is_u16_counts; static constexpr Column INVERSES = Column::lookup_range_check_r3_is_u16_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::range_check_u16_r3 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::precomputed_clk }; }; using lookup_range_check_r3_is_u16_settings = lookup_settings; @@ -141,14 +130,12 @@ struct lookup_range_check_r4_is_u16_settings_ { static constexpr std::string_view NAME = "LOOKUP_RANGE_CHECK_R4_IS_U16"; static constexpr std::string_view RELATION_NAME = "range_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; - static constexpr Column SRC_SELECTOR = Column::range_check_sel_r4_16_bit_rng_lookup; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_16; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel_r4_16_bit_rng_lookup); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_16); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_u16_r4)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk)); static constexpr Column COUNTS = Column::lookup_range_check_r4_is_u16_counts; static constexpr Column INVERSES = Column::lookup_range_check_r4_is_u16_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::range_check_u16_r4 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::precomputed_clk }; }; using lookup_range_check_r4_is_u16_settings = lookup_settings; @@ -161,14 +148,12 @@ struct lookup_range_check_r5_is_u16_settings_ { static constexpr std::string_view NAME = "LOOKUP_RANGE_CHECK_R5_IS_U16"; static constexpr std::string_view RELATION_NAME = "range_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; - static constexpr Column SRC_SELECTOR = Column::range_check_sel_r5_16_bit_rng_lookup; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_16; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel_r5_16_bit_rng_lookup); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_16); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_u16_r5)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk)); static constexpr Column COUNTS = Column::lookup_range_check_r5_is_u16_counts; static constexpr Column INVERSES = Column::lookup_range_check_r5_is_u16_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::range_check_u16_r5 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::precomputed_clk }; }; using lookup_range_check_r5_is_u16_settings = lookup_settings; @@ -181,14 +166,12 @@ struct lookup_range_check_r6_is_u16_settings_ { static constexpr std::string_view NAME = "LOOKUP_RANGE_CHECK_R6_IS_U16"; static constexpr std::string_view RELATION_NAME = "range_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; - static constexpr Column SRC_SELECTOR = Column::range_check_sel_r6_16_bit_rng_lookup; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_16; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel_r6_16_bit_rng_lookup); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_16); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_u16_r6)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk)); static constexpr Column COUNTS = Column::lookup_range_check_r6_is_u16_counts; static constexpr Column INVERSES = Column::lookup_range_check_r6_is_u16_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::range_check_u16_r6 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::precomputed_clk }; }; using lookup_range_check_r6_is_u16_settings = lookup_settings; @@ -201,14 +184,12 @@ struct lookup_range_check_r7_is_u16_settings_ { static constexpr std::string_view NAME = "LOOKUP_RANGE_CHECK_R7_IS_U16"; static constexpr std::string_view RELATION_NAME = "range_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; - static constexpr Column SRC_SELECTOR = Column::range_check_sel; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_16; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_16); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_u16_r7)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk)); static constexpr Column COUNTS = Column::lookup_range_check_r7_is_u16_counts; static constexpr Column INVERSES = Column::lookup_range_check_r7_is_u16_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::range_check_u16_r7 - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::precomputed_clk }; }; using lookup_range_check_r7_is_u16_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_registers.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_registers.hpp index b9914c2a643b..ea2e259fc448 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_registers.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_registers.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,19 +18,22 @@ struct lookup_registers_mem_op_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_REGISTERS_MEM_OP_0"; static constexpr std::string_view RELATION_NAME = "registers"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::execution_sel_op_reg_effective_0_; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_op_reg_effective_0_); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::execution_rop_0_), + ColumnExpression(ColumnAndShifts::execution_register_0_), + ColumnExpression(ColumnAndShifts::execution_mem_tag_reg_0_), + ColumnExpression(ColumnAndShifts::execution_rw_reg_0_), + ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::execution_context_id)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_rw), + ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_space_id)); static constexpr Column COUNTS = Column::lookup_registers_mem_op_0_counts; static constexpr Column INVERSES = Column::lookup_registers_mem_op_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_rop_0_, ColumnAndShifts::execution_register_0_, - ColumnAndShifts::execution_mem_tag_reg_0_, ColumnAndShifts::execution_rw_reg_0_, - ColumnAndShifts::precomputed_clk, ColumnAndShifts::execution_context_id - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, ColumnAndShifts::memory_tag, - ColumnAndShifts::memory_rw, ColumnAndShifts::memory_clk, ColumnAndShifts::memory_space_id - }; }; using lookup_registers_mem_op_0_settings = lookup_settings; @@ -42,19 +46,22 @@ struct lookup_registers_mem_op_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_REGISTERS_MEM_OP_1"; static constexpr std::string_view RELATION_NAME = "registers"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::execution_sel_op_reg_effective_1_; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_op_reg_effective_1_); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::execution_rop_1_), + ColumnExpression(ColumnAndShifts::execution_register_1_), + ColumnExpression(ColumnAndShifts::execution_mem_tag_reg_1_), + ColumnExpression(ColumnAndShifts::execution_rw_reg_1_), + ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::execution_context_id)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_rw), + ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_space_id)); static constexpr Column COUNTS = Column::lookup_registers_mem_op_1_counts; static constexpr Column INVERSES = Column::lookup_registers_mem_op_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_rop_1_, ColumnAndShifts::execution_register_1_, - ColumnAndShifts::execution_mem_tag_reg_1_, ColumnAndShifts::execution_rw_reg_1_, - ColumnAndShifts::precomputed_clk, ColumnAndShifts::execution_context_id - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, ColumnAndShifts::memory_tag, - ColumnAndShifts::memory_rw, ColumnAndShifts::memory_clk, ColumnAndShifts::memory_space_id - }; }; using lookup_registers_mem_op_1_settings = lookup_settings; @@ -67,19 +74,22 @@ struct lookup_registers_mem_op_2_settings_ { static constexpr std::string_view NAME = "LOOKUP_REGISTERS_MEM_OP_2"; static constexpr std::string_view RELATION_NAME = "registers"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::execution_sel_op_reg_effective_2_; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_op_reg_effective_2_); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::execution_rop_2_), + ColumnExpression(ColumnAndShifts::execution_register_2_), + ColumnExpression(ColumnAndShifts::execution_mem_tag_reg_2_), + ColumnExpression(ColumnAndShifts::execution_rw_reg_2_), + ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::execution_context_id)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_rw), + ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_space_id)); static constexpr Column COUNTS = Column::lookup_registers_mem_op_2_counts; static constexpr Column INVERSES = Column::lookup_registers_mem_op_2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_rop_2_, ColumnAndShifts::execution_register_2_, - ColumnAndShifts::execution_mem_tag_reg_2_, ColumnAndShifts::execution_rw_reg_2_, - ColumnAndShifts::precomputed_clk, ColumnAndShifts::execution_context_id - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, ColumnAndShifts::memory_tag, - ColumnAndShifts::memory_rw, ColumnAndShifts::memory_clk, ColumnAndShifts::memory_space_id - }; }; using lookup_registers_mem_op_2_settings = lookup_settings; @@ -92,19 +102,22 @@ struct lookup_registers_mem_op_3_settings_ { static constexpr std::string_view NAME = "LOOKUP_REGISTERS_MEM_OP_3"; static constexpr std::string_view RELATION_NAME = "registers"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::execution_sel_op_reg_effective_3_; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_op_reg_effective_3_); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::execution_rop_3_), + ColumnExpression(ColumnAndShifts::execution_register_3_), + ColumnExpression(ColumnAndShifts::execution_mem_tag_reg_3_), + ColumnExpression(ColumnAndShifts::execution_rw_reg_3_), + ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::execution_context_id)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_rw), + ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_space_id)); static constexpr Column COUNTS = Column::lookup_registers_mem_op_3_counts; static constexpr Column INVERSES = Column::lookup_registers_mem_op_3_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_rop_3_, ColumnAndShifts::execution_register_3_, - ColumnAndShifts::execution_mem_tag_reg_3_, ColumnAndShifts::execution_rw_reg_3_, - ColumnAndShifts::precomputed_clk, ColumnAndShifts::execution_context_id - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, ColumnAndShifts::memory_tag, - ColumnAndShifts::memory_rw, ColumnAndShifts::memory_clk, ColumnAndShifts::memory_space_id - }; }; using lookup_registers_mem_op_3_settings = lookup_settings; @@ -117,19 +130,22 @@ struct lookup_registers_mem_op_4_settings_ { static constexpr std::string_view NAME = "LOOKUP_REGISTERS_MEM_OP_4"; static constexpr std::string_view RELATION_NAME = "registers"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::execution_sel_op_reg_effective_4_; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_op_reg_effective_4_); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::execution_rop_4_), + ColumnExpression(ColumnAndShifts::execution_register_4_), + ColumnExpression(ColumnAndShifts::execution_mem_tag_reg_4_), + ColumnExpression(ColumnAndShifts::execution_rw_reg_4_), + ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::execution_context_id)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_rw), + ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_space_id)); static constexpr Column COUNTS = Column::lookup_registers_mem_op_4_counts; static constexpr Column INVERSES = Column::lookup_registers_mem_op_4_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_rop_4_, ColumnAndShifts::execution_register_4_, - ColumnAndShifts::execution_mem_tag_reg_4_, ColumnAndShifts::execution_rw_reg_4_, - ColumnAndShifts::precomputed_clk, ColumnAndShifts::execution_context_id - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, ColumnAndShifts::memory_tag, - ColumnAndShifts::memory_rw, ColumnAndShifts::memory_clk, ColumnAndShifts::memory_space_id - }; }; using lookup_registers_mem_op_4_settings = lookup_settings; @@ -142,19 +158,22 @@ struct lookup_registers_mem_op_5_settings_ { static constexpr std::string_view NAME = "LOOKUP_REGISTERS_MEM_OP_5"; static constexpr std::string_view RELATION_NAME = "registers"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::execution_sel_op_reg_effective_5_; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_op_reg_effective_5_); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::execution_rop_5_), + ColumnExpression(ColumnAndShifts::execution_register_5_), + ColumnExpression(ColumnAndShifts::execution_mem_tag_reg_5_), + ColumnExpression(ColumnAndShifts::execution_rw_reg_5_), + ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::execution_context_id)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_rw), + ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_space_id)); static constexpr Column COUNTS = Column::lookup_registers_mem_op_5_counts; static constexpr Column INVERSES = Column::lookup_registers_mem_op_5_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_rop_5_, ColumnAndShifts::execution_register_5_, - ColumnAndShifts::execution_mem_tag_reg_5_, ColumnAndShifts::execution_rw_reg_5_, - ColumnAndShifts::precomputed_clk, ColumnAndShifts::execution_context_id - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, ColumnAndShifts::memory_tag, - ColumnAndShifts::memory_rw, ColumnAndShifts::memory_clk, ColumnAndShifts::memory_space_id - }; }; using lookup_registers_mem_op_5_settings = lookup_settings; @@ -167,19 +186,22 @@ struct lookup_registers_mem_op_6_settings_ { static constexpr std::string_view NAME = "LOOKUP_REGISTERS_MEM_OP_6"; static constexpr std::string_view RELATION_NAME = "registers"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::execution_sel_op_reg_effective_6_; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_op_reg_effective_6_); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::execution_rop_6_), + ColumnExpression(ColumnAndShifts::execution_register_6_), + ColumnExpression(ColumnAndShifts::execution_mem_tag_reg_6_), + ColumnExpression(ColumnAndShifts::execution_rw_reg_6_), + ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::execution_context_id)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_rw), + ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_space_id)); static constexpr Column COUNTS = Column::lookup_registers_mem_op_6_counts; static constexpr Column INVERSES = Column::lookup_registers_mem_op_6_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_rop_6_, ColumnAndShifts::execution_register_6_, - ColumnAndShifts::execution_mem_tag_reg_6_, ColumnAndShifts::execution_rw_reg_6_, - ColumnAndShifts::precomputed_clk, ColumnAndShifts::execution_context_id - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, ColumnAndShifts::memory_tag, - ColumnAndShifts::memory_rw, ColumnAndShifts::memory_clk, ColumnAndShifts::memory_space_id - }; }; using lookup_registers_mem_op_6_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_scalar_mul.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_scalar_mul.hpp index cd481223861d..bde6caed741f 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_scalar_mul.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_scalar_mul.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,22 +18,18 @@ struct lookup_scalar_mul_to_radix_settings_ { static constexpr std::string_view NAME = "LOOKUP_SCALAR_MUL_TO_RADIX"; static constexpr std::string_view RELATION_NAME = "scalar_mul"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::scalar_mul_sel; - static constexpr Column DST_SELECTOR = Column::to_radix_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::scalar_mul_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::to_radix_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::scalar_mul_scalar), + ColumnExpression(ColumnAndShifts::scalar_mul_bit), + ColumnExpression(ColumnAndShifts::scalar_mul_bit_idx), + ColumnExpression(ColumnAndShifts::scalar_mul_bit_radix)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::to_radix_value), + ColumnExpression(ColumnAndShifts::to_radix_limb), + ColumnExpression(ColumnAndShifts::to_radix_limb_index), + ColumnExpression(ColumnAndShifts::to_radix_radix)); static constexpr Column COUNTS = Column::lookup_scalar_mul_to_radix_counts; static constexpr Column INVERSES = Column::lookup_scalar_mul_to_radix_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::scalar_mul_scalar, - ColumnAndShifts::scalar_mul_bit, - ColumnAndShifts::scalar_mul_bit_idx, - ColumnAndShifts::scalar_mul_bit_radix - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::to_radix_value, - ColumnAndShifts::to_radix_limb, - ColumnAndShifts::to_radix_limb_index, - ColumnAndShifts::to_radix_radix - }; }; using lookup_scalar_mul_to_radix_settings = lookup_settings; @@ -45,22 +42,28 @@ struct lookup_scalar_mul_double_settings_ { static constexpr std::string_view NAME = "LOOKUP_SCALAR_MUL_DOUBLE"; static constexpr std::string_view RELATION_NAME = "scalar_mul"; static constexpr size_t LOOKUP_TUPLE_SIZE = 9; - static constexpr Column SRC_SELECTOR = Column::scalar_mul_not_end; - static constexpr Column DST_SELECTOR = Column::ecc_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::scalar_mul_not_end); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ecc_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::scalar_mul_temp_x), + ColumnExpression(ColumnAndShifts::scalar_mul_temp_y), + ColumnExpression(ColumnAndShifts::scalar_mul_temp_inf), + ColumnExpression(ColumnAndShifts::scalar_mul_temp_x_shift), + ColumnExpression(ColumnAndShifts::scalar_mul_temp_y_shift), + ColumnExpression(ColumnAndShifts::scalar_mul_temp_inf_shift), + ColumnExpression(ColumnAndShifts::scalar_mul_temp_x_shift), + ColumnExpression(ColumnAndShifts::scalar_mul_temp_y_shift), + ColumnExpression(ColumnAndShifts::scalar_mul_temp_inf_shift)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ecc_r_x), + ColumnExpression(ColumnAndShifts::ecc_r_y), + ColumnExpression(ColumnAndShifts::ecc_r_is_inf), + ColumnExpression(ColumnAndShifts::ecc_p_x), + ColumnExpression(ColumnAndShifts::ecc_p_y), + ColumnExpression(ColumnAndShifts::ecc_p_is_inf), + ColumnExpression(ColumnAndShifts::ecc_q_x), + ColumnExpression(ColumnAndShifts::ecc_q_y), + ColumnExpression(ColumnAndShifts::ecc_q_is_inf)); static constexpr Column COUNTS = Column::lookup_scalar_mul_double_counts; static constexpr Column INVERSES = Column::lookup_scalar_mul_double_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::scalar_mul_temp_x, ColumnAndShifts::scalar_mul_temp_y, - ColumnAndShifts::scalar_mul_temp_inf, ColumnAndShifts::scalar_mul_temp_x_shift, - ColumnAndShifts::scalar_mul_temp_y_shift, ColumnAndShifts::scalar_mul_temp_inf_shift, - ColumnAndShifts::scalar_mul_temp_x_shift, ColumnAndShifts::scalar_mul_temp_y_shift, - ColumnAndShifts::scalar_mul_temp_inf_shift - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::ecc_r_x, ColumnAndShifts::ecc_r_y, ColumnAndShifts::ecc_r_is_inf, - ColumnAndShifts::ecc_p_x, ColumnAndShifts::ecc_p_y, ColumnAndShifts::ecc_p_is_inf, - ColumnAndShifts::ecc_q_x, ColumnAndShifts::ecc_q_y, ColumnAndShifts::ecc_q_is_inf - }; }; using lookup_scalar_mul_double_settings = lookup_settings; @@ -73,22 +76,28 @@ struct lookup_scalar_mul_add_settings_ { static constexpr std::string_view NAME = "LOOKUP_SCALAR_MUL_ADD"; static constexpr std::string_view RELATION_NAME = "scalar_mul"; static constexpr size_t LOOKUP_TUPLE_SIZE = 9; - static constexpr Column SRC_SELECTOR = Column::scalar_mul_should_add; - static constexpr Column DST_SELECTOR = Column::ecc_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::scalar_mul_should_add); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ecc_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::scalar_mul_res_x), + ColumnExpression(ColumnAndShifts::scalar_mul_res_y), + ColumnExpression(ColumnAndShifts::scalar_mul_res_inf), + ColumnExpression(ColumnAndShifts::scalar_mul_res_x_shift), + ColumnExpression(ColumnAndShifts::scalar_mul_res_y_shift), + ColumnExpression(ColumnAndShifts::scalar_mul_res_inf_shift), + ColumnExpression(ColumnAndShifts::scalar_mul_temp_x), + ColumnExpression(ColumnAndShifts::scalar_mul_temp_y), + ColumnExpression(ColumnAndShifts::scalar_mul_temp_inf)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ecc_r_x), + ColumnExpression(ColumnAndShifts::ecc_r_y), + ColumnExpression(ColumnAndShifts::ecc_r_is_inf), + ColumnExpression(ColumnAndShifts::ecc_p_x), + ColumnExpression(ColumnAndShifts::ecc_p_y), + ColumnExpression(ColumnAndShifts::ecc_p_is_inf), + ColumnExpression(ColumnAndShifts::ecc_q_x), + ColumnExpression(ColumnAndShifts::ecc_q_y), + ColumnExpression(ColumnAndShifts::ecc_q_is_inf)); static constexpr Column COUNTS = Column::lookup_scalar_mul_add_counts; static constexpr Column INVERSES = Column::lookup_scalar_mul_add_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::scalar_mul_res_x, ColumnAndShifts::scalar_mul_res_y, - ColumnAndShifts::scalar_mul_res_inf, ColumnAndShifts::scalar_mul_res_x_shift, - ColumnAndShifts::scalar_mul_res_y_shift, ColumnAndShifts::scalar_mul_res_inf_shift, - ColumnAndShifts::scalar_mul_temp_x, ColumnAndShifts::scalar_mul_temp_y, - ColumnAndShifts::scalar_mul_temp_inf - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::ecc_r_x, ColumnAndShifts::ecc_r_y, ColumnAndShifts::ecc_r_is_inf, - ColumnAndShifts::ecc_p_x, ColumnAndShifts::ecc_p_y, ColumnAndShifts::ecc_p_is_inf, - ColumnAndShifts::ecc_q_x, ColumnAndShifts::ecc_q_y, ColumnAndShifts::ecc_q_is_inf - }; }; using lookup_scalar_mul_add_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_send_l2_to_l1_msg.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_send_l2_to_l1_msg.hpp index 295229f1f21d..572d29d68436 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_send_l2_to_l1_msg.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_send_l2_to_l1_msg.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,22 +18,18 @@ struct lookup_send_l2_to_l1_msg_write_l2_to_l1_msg_settings_ { static constexpr std::string_view NAME = "LOOKUP_SEND_L2_TO_L1_MSG_WRITE_L2_TO_L1_MSG"; static constexpr std::string_view RELATION_NAME = "send_l2_to_l1_msg"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::execution_sel_write_l2_to_l1_msg; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_write_l2_to_l1_msg); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::execution_public_inputs_index), + ColumnExpression(ColumnAndShifts::execution_register_0_), + ColumnExpression(ColumnAndShifts::execution_register_1_), + ColumnExpression(ColumnAndShifts::execution_contract_address)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_1_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_2_)); static constexpr Column COUNTS = Column::lookup_send_l2_to_l1_msg_write_l2_to_l1_msg_counts; static constexpr Column INVERSES = Column::lookup_send_l2_to_l1_msg_write_l2_to_l1_msg_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_public_inputs_index, - ColumnAndShifts::execution_register_0_, - ColumnAndShifts::execution_register_1_, - ColumnAndShifts::execution_contract_address - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, - ColumnAndShifts::public_inputs_cols_0_, - ColumnAndShifts::public_inputs_cols_1_, - ColumnAndShifts::public_inputs_cols_2_ - }; }; using lookup_send_l2_to_l1_msg_write_l2_to_l1_msg_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_sha256.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_sha256.hpp index 9125730319b3..a7220bb44f1e 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_sha256.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_sha256.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,18 +18,16 @@ struct lookup_sha256_range_comp_w_lhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_W_LHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_sel_compute_w); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_computed_w_lhs), + ColumnExpression(ColumnAndShifts::sha256_sel_compute_w)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_w_lhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_w_lhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, - ColumnAndShifts::sha256_computed_w_lhs, - ColumnAndShifts::sha256_sel_compute_w - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_w_lhs_settings = lookup_settings; @@ -41,18 +40,16 @@ struct lookup_sha256_range_comp_w_rhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_W_RHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_sel_compute_w); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_computed_w_rhs), + ColumnExpression(ColumnAndShifts::sha256_sel_compute_w)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_w_rhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_w_rhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, - ColumnAndShifts::sha256_computed_w_rhs, - ColumnAndShifts::sha256_sel_compute_w - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_w_rhs_settings = lookup_settings; @@ -65,16 +62,16 @@ struct lookup_sha256_range_rhs_w_7_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_W_7"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_sel_compute_w); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_7), + ColumnExpression(ColumnAndShifts::sha256_rhs_w_7), + ColumnExpression(ColumnAndShifts::sha256_sel_compute_w)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_7_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_w_7_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_7, ColumnAndShifts::sha256_rhs_w_7, ColumnAndShifts::sha256_sel_compute_w - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_rhs_w_7_settings = lookup_settings; @@ -87,16 +84,16 @@ struct lookup_sha256_range_rhs_w_18_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_W_18"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_sel_compute_w); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_18), + ColumnExpression(ColumnAndShifts::sha256_rhs_w_18), + ColumnExpression(ColumnAndShifts::sha256_sel_compute_w)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_18_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_w_18_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_18, ColumnAndShifts::sha256_rhs_w_18, ColumnAndShifts::sha256_sel_compute_w - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_rhs_w_18_settings = lookup_settings; @@ -109,16 +106,16 @@ struct lookup_sha256_range_rhs_w_3_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_W_3"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_sel_compute_w); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_3), + ColumnExpression(ColumnAndShifts::sha256_rhs_w_3), + ColumnExpression(ColumnAndShifts::sha256_sel_compute_w)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_3_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_w_3_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_3, ColumnAndShifts::sha256_rhs_w_3, ColumnAndShifts::sha256_sel_compute_w - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_rhs_w_3_settings = lookup_settings; @@ -131,22 +128,21 @@ struct lookup_sha256_w_s_0_xor_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_W_S_0_XOR_0"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_sel_compute_w); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_w_15_rotr_7), + ColumnExpression(ColumnAndShifts::sha256_w_15_rotr_18), + ColumnExpression(ColumnAndShifts::sha256_w_15_rotr_7_xor_w_15_rotr_18), + ColumnExpression(ColumnAndShifts::sha256_xor_sel), + ColumnExpression(ColumnAndShifts::sha256_u32_tag)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_sha256_w_s_0_xor_0_counts; static constexpr Column INVERSES = Column::lookup_sha256_w_s_0_xor_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_w_15_rotr_7, - ColumnAndShifts::sha256_w_15_rotr_18, - ColumnAndShifts::sha256_w_15_rotr_7_xor_w_15_rotr_18, - ColumnAndShifts::sha256_xor_sel, - ColumnAndShifts::sha256_u32_tag - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_sha256_w_s_0_xor_0_settings = lookup_settings; @@ -159,22 +155,21 @@ struct lookup_sha256_w_s_0_xor_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_W_S_0_XOR_1"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_sel_compute_w); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_w_15_rotr_7_xor_w_15_rotr_18), + ColumnExpression(ColumnAndShifts::sha256_w_15_rshift_3), + ColumnExpression(ColumnAndShifts::sha256_w_s_0), + ColumnExpression(ColumnAndShifts::sha256_xor_sel), + ColumnExpression(ColumnAndShifts::sha256_u32_tag)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_sha256_w_s_0_xor_1_counts; static constexpr Column INVERSES = Column::lookup_sha256_w_s_0_xor_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_w_15_rotr_7_xor_w_15_rotr_18, - ColumnAndShifts::sha256_w_15_rshift_3, - ColumnAndShifts::sha256_w_s_0, - ColumnAndShifts::sha256_xor_sel, - ColumnAndShifts::sha256_u32_tag - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_sha256_w_s_0_xor_1_settings = lookup_settings; @@ -187,16 +182,16 @@ struct lookup_sha256_range_rhs_w_17_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_W_17"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_sel_compute_w); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_17), + ColumnExpression(ColumnAndShifts::sha256_rhs_w_17), + ColumnExpression(ColumnAndShifts::sha256_sel_compute_w)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_17_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_w_17_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_17, ColumnAndShifts::sha256_rhs_w_17, ColumnAndShifts::sha256_sel_compute_w - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_rhs_w_17_settings = lookup_settings; @@ -209,16 +204,16 @@ struct lookup_sha256_range_rhs_w_19_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_W_19"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_sel_compute_w); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_19), + ColumnExpression(ColumnAndShifts::sha256_rhs_w_19), + ColumnExpression(ColumnAndShifts::sha256_sel_compute_w)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_19_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_w_19_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_19, ColumnAndShifts::sha256_rhs_w_19, ColumnAndShifts::sha256_sel_compute_w - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_rhs_w_19_settings = lookup_settings; @@ -231,16 +226,16 @@ struct lookup_sha256_range_rhs_w_10_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_W_10"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_sel_compute_w); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_10), + ColumnExpression(ColumnAndShifts::sha256_rhs_w_10), + ColumnExpression(ColumnAndShifts::sha256_sel_compute_w)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_10_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_w_10_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_10, ColumnAndShifts::sha256_rhs_w_10, ColumnAndShifts::sha256_sel_compute_w - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_rhs_w_10_settings = lookup_settings; @@ -253,22 +248,21 @@ struct lookup_sha256_w_s_1_xor_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_W_S_1_XOR_0"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_sel_compute_w); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_w_2_rotr_17), + ColumnExpression(ColumnAndShifts::sha256_w_2_rotr_19), + ColumnExpression(ColumnAndShifts::sha256_w_2_rotr_17_xor_w_2_rotr_19), + ColumnExpression(ColumnAndShifts::sha256_xor_sel), + ColumnExpression(ColumnAndShifts::sha256_u32_tag)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_sha256_w_s_1_xor_0_counts; static constexpr Column INVERSES = Column::lookup_sha256_w_s_1_xor_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_w_2_rotr_17, - ColumnAndShifts::sha256_w_2_rotr_19, - ColumnAndShifts::sha256_w_2_rotr_17_xor_w_2_rotr_19, - ColumnAndShifts::sha256_xor_sel, - ColumnAndShifts::sha256_u32_tag - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_sha256_w_s_1_xor_0_settings = lookup_settings; @@ -281,22 +275,23 @@ struct lookup_sha256_w_s_1_xor_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_W_S_1_XOR_1"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_sel_compute_w); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_w_2_rotr_17_xor_w_2_rotr_19), + ColumnExpression(ColumnAndShifts::sha256_w_2_rshift_10), + ColumnExpression(ColumnAndShifts::sha256_w_s_1), + ColumnExpression(ColumnAndShifts::sha256_xor_sel), + ColumnExpression(ColumnAndShifts::sha256_u32_tag), + ColumnExpression(ColumnAndShifts::sha256_u32_tag)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_tag_a), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_sha256_w_s_1_xor_1_counts; static constexpr Column INVERSES = Column::lookup_sha256_w_s_1_xor_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_w_2_rotr_17_xor_w_2_rotr_19, - ColumnAndShifts::sha256_w_2_rshift_10, - ColumnAndShifts::sha256_w_s_1, - ColumnAndShifts::sha256_xor_sel, - ColumnAndShifts::sha256_u32_tag, - ColumnAndShifts::sha256_u32_tag - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::bitwise_acc_ia, ColumnAndShifts::bitwise_acc_ib, ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_op_id, ColumnAndShifts::bitwise_tag_a, ColumnAndShifts::bitwise_tag_a - }; }; using lookup_sha256_w_s_1_xor_1_settings = lookup_settings; @@ -309,16 +304,16 @@ struct lookup_sha256_range_rhs_e_6_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_E_6"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_6), + ColumnExpression(ColumnAndShifts::sha256_rhs_e_6), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_e_6_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_e_6_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_6, ColumnAndShifts::sha256_rhs_e_6, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_rhs_e_6_settings = lookup_settings; @@ -331,16 +326,16 @@ struct lookup_sha256_range_rhs_e_11_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_E_11"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_11), + ColumnExpression(ColumnAndShifts::sha256_rhs_e_11), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_e_11_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_e_11_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_11, ColumnAndShifts::sha256_rhs_e_11, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_rhs_e_11_settings = lookup_settings; @@ -353,16 +348,16 @@ struct lookup_sha256_range_rhs_e_25_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_E_25"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_25), + ColumnExpression(ColumnAndShifts::sha256_rhs_e_25), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_e_25_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_e_25_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_25, ColumnAndShifts::sha256_rhs_e_25, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_rhs_e_25_settings = lookup_settings; @@ -375,22 +370,20 @@ struct lookup_sha256_s_1_xor_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_S_1_XOR_0"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_e_rotr_6), + ColumnExpression(ColumnAndShifts::sha256_e_rotr_11), + ColumnExpression(ColumnAndShifts::sha256_e_rotr_6_xor_e_rotr_11), + ColumnExpression(ColumnAndShifts::sha256_xor_sel), + ColumnExpression(ColumnAndShifts::sha256_u32_tag)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_sha256_s_1_xor_0_counts; static constexpr Column INVERSES = Column::lookup_sha256_s_1_xor_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_e_rotr_6, - ColumnAndShifts::sha256_e_rotr_11, - ColumnAndShifts::sha256_e_rotr_6_xor_e_rotr_11, - ColumnAndShifts::sha256_xor_sel, - ColumnAndShifts::sha256_u32_tag - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_sha256_s_1_xor_0_settings = lookup_settings; @@ -403,22 +396,20 @@ struct lookup_sha256_s_1_xor_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_S_1_XOR_1"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_e_rotr_6_xor_e_rotr_11), + ColumnExpression(ColumnAndShifts::sha256_e_rotr_25), + ColumnExpression(ColumnAndShifts::sha256_s_1), + ColumnExpression(ColumnAndShifts::sha256_xor_sel), + ColumnExpression(ColumnAndShifts::sha256_u32_tag)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_sha256_s_1_xor_1_counts; static constexpr Column INVERSES = Column::lookup_sha256_s_1_xor_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_e_rotr_6_xor_e_rotr_11, - ColumnAndShifts::sha256_e_rotr_25, - ColumnAndShifts::sha256_s_1, - ColumnAndShifts::sha256_xor_sel, - ColumnAndShifts::sha256_u32_tag - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_sha256_s_1_xor_1_settings = lookup_settings; @@ -431,20 +422,20 @@ struct lookup_sha256_ch_and_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_CH_AND_0"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_e), + ColumnExpression(ColumnAndShifts::sha256_f), + ColumnExpression(ColumnAndShifts::sha256_e_and_f), + ColumnExpression(ColumnAndShifts::sha256_and_sel), + ColumnExpression(ColumnAndShifts::sha256_u32_tag)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_sha256_ch_and_0_counts; static constexpr Column INVERSES = Column::lookup_sha256_ch_and_0_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::sha256_e, - ColumnAndShifts::sha256_f, - ColumnAndShifts::sha256_e_and_f, - ColumnAndShifts::sha256_and_sel, - ColumnAndShifts::sha256_u32_tag }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_sha256_ch_and_0_settings = lookup_settings; @@ -457,20 +448,20 @@ struct lookup_sha256_ch_and_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_CH_AND_1"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_not_e), + ColumnExpression(ColumnAndShifts::sha256_g), + ColumnExpression(ColumnAndShifts::sha256_not_e_and_g), + ColumnExpression(ColumnAndShifts::sha256_and_sel), + ColumnExpression(ColumnAndShifts::sha256_u32_tag)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_sha256_ch_and_1_counts; static constexpr Column INVERSES = Column::lookup_sha256_ch_and_1_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::sha256_not_e, - ColumnAndShifts::sha256_g, - ColumnAndShifts::sha256_not_e_and_g, - ColumnAndShifts::sha256_and_sel, - ColumnAndShifts::sha256_u32_tag }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_sha256_ch_and_1_settings = lookup_settings; @@ -483,20 +474,20 @@ struct lookup_sha256_ch_xor_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_CH_XOR"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_e_and_f), + ColumnExpression(ColumnAndShifts::sha256_not_e_and_g), + ColumnExpression(ColumnAndShifts::sha256_ch), + ColumnExpression(ColumnAndShifts::sha256_xor_sel), + ColumnExpression(ColumnAndShifts::sha256_u32_tag)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_sha256_ch_xor_counts; static constexpr Column INVERSES = Column::lookup_sha256_ch_xor_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::sha256_e_and_f, - ColumnAndShifts::sha256_not_e_and_g, - ColumnAndShifts::sha256_ch, - ColumnAndShifts::sha256_xor_sel, - ColumnAndShifts::sha256_u32_tag }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_sha256_ch_xor_settings = lookup_settings; @@ -508,16 +499,15 @@ struct lookup_sha256_round_constant_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_ROUND_CONSTANT"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_sha256_compression; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_sha256_compression); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_round_count), + ColumnExpression(ColumnAndShifts::sha256_round_constant)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::precomputed_sha256_compression_round_constant)); static constexpr Column COUNTS = Column::lookup_sha256_round_constant_counts; static constexpr Column INVERSES = Column::lookup_sha256_round_constant_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_round_count, ColumnAndShifts::sha256_round_constant - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::precomputed_sha256_compression_round_constant - }; }; using lookup_sha256_round_constant_settings = lookup_settings; @@ -530,16 +520,16 @@ struct lookup_sha256_range_rhs_a_2_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_A_2"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_2), + ColumnExpression(ColumnAndShifts::sha256_rhs_a_2), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_a_2_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_a_2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_2, ColumnAndShifts::sha256_rhs_a_2, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_rhs_a_2_settings = lookup_settings; @@ -552,16 +542,16 @@ struct lookup_sha256_range_rhs_a_13_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_A_13"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_13), + ColumnExpression(ColumnAndShifts::sha256_rhs_a_13), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_a_13_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_a_13_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_13, ColumnAndShifts::sha256_rhs_a_13, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_rhs_a_13_settings = lookup_settings; @@ -574,16 +564,16 @@ struct lookup_sha256_range_rhs_a_22_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_A_22"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_22), + ColumnExpression(ColumnAndShifts::sha256_rhs_a_22), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_a_22_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_a_22_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_22, ColumnAndShifts::sha256_rhs_a_22, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_rhs_a_22_settings = lookup_settings; @@ -596,22 +586,20 @@ struct lookup_sha256_s_0_xor_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_S_0_XOR_0"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_a_rotr_2), + ColumnExpression(ColumnAndShifts::sha256_a_rotr_13), + ColumnExpression(ColumnAndShifts::sha256_a_rotr_2_xor_a_rotr_13), + ColumnExpression(ColumnAndShifts::sha256_xor_sel), + ColumnExpression(ColumnAndShifts::sha256_u32_tag)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_sha256_s_0_xor_0_counts; static constexpr Column INVERSES = Column::lookup_sha256_s_0_xor_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_a_rotr_2, - ColumnAndShifts::sha256_a_rotr_13, - ColumnAndShifts::sha256_a_rotr_2_xor_a_rotr_13, - ColumnAndShifts::sha256_xor_sel, - ColumnAndShifts::sha256_u32_tag - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_sha256_s_0_xor_0_settings = lookup_settings; @@ -624,22 +612,20 @@ struct lookup_sha256_s_0_xor_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_S_0_XOR_1"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_a_rotr_2_xor_a_rotr_13), + ColumnExpression(ColumnAndShifts::sha256_a_rotr_22), + ColumnExpression(ColumnAndShifts::sha256_s_0), + ColumnExpression(ColumnAndShifts::sha256_xor_sel), + ColumnExpression(ColumnAndShifts::sha256_u32_tag)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_sha256_s_0_xor_1_counts; static constexpr Column INVERSES = Column::lookup_sha256_s_0_xor_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_a_rotr_2_xor_a_rotr_13, - ColumnAndShifts::sha256_a_rotr_22, - ColumnAndShifts::sha256_s_0, - ColumnAndShifts::sha256_xor_sel, - ColumnAndShifts::sha256_u32_tag - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_sha256_s_0_xor_1_settings = lookup_settings; @@ -652,20 +638,20 @@ struct lookup_sha256_maj_and_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_MAJ_AND_0"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_a), + ColumnExpression(ColumnAndShifts::sha256_b), + ColumnExpression(ColumnAndShifts::sha256_a_and_b), + ColumnExpression(ColumnAndShifts::sha256_and_sel), + ColumnExpression(ColumnAndShifts::sha256_u32_tag)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_sha256_maj_and_0_counts; static constexpr Column INVERSES = Column::lookup_sha256_maj_and_0_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::sha256_a, - ColumnAndShifts::sha256_b, - ColumnAndShifts::sha256_a_and_b, - ColumnAndShifts::sha256_and_sel, - ColumnAndShifts::sha256_u32_tag }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_sha256_maj_and_0_settings = lookup_settings; @@ -678,20 +664,20 @@ struct lookup_sha256_maj_and_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_MAJ_AND_1"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_a), + ColumnExpression(ColumnAndShifts::sha256_c), + ColumnExpression(ColumnAndShifts::sha256_a_and_c), + ColumnExpression(ColumnAndShifts::sha256_and_sel), + ColumnExpression(ColumnAndShifts::sha256_u32_tag)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_sha256_maj_and_1_counts; static constexpr Column INVERSES = Column::lookup_sha256_maj_and_1_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::sha256_a, - ColumnAndShifts::sha256_c, - ColumnAndShifts::sha256_a_and_c, - ColumnAndShifts::sha256_and_sel, - ColumnAndShifts::sha256_u32_tag }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_sha256_maj_and_1_settings = lookup_settings; @@ -704,20 +690,20 @@ struct lookup_sha256_maj_and_2_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_MAJ_AND_2"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_b), + ColumnExpression(ColumnAndShifts::sha256_c), + ColumnExpression(ColumnAndShifts::sha256_b_and_c), + ColumnExpression(ColumnAndShifts::sha256_and_sel), + ColumnExpression(ColumnAndShifts::sha256_u32_tag)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_sha256_maj_and_2_counts; static constexpr Column INVERSES = Column::lookup_sha256_maj_and_2_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::sha256_b, - ColumnAndShifts::sha256_c, - ColumnAndShifts::sha256_b_and_c, - ColumnAndShifts::sha256_and_sel, - ColumnAndShifts::sha256_u32_tag }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_sha256_maj_and_2_settings = lookup_settings; @@ -730,22 +716,20 @@ struct lookup_sha256_maj_xor_0_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_MAJ_XOR_0"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_a_and_b), + ColumnExpression(ColumnAndShifts::sha256_a_and_c), + ColumnExpression(ColumnAndShifts::sha256_a_and_b_xor_a_and_c), + ColumnExpression(ColumnAndShifts::sha256_xor_sel), + ColumnExpression(ColumnAndShifts::sha256_u32_tag)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_sha256_maj_xor_0_counts; static constexpr Column INVERSES = Column::lookup_sha256_maj_xor_0_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_a_and_b, - ColumnAndShifts::sha256_a_and_c, - ColumnAndShifts::sha256_a_and_b_xor_a_and_c, - ColumnAndShifts::sha256_xor_sel, - ColumnAndShifts::sha256_u32_tag - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_sha256_maj_xor_0_settings = lookup_settings; @@ -758,22 +742,20 @@ struct lookup_sha256_maj_xor_1_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_MAJ_XOR_1"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::bitwise_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::bitwise_start); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_a_and_b_xor_a_and_c), + ColumnExpression(ColumnAndShifts::sha256_b_and_c), + ColumnExpression(ColumnAndShifts::sha256_maj), + ColumnExpression(ColumnAndShifts::sha256_xor_sel), + ColumnExpression(ColumnAndShifts::sha256_u32_tag)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::bitwise_acc_ia), + ColumnExpression(ColumnAndShifts::bitwise_acc_ib), + ColumnExpression(ColumnAndShifts::bitwise_acc_ic), + ColumnExpression(ColumnAndShifts::bitwise_op_id), + ColumnExpression(ColumnAndShifts::bitwise_tag_a)); static constexpr Column COUNTS = Column::lookup_sha256_maj_xor_1_counts; static constexpr Column INVERSES = Column::lookup_sha256_maj_xor_1_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_a_and_b_xor_a_and_c, - ColumnAndShifts::sha256_b_and_c, - ColumnAndShifts::sha256_maj, - ColumnAndShifts::sha256_xor_sel, - ColumnAndShifts::sha256_u32_tag - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia, - ColumnAndShifts::bitwise_acc_ib, - ColumnAndShifts::bitwise_acc_ic, - ColumnAndShifts::bitwise_op_id, - ColumnAndShifts::bitwise_tag_a }; }; using lookup_sha256_maj_xor_1_settings = lookup_settings; @@ -786,16 +768,16 @@ struct lookup_sha256_range_comp_next_a_lhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_NEXT_A_LHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_next_a_lhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_next_a_lhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_next_a_lhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_next_a_lhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_next_a_lhs_settings = lookup_settings; @@ -809,16 +791,16 @@ struct lookup_sha256_range_comp_next_a_rhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_NEXT_A_RHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_next_a_rhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_next_a_rhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_next_a_rhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_next_a_rhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_next_a_rhs_settings = lookup_settings; @@ -832,16 +814,16 @@ struct lookup_sha256_range_comp_next_e_lhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_NEXT_E_LHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_next_e_lhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_next_e_lhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_next_e_lhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_next_e_lhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_next_e_lhs_settings = lookup_settings; @@ -855,16 +837,16 @@ struct lookup_sha256_range_comp_next_e_rhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_NEXT_E_RHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_next_e_rhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_next_e_rhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_next_e_rhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_next_e_rhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_next_e_rhs_settings = lookup_settings; @@ -878,16 +860,16 @@ struct lookup_sha256_range_comp_a_lhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_A_LHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_output_a_lhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_a_lhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_a_lhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_a_lhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_a_lhs_settings = lookup_settings; @@ -900,16 +882,16 @@ struct lookup_sha256_range_comp_a_rhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_A_RHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_output_a_rhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_a_rhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_a_rhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_a_rhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_a_rhs_settings = lookup_settings; @@ -922,16 +904,16 @@ struct lookup_sha256_range_comp_b_lhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_B_LHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_output_b_lhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_b_lhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_b_lhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_b_lhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_b_lhs_settings = lookup_settings; @@ -944,16 +926,16 @@ struct lookup_sha256_range_comp_b_rhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_B_RHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_output_b_rhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_b_rhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_b_rhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_b_rhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_b_rhs_settings = lookup_settings; @@ -966,16 +948,16 @@ struct lookup_sha256_range_comp_c_lhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_C_LHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_output_c_lhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_c_lhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_c_lhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_c_lhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_c_lhs_settings = lookup_settings; @@ -988,16 +970,16 @@ struct lookup_sha256_range_comp_c_rhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_C_RHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_output_c_rhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_c_rhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_c_rhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_c_rhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_c_rhs_settings = lookup_settings; @@ -1010,16 +992,16 @@ struct lookup_sha256_range_comp_d_lhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_D_LHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_output_d_lhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_d_lhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_d_lhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_d_lhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_d_lhs_settings = lookup_settings; @@ -1032,16 +1014,16 @@ struct lookup_sha256_range_comp_d_rhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_D_RHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_output_d_rhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_d_rhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_d_rhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_d_rhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_d_rhs_settings = lookup_settings; @@ -1054,16 +1036,16 @@ struct lookup_sha256_range_comp_e_lhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_E_LHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_output_e_lhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_e_lhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_e_lhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_e_lhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_e_lhs_settings = lookup_settings; @@ -1076,16 +1058,16 @@ struct lookup_sha256_range_comp_e_rhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_E_RHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_output_e_rhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_e_rhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_e_rhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_e_rhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_e_rhs_settings = lookup_settings; @@ -1098,16 +1080,16 @@ struct lookup_sha256_range_comp_f_lhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_F_LHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_output_f_lhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_f_lhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_f_lhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_f_lhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_f_lhs_settings = lookup_settings; @@ -1120,16 +1102,16 @@ struct lookup_sha256_range_comp_f_rhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_F_RHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_output_f_rhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_f_rhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_f_rhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_f_rhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_f_rhs_settings = lookup_settings; @@ -1142,16 +1124,16 @@ struct lookup_sha256_range_comp_g_lhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_G_LHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_output_g_lhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_g_lhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_g_lhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_g_lhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_g_lhs_settings = lookup_settings; @@ -1164,16 +1146,16 @@ struct lookup_sha256_range_comp_g_rhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_G_RHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_output_g_rhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_g_rhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_g_rhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_g_rhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_g_rhs_settings = lookup_settings; @@ -1186,16 +1168,16 @@ struct lookup_sha256_range_comp_h_lhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_H_LHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_output_h_lhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_h_lhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_h_lhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_h_lhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_h_lhs_settings = lookup_settings; @@ -1208,16 +1190,16 @@ struct lookup_sha256_range_comp_h_rhs_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_H_RHS"; static constexpr std::string_view RELATION_NAME = "sha256"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_perform_round; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_perform_round); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_two_pow_32), + ColumnExpression(ColumnAndShifts::sha256_output_h_rhs), + ColumnExpression(ColumnAndShifts::sha256_perform_round)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_range_comp_h_rhs_counts; static constexpr Column INVERSES = Column::lookup_sha256_range_comp_h_rhs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_h_rhs, ColumnAndShifts::sha256_perform_round - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_range_comp_h_rhs_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_sha256_mem.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_sha256_mem.hpp index 9485b0a587d3..07b906ea00ec 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_sha256_mem.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_sha256_mem.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,18 +18,17 @@ struct lookup_sha256_mem_check_state_addr_in_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_MEM_CHECK_STATE_ADDR_IN_RANGE"; static constexpr std::string_view RELATION_NAME = "sha256_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_start; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_start); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_max_state_addr), + ColumnExpression(ColumnAndShifts::sha256_max_mem_addr), + ColumnExpression(ColumnAndShifts::sha256_sel_state_out_of_range_err)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_mem_check_state_addr_in_range_counts; static constexpr Column INVERSES = Column::lookup_sha256_mem_check_state_addr_in_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_max_state_addr, - ColumnAndShifts::sha256_max_mem_addr, - ColumnAndShifts::sha256_sel_state_out_of_range_err - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_mem_check_state_addr_in_range_settings = @@ -43,18 +43,17 @@ struct lookup_sha256_mem_check_input_addr_in_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_MEM_CHECK_INPUT_ADDR_IN_RANGE"; static constexpr std::string_view RELATION_NAME = "sha256_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_start; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_start); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_max_input_addr), + ColumnExpression(ColumnAndShifts::sha256_max_mem_addr), + ColumnExpression(ColumnAndShifts::sha256_sel_input_out_of_range_err)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_mem_check_input_addr_in_range_counts; static constexpr Column INVERSES = Column::lookup_sha256_mem_check_input_addr_in_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_max_input_addr, - ColumnAndShifts::sha256_max_mem_addr, - ColumnAndShifts::sha256_sel_input_out_of_range_err - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_mem_check_input_addr_in_range_settings = @@ -69,18 +68,17 @@ struct lookup_sha256_mem_check_output_addr_in_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_SHA256_MEM_CHECK_OUTPUT_ADDR_IN_RANGE"; static constexpr std::string_view RELATION_NAME = "sha256_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::sha256_start; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::sha256_start); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::sha256_max_output_addr), + ColumnExpression(ColumnAndShifts::sha256_max_mem_addr), + ColumnExpression(ColumnAndShifts::sha256_sel_output_out_of_range_err)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_sha256_mem_check_output_addr_in_range_counts; static constexpr Column INVERSES = Column::lookup_sha256_mem_check_output_addr_in_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::sha256_max_output_addr, - ColumnAndShifts::sha256_max_mem_addr, - ColumnAndShifts::sha256_sel_output_out_of_range_err - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_sha256_mem_check_output_addr_in_range_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_sload.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_sload.hpp index e8786c547098..c892d2fbe7cd 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_sload.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_sload.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,22 +18,19 @@ struct lookup_sload_storage_read_settings_ { static constexpr std::string_view NAME = "LOOKUP_SLOAD_STORAGE_READ"; static constexpr std::string_view RELATION_NAME = "sload"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::execution_sel_execute_sload; - static constexpr Column DST_SELECTOR = Column::public_data_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_execute_sload); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_data_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_contract_address), + ColumnExpression(ColumnAndShifts::execution_register_0_), + ColumnExpression(ColumnAndShifts::execution_register_1_), + ColumnExpression(ColumnAndShifts::execution_prev_public_data_tree_root)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_address), + ColumnExpression(ColumnAndShifts::public_data_check_slot), + ColumnExpression(ColumnAndShifts::public_data_check_value), + ColumnExpression(ColumnAndShifts::public_data_check_root)); static constexpr Column COUNTS = Column::lookup_sload_storage_read_counts; static constexpr Column INVERSES = Column::lookup_sload_storage_read_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_contract_address, - ColumnAndShifts::execution_register_0_, - ColumnAndShifts::execution_register_1_, - ColumnAndShifts::execution_prev_public_data_tree_root - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::public_data_check_address, - ColumnAndShifts::public_data_check_slot, - ColumnAndShifts::public_data_check_value, - ColumnAndShifts::public_data_check_root - }; }; using lookup_sload_storage_read_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_sstore.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_sstore.hpp index f2de988d82bd..14963f17066f 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_sstore.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_sstore.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,28 +18,27 @@ struct lookup_sstore_record_written_storage_slot_settings_ { static constexpr std::string_view NAME = "LOOKUP_SSTORE_RECORD_WRITTEN_STORAGE_SLOT"; static constexpr std::string_view RELATION_NAME = "sstore"; static constexpr size_t LOOKUP_TUPLE_SIZE = 7; - static constexpr Column SRC_SELECTOR = Column::execution_sel_write_public_data; - static constexpr Column DST_SELECTOR = Column::written_public_data_slots_tree_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_write_public_data); + static constexpr auto DST_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_contract_address), + ColumnExpression(ColumnAndShifts::execution_register_1_), + ColumnExpression(ColumnAndShifts::execution_sel_write_public_data), + ColumnExpression(ColumnAndShifts::execution_prev_written_public_data_slots_tree_root), + ColumnExpression(ColumnAndShifts::execution_prev_written_public_data_slots_tree_size), + ColumnExpression(ColumnAndShifts::execution_written_public_data_slots_tree_root), + ColumnExpression(ColumnAndShifts::execution_written_public_data_slots_tree_size)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_address), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_slot), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_write), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_root), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_tree_size_before_write), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_write_root), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_tree_size_after_write)); static constexpr Column COUNTS = Column::lookup_sstore_record_written_storage_slot_counts; static constexpr Column INVERSES = Column::lookup_sstore_record_written_storage_slot_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_contract_address, - ColumnAndShifts::execution_register_1_, - ColumnAndShifts::execution_sel_write_public_data, - ColumnAndShifts::execution_prev_written_public_data_slots_tree_root, - ColumnAndShifts::execution_prev_written_public_data_slots_tree_size, - ColumnAndShifts::execution_written_public_data_slots_tree_root, - ColumnAndShifts::execution_written_public_data_slots_tree_size - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::written_public_data_slots_tree_check_address, - ColumnAndShifts::written_public_data_slots_tree_check_slot, - ColumnAndShifts::written_public_data_slots_tree_check_write, - ColumnAndShifts::written_public_data_slots_tree_check_root, - ColumnAndShifts::written_public_data_slots_tree_check_tree_size_before_write, - ColumnAndShifts::written_public_data_slots_tree_check_write_root, - ColumnAndShifts::written_public_data_slots_tree_check_tree_size_after_write - }; }; using lookup_sstore_record_written_storage_slot_settings = @@ -53,30 +53,28 @@ struct lookup_sstore_storage_write_settings_ { static constexpr std::string_view NAME = "LOOKUP_SSTORE_STORAGE_WRITE"; static constexpr std::string_view RELATION_NAME = "sstore"; static constexpr size_t LOOKUP_TUPLE_SIZE = 8; - static constexpr Column SRC_SELECTOR = Column::execution_sel_write_public_data; - static constexpr Column DST_SELECTOR = Column::public_data_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_sel_write_public_data); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_data_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_register_0_), + ColumnExpression(ColumnAndShifts::execution_contract_address), + ColumnExpression(ColumnAndShifts::execution_register_1_), + ColumnExpression(ColumnAndShifts::execution_prev_public_data_tree_root), + ColumnExpression(ColumnAndShifts::execution_prev_public_data_tree_size), + ColumnExpression(ColumnAndShifts::execution_public_data_tree_root), + ColumnExpression(ColumnAndShifts::execution_public_data_tree_size), + ColumnExpression(ColumnAndShifts::precomputed_clk)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_value), + ColumnExpression(ColumnAndShifts::public_data_check_address), + ColumnExpression(ColumnAndShifts::public_data_check_slot), + ColumnExpression(ColumnAndShifts::public_data_check_root), + ColumnExpression(ColumnAndShifts::public_data_check_tree_size_before_write), + ColumnExpression(ColumnAndShifts::public_data_check_write_root), + ColumnExpression(ColumnAndShifts::public_data_check_tree_size_after_write), + ColumnExpression(ColumnAndShifts::public_data_check_clk)); static constexpr Column COUNTS = Column::lookup_sstore_storage_write_counts; static constexpr Column INVERSES = Column::lookup_sstore_storage_write_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::execution_register_0_, - ColumnAndShifts::execution_contract_address, - ColumnAndShifts::execution_register_1_, - ColumnAndShifts::execution_prev_public_data_tree_root, - ColumnAndShifts::execution_prev_public_data_tree_size, - ColumnAndShifts::execution_public_data_tree_root, - ColumnAndShifts::execution_public_data_tree_size, - ColumnAndShifts::precomputed_clk - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::public_data_check_value, - ColumnAndShifts::public_data_check_address, - ColumnAndShifts::public_data_check_slot, - ColumnAndShifts::public_data_check_root, - ColumnAndShifts::public_data_check_tree_size_before_write, - ColumnAndShifts::public_data_check_write_root, - ColumnAndShifts::public_data_check_tree_size_after_write, - ColumnAndShifts::public_data_check_clk - }; }; using lookup_sstore_storage_write_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_to_radix.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_to_radix.hpp index c6c76b8afbac..75f24c19bd91 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_to_radix.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_to_radix.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,12 +18,12 @@ struct lookup_to_radix_limb_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_TO_RADIX_LIMB_RANGE"; static constexpr std::string_view RELATION_NAME = "to_radix"; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; - static constexpr Column SRC_SELECTOR = Column::to_radix_sel; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_8; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::to_radix_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_8); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::to_radix_limb)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk)); static constexpr Column COUNTS = Column::lookup_to_radix_limb_range_counts; static constexpr Column INVERSES = Column::lookup_to_radix_limb_range_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::to_radix_limb }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::precomputed_clk }; }; using lookup_to_radix_limb_range_settings = lookup_settings; @@ -35,14 +36,12 @@ struct lookup_to_radix_limb_less_than_radix_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_TO_RADIX_LIMB_LESS_THAN_RADIX_RANGE"; static constexpr std::string_view RELATION_NAME = "to_radix"; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; - static constexpr Column SRC_SELECTOR = Column::to_radix_sel; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_8; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::to_radix_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_8); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::to_radix_limb_radix_diff)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk)); static constexpr Column COUNTS = Column::lookup_to_radix_limb_less_than_radix_range_counts; static constexpr Column INVERSES = Column::lookup_to_radix_limb_less_than_radix_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::to_radix_limb_radix_diff - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::precomputed_clk }; }; using lookup_to_radix_limb_less_than_radix_range_settings = @@ -57,16 +56,15 @@ struct lookup_to_radix_fetch_safe_limbs_settings_ { static constexpr std::string_view NAME = "LOOKUP_TO_RADIX_FETCH_SAFE_LIMBS"; static constexpr std::string_view RELATION_NAME = "to_radix"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::to_radix_start; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_to_radix_p_limb_counts; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::to_radix_start); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_to_radix_p_limb_counts); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::to_radix_radix), + ColumnExpression(ColumnAndShifts::to_radix_safe_limbs)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::precomputed_to_radix_safe_limbs)); static constexpr Column COUNTS = Column::lookup_to_radix_fetch_safe_limbs_counts; static constexpr Column INVERSES = Column::lookup_to_radix_fetch_safe_limbs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::to_radix_radix, ColumnAndShifts::to_radix_safe_limbs - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::precomputed_to_radix_safe_limbs - }; }; using lookup_to_radix_fetch_safe_limbs_settings = lookup_settings; @@ -79,18 +77,17 @@ struct lookup_to_radix_fetch_p_limb_settings_ { static constexpr std::string_view NAME = "LOOKUP_TO_RADIX_FETCH_P_LIMB"; static constexpr std::string_view RELATION_NAME = "to_radix"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::to_radix_not_padding_limb; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_p_decomposition; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::to_radix_not_padding_limb); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_p_decomposition); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::to_radix_radix), + ColumnExpression(ColumnAndShifts::to_radix_limb_index), + ColumnExpression(ColumnAndShifts::to_radix_p_limb)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_p_decomposition_radix), + ColumnExpression(ColumnAndShifts::precomputed_p_decomposition_limb_index), + ColumnExpression(ColumnAndShifts::precomputed_p_decomposition_limb)); static constexpr Column COUNTS = Column::lookup_to_radix_fetch_p_limb_counts; static constexpr Column INVERSES = Column::lookup_to_radix_fetch_p_limb_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::to_radix_radix, ColumnAndShifts::to_radix_limb_index, ColumnAndShifts::to_radix_p_limb - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_p_decomposition_radix, - ColumnAndShifts::precomputed_p_decomposition_limb_index, - ColumnAndShifts::precomputed_p_decomposition_limb - }; }; using lookup_to_radix_fetch_p_limb_settings = lookup_settings; @@ -103,14 +100,12 @@ struct lookup_to_radix_limb_p_diff_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_TO_RADIX_LIMB_P_DIFF_RANGE"; static constexpr std::string_view RELATION_NAME = "to_radix"; static constexpr size_t LOOKUP_TUPLE_SIZE = 1; - static constexpr Column SRC_SELECTOR = Column::to_radix_not_padding_limb; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_8; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::to_radix_not_padding_limb); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_range_8); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::to_radix_limb_p_diff)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk)); static constexpr Column COUNTS = Column::lookup_to_radix_limb_p_diff_range_counts; static constexpr Column INVERSES = Column::lookup_to_radix_limb_p_diff_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::to_radix_limb_p_diff - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::precomputed_clk }; }; using lookup_to_radix_limb_p_diff_range_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_to_radix_mem.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_to_radix_mem.hpp index a47398966d53..5c1ca2cfc7bb 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_to_radix_mem.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_to_radix_mem.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,18 +18,17 @@ struct lookup_to_radix_mem_check_dst_addr_in_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_TO_RADIX_MEM_CHECK_DST_ADDR_IN_RANGE"; static constexpr std::string_view RELATION_NAME = "to_radix_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::to_radix_mem_start; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::to_radix_mem_start); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::to_radix_mem_max_write_addr), + ColumnExpression(ColumnAndShifts::to_radix_mem_max_mem_addr), + ColumnExpression(ColumnAndShifts::to_radix_mem_sel_dst_out_of_range_err)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_to_radix_mem_check_dst_addr_in_range_counts; static constexpr Column INVERSES = Column::lookup_to_radix_mem_check_dst_addr_in_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::to_radix_mem_max_write_addr, - ColumnAndShifts::to_radix_mem_max_mem_addr, - ColumnAndShifts::to_radix_mem_sel_dst_out_of_range_err - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_to_radix_mem_check_dst_addr_in_range_settings = @@ -43,18 +43,17 @@ struct lookup_to_radix_mem_check_radix_lt_2_settings_ { static constexpr std::string_view NAME = "LOOKUP_TO_RADIX_MEM_CHECK_RADIX_LT_2"; static constexpr std::string_view RELATION_NAME = "to_radix_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::to_radix_mem_start; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::to_radix_mem_start); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::to_radix_mem_two), + ColumnExpression(ColumnAndShifts::to_radix_mem_radix), + ColumnExpression(ColumnAndShifts::to_radix_mem_sel_radix_lt_2_err)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_to_radix_mem_check_radix_lt_2_counts; static constexpr Column INVERSES = Column::lookup_to_radix_mem_check_radix_lt_2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::to_radix_mem_two, - ColumnAndShifts::to_radix_mem_radix, - ColumnAndShifts::to_radix_mem_sel_radix_lt_2_err - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_to_radix_mem_check_radix_lt_2_settings = lookup_settings; @@ -68,18 +67,17 @@ struct lookup_to_radix_mem_check_radix_gt_256_settings_ { static constexpr std::string_view NAME = "LOOKUP_TO_RADIX_MEM_CHECK_RADIX_GT_256"; static constexpr std::string_view RELATION_NAME = "to_radix_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::to_radix_mem_start; - static constexpr Column DST_SELECTOR = Column::gt_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::to_radix_mem_start); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::gt_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::to_radix_mem_radix), + ColumnExpression(ColumnAndShifts::to_radix_mem_two_five_six), + ColumnExpression(ColumnAndShifts::to_radix_mem_sel_radix_gt_256_err)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::gt_input_a), + ColumnExpression(ColumnAndShifts::gt_input_b), + ColumnExpression(ColumnAndShifts::gt_res)); static constexpr Column COUNTS = Column::lookup_to_radix_mem_check_radix_gt_256_counts; static constexpr Column INVERSES = Column::lookup_to_radix_mem_check_radix_gt_256_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::to_radix_mem_radix, - ColumnAndShifts::to_radix_mem_two_five_six, - ColumnAndShifts::to_radix_mem_sel_radix_gt_256_err - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::gt_input_a, - ColumnAndShifts::gt_input_b, - ColumnAndShifts::gt_res }; }; using lookup_to_radix_mem_check_radix_gt_256_settings = @@ -94,22 +92,19 @@ struct lookup_to_radix_mem_input_output_to_radix_settings_ { static constexpr std::string_view NAME = "LOOKUP_TO_RADIX_MEM_INPUT_OUTPUT_TO_RADIX"; static constexpr std::string_view RELATION_NAME = "to_radix_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::to_radix_mem_sel_should_exec; - static constexpr Column DST_SELECTOR = Column::to_radix_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::to_radix_mem_sel_should_exec); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::to_radix_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::to_radix_mem_value_to_decompose), + ColumnExpression(ColumnAndShifts::to_radix_mem_limb_index_to_lookup), + ColumnExpression(ColumnAndShifts::to_radix_mem_radix), + ColumnExpression(ColumnAndShifts::to_radix_mem_output_limb_value)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::to_radix_value), + ColumnExpression(ColumnAndShifts::to_radix_limb_index), + ColumnExpression(ColumnAndShifts::to_radix_radix), + ColumnExpression(ColumnAndShifts::to_radix_limb)); static constexpr Column COUNTS = Column::lookup_to_radix_mem_input_output_to_radix_counts; static constexpr Column INVERSES = Column::lookup_to_radix_mem_input_output_to_radix_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::to_radix_mem_value_to_decompose, - ColumnAndShifts::to_radix_mem_limb_index_to_lookup, - ColumnAndShifts::to_radix_mem_radix, - ColumnAndShifts::to_radix_mem_output_limb_value - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::to_radix_value, - ColumnAndShifts::to_radix_limb_index, - ColumnAndShifts::to_radix_radix, - ColumnAndShifts::to_radix_limb - }; }; using lookup_to_radix_mem_input_output_to_radix_settings = @@ -124,19 +119,22 @@ struct lookup_to_radix_mem_write_mem_settings_ { static constexpr std::string_view NAME = "LOOKUP_TO_RADIX_MEM_WRITE_MEM"; static constexpr std::string_view RELATION_NAME = "to_radix_mem"; static constexpr size_t LOOKUP_TUPLE_SIZE = 6; - static constexpr Column SRC_SELECTOR = Column::to_radix_mem_sel_should_exec; - static constexpr Column DST_SELECTOR = Column::memory_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::to_radix_mem_sel_should_exec); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::memory_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::to_radix_mem_execution_clk), + ColumnExpression(ColumnAndShifts::to_radix_mem_dst_addr), + ColumnExpression(ColumnAndShifts::to_radix_mem_output_limb_value), + ColumnExpression(ColumnAndShifts::to_radix_mem_output_tag), + ColumnExpression(ColumnAndShifts::to_radix_mem_space_id), + ColumnExpression(ColumnAndShifts::to_radix_mem_sel_should_exec)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::memory_clk), + ColumnExpression(ColumnAndShifts::memory_address), + ColumnExpression(ColumnAndShifts::memory_value), + ColumnExpression(ColumnAndShifts::memory_tag), + ColumnExpression(ColumnAndShifts::memory_space_id), + ColumnExpression(ColumnAndShifts::memory_rw)); static constexpr Column COUNTS = Column::lookup_to_radix_mem_write_mem_counts; static constexpr Column INVERSES = Column::lookup_to_radix_mem_write_mem_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::to_radix_mem_execution_clk, ColumnAndShifts::to_radix_mem_dst_addr, - ColumnAndShifts::to_radix_mem_output_limb_value, ColumnAndShifts::to_radix_mem_output_tag, - ColumnAndShifts::to_radix_mem_space_id, ColumnAndShifts::to_radix_mem_sel_should_exec - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::memory_clk, ColumnAndShifts::memory_address, ColumnAndShifts::memory_value, - ColumnAndShifts::memory_tag, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_rw - }; }; using lookup_to_radix_mem_write_mem_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_tx.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_tx.hpp index c21df85fa1b4..82a90f00b478 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_tx.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_tx.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,52 +18,50 @@ struct lookup_tx_read_phase_table_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_READ_PHASE_TABLE"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 19; - static constexpr Column SRC_SELECTOR = Column::tx_start_phase; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_phase; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_start_phase); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_phase); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::tx_phase_value), + ColumnExpression(ColumnAndShifts::tx_is_public_call_request), + ColumnExpression(ColumnAndShifts::tx_is_collect_fee), + ColumnExpression(ColumnAndShifts::tx_is_tree_padding), + ColumnExpression(ColumnAndShifts::tx_is_cleanup), + ColumnExpression(ColumnAndShifts::tx_is_revertible), + ColumnExpression(ColumnAndShifts::tx_read_pi_offset), + ColumnExpression(ColumnAndShifts::tx_read_pi_length_offset), + ColumnExpression(ColumnAndShifts::tx_sel_non_revertible_append_note_hash), + ColumnExpression(ColumnAndShifts::tx_sel_non_revertible_append_nullifier), + ColumnExpression(ColumnAndShifts::tx_sel_non_revertible_append_l2_l1_msg), + ColumnExpression(ColumnAndShifts::tx_sel_revertible_append_note_hash), + ColumnExpression(ColumnAndShifts::tx_sel_revertible_append_nullifier), + ColumnExpression(ColumnAndShifts::tx_sel_revertible_append_l2_l1_msg), + ColumnExpression(ColumnAndShifts::tx_sel_can_emit_note_hash), + ColumnExpression(ColumnAndShifts::tx_sel_can_emit_nullifier), + ColumnExpression(ColumnAndShifts::tx_sel_can_write_public_data), + ColumnExpression(ColumnAndShifts::tx_sel_can_emit_unencrypted_log), + ColumnExpression(ColumnAndShifts::tx_sel_can_emit_l2_l1_msg)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_phase_value), + ColumnExpression(ColumnAndShifts::precomputed_is_public_call_request_phase), + ColumnExpression(ColumnAndShifts::precomputed_sel_collect_fee), + ColumnExpression(ColumnAndShifts::precomputed_sel_tree_padding), + ColumnExpression(ColumnAndShifts::precomputed_sel_cleanup), + ColumnExpression(ColumnAndShifts::precomputed_is_revertible), + ColumnExpression(ColumnAndShifts::precomputed_read_public_input_offset), + ColumnExpression(ColumnAndShifts::precomputed_read_public_input_length_offset), + ColumnExpression(ColumnAndShifts::precomputed_sel_non_revertible_append_note_hash), + ColumnExpression(ColumnAndShifts::precomputed_sel_non_revertible_append_nullifier), + ColumnExpression(ColumnAndShifts::precomputed_sel_non_revertible_append_l2_l1_msg), + ColumnExpression(ColumnAndShifts::precomputed_sel_revertible_append_note_hash), + ColumnExpression(ColumnAndShifts::precomputed_sel_revertible_append_nullifier), + ColumnExpression(ColumnAndShifts::precomputed_sel_revertible_append_l2_l1_msg), + ColumnExpression(ColumnAndShifts::precomputed_sel_can_emit_note_hash), + ColumnExpression(ColumnAndShifts::precomputed_sel_can_emit_nullifier), + ColumnExpression(ColumnAndShifts::precomputed_sel_can_write_public_data), + ColumnExpression(ColumnAndShifts::precomputed_sel_can_emit_unencrypted_log), + ColumnExpression(ColumnAndShifts::precomputed_sel_can_emit_l2_l1_msg)); static constexpr Column COUNTS = Column::lookup_tx_read_phase_table_counts; static constexpr Column INVERSES = Column::lookup_tx_read_phase_table_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_phase_value, - ColumnAndShifts::tx_is_public_call_request, - ColumnAndShifts::tx_is_collect_fee, - ColumnAndShifts::tx_is_tree_padding, - ColumnAndShifts::tx_is_cleanup, - ColumnAndShifts::tx_is_revertible, - ColumnAndShifts::tx_read_pi_offset, - ColumnAndShifts::tx_read_pi_length_offset, - ColumnAndShifts::tx_sel_non_revertible_append_note_hash, - ColumnAndShifts::tx_sel_non_revertible_append_nullifier, - ColumnAndShifts::tx_sel_non_revertible_append_l2_l1_msg, - ColumnAndShifts::tx_sel_revertible_append_note_hash, - ColumnAndShifts::tx_sel_revertible_append_nullifier, - ColumnAndShifts::tx_sel_revertible_append_l2_l1_msg, - ColumnAndShifts::tx_sel_can_emit_note_hash, - ColumnAndShifts::tx_sel_can_emit_nullifier, - ColumnAndShifts::tx_sel_can_write_public_data, - ColumnAndShifts::tx_sel_can_emit_unencrypted_log, - ColumnAndShifts::tx_sel_can_emit_l2_l1_msg - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_phase_value, - ColumnAndShifts::precomputed_is_public_call_request_phase, - ColumnAndShifts::precomputed_sel_collect_fee, - ColumnAndShifts::precomputed_sel_tree_padding, - ColumnAndShifts::precomputed_sel_cleanup, - ColumnAndShifts::precomputed_is_revertible, - ColumnAndShifts::precomputed_read_public_input_offset, - ColumnAndShifts::precomputed_read_public_input_length_offset, - ColumnAndShifts::precomputed_sel_non_revertible_append_note_hash, - ColumnAndShifts::precomputed_sel_non_revertible_append_nullifier, - ColumnAndShifts::precomputed_sel_non_revertible_append_l2_l1_msg, - ColumnAndShifts::precomputed_sel_revertible_append_note_hash, - ColumnAndShifts::precomputed_sel_revertible_append_nullifier, - ColumnAndShifts::precomputed_sel_revertible_append_l2_l1_msg, - ColumnAndShifts::precomputed_sel_can_emit_note_hash, - ColumnAndShifts::precomputed_sel_can_emit_nullifier, - ColumnAndShifts::precomputed_sel_can_write_public_data, - ColumnAndShifts::precomputed_sel_can_emit_unencrypted_log, - ColumnAndShifts::precomputed_sel_can_emit_l2_l1_msg - }; }; using lookup_tx_read_phase_table_settings = lookup_settings; @@ -75,16 +74,15 @@ struct lookup_tx_phase_jump_on_revert_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_PHASE_JUMP_ON_REVERT"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::tx_reverted; - static constexpr Column DST_SELECTOR = Column::precomputed_sel_phase; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_reverted); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::precomputed_sel_phase); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_phase_value), + ColumnExpression(ColumnAndShifts::tx_phase_value_shift)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_phase_value), + ColumnExpression(ColumnAndShifts::precomputed_next_phase_on_revert)); static constexpr Column COUNTS = Column::lookup_tx_phase_jump_on_revert_counts; static constexpr Column INVERSES = Column::lookup_tx_phase_jump_on_revert_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_phase_value, ColumnAndShifts::tx_phase_value_shift - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_phase_value, ColumnAndShifts::precomputed_next_phase_on_revert - }; }; using lookup_tx_phase_jump_on_revert_settings = lookup_settings; @@ -97,16 +95,14 @@ struct lookup_tx_read_phase_length_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_READ_PHASE_LENGTH"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::tx_sel_read_phase_length; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_sel_read_phase_length); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_read_pi_length_offset), + ColumnExpression(ColumnAndShifts::tx_remaining_phase_counter)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_)); static constexpr Column COUNTS = Column::lookup_tx_read_phase_length_counts; static constexpr Column INVERSES = Column::lookup_tx_read_phase_length_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_read_pi_length_offset, ColumnAndShifts::tx_remaining_phase_counter - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_ - }; }; using lookup_tx_read_phase_length_settings = lookup_settings; @@ -119,22 +115,20 @@ struct lookup_tx_read_public_call_request_phase_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_READ_PUBLIC_CALL_REQUEST_PHASE"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::tx_is_public_call_request; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_is_public_call_request); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_read_pi_offset), + ColumnExpression(ColumnAndShifts::tx_msg_sender), + ColumnExpression(ColumnAndShifts::tx_contract_addr), + ColumnExpression(ColumnAndShifts::tx_is_static), + ColumnExpression(ColumnAndShifts::tx_calldata_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_1_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_2_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_3_)); static constexpr Column COUNTS = Column::lookup_tx_read_public_call_request_phase_counts; static constexpr Column INVERSES = Column::lookup_tx_read_public_call_request_phase_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::tx_read_pi_offset, - ColumnAndShifts::tx_msg_sender, - ColumnAndShifts::tx_contract_addr, - ColumnAndShifts::tx_is_static, - ColumnAndShifts::tx_calldata_hash }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, - ColumnAndShifts::public_inputs_cols_0_, - ColumnAndShifts::public_inputs_cols_1_, - ColumnAndShifts::public_inputs_cols_2_, - ColumnAndShifts::public_inputs_cols_3_ - }; }; using lookup_tx_read_public_call_request_phase_settings = @@ -149,60 +143,58 @@ struct lookup_tx_dispatch_exec_start_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_DISPATCH_EXEC_START"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 23; - static constexpr Column SRC_SELECTOR = Column::tx_should_process_call_request; - static constexpr Column DST_SELECTOR = Column::execution_enqueued_call_start; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_should_process_call_request); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_enqueued_call_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::tx_next_context_id), + ColumnExpression(ColumnAndShifts::tx_discard), + ColumnExpression(ColumnAndShifts::tx_msg_sender), + ColumnExpression(ColumnAndShifts::tx_contract_addr), + ColumnExpression(ColumnAndShifts::tx_fee), + ColumnExpression(ColumnAndShifts::tx_is_static), + ColumnExpression(ColumnAndShifts::tx_prev_note_hash_tree_root), + ColumnExpression(ColumnAndShifts::tx_prev_note_hash_tree_size), + ColumnExpression(ColumnAndShifts::tx_prev_num_note_hashes_emitted), + ColumnExpression(ColumnAndShifts::tx_prev_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::tx_prev_nullifier_tree_size), + ColumnExpression(ColumnAndShifts::tx_prev_num_nullifiers_emitted), + ColumnExpression(ColumnAndShifts::tx_prev_public_data_tree_root), + ColumnExpression(ColumnAndShifts::tx_prev_public_data_tree_size), + ColumnExpression(ColumnAndShifts::tx_prev_written_public_data_slots_tree_root), + ColumnExpression(ColumnAndShifts::tx_prev_written_public_data_slots_tree_size), + ColumnExpression(ColumnAndShifts::tx_l1_l2_tree_root), + ColumnExpression(ColumnAndShifts::tx_prev_num_unencrypted_logs), + ColumnExpression(ColumnAndShifts::tx_prev_num_l2_to_l1_messages), + ColumnExpression(ColumnAndShifts::tx_prev_l2_gas_used_sent_to_enqueued_call), + ColumnExpression(ColumnAndShifts::tx_prev_da_gas_used_sent_to_enqueued_call), + ColumnExpression(ColumnAndShifts::tx_l2_gas_limit), + ColumnExpression(ColumnAndShifts::tx_da_gas_limit)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_context_id), + ColumnExpression(ColumnAndShifts::execution_discard), + ColumnExpression(ColumnAndShifts::execution_msg_sender), + ColumnExpression(ColumnAndShifts::execution_contract_address), + ColumnExpression(ColumnAndShifts::execution_transaction_fee), + ColumnExpression(ColumnAndShifts::execution_is_static), + ColumnExpression(ColumnAndShifts::execution_prev_note_hash_tree_root), + ColumnExpression(ColumnAndShifts::execution_prev_note_hash_tree_size), + ColumnExpression(ColumnAndShifts::execution_prev_num_note_hashes_emitted), + ColumnExpression(ColumnAndShifts::execution_prev_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::execution_prev_nullifier_tree_size), + ColumnExpression(ColumnAndShifts::execution_prev_num_nullifiers_emitted), + ColumnExpression(ColumnAndShifts::execution_prev_public_data_tree_root), + ColumnExpression(ColumnAndShifts::execution_prev_public_data_tree_size), + ColumnExpression(ColumnAndShifts::execution_prev_written_public_data_slots_tree_root), + ColumnExpression(ColumnAndShifts::execution_prev_written_public_data_slots_tree_size), + ColumnExpression(ColumnAndShifts::execution_l1_l2_tree_root), + ColumnExpression(ColumnAndShifts::execution_prev_num_unencrypted_logs), + ColumnExpression(ColumnAndShifts::execution_prev_num_l2_to_l1_messages), + ColumnExpression(ColumnAndShifts::execution_prev_l2_gas_used), + ColumnExpression(ColumnAndShifts::execution_prev_da_gas_used), + ColumnExpression(ColumnAndShifts::execution_l2_gas_limit), + ColumnExpression(ColumnAndShifts::execution_da_gas_limit)); static constexpr Column COUNTS = Column::lookup_tx_dispatch_exec_start_counts; static constexpr Column INVERSES = Column::lookup_tx_dispatch_exec_start_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_next_context_id, - ColumnAndShifts::tx_discard, - ColumnAndShifts::tx_msg_sender, - ColumnAndShifts::tx_contract_addr, - ColumnAndShifts::tx_fee, - ColumnAndShifts::tx_is_static, - ColumnAndShifts::tx_prev_note_hash_tree_root, - ColumnAndShifts::tx_prev_note_hash_tree_size, - ColumnAndShifts::tx_prev_num_note_hashes_emitted, - ColumnAndShifts::tx_prev_nullifier_tree_root, - ColumnAndShifts::tx_prev_nullifier_tree_size, - ColumnAndShifts::tx_prev_num_nullifiers_emitted, - ColumnAndShifts::tx_prev_public_data_tree_root, - ColumnAndShifts::tx_prev_public_data_tree_size, - ColumnAndShifts::tx_prev_written_public_data_slots_tree_root, - ColumnAndShifts::tx_prev_written_public_data_slots_tree_size, - ColumnAndShifts::tx_l1_l2_tree_root, - ColumnAndShifts::tx_prev_num_unencrypted_logs, - ColumnAndShifts::tx_prev_num_l2_to_l1_messages, - ColumnAndShifts::tx_prev_l2_gas_used_sent_to_enqueued_call, - ColumnAndShifts::tx_prev_da_gas_used_sent_to_enqueued_call, - ColumnAndShifts::tx_l2_gas_limit, - ColumnAndShifts::tx_da_gas_limit - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::execution_context_id, - ColumnAndShifts::execution_discard, - ColumnAndShifts::execution_msg_sender, - ColumnAndShifts::execution_contract_address, - ColumnAndShifts::execution_transaction_fee, - ColumnAndShifts::execution_is_static, - ColumnAndShifts::execution_prev_note_hash_tree_root, - ColumnAndShifts::execution_prev_note_hash_tree_size, - ColumnAndShifts::execution_prev_num_note_hashes_emitted, - ColumnAndShifts::execution_prev_nullifier_tree_root, - ColumnAndShifts::execution_prev_nullifier_tree_size, - ColumnAndShifts::execution_prev_num_nullifiers_emitted, - ColumnAndShifts::execution_prev_public_data_tree_root, - ColumnAndShifts::execution_prev_public_data_tree_size, - ColumnAndShifts::execution_prev_written_public_data_slots_tree_root, - ColumnAndShifts::execution_prev_written_public_data_slots_tree_size, - ColumnAndShifts::execution_l1_l2_tree_root, - ColumnAndShifts::execution_prev_num_unencrypted_logs, - ColumnAndShifts::execution_prev_num_l2_to_l1_messages, - ColumnAndShifts::execution_prev_l2_gas_used, - ColumnAndShifts::execution_prev_da_gas_used, - ColumnAndShifts::execution_l2_gas_limit, - ColumnAndShifts::execution_da_gas_limit - }; }; using lookup_tx_dispatch_exec_start_settings = lookup_settings; @@ -215,52 +207,50 @@ struct lookup_tx_dispatch_exec_end_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_DISPATCH_EXEC_END"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 19; - static constexpr Column SRC_SELECTOR = Column::tx_should_process_call_request; - static constexpr Column DST_SELECTOR = Column::execution_enqueued_call_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_should_process_call_request); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::execution_enqueued_call_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::tx_next_context_id), + ColumnExpression(ColumnAndShifts::tx_next_context_id_shift), + ColumnExpression(ColumnAndShifts::tx_reverted), + ColumnExpression(ColumnAndShifts::tx_discard), + ColumnExpression(ColumnAndShifts::tx_next_note_hash_tree_root), + ColumnExpression(ColumnAndShifts::tx_next_note_hash_tree_size), + ColumnExpression(ColumnAndShifts::tx_next_num_note_hashes_emitted), + ColumnExpression(ColumnAndShifts::tx_next_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::tx_next_nullifier_tree_size), + ColumnExpression(ColumnAndShifts::tx_next_num_nullifiers_emitted), + ColumnExpression(ColumnAndShifts::tx_next_public_data_tree_root), + ColumnExpression(ColumnAndShifts::tx_next_public_data_tree_size), + ColumnExpression(ColumnAndShifts::tx_next_written_public_data_slots_tree_root), + ColumnExpression(ColumnAndShifts::tx_next_written_public_data_slots_tree_size), + ColumnExpression(ColumnAndShifts::tx_l1_l2_tree_root), + ColumnExpression(ColumnAndShifts::tx_next_num_unencrypted_logs), + ColumnExpression(ColumnAndShifts::tx_next_num_l2_to_l1_messages), + ColumnExpression(ColumnAndShifts::tx_next_l2_gas_used_sent_to_enqueued_call), + ColumnExpression(ColumnAndShifts::tx_next_da_gas_used_sent_to_enqueued_call)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::execution_context_id), + ColumnExpression(ColumnAndShifts::execution_next_context_id), + ColumnExpression(ColumnAndShifts::execution_sel_error), + ColumnExpression(ColumnAndShifts::execution_discard), + ColumnExpression(ColumnAndShifts::execution_note_hash_tree_root), + ColumnExpression(ColumnAndShifts::execution_note_hash_tree_size), + ColumnExpression(ColumnAndShifts::execution_num_note_hashes_emitted), + ColumnExpression(ColumnAndShifts::execution_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::execution_nullifier_tree_size), + ColumnExpression(ColumnAndShifts::execution_num_nullifiers_emitted), + ColumnExpression(ColumnAndShifts::execution_public_data_tree_root), + ColumnExpression(ColumnAndShifts::execution_public_data_tree_size), + ColumnExpression(ColumnAndShifts::execution_written_public_data_slots_tree_root), + ColumnExpression(ColumnAndShifts::execution_written_public_data_slots_tree_size), + ColumnExpression(ColumnAndShifts::execution_l1_l2_tree_root), + ColumnExpression(ColumnAndShifts::execution_num_unencrypted_logs), + ColumnExpression(ColumnAndShifts::execution_num_l2_to_l1_messages), + ColumnExpression(ColumnAndShifts::execution_l2_gas_used), + ColumnExpression(ColumnAndShifts::execution_da_gas_used)); static constexpr Column COUNTS = Column::lookup_tx_dispatch_exec_end_counts; static constexpr Column INVERSES = Column::lookup_tx_dispatch_exec_end_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_next_context_id, - ColumnAndShifts::tx_next_context_id_shift, - ColumnAndShifts::tx_reverted, - ColumnAndShifts::tx_discard, - ColumnAndShifts::tx_next_note_hash_tree_root, - ColumnAndShifts::tx_next_note_hash_tree_size, - ColumnAndShifts::tx_next_num_note_hashes_emitted, - ColumnAndShifts::tx_next_nullifier_tree_root, - ColumnAndShifts::tx_next_nullifier_tree_size, - ColumnAndShifts::tx_next_num_nullifiers_emitted, - ColumnAndShifts::tx_next_public_data_tree_root, - ColumnAndShifts::tx_next_public_data_tree_size, - ColumnAndShifts::tx_next_written_public_data_slots_tree_root, - ColumnAndShifts::tx_next_written_public_data_slots_tree_size, - ColumnAndShifts::tx_l1_l2_tree_root, - ColumnAndShifts::tx_next_num_unencrypted_logs, - ColumnAndShifts::tx_next_num_l2_to_l1_messages, - ColumnAndShifts::tx_next_l2_gas_used_sent_to_enqueued_call, - ColumnAndShifts::tx_next_da_gas_used_sent_to_enqueued_call - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::execution_context_id, - ColumnAndShifts::execution_next_context_id, - ColumnAndShifts::execution_sel_error, - ColumnAndShifts::execution_discard, - ColumnAndShifts::execution_note_hash_tree_root, - ColumnAndShifts::execution_note_hash_tree_size, - ColumnAndShifts::execution_num_note_hashes_emitted, - ColumnAndShifts::execution_nullifier_tree_root, - ColumnAndShifts::execution_nullifier_tree_size, - ColumnAndShifts::execution_num_nullifiers_emitted, - ColumnAndShifts::execution_public_data_tree_root, - ColumnAndShifts::execution_public_data_tree_size, - ColumnAndShifts::execution_written_public_data_slots_tree_root, - ColumnAndShifts::execution_written_public_data_slots_tree_size, - ColumnAndShifts::execution_l1_l2_tree_root, - ColumnAndShifts::execution_num_unencrypted_logs, - ColumnAndShifts::execution_num_l2_to_l1_messages, - ColumnAndShifts::execution_l2_gas_used, - ColumnAndShifts::execution_da_gas_used - }; }; using lookup_tx_dispatch_exec_end_settings = lookup_settings; @@ -273,15 +263,14 @@ struct lookup_tx_read_tree_insert_value_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_READ_TREE_INSERT_VALUE"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::tx_is_tree_insert_phase; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_is_tree_insert_phase); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_read_pi_offset), + ColumnExpression(ColumnAndShifts::tx_leaf_value)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_)); static constexpr Column COUNTS = Column::lookup_tx_read_tree_insert_value_counts; static constexpr Column INVERSES = Column::lookup_tx_read_tree_insert_value_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::tx_read_pi_offset, - ColumnAndShifts::tx_leaf_value }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_ - }; }; using lookup_tx_read_tree_insert_value_settings = lookup_settings; @@ -294,26 +283,28 @@ struct lookup_tx_note_hash_append_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_NOTE_HASH_APPEND"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 8; - static constexpr Column SRC_SELECTOR = Column::tx_should_note_hash_append; - static constexpr Column DST_SELECTOR = Column::note_hash_tree_check_write; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_should_note_hash_append); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::note_hash_tree_check_write); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::tx_leaf_value), + ColumnExpression(ColumnAndShifts::tx_prev_note_hash_tree_size), + ColumnExpression(ColumnAndShifts::tx_prev_note_hash_tree_root), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::tx_sel_revertible_append_note_hash), + ColumnExpression(ColumnAndShifts::tx_prev_num_note_hashes_emitted), + ColumnExpression(ColumnAndShifts::tx_discard), + ColumnExpression(ColumnAndShifts::tx_next_note_hash_tree_root)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::note_hash_tree_check_note_hash), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_leaf_index), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_prev_root), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_should_silo), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_should_unique), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_note_hash_index), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_discard), + ColumnExpression(ColumnAndShifts::note_hash_tree_check_next_root)); static constexpr Column COUNTS = Column::lookup_tx_note_hash_append_counts; static constexpr Column INVERSES = Column::lookup_tx_note_hash_append_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_leaf_value, - ColumnAndShifts::tx_prev_note_hash_tree_size, - ColumnAndShifts::tx_prev_note_hash_tree_root, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::tx_sel_revertible_append_note_hash, - ColumnAndShifts::tx_prev_num_note_hashes_emitted, - ColumnAndShifts::tx_discard, - ColumnAndShifts::tx_next_note_hash_tree_root - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::note_hash_tree_check_note_hash, ColumnAndShifts::note_hash_tree_check_leaf_index, - ColumnAndShifts::note_hash_tree_check_prev_root, ColumnAndShifts::note_hash_tree_check_should_silo, - ColumnAndShifts::note_hash_tree_check_should_unique, ColumnAndShifts::note_hash_tree_check_note_hash_index, - ColumnAndShifts::note_hash_tree_check_discard, ColumnAndShifts::note_hash_tree_check_next_root - }; }; using lookup_tx_note_hash_append_settings = lookup_settings; @@ -326,30 +317,27 @@ struct lookup_tx_nullifier_append_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_NULLIFIER_APPEND"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 8; - static constexpr Column SRC_SELECTOR = Column::tx_should_nullifier_append; - static constexpr Column DST_SELECTOR = Column::nullifier_check_write; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_should_nullifier_append); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::nullifier_check_write); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_reverted), + ColumnExpression(ColumnAndShifts::tx_leaf_value), + ColumnExpression(ColumnAndShifts::tx_prev_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::tx_next_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::tx_prev_nullifier_tree_size), + ColumnExpression(ColumnAndShifts::tx_discard), + ColumnExpression(ColumnAndShifts::tx_prev_num_nullifiers_emitted), + ColumnExpression(ColumnAndShifts::precomputed_zero)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::nullifier_check_exists), + ColumnExpression(ColumnAndShifts::nullifier_check_nullifier), + ColumnExpression(ColumnAndShifts::nullifier_check_root), + ColumnExpression(ColumnAndShifts::nullifier_check_write_root), + ColumnExpression(ColumnAndShifts::nullifier_check_tree_size_before_write), + ColumnExpression(ColumnAndShifts::nullifier_check_discard), + ColumnExpression(ColumnAndShifts::nullifier_check_nullifier_index), + ColumnExpression(ColumnAndShifts::nullifier_check_should_silo)); static constexpr Column COUNTS = Column::lookup_tx_nullifier_append_counts; static constexpr Column INVERSES = Column::lookup_tx_nullifier_append_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_reverted, - ColumnAndShifts::tx_leaf_value, - ColumnAndShifts::tx_prev_nullifier_tree_root, - ColumnAndShifts::tx_next_nullifier_tree_root, - ColumnAndShifts::tx_prev_nullifier_tree_size, - ColumnAndShifts::tx_discard, - ColumnAndShifts::tx_prev_num_nullifiers_emitted, - ColumnAndShifts::precomputed_zero - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::nullifier_check_exists, - ColumnAndShifts::nullifier_check_nullifier, - ColumnAndShifts::nullifier_check_root, - ColumnAndShifts::nullifier_check_write_root, - ColumnAndShifts::nullifier_check_tree_size_before_write, - ColumnAndShifts::nullifier_check_discard, - ColumnAndShifts::nullifier_check_nullifier_index, - ColumnAndShifts::nullifier_check_should_silo - }; }; using lookup_tx_nullifier_append_settings = lookup_settings; @@ -362,22 +350,18 @@ struct lookup_tx_read_l2_l1_msg_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_READ_L2_L1_MSG"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::tx_should_try_l2_l1_msg_append; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_should_try_l2_l1_msg_append); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_read_pi_offset), + ColumnExpression(ColumnAndShifts::tx_l2_l1_msg_recipient), + ColumnExpression(ColumnAndShifts::tx_l2_l1_msg_content), + ColumnExpression(ColumnAndShifts::tx_l2_l1_msg_contract_address)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_1_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_2_)); static constexpr Column COUNTS = Column::lookup_tx_read_l2_l1_msg_counts; static constexpr Column INVERSES = Column::lookup_tx_read_l2_l1_msg_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_read_pi_offset, - ColumnAndShifts::tx_l2_l1_msg_recipient, - ColumnAndShifts::tx_l2_l1_msg_content, - ColumnAndShifts::tx_l2_l1_msg_contract_address - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, - ColumnAndShifts::public_inputs_cols_0_, - ColumnAndShifts::public_inputs_cols_1_, - ColumnAndShifts::public_inputs_cols_2_ - }; }; using lookup_tx_read_l2_l1_msg_settings = lookup_settings; @@ -390,22 +374,18 @@ struct lookup_tx_write_l2_l1_msg_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_WRITE_L2_L1_MSG"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::tx_should_l2_l1_msg_append; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_should_l2_l1_msg_append); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_write_pi_offset), + ColumnExpression(ColumnAndShifts::tx_l2_l1_msg_recipient), + ColumnExpression(ColumnAndShifts::tx_l2_l1_msg_content), + ColumnExpression(ColumnAndShifts::tx_l2_l1_msg_contract_address)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_1_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_2_)); static constexpr Column COUNTS = Column::lookup_tx_write_l2_l1_msg_counts; static constexpr Column INVERSES = Column::lookup_tx_write_l2_l1_msg_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_write_pi_offset, - ColumnAndShifts::tx_l2_l1_msg_recipient, - ColumnAndShifts::tx_l2_l1_msg_content, - ColumnAndShifts::tx_l2_l1_msg_contract_address - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, - ColumnAndShifts::public_inputs_cols_0_, - ColumnAndShifts::public_inputs_cols_1_, - ColumnAndShifts::public_inputs_cols_2_ - }; }; using lookup_tx_write_l2_l1_msg_settings = lookup_settings; @@ -418,18 +398,16 @@ struct lookup_tx_read_effective_fee_public_inputs_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_READ_EFFECTIVE_FEE_PUBLIC_INPUTS"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::tx_is_collect_fee; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_is_collect_fee); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_read_pi_offset), + ColumnExpression(ColumnAndShifts::tx_effective_fee_per_da_gas), + ColumnExpression(ColumnAndShifts::tx_effective_fee_per_l2_gas)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_1_)); static constexpr Column COUNTS = Column::lookup_tx_read_effective_fee_public_inputs_counts; static constexpr Column INVERSES = Column::lookup_tx_read_effective_fee_public_inputs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_read_pi_offset, - ColumnAndShifts::tx_effective_fee_per_da_gas, - ColumnAndShifts::tx_effective_fee_per_l2_gas - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_, ColumnAndShifts::public_inputs_cols_1_ - }; }; using lookup_tx_read_effective_fee_public_inputs_settings = @@ -444,16 +422,14 @@ struct lookup_tx_read_fee_payer_public_inputs_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_READ_FEE_PAYER_PUBLIC_INPUTS"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::tx_is_collect_fee; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_is_collect_fee); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_fee_payer_pi_offset), + ColumnExpression(ColumnAndShifts::tx_fee_payer)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_)); static constexpr Column COUNTS = Column::lookup_tx_read_fee_payer_public_inputs_counts; static constexpr Column INVERSES = Column::lookup_tx_read_fee_payer_public_inputs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_fee_payer_pi_offset, ColumnAndShifts::tx_fee_payer - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_ - }; }; using lookup_tx_read_fee_payer_public_inputs_settings = @@ -468,24 +444,20 @@ struct lookup_tx_balance_slot_poseidon2_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_BALANCE_SLOT_POSEIDON2"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::tx_is_collect_fee; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_is_collect_fee); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_is_collect_fee), + ColumnExpression(ColumnAndShifts::tx_fee_juice_balances_slot), + ColumnExpression(ColumnAndShifts::tx_fee_payer), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::tx_fee_juice_balance_slot)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_start), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_tx_balance_slot_poseidon2_counts; static constexpr Column INVERSES = Column::lookup_tx_balance_slot_poseidon2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_is_collect_fee, - ColumnAndShifts::tx_fee_juice_balances_slot, - ColumnAndShifts::tx_fee_payer, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::tx_fee_juice_balance_slot - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_start, - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_tx_balance_slot_poseidon2_settings = lookup_settings; @@ -498,22 +470,18 @@ struct lookup_tx_balance_read_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_BALANCE_READ"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::tx_is_collect_fee; - static constexpr Column DST_SELECTOR = Column::public_data_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_is_collect_fee); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_data_check_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_fee_payer_balance), + ColumnExpression(ColumnAndShifts::tx_fee_juice_contract_address), + ColumnExpression(ColumnAndShifts::tx_fee_juice_balance_slot), + ColumnExpression(ColumnAndShifts::tx_prev_public_data_tree_root)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_value), + ColumnExpression(ColumnAndShifts::public_data_check_address), + ColumnExpression(ColumnAndShifts::public_data_check_slot), + ColumnExpression(ColumnAndShifts::public_data_check_root)); static constexpr Column COUNTS = Column::lookup_tx_balance_read_counts; static constexpr Column INVERSES = Column::lookup_tx_balance_read_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_fee_payer_balance, - ColumnAndShifts::tx_fee_juice_contract_address, - ColumnAndShifts::tx_fee_juice_balance_slot, - ColumnAndShifts::tx_prev_public_data_tree_root - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::public_data_check_value, - ColumnAndShifts::public_data_check_address, - ColumnAndShifts::public_data_check_slot, - ColumnAndShifts::public_data_check_root - }; }; using lookup_tx_balance_read_settings = lookup_settings; @@ -526,16 +494,16 @@ struct lookup_tx_balance_validation_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_BALANCE_VALIDATION"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::tx_is_collect_fee; - static constexpr Column DST_SELECTOR = Column::ff_gt_sel_gt; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_is_collect_fee); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ff_gt_sel_gt); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_fee), + ColumnExpression(ColumnAndShifts::tx_fee_payer_balance), + ColumnExpression(ColumnAndShifts::precomputed_zero)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ff_gt_a), + ColumnExpression(ColumnAndShifts::ff_gt_b), + ColumnExpression(ColumnAndShifts::ff_gt_result)); static constexpr Column COUNTS = Column::lookup_tx_balance_validation_counts; static constexpr Column INVERSES = Column::lookup_tx_balance_validation_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_fee, ColumnAndShifts::tx_fee_payer_balance, ColumnAndShifts::precomputed_zero - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::ff_gt_a, - ColumnAndShifts::ff_gt_b, - ColumnAndShifts::ff_gt_result }; }; using lookup_tx_balance_validation_settings = lookup_settings; @@ -548,26 +516,27 @@ struct lookup_tx_balance_update_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_BALANCE_UPDATE"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 8; - static constexpr Column SRC_SELECTOR = Column::tx_is_collect_fee; - static constexpr Column DST_SELECTOR = Column::public_data_check_write; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_is_collect_fee); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_data_check_write); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_fee_payer_new_balance), + ColumnExpression(ColumnAndShifts::tx_fee_juice_contract_address), + ColumnExpression(ColumnAndShifts::tx_fee_juice_balance_slot), + ColumnExpression(ColumnAndShifts::tx_prev_public_data_tree_root), + ColumnExpression(ColumnAndShifts::tx_next_public_data_tree_root), + ColumnExpression(ColumnAndShifts::tx_prev_public_data_tree_size), + ColumnExpression(ColumnAndShifts::tx_next_public_data_tree_size), + ColumnExpression(ColumnAndShifts::tx_uint32_max)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_value), + ColumnExpression(ColumnAndShifts::public_data_check_address), + ColumnExpression(ColumnAndShifts::public_data_check_slot), + ColumnExpression(ColumnAndShifts::public_data_check_root), + ColumnExpression(ColumnAndShifts::public_data_check_write_root), + ColumnExpression(ColumnAndShifts::public_data_check_tree_size_before_write), + ColumnExpression(ColumnAndShifts::public_data_check_tree_size_after_write), + ColumnExpression(ColumnAndShifts::public_data_check_clk)); static constexpr Column COUNTS = Column::lookup_tx_balance_update_counts; static constexpr Column INVERSES = Column::lookup_tx_balance_update_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_fee_payer_new_balance, ColumnAndShifts::tx_fee_juice_contract_address, - ColumnAndShifts::tx_fee_juice_balance_slot, ColumnAndShifts::tx_prev_public_data_tree_root, - ColumnAndShifts::tx_next_public_data_tree_root, ColumnAndShifts::tx_prev_public_data_tree_size, - ColumnAndShifts::tx_next_public_data_tree_size, ColumnAndShifts::tx_uint32_max - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::public_data_check_value, - ColumnAndShifts::public_data_check_address, - ColumnAndShifts::public_data_check_slot, - ColumnAndShifts::public_data_check_root, - ColumnAndShifts::public_data_check_write_root, - ColumnAndShifts::public_data_check_tree_size_before_write, - ColumnAndShifts::public_data_check_tree_size_after_write, - ColumnAndShifts::public_data_check_clk - }; }; using lookup_tx_balance_update_settings = lookup_settings; @@ -580,15 +549,14 @@ struct lookup_tx_write_fee_public_inputs_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_WRITE_FEE_PUBLIC_INPUTS"; static constexpr std::string_view RELATION_NAME = "tx"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::tx_is_collect_fee; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_is_collect_fee); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_write_pi_offset), + ColumnExpression(ColumnAndShifts::tx_fee)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_)); static constexpr Column COUNTS = Column::lookup_tx_write_fee_public_inputs_counts; static constexpr Column INVERSES = Column::lookup_tx_write_fee_public_inputs_inv; - static constexpr std::array SRC_COLUMNS = { ColumnAndShifts::tx_write_pi_offset, - ColumnAndShifts::tx_fee }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_ - }; }; using lookup_tx_write_fee_public_inputs_settings = lookup_settings; diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_tx_context.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_tx_context.hpp index 0eca7721acca..e8a8af3860ea 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_tx_context.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_tx_context.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,18 +18,16 @@ struct lookup_tx_context_public_inputs_note_hash_tree_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_CONTEXT_PUBLIC_INPUTS_NOTE_HASH_TREE"; static constexpr std::string_view RELATION_NAME = "tx_context"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::tx_should_read_note_hash_tree; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_should_read_note_hash_tree); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_note_hash_pi_offset), + ColumnExpression(ColumnAndShifts::tx_prev_note_hash_tree_root), + ColumnExpression(ColumnAndShifts::tx_prev_note_hash_tree_size)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_1_)); static constexpr Column COUNTS = Column::lookup_tx_context_public_inputs_note_hash_tree_counts; static constexpr Column INVERSES = Column::lookup_tx_context_public_inputs_note_hash_tree_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_note_hash_pi_offset, - ColumnAndShifts::tx_prev_note_hash_tree_root, - ColumnAndShifts::tx_prev_note_hash_tree_size - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_, ColumnAndShifts::public_inputs_cols_1_ - }; }; using lookup_tx_context_public_inputs_note_hash_tree_settings = @@ -43,18 +42,16 @@ struct lookup_tx_context_public_inputs_nullifier_tree_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_CONTEXT_PUBLIC_INPUTS_NULLIFIER_TREE"; static constexpr std::string_view RELATION_NAME = "tx_context"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::tx_should_read_nullifier_tree; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_should_read_nullifier_tree); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_nullifier_pi_offset), + ColumnExpression(ColumnAndShifts::tx_prev_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::tx_prev_nullifier_tree_size)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_1_)); static constexpr Column COUNTS = Column::lookup_tx_context_public_inputs_nullifier_tree_counts; static constexpr Column INVERSES = Column::lookup_tx_context_public_inputs_nullifier_tree_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_nullifier_pi_offset, - ColumnAndShifts::tx_prev_nullifier_tree_root, - ColumnAndShifts::tx_prev_nullifier_tree_size - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_, ColumnAndShifts::public_inputs_cols_1_ - }; }; using lookup_tx_context_public_inputs_nullifier_tree_settings = @@ -69,18 +66,16 @@ struct lookup_tx_context_public_inputs_public_data_tree_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_CONTEXT_PUBLIC_INPUTS_PUBLIC_DATA_TREE"; static constexpr std::string_view RELATION_NAME = "tx_context"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::tx_should_read_public_data_tree; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_should_read_public_data_tree); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_public_data_pi_offset), + ColumnExpression(ColumnAndShifts::tx_prev_public_data_tree_root), + ColumnExpression(ColumnAndShifts::tx_prev_public_data_tree_size)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_1_)); static constexpr Column COUNTS = Column::lookup_tx_context_public_inputs_public_data_tree_counts; static constexpr Column INVERSES = Column::lookup_tx_context_public_inputs_public_data_tree_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_public_data_pi_offset, - ColumnAndShifts::tx_prev_public_data_tree_root, - ColumnAndShifts::tx_prev_public_data_tree_size - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_, ColumnAndShifts::public_inputs_cols_1_ - }; }; using lookup_tx_context_public_inputs_public_data_tree_settings = @@ -95,16 +90,14 @@ struct lookup_tx_context_public_inputs_l1_l2_tree_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_CONTEXT_PUBLIC_INPUTS_L1_L2_TREE"; static constexpr std::string_view RELATION_NAME = "tx_context"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::tx_should_read_l1_l2_tree; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_should_read_l1_l2_tree); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_l1_l2_pi_offset), + ColumnExpression(ColumnAndShifts::tx_l1_l2_tree_root)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_)); static constexpr Column COUNTS = Column::lookup_tx_context_public_inputs_l1_l2_tree_counts; static constexpr Column INVERSES = Column::lookup_tx_context_public_inputs_l1_l2_tree_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_l1_l2_pi_offset, ColumnAndShifts::tx_l1_l2_tree_root - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_ - }; }; using lookup_tx_context_public_inputs_l1_l2_tree_settings = @@ -119,18 +112,16 @@ struct lookup_tx_context_public_inputs_gas_used_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_CONTEXT_PUBLIC_INPUTS_GAS_USED"; static constexpr std::string_view RELATION_NAME = "tx_context"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::tx_should_read_gas_used; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_should_read_gas_used); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_gas_used_pi_offset), + ColumnExpression(ColumnAndShifts::tx_prev_da_gas_used), + ColumnExpression(ColumnAndShifts::tx_prev_l2_gas_used)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_1_)); static constexpr Column COUNTS = Column::lookup_tx_context_public_inputs_gas_used_counts; static constexpr Column INVERSES = Column::lookup_tx_context_public_inputs_gas_used_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_gas_used_pi_offset, - ColumnAndShifts::tx_prev_da_gas_used, - ColumnAndShifts::tx_prev_l2_gas_used - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_, ColumnAndShifts::public_inputs_cols_1_ - }; }; using lookup_tx_context_public_inputs_gas_used_settings = @@ -145,16 +136,16 @@ struct lookup_tx_context_public_inputs_read_gas_limit_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_CONTEXT_PUBLIC_INPUTS_READ_GAS_LIMIT"; static constexpr std::string_view RELATION_NAME = "tx_context"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::tx_should_read_gas_limit; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_should_read_gas_limit); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::tx_gas_limit_pi_offset), + ColumnExpression(ColumnAndShifts::tx_da_gas_limit), + ColumnExpression(ColumnAndShifts::tx_l2_gas_limit)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_), + ColumnExpression(ColumnAndShifts::public_inputs_cols_1_)); static constexpr Column COUNTS = Column::lookup_tx_context_public_inputs_read_gas_limit_counts; static constexpr Column INVERSES = Column::lookup_tx_context_public_inputs_read_gas_limit_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_gas_limit_pi_offset, ColumnAndShifts::tx_da_gas_limit, ColumnAndShifts::tx_l2_gas_limit - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_, ColumnAndShifts::public_inputs_cols_1_ - }; }; using lookup_tx_context_public_inputs_read_gas_limit_settings = @@ -169,42 +160,40 @@ struct lookup_tx_context_restore_state_on_revert_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_CONTEXT_RESTORE_STATE_ON_REVERT"; static constexpr std::string_view RELATION_NAME = "tx_context"; static constexpr size_t LOOKUP_TUPLE_SIZE = 14; - static constexpr Column SRC_SELECTOR = Column::tx_reverted; - static constexpr Column DST_SELECTOR = Column::tx_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_reverted); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::tx_setup_phase_value), + ColumnExpression(ColumnAndShifts::tx_reverted), + ColumnExpression(ColumnAndShifts::tx_prev_note_hash_tree_root_shift), + ColumnExpression(ColumnAndShifts::tx_prev_note_hash_tree_size_shift), + ColumnExpression(ColumnAndShifts::tx_prev_num_note_hashes_emitted_shift), + ColumnExpression(ColumnAndShifts::tx_prev_nullifier_tree_root_shift), + ColumnExpression(ColumnAndShifts::tx_prev_nullifier_tree_size_shift), + ColumnExpression(ColumnAndShifts::tx_prev_num_nullifiers_emitted_shift), + ColumnExpression(ColumnAndShifts::tx_prev_public_data_tree_root_shift), + ColumnExpression(ColumnAndShifts::tx_prev_public_data_tree_size_shift), + ColumnExpression(ColumnAndShifts::tx_prev_written_public_data_slots_tree_root_shift), + ColumnExpression(ColumnAndShifts::tx_prev_written_public_data_slots_tree_size_shift), + ColumnExpression(ColumnAndShifts::tx_prev_num_unencrypted_logs_shift), + ColumnExpression(ColumnAndShifts::tx_prev_num_l2_to_l1_messages_shift)); + static constexpr auto DST_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::tx_phase_value), + ColumnExpression(ColumnAndShifts::tx_end_phase), + ColumnExpression(ColumnAndShifts::tx_next_note_hash_tree_root), + ColumnExpression(ColumnAndShifts::tx_next_note_hash_tree_size), + ColumnExpression(ColumnAndShifts::tx_next_num_note_hashes_emitted), + ColumnExpression(ColumnAndShifts::tx_next_nullifier_tree_root), + ColumnExpression(ColumnAndShifts::tx_next_nullifier_tree_size), + ColumnExpression(ColumnAndShifts::tx_next_num_nullifiers_emitted), + ColumnExpression(ColumnAndShifts::tx_next_public_data_tree_root), + ColumnExpression(ColumnAndShifts::tx_next_public_data_tree_size), + ColumnExpression(ColumnAndShifts::tx_next_written_public_data_slots_tree_root), + ColumnExpression(ColumnAndShifts::tx_next_written_public_data_slots_tree_size), + ColumnExpression(ColumnAndShifts::tx_next_num_unencrypted_logs), + ColumnExpression(ColumnAndShifts::tx_next_num_l2_to_l1_messages)); static constexpr Column COUNTS = Column::lookup_tx_context_restore_state_on_revert_counts; static constexpr Column INVERSES = Column::lookup_tx_context_restore_state_on_revert_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_setup_phase_value, - ColumnAndShifts::tx_reverted, - ColumnAndShifts::tx_prev_note_hash_tree_root_shift, - ColumnAndShifts::tx_prev_note_hash_tree_size_shift, - ColumnAndShifts::tx_prev_num_note_hashes_emitted_shift, - ColumnAndShifts::tx_prev_nullifier_tree_root_shift, - ColumnAndShifts::tx_prev_nullifier_tree_size_shift, - ColumnAndShifts::tx_prev_num_nullifiers_emitted_shift, - ColumnAndShifts::tx_prev_public_data_tree_root_shift, - ColumnAndShifts::tx_prev_public_data_tree_size_shift, - ColumnAndShifts::tx_prev_written_public_data_slots_tree_root_shift, - ColumnAndShifts::tx_prev_written_public_data_slots_tree_size_shift, - ColumnAndShifts::tx_prev_num_unencrypted_logs_shift, - ColumnAndShifts::tx_prev_num_l2_to_l1_messages_shift - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::tx_phase_value, - ColumnAndShifts::tx_end_phase, - ColumnAndShifts::tx_next_note_hash_tree_root, - ColumnAndShifts::tx_next_note_hash_tree_size, - ColumnAndShifts::tx_next_num_note_hashes_emitted, - ColumnAndShifts::tx_next_nullifier_tree_root, - ColumnAndShifts::tx_next_nullifier_tree_size, - ColumnAndShifts::tx_next_num_nullifiers_emitted, - ColumnAndShifts::tx_next_public_data_tree_root, - ColumnAndShifts::tx_next_public_data_tree_size, - ColumnAndShifts::tx_next_written_public_data_slots_tree_root, - ColumnAndShifts::tx_next_written_public_data_slots_tree_size, - ColumnAndShifts::tx_next_num_unencrypted_logs, - ColumnAndShifts::tx_next_num_l2_to_l1_messages - }; }; using lookup_tx_context_restore_state_on_revert_settings = @@ -219,16 +208,15 @@ struct lookup_tx_context_public_inputs_write_note_hash_count_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_CONTEXT_PUBLIC_INPUTS_WRITE_NOTE_HASH_COUNT"; static constexpr std::string_view RELATION_NAME = "tx_context"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::tx_is_cleanup; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_is_cleanup); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::tx_array_length_note_hashes_pi_offset), + ColumnExpression(ColumnAndShifts::tx_prev_num_note_hashes_emitted)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_)); static constexpr Column COUNTS = Column::lookup_tx_context_public_inputs_write_note_hash_count_counts; static constexpr Column INVERSES = Column::lookup_tx_context_public_inputs_write_note_hash_count_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_array_length_note_hashes_pi_offset, ColumnAndShifts::tx_prev_num_note_hashes_emitted - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_ - }; }; using lookup_tx_context_public_inputs_write_note_hash_count_settings = @@ -243,16 +231,15 @@ struct lookup_tx_context_public_inputs_write_nullifier_count_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_CONTEXT_PUBLIC_INPUTS_WRITE_NULLIFIER_COUNT"; static constexpr std::string_view RELATION_NAME = "tx_context"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::tx_is_cleanup; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_is_cleanup); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::tx_array_length_nullifiers_pi_offset), + ColumnExpression(ColumnAndShifts::tx_prev_num_nullifiers_emitted)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_)); static constexpr Column COUNTS = Column::lookup_tx_context_public_inputs_write_nullifier_count_counts; static constexpr Column INVERSES = Column::lookup_tx_context_public_inputs_write_nullifier_count_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_array_length_nullifiers_pi_offset, ColumnAndShifts::tx_prev_num_nullifiers_emitted - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_ - }; }; using lookup_tx_context_public_inputs_write_nullifier_count_settings = @@ -267,16 +254,15 @@ struct lookup_tx_context_public_inputs_write_l2_to_l1_message_count_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_CONTEXT_PUBLIC_INPUTS_WRITE_L2_TO_L1_MESSAGE_COUNT"; static constexpr std::string_view RELATION_NAME = "tx_context"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::tx_is_cleanup; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_is_cleanup); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::tx_array_length_l2_to_l1_messages_pi_offset), + ColumnExpression(ColumnAndShifts::tx_prev_num_l2_to_l1_messages)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_)); static constexpr Column COUNTS = Column::lookup_tx_context_public_inputs_write_l2_to_l1_message_count_counts; static constexpr Column INVERSES = Column::lookup_tx_context_public_inputs_write_l2_to_l1_message_count_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_array_length_l2_to_l1_messages_pi_offset, ColumnAndShifts::tx_prev_num_l2_to_l1_messages - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_ - }; }; using lookup_tx_context_public_inputs_write_l2_to_l1_message_count_settings = @@ -291,16 +277,15 @@ struct lookup_tx_context_public_inputs_write_unencrypted_log_count_settings_ { static constexpr std::string_view NAME = "LOOKUP_TX_CONTEXT_PUBLIC_INPUTS_WRITE_UNENCRYPTED_LOG_COUNT"; static constexpr std::string_view RELATION_NAME = "tx_context"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::tx_is_cleanup; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::tx_is_cleanup); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::tx_array_length_unencrypted_logs_pi_offset), + ColumnExpression(ColumnAndShifts::tx_prev_num_unencrypted_logs)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_)); static constexpr Column COUNTS = Column::lookup_tx_context_public_inputs_write_unencrypted_log_count_counts; static constexpr Column INVERSES = Column::lookup_tx_context_public_inputs_write_unencrypted_log_count_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::tx_array_length_unencrypted_logs_pi_offset, ColumnAndShifts::tx_prev_num_unencrypted_logs - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_ - }; }; using lookup_tx_context_public_inputs_write_unencrypted_log_count_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_update_check.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_update_check.hpp index 5d3ea9375077..ac53a0c08b8e 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_update_check.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_update_check.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,16 +18,15 @@ struct lookup_update_check_timestamp_from_public_inputs_settings_ { static constexpr std::string_view NAME = "LOOKUP_UPDATE_CHECK_TIMESTAMP_FROM_PUBLIC_INPUTS"; static constexpr std::string_view RELATION_NAME = "update_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::update_check_sel; - static constexpr Column DST_SELECTOR = Column::public_inputs_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::update_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_inputs_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::update_check_timestamp_pi_offset), + ColumnExpression(ColumnAndShifts::update_check_timestamp)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::precomputed_clk), + ColumnExpression(ColumnAndShifts::public_inputs_cols_0_)); static constexpr Column COUNTS = Column::lookup_update_check_timestamp_from_public_inputs_counts; static constexpr Column INVERSES = Column::lookup_update_check_timestamp_from_public_inputs_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::update_check_timestamp_pi_offset, ColumnAndShifts::update_check_timestamp - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_ - }; }; using lookup_update_check_timestamp_from_public_inputs_settings = @@ -41,22 +41,19 @@ struct lookup_update_check_delayed_public_mutable_slot_poseidon2_settings_ { static constexpr std::string_view NAME = "LOOKUP_UPDATE_CHECK_DELAYED_PUBLIC_MUTABLE_SLOT_POSEIDON2"; static constexpr std::string_view RELATION_NAME = "update_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::update_check_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::update_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::update_check_updated_class_ids_slot), + ColumnExpression(ColumnAndShifts::update_check_address), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::update_check_delayed_public_mutable_slot)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_update_check_delayed_public_mutable_slot_poseidon2_counts; static constexpr Column INVERSES = Column::lookup_update_check_delayed_public_mutable_slot_poseidon2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::update_check_updated_class_ids_slot, - ColumnAndShifts::update_check_address, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::update_check_delayed_public_mutable_slot - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_update_check_delayed_public_mutable_slot_poseidon2_settings = @@ -71,22 +68,19 @@ struct lookup_update_check_update_hash_public_data_read_settings_ { static constexpr std::string_view NAME = "LOOKUP_UPDATE_CHECK_UPDATE_HASH_PUBLIC_DATA_READ"; static constexpr std::string_view RELATION_NAME = "update_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::update_check_sel; - static constexpr Column DST_SELECTOR = Column::public_data_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::update_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::public_data_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::update_check_deployer_protocol_contract_address), + ColumnExpression(ColumnAndShifts::update_check_delayed_public_mutable_hash_slot), + ColumnExpression(ColumnAndShifts::update_check_update_hash), + ColumnExpression(ColumnAndShifts::update_check_public_data_tree_root)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::public_data_check_address), + ColumnExpression(ColumnAndShifts::public_data_check_slot), + ColumnExpression(ColumnAndShifts::public_data_check_value), + ColumnExpression(ColumnAndShifts::public_data_check_root)); static constexpr Column COUNTS = Column::lookup_update_check_update_hash_public_data_read_counts; static constexpr Column INVERSES = Column::lookup_update_check_update_hash_public_data_read_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::update_check_deployer_protocol_contract_address, - ColumnAndShifts::update_check_delayed_public_mutable_hash_slot, - ColumnAndShifts::update_check_update_hash, - ColumnAndShifts::update_check_public_data_tree_root - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::public_data_check_address, - ColumnAndShifts::public_data_check_slot, - ColumnAndShifts::public_data_check_value, - ColumnAndShifts::public_data_check_root - }; }; using lookup_update_check_update_hash_public_data_read_settings = @@ -101,22 +95,19 @@ struct lookup_update_check_update_hash_poseidon2_settings_ { static constexpr std::string_view NAME = "LOOKUP_UPDATE_CHECK_UPDATE_HASH_POSEIDON2"; static constexpr std::string_view RELATION_NAME = "update_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 4; - static constexpr Column SRC_SELECTOR = Column::update_check_hash_not_zero; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::update_check_hash_not_zero); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::update_check_update_preimage_metadata), + ColumnExpression(ColumnAndShifts::update_check_update_preimage_pre_class_id), + ColumnExpression(ColumnAndShifts::update_check_update_preimage_post_class_id), + ColumnExpression(ColumnAndShifts::update_check_update_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_update_check_update_hash_poseidon2_counts; static constexpr Column INVERSES = Column::lookup_update_check_update_hash_poseidon2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::update_check_update_preimage_metadata, - ColumnAndShifts::update_check_update_preimage_pre_class_id, - ColumnAndShifts::update_check_update_preimage_post_class_id, - ColumnAndShifts::update_check_update_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_update_check_update_hash_poseidon2_settings = @@ -131,16 +122,15 @@ struct lookup_update_check_update_hi_metadata_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_UPDATE_CHECK_UPDATE_HI_METADATA_RANGE"; static constexpr std::string_view RELATION_NAME = "update_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::update_check_hash_not_zero; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::update_check_hash_not_zero); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::update_check_update_hi_metadata), + ColumnExpression(ColumnAndShifts::update_check_update_hi_metadata_bit_size)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_update_check_update_hi_metadata_range_counts; static constexpr Column INVERSES = Column::lookup_update_check_update_hi_metadata_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::update_check_update_hi_metadata, ColumnAndShifts::update_check_update_hi_metadata_bit_size - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_update_check_update_hi_metadata_range_settings = @@ -155,16 +145,15 @@ struct lookup_update_check_update_lo_metadata_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_UPDATE_CHECK_UPDATE_LO_METADATA_RANGE"; static constexpr std::string_view RELATION_NAME = "update_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::update_check_hash_not_zero; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::update_check_hash_not_zero); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::update_check_timestamp_of_change), + ColumnExpression(ColumnAndShifts::update_check_timestamp_of_change_bit_size)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_update_check_update_lo_metadata_range_counts; static constexpr Column INVERSES = Column::lookup_update_check_update_lo_metadata_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::update_check_timestamp_of_change, ColumnAndShifts::update_check_timestamp_of_change_bit_size - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_update_check_update_lo_metadata_range_settings = @@ -179,17 +168,15 @@ struct lookup_update_check_timestamp_of_change_cmp_range_settings_ { static constexpr std::string_view NAME = "LOOKUP_UPDATE_CHECK_TIMESTAMP_OF_CHANGE_CMP_RANGE"; static constexpr std::string_view RELATION_NAME = "update_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 2; - static constexpr Column SRC_SELECTOR = Column::update_check_hash_not_zero; - static constexpr Column DST_SELECTOR = Column::range_check_sel; + static constexpr auto SRC_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::update_check_hash_not_zero); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::range_check_sel); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::update_check_timestamp_of_change_subtraction), + ColumnExpression(ColumnAndShifts::update_check_timestamp_of_change_bit_size)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::range_check_value), + ColumnExpression(ColumnAndShifts::range_check_rng_chk_bits)); static constexpr Column COUNTS = Column::lookup_update_check_timestamp_of_change_cmp_range_counts; static constexpr Column INVERSES = Column::lookup_update_check_timestamp_of_change_cmp_range_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::update_check_timestamp_of_change_subtraction, - ColumnAndShifts::update_check_timestamp_of_change_bit_size - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::range_check_value, ColumnAndShifts::range_check_rng_chk_bits - }; }; using lookup_update_check_timestamp_of_change_cmp_range_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_written_public_data_slots_tree_check.hpp b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_written_public_data_slots_tree_check.hpp index 4956c7191f37..4f0d16cbcd05 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_written_public_data_slots_tree_check.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/generated/relations/lookups_written_public_data_slots_tree_check.hpp @@ -7,6 +7,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" +#include "barretenberg/vm2/common/expression.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" namespace bb::avm2 { @@ -17,24 +18,22 @@ struct lookup_written_public_data_slots_tree_check_silo_poseidon2_settings_ { static constexpr std::string_view NAME = "LOOKUP_WRITTEN_PUBLIC_DATA_SLOTS_TREE_CHECK_SILO_POSEIDON2"; static constexpr std::string_view RELATION_NAME = "written_public_data_slots_tree_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::written_public_data_slots_tree_check_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_sel), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_siloing_separator), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_address), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_slot), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_leaf_slot)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_start), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_written_public_data_slots_tree_check_silo_poseidon2_counts; static constexpr Column INVERSES = Column::lookup_written_public_data_slots_tree_check_silo_poseidon2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::written_public_data_slots_tree_check_sel, - ColumnAndShifts::written_public_data_slots_tree_check_siloing_separator, - ColumnAndShifts::written_public_data_slots_tree_check_address, - ColumnAndShifts::written_public_data_slots_tree_check_slot, - ColumnAndShifts::written_public_data_slots_tree_check_leaf_slot - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_start, - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_written_public_data_slots_tree_check_silo_poseidon2_settings = @@ -49,24 +48,22 @@ struct lookup_written_public_data_slots_tree_check_low_leaf_poseidon2_settings_ static constexpr std::string_view NAME = "LOOKUP_WRITTEN_PUBLIC_DATA_SLOTS_TREE_CHECK_LOW_LEAF_POSEIDON2"; static constexpr std::string_view RELATION_NAME = "written_public_data_slots_tree_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::written_public_data_slots_tree_check_sel; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_sel), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_slot), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_next_slot), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_next_index), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_start), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_written_public_data_slots_tree_check_low_leaf_poseidon2_counts; static constexpr Column INVERSES = Column::lookup_written_public_data_slots_tree_check_low_leaf_poseidon2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::written_public_data_slots_tree_check_sel, - ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_slot, - ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_next_slot, - ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_next_index, - ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_start, - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_written_public_data_slots_tree_check_low_leaf_poseidon2_settings = @@ -81,26 +78,24 @@ struct lookup_written_public_data_slots_tree_check_updated_low_leaf_poseidon2_se static constexpr std::string_view NAME = "LOOKUP_WRITTEN_PUBLIC_DATA_SLOTS_TREE_CHECK_UPDATED_LOW_LEAF_POSEIDON2"; static constexpr std::string_view RELATION_NAME = "written_public_data_slots_tree_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::written_public_data_slots_tree_check_should_insert; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_should_insert); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = std::make_tuple( + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_sel), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_slot), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_updated_low_leaf_next_slot), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_updated_low_leaf_next_index), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_updated_low_leaf_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_start), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_written_public_data_slots_tree_check_updated_low_leaf_poseidon2_counts; static constexpr Column INVERSES = Column::lookup_written_public_data_slots_tree_check_updated_low_leaf_poseidon2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::written_public_data_slots_tree_check_sel, - ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_slot, - ColumnAndShifts::written_public_data_slots_tree_check_updated_low_leaf_next_slot, - ColumnAndShifts::written_public_data_slots_tree_check_updated_low_leaf_next_index, - ColumnAndShifts::written_public_data_slots_tree_check_updated_low_leaf_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_start, - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_written_public_data_slots_tree_check_updated_low_leaf_poseidon2_settings = @@ -115,25 +110,26 @@ struct lookup_written_public_data_slots_tree_check_low_leaf_merkle_check_setting static constexpr std::string_view NAME = "LOOKUP_WRITTEN_PUBLIC_DATA_SLOTS_TREE_CHECK_LOW_LEAF_MERKLE_CHECK"; static constexpr std::string_view RELATION_NAME = "written_public_data_slots_tree_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 7; - static constexpr Column SRC_SELECTOR = Column::written_public_data_slots_tree_check_sel; - static constexpr Column DST_SELECTOR = Column::merkle_check_start; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_sel); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::merkle_check_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_should_insert), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_hash), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_updated_low_leaf_hash), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_index), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_tree_height), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_root), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_intermediate_root)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::merkle_check_write), + ColumnExpression(ColumnAndShifts::merkle_check_read_node), + ColumnExpression(ColumnAndShifts::merkle_check_write_node), + ColumnExpression(ColumnAndShifts::merkle_check_index), + ColumnExpression(ColumnAndShifts::merkle_check_path_len), + ColumnExpression(ColumnAndShifts::merkle_check_read_root), + ColumnExpression(ColumnAndShifts::merkle_check_write_root)); static constexpr Column COUNTS = Column::lookup_written_public_data_slots_tree_check_low_leaf_merkle_check_counts; static constexpr Column INVERSES = Column::lookup_written_public_data_slots_tree_check_low_leaf_merkle_check_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::written_public_data_slots_tree_check_should_insert, - ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_hash, - ColumnAndShifts::written_public_data_slots_tree_check_updated_low_leaf_hash, - ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_index, - ColumnAndShifts::written_public_data_slots_tree_check_tree_height, - ColumnAndShifts::written_public_data_slots_tree_check_root, - ColumnAndShifts::written_public_data_slots_tree_check_intermediate_root - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::merkle_check_write, ColumnAndShifts::merkle_check_read_node, - ColumnAndShifts::merkle_check_write_node, ColumnAndShifts::merkle_check_index, - ColumnAndShifts::merkle_check_path_len, ColumnAndShifts::merkle_check_read_root, - ColumnAndShifts::merkle_check_write_root - }; }; using lookup_written_public_data_slots_tree_check_low_leaf_merkle_check_settings = @@ -148,19 +144,19 @@ struct lookup_written_public_data_slots_tree_check_low_leaf_slot_validation_sett static constexpr std::string_view NAME = "LOOKUP_WRITTEN_PUBLIC_DATA_SLOTS_TREE_CHECK_LOW_LEAF_SLOT_VALIDATION"; static constexpr std::string_view RELATION_NAME = "written_public_data_slots_tree_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::written_public_data_slots_tree_check_leaf_not_exists; - static constexpr Column DST_SELECTOR = Column::ff_gt_sel_gt; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_leaf_not_exists); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ff_gt_sel_gt); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_leaf_slot), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_slot), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_sel)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ff_gt_a), + ColumnExpression(ColumnAndShifts::ff_gt_b), + ColumnExpression(ColumnAndShifts::ff_gt_result)); static constexpr Column COUNTS = Column::lookup_written_public_data_slots_tree_check_low_leaf_slot_validation_counts; static constexpr Column INVERSES = Column::lookup_written_public_data_slots_tree_check_low_leaf_slot_validation_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::written_public_data_slots_tree_check_leaf_slot, - ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_slot, - ColumnAndShifts::written_public_data_slots_tree_check_sel - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::ff_gt_a, - ColumnAndShifts::ff_gt_b, - ColumnAndShifts::ff_gt_result }; }; using lookup_written_public_data_slots_tree_check_low_leaf_slot_validation_settings = @@ -176,20 +172,20 @@ struct lookup_written_public_data_slots_tree_check_low_leaf_next_slot_validation "LOOKUP_WRITTEN_PUBLIC_DATA_SLOTS_TREE_CHECK_LOW_LEAF_NEXT_SLOT_VALIDATION"; static constexpr std::string_view RELATION_NAME = "written_public_data_slots_tree_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 3; - static constexpr Column SRC_SELECTOR = Column::written_public_data_slots_tree_check_next_slot_is_nonzero; - static constexpr Column DST_SELECTOR = Column::ff_gt_sel_gt; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_next_slot_is_nonzero); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::ff_gt_sel_gt); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_next_slot), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_leaf_slot), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_sel)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::ff_gt_a), + ColumnExpression(ColumnAndShifts::ff_gt_b), + ColumnExpression(ColumnAndShifts::ff_gt_result)); static constexpr Column COUNTS = Column::lookup_written_public_data_slots_tree_check_low_leaf_next_slot_validation_counts; static constexpr Column INVERSES = Column::lookup_written_public_data_slots_tree_check_low_leaf_next_slot_validation_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_next_slot, - ColumnAndShifts::written_public_data_slots_tree_check_leaf_slot, - ColumnAndShifts::written_public_data_slots_tree_check_sel - }; - static constexpr std::array DST_COLUMNS = { ColumnAndShifts::ff_gt_a, - ColumnAndShifts::ff_gt_b, - ColumnAndShifts::ff_gt_result }; }; using lookup_written_public_data_slots_tree_check_low_leaf_next_slot_validation_settings = @@ -204,24 +200,22 @@ struct lookup_written_public_data_slots_tree_check_new_leaf_poseidon2_settings_ static constexpr std::string_view NAME = "LOOKUP_WRITTEN_PUBLIC_DATA_SLOTS_TREE_CHECK_NEW_LEAF_POSEIDON2"; static constexpr std::string_view RELATION_NAME = "written_public_data_slots_tree_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 5; - static constexpr Column SRC_SELECTOR = Column::written_public_data_slots_tree_check_should_insert; - static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_should_insert); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::poseidon2_hash_end); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_sel), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_leaf_slot), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_next_slot), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_next_index), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_new_leaf_hash)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::poseidon2_hash_start), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_0), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_1), + ColumnExpression(ColumnAndShifts::poseidon2_hash_input_2), + ColumnExpression(ColumnAndShifts::poseidon2_hash_output)); static constexpr Column COUNTS = Column::lookup_written_public_data_slots_tree_check_new_leaf_poseidon2_counts; static constexpr Column INVERSES = Column::lookup_written_public_data_slots_tree_check_new_leaf_poseidon2_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::written_public_data_slots_tree_check_sel, - ColumnAndShifts::written_public_data_slots_tree_check_leaf_slot, - ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_next_slot, - ColumnAndShifts::written_public_data_slots_tree_check_low_leaf_next_index, - ColumnAndShifts::written_public_data_slots_tree_check_new_leaf_hash - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::poseidon2_hash_start, - ColumnAndShifts::poseidon2_hash_input_0, - ColumnAndShifts::poseidon2_hash_input_1, - ColumnAndShifts::poseidon2_hash_input_2, - ColumnAndShifts::poseidon2_hash_output - }; }; using lookup_written_public_data_slots_tree_check_new_leaf_poseidon2_settings = @@ -236,25 +230,26 @@ struct lookup_written_public_data_slots_tree_check_new_leaf_merkle_check_setting static constexpr std::string_view NAME = "LOOKUP_WRITTEN_PUBLIC_DATA_SLOTS_TREE_CHECK_NEW_LEAF_MERKLE_CHECK"; static constexpr std::string_view RELATION_NAME = "written_public_data_slots_tree_check"; static constexpr size_t LOOKUP_TUPLE_SIZE = 7; - static constexpr Column SRC_SELECTOR = Column::written_public_data_slots_tree_check_should_insert; - static constexpr Column DST_SELECTOR = Column::merkle_check_start; + static constexpr auto SRC_SELECTOR_EXPR = + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_should_insert); + static constexpr auto DST_SELECTOR_EXPR = ColumnExpression(ColumnAndShifts::merkle_check_start); + static constexpr auto SRC_EXPRS = + std::make_tuple(ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_sel), + ColumnExpression(ColumnAndShifts::precomputed_zero), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_new_leaf_hash), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_tree_size_before_write), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_tree_height), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_intermediate_root), + ColumnExpression(ColumnAndShifts::written_public_data_slots_tree_check_write_root)); + static constexpr auto DST_EXPRS = std::make_tuple(ColumnExpression(ColumnAndShifts::merkle_check_write), + ColumnExpression(ColumnAndShifts::merkle_check_read_node), + ColumnExpression(ColumnAndShifts::merkle_check_write_node), + ColumnExpression(ColumnAndShifts::merkle_check_index), + ColumnExpression(ColumnAndShifts::merkle_check_path_len), + ColumnExpression(ColumnAndShifts::merkle_check_read_root), + ColumnExpression(ColumnAndShifts::merkle_check_write_root)); static constexpr Column COUNTS = Column::lookup_written_public_data_slots_tree_check_new_leaf_merkle_check_counts; static constexpr Column INVERSES = Column::lookup_written_public_data_slots_tree_check_new_leaf_merkle_check_inv; - static constexpr std::array SRC_COLUMNS = { - ColumnAndShifts::written_public_data_slots_tree_check_sel, - ColumnAndShifts::precomputed_zero, - ColumnAndShifts::written_public_data_slots_tree_check_new_leaf_hash, - ColumnAndShifts::written_public_data_slots_tree_check_tree_size_before_write, - ColumnAndShifts::written_public_data_slots_tree_check_tree_height, - ColumnAndShifts::written_public_data_slots_tree_check_intermediate_root, - ColumnAndShifts::written_public_data_slots_tree_check_write_root - }; - static constexpr std::array DST_COLUMNS = { - ColumnAndShifts::merkle_check_write, ColumnAndShifts::merkle_check_read_node, - ColumnAndShifts::merkle_check_write_node, ColumnAndShifts::merkle_check_index, - ColumnAndShifts::merkle_check_path_len, ColumnAndShifts::merkle_check_read_root, - ColumnAndShifts::merkle_check_write_root - }; }; using lookup_written_public_data_slots_tree_check_new_leaf_merkle_check_settings = diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/interaction_builder.hpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/interaction_builder.hpp index 4cbe71f93784..47b4bfb1901a 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/interaction_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/interaction_builder.hpp @@ -23,7 +23,8 @@ template std::vector concatenate_jobs(std::vector&& first, au // We set a dummy value in the inverse column so that the size of the column is right. // The correct value will be set by the prover. -template void SetDummyInverses(TraceContainer& trace) +// TODO(fcarreiro): support expressions. +template void SetDummyInversesPermutation(TraceContainer& trace) { trace.visit_column(LookupSettings::SRC_SELECTOR, [&](uint32_t row, const FF&) { trace.set(LookupSettings::INVERSES, row, 0xdeadbeef); }); @@ -31,6 +32,18 @@ template void SetDummyInverses(TraceContainer& trace) [&](uint32_t row, const FF&) { trace.set(LookupSettings::INVERSES, row, 0xdeadbeef); }); } +template void SetDummyInverses(TraceContainer& trace) +{ + // TODO(fcarreiro): support expressions. + const auto src_selector_col = static_cast(LookupSettings::SRC_SELECTOR_EXPR.column); + const auto dst_selector_col = static_cast(LookupSettings::DST_SELECTOR_EXPR.column); + + trace.visit_column(src_selector_col, + [&](uint32_t row, const FF&) { trace.set(LookupSettings::INVERSES, row, 0xdeadbeef); }); + trace.visit_column(dst_selector_col, + [&](uint32_t row, const FF&) { trace.set(LookupSettings::INVERSES, row, 0xdeadbeef); }); +} + } // namespace bb::avm2::tracegen // Define a hash function for std::array so that it can be used as a key in a std::unordered_map. diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/lookup_builder.hpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/lookup_builder.hpp index 85837afc4b93..60f39843eeea 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/lookup_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/lookup_builder.hpp @@ -7,6 +7,8 @@ #include #include "barretenberg/common/utils.hpp" +#include "barretenberg/vm2/common/expression.hpp" +#include "barretenberg/vm2/common/expression_evaluation.hpp" #include "barretenberg/vm2/common/field.hpp" #include "barretenberg/vm2/common/map.hpp" #include "barretenberg/vm2/common/stringify.hpp" @@ -16,6 +18,16 @@ namespace bb::avm2::tracegen { +template auto get_multiple(TraceContainer& trace, const Expressions& exprs, uint32_t row) +{ + static constexpr size_t N = std::tuple_size_v; + auto ev = ValueExpressionEvaluator( + [&](const ColumnExpression& expr) { return trace.get_column_or_shift(expr.column, row); }); + return [&](std::index_sequence) { + return std::array{ ev.evaluate(std::get(exprs))... }; + }(std::make_index_sequence{}); +} + // A lookup builder that uses a function `find_in_dst` to find the destination row for a given source tuple. template class IndexedLookupTraceBuilder : public InteractionBuilderInterface { public: @@ -27,13 +39,16 @@ template class IndexedLookupTraceBuilder : public Int SetDummyInverses(trace); + // TODO(fcarreiro): support expressions. + const auto src_selector_col = static_cast(LookupSettings::SRC_SELECTOR_EXPR.column); + // Let "src_sel {c1, c2, ...} in dst_sel {d1, d2, ...}" be a lookup, // For each row that has a 1 in the src_sel, we take the values of {c1, c2, ...}, // find a row dst_row in the target columns {d1, d2, ...} where the values match. // Then we increment the count in the counts column at dst_row. // The complexity is O(|src_selector|) * O(find_in_dst). - trace.visit_column(LookupSettings::SRC_SELECTOR, [&](uint32_t row, const FF&) { - auto src_values = trace.get_multiple(LookupSettings::SRC_COLUMNS, row); + trace.visit_column(src_selector_col, [&](uint32_t row, const FF&) { + auto src_values = get_multiple(trace, LookupSettings::SRC_EXPRS, row); uint32_t dst_row = 0; try { dst_row = find_in_dst(src_values); // Assumes an efficient implementation. @@ -67,9 +82,12 @@ class LookupIntoDynamicTableGeneric : public IndexedLookupTraceBuilder(LookupSettings::DST_SELECTOR_EXPR.column); + + row_idx.reserve(trace.get_column_rows(dst_selector_col)); + trace.visit_column(dst_selector_col, [&](uint32_t row, const FF&) { + auto dst_values = get_multiple(trace, LookupSettings::DST_EXPRS, row); row_idx.insert({ dst_values, row }); }); } @@ -80,9 +98,10 @@ class LookupIntoDynamicTableGeneric : public IndexedLookupTraceBuildersecond; } - throw std::runtime_error("Failed computing counts for " + std::string(LookupSettings::NAME) + - ". Could not find tuple in destination. " + - "SRC tuple: " + column_values_to_string(tup, LookupSettings::SRC_COLUMNS)); + throw std::runtime_error("Failed computing counts for " + std::string(LookupSettings::NAME)); + // throw std::runtime_error("Failed computing counts for " + std::string(LookupSettings::NAME) + + // ". Could not find tuple in destination. " + + // "SRC tuple: " + column_values_to_string(tup, LookupSettings::SRC_COLUMNS)); } private: @@ -105,29 +124,32 @@ template class LookupIntoDynamicTableSequential : publ void process(TraceContainer& trace) override { + // TODO(fcarreiro): support expressions. + const auto src_selector_col = static_cast(LookupSettings::SRC_SELECTOR_EXPR.column); + const auto dst_selector_col = static_cast(LookupSettings::DST_SELECTOR_EXPR.column); + uint32_t dst_row = 0; - uint32_t max_dst_row = trace.get_column_rows(LookupSettings::DST_SELECTOR); + uint32_t max_dst_row = trace.get_column_rows(dst_selector_col); SetDummyInverses(trace); // For the sequential builder, it is critical that we visit the source rows in order. // Since the trace does not guarantee visiting rows in order, we need to collect the rows. std::vector src_rows_in_order; - src_rows_in_order.reserve(trace.get_column_rows(LookupSettings::SRC_SELECTOR)); - trace.visit_column(LookupSettings::SRC_SELECTOR, - [&](uint32_t row, const FF&) { src_rows_in_order.push_back(row); }); + src_rows_in_order.reserve(trace.get_column_rows(src_selector_col)); + trace.visit_column(src_selector_col, [&](uint32_t row, const FF&) { src_rows_in_order.push_back(row); }); std::sort(src_rows_in_order.begin(), src_rows_in_order.end()); for (uint32_t row : src_rows_in_order) { - auto src_values = trace.get_multiple(LookupSettings::SRC_COLUMNS, row); + auto src_values = get_multiple(trace, LookupSettings::SRC_EXPRS, row); // We find the first row in the destination columns where the values match. bool found = false; while (!found && dst_row < max_dst_row) { // TODO: As an optimization, we could try to only walk the rows where the selector is active. // We can't just do a visit because we cannot skip rows with that. - auto dst_selector = trace.get(LookupSettings::DST_SELECTOR, dst_row); - if (dst_selector == 1 && src_values == trace.get_multiple(LookupSettings::DST_COLUMNS, dst_row)) { + auto dst_selector = trace.get(dst_selector_col, dst_row); + if (dst_selector == 1 && src_values == get_multiple(trace, LookupSettings::DST_EXPRS, dst_row)) { trace.set(LookupSettings::COUNTS, dst_row, trace.get(LookupSettings::COUNTS, dst_row) + 1); found = true; // We don't want to increment dst_row if we found a match. @@ -138,11 +160,13 @@ template class LookupIntoDynamicTableSequential : publ } if (!found) { - throw std::runtime_error( - "Failed computing counts for " + std::string(LookupSettings::NAME) + - ". Could not find tuple in destination.\nSRC tuple (row " + std::to_string(row) + - "): " + column_values_to_string(src_values, LookupSettings::SRC_COLUMNS) + - "\nNOTE: Remember that you cannot use LookupIntoDynamicTableSequential with a deduplicated trace!"); + throw std::runtime_error("Failed computing counts for " + std::string(LookupSettings::NAME)); + // throw std::runtime_error( + // "Failed computing counts for " + std::string(LookupSettings::NAME) + + // ". Could not find tuple in destination.\nSRC tuple (row " + std::to_string(row) + + // "): " + column_values_to_string(src_values, LookupSettings::SRC_COLUMNS) + + // "\nNOTE: Remember that you cannot use LookupIntoDynamicTableSequential with a deduplicated + // trace!"); } } } diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/permutation_builder.hpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/permutation_builder.hpp index b667d1123295..c797106e5a31 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/permutation_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/permutation_builder.hpp @@ -10,7 +10,7 @@ namespace bb::avm2::tracegen { // and let the provers use it to more efficiently compute the inverses. template class PermutationBuilder : public InteractionBuilderInterface { public: - void process(TraceContainer& trace) override { SetDummyInverses(trace); } + void process(TraceContainer& trace) override { SetDummyInversesPermutation(trace); } }; } // namespace bb::avm2::tracegen diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/test_interaction_builder.hpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/test_interaction_builder.hpp index b57f661d0cbc..3b9bfbaefadb 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/test_interaction_builder.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/lib/test_interaction_builder.hpp @@ -32,11 +32,14 @@ template class AddChecksToBuilder : public BaseBuilder { { uint32_t dst_row = BaseBuilder::find_in_dst(src_values); - auto dst_values = trace->get_multiple(BaseBuilder::LookupSettings::DST_COLUMNS, dst_row); + auto dst_values = get_multiple(*trace, BaseBuilder::LookupSettings::DST_EXPRS, dst_row); if (src_values != dst_values) { - throw std::runtime_error("Failed computing counts for " + std::string(BaseBuilder::LookupSettings::NAME) + - ". Could not find tuple in destination. " + "SRC tuple: " + - column_values_to_string(src_values, BaseBuilder::LookupSettings::SRC_COLUMNS)); + // TODO(fcarreiro): support expressions. + throw std::runtime_error("Failed computing counts for " + std::string(BaseBuilder::LookupSettings::NAME)); + // throw std::runtime_error("Failed computing counts for " + std::string(BaseBuilder::LookupSettings::NAME) + // + + // ". Could not find tuple in destination. " + "SRC tuple: " + + // column_values_to_string(src_values, BaseBuilder::LookupSettings::SRC_COLUMNS)); } return dst_row; diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen/trace_container.hpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen/trace_container.hpp index 563c81ba632f..7a1009d7d130 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen/trace_container.hpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen/trace_container.hpp @@ -24,6 +24,7 @@ class TraceContainer { TraceContainer(); const FF& get(Column col, uint32_t row) const; + // TODO(fcarreiro): remove this once it's not used in permutations. template std::array get_multiple(const std::array& cols, uint32_t row) const { std::array result; diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen_helper.cpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen_helper.cpp index d81f8682e675..37ea8812cceb 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen_helper.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen_helper.cpp @@ -165,16 +165,18 @@ void print_trace_stats(const TraceContainer& trace) // WARNING: This will not warn you if the interaction is not exercised. void check_interactions([[maybe_unused]] const TraceContainer& trace) { -#ifndef NDEBUG - bb::constexpr_for<0, std::tuple_size_v, 1>([&]() { - using Settings = typename std::tuple_element_t::Settings; - if (trace.get_column_rows(Settings::SRC_SELECTOR) != 0 && trace.get_column_rows(Settings::INVERSES) == 0) { - std::cerr << "Inverses not set for " << Settings::NAME << ". Did you forget to run a lookup builder?" - << std::endl; - std::abort(); - } - }); -#endif + // TODO(fcarreiro): support expressions. + // #ifndef NDEBUG + // bb::constexpr_for<0, std::tuple_size_v, 1>([&]() { + // using Settings = typename std::tuple_element_t::Settings; + // if (trace.get_column_rows(Settings::SRC_SELECTOR) != 0 && trace.get_column_rows(Settings::INVERSES) == 0) + // { + // std::cerr << "Inverses not set for " << Settings::NAME << ". Did you forget to run a lookup builder?" + // << std::endl; + // std::abort(); + // } + // }); + // #endif } } // namespace diff --git a/bb-pilcom/bb-pil-backend/src/lookup_builder.rs b/bb-pilcom/bb-pil-backend/src/lookup_builder.rs index c8429ab5225e..0a0ec740246a 100644 --- a/bb-pilcom/bb-pil-backend/src/lookup_builder.rs +++ b/bb-pilcom/bb-pil-backend/src/lookup_builder.rs @@ -1,7 +1,10 @@ use crate::file_writer::BBFiles; use itertools::Itertools; use powdr_ast::{ - analyzed::{AlgebraicExpression, Analyzed, IdentityKind}, + analyzed::{ + AlgebraicBinaryOperator, AlgebraicExpression, AlgebraicUnaryOperator, Analyzed, + IdentityKind, + }, parsed::SelectedExpressions, }; use powdr_number::FieldElement; @@ -10,7 +13,7 @@ use handlebars::Handlebars; use serde_json::{json, Value as Json}; use std::path::Path; -use crate::utils::sanitize_name; +use crate::utils::{format_field, sanitize_name}; #[derive(Debug)] /// Lookup @@ -40,10 +43,12 @@ pub struct Lookup { /// /// One side of a two sided lookup relationship pub struct LookupSide { - /// -> Option - the selector for the lookup ( on / off toggle ) + /// The selector expression for the lookup ( on / off toggle ) + /// See barretenberg/cpp/src/barretenberg/vm2/common/expression.hpp for the expression types. selector: Option, - /// The columns involved in this side of the lookup - cols: Vec, + /// The C++ expressions for the side of the lookup + /// See barretenberg/cpp/src/barretenberg/vm2/common/expression.hpp for the expression types. + expressions: Vec, } pub trait LookupBuilder { @@ -158,7 +163,7 @@ pub fn get_counts_from_lookups(lookups: &[Lookup]) -> Vec { } fn create_lookup_settings_data(lookup: &Lookup) -> Json { - let columns_per_set = lookup.left.cols.len(); + let columns_per_set = lookup.left.expressions.len(); // NOTE: https://github.com/AztecProtocol/aztec-packages/issues/3879 // Settings are not flexible enough to combine inverses @@ -172,11 +177,11 @@ fn create_lookup_settings_data(lookup: &Lookup) -> Json { .selector .clone() .expect("Right hand side selector for lookup required"); - let lhs_cols = lookup.left.cols.clone(); - let rhs_cols = lookup.right.cols.clone(); + let lhs_exprs = lookup.left.expressions.clone(); + let rhs_exprs = lookup.right.expressions.clone(); assert!( - lhs_cols.len() == rhs_cols.len(), + lhs_exprs.len() == rhs_exprs.len(), "Lookup columns lhs must be the same length as rhs" ); @@ -197,8 +202,8 @@ fn create_lookup_settings_data(lookup: &Lookup) -> Json { "relation_name": lookup.owning_relation, "lhs_selector": lhs_selector, "rhs_selector": rhs_selector, - "lhs_cols": lhs_cols, - "rhs_cols": rhs_cols, + "lhs_exprs": lhs_exprs, + "rhs_exprs": rhs_exprs, "inverses_col": lookup.inverse.clone(), "counts_col": lookup.counts_poly, "read_terms": read_terms, @@ -212,22 +217,53 @@ fn create_lookup_settings_data(lookup: &Lookup) -> Json { }) } -fn get_lookup_side( - def: &SelectedExpressions>, -) -> LookupSide { - let get_name = |expr: &AlgebraicExpression| match expr { +fn translate_expression(expr: &AlgebraicExpression) -> String { + match expr { + AlgebraicExpression::Number(number) => { + format!("ConstantExpression({})", format_field(number)) + } AlgebraicExpression::Reference(a_ref) => { - let mut name = a_ref.name.clone(); + let mut name = sanitize_name(&a_ref.name); if a_ref.next { name = format!("{}_shift", name); } - sanitize_name(&name) + format!("ColumnExpression(ColumnAndShifts::{})", name) } - _ => panic!("Expected reference"), - }; + AlgebraicExpression::UnaryOperation(unary) => match unary.op { + AlgebraicUnaryOperator::Minus => format!("-({})", translate_expression(&unary.expr)), + _ => panic!("Unsupported unary operation"), + }, + AlgebraicExpression::BinaryOperation(binary) => match binary.op { + AlgebraicBinaryOperator::Add => format!( + "{} + {}", + translate_expression(&binary.left), + translate_expression(&binary.right) + ), + AlgebraicBinaryOperator::Sub => format!( + "{} - ({})", + translate_expression(&binary.left), + translate_expression(&binary.right) + ), + AlgebraicBinaryOperator::Mul => format!( + "({}) * ({})", + translate_expression(&binary.left), + translate_expression(&binary.right) + ), + _ => panic!("Unsupported binary operation"), + }, + _ => panic!("Unsupported expression"), + } +} +fn get_lookup_side( + def: &SelectedExpressions>, +) -> LookupSide { LookupSide { - selector: def.selector.as_ref().map(get_name), - cols: def.expressions.iter().map(get_name).collect_vec(), + selector: def.selector.as_ref().map(translate_expression), + expressions: def + .expressions + .iter() + .map(translate_expression) + .collect_vec(), } } diff --git a/bb-pilcom/bb-pil-backend/templates/lookup.hpp.hbs b/bb-pilcom/bb-pil-backend/templates/lookup.hpp.hbs index 6ddd0240fff8..168446beec3c 100644 --- a/bb-pilcom/bb-pil-backend/templates/lookup.hpp.hbs +++ b/bb-pilcom/bb-pil-backend/templates/lookup.hpp.hbs @@ -8,6 +8,7 @@ #include "../columns.hpp" #include "barretenberg/relations/generic_lookup/generic_lookup_relation.hpp" #include "barretenberg/vm2/constraining/relations/interactions_base.hpp" +#include "barretenberg/vm2/common/expression.hpp" namespace bb::{{snakeCase root_name}} { @@ -18,20 +19,20 @@ struct {{lookup_name}}_settings_ { static constexpr std::string_view NAME = "{{shoutySnakeCase lookup_name}}"; static constexpr std::string_view RELATION_NAME = "{{relation_name}}"; static constexpr size_t LOOKUP_TUPLE_SIZE = {{lookup_tuple_size}}; - static constexpr Column SRC_SELECTOR = Column::{{lhs_selector}}; - static constexpr Column DST_SELECTOR = Column::{{rhs_selector}}; - static constexpr Column COUNTS = Column::{{counts_col}}; - static constexpr Column INVERSES = Column::{{inverses_col}}; - static constexpr std::array SRC_COLUMNS = { - {{#each lhs_cols as |col|}} - ColumnAndShifts::{{col}}{{#unless @last}},{{/unless}} + static constexpr auto SRC_SELECTOR_EXPR = {{lhs_selector}}; + static constexpr auto DST_SELECTOR_EXPR = {{rhs_selector}}; + static constexpr auto SRC_EXPRS = std::make_tuple( + {{#each lhs_exprs as |expr|}} + {{expr}}{{#unless @last}},{{/unless}} {{/each}} - }; - static constexpr std::array DST_COLUMNS = { - {{#each rhs_cols as |col|}} - ColumnAndShifts::{{col}}{{#unless @last}},{{/unless}} + ); + static constexpr auto DST_EXPRS = std::make_tuple( + {{#each rhs_exprs as |expr|}} + {{expr}}{{#unless @last}},{{/unless}} {{/each}} - }; + ); + static constexpr Column COUNTS = Column::{{counts_col}}; + static constexpr Column INVERSES = Column::{{inverses_col}}; }; using {{lookup_name}}_settings = lookup_settings<{{lookup_name}}_settings_>;