31 return (in.get(
static_cast<ColumnAndShifts>(Settings_::SRC_SELECTOR)) == 1 ||
35 template <
typename Accumulator,
typename AllEntities>
38 using View =
typename Accumulator::View;
39 const auto is_operation = View(in.get(
static_cast<ColumnAndShifts>(Settings_::SRC_SELECTOR)));
40 const auto is_table_entry = View(in.get(
static_cast<ColumnAndShifts>(Settings_::DST_SELECTOR)));
41 return (is_operation + is_table_entry - is_operation * is_table_entry);
44 template <
typename AllEntities>
static inline auto get_entities(AllEntities&& in)
46 return []<
size_t... ISource,
size_t... IDest>(
52 in.get(Settings_::SRC_COLUMNS[ISource])...,
53 in.get(Settings_::DST_COLUMNS[IDest])...);
72 static constexpr std::string_view
NAME = Settings::NAME;
73 static constexpr std::string_view
RELATION_NAME = Settings::RELATION_NAME;
75 template <
typename AllEntities>
inline static bool skip(
const AllEntities& in)
77 return (in.get(
static_cast<ColumnAndShifts>(Settings::INVERSES))).is_zero();
81 template <
typename ContainerOverSubrelations,
typename AllEntities,
typename Parameters>
82 static void accumulate(ContainerOverSubrelations& accumulator,
83 const AllEntities& in,
84 const Parameters& params,
85 const FF_& scaling_factor);
91 return "INVERSES_ARE_CORRECT";
93 return "ACCUMULATION_IS_CORRECT";
107 return (in.get(
static_cast<ColumnAndShifts>(Settings_::SRC_SELECTOR)) == 1 ||
111 template <
typename AllEntities>
static inline auto get_entities(AllEntities&& in)
113 return []<
size_t... ISource,
size_t... IDest>(
123 in.get(Settings_::SRC_COLUMNS[ISource])...,
124 in.get(Settings_::DST_COLUMNS[IDest])...);
141template <
typename FF_,
typename Settings_>
144 static constexpr std::string_view
NAME = Settings::NAME;
147 template <
typename AllEntities>
inline static bool skip(
const AllEntities& in)
149 return (in.get(
static_cast<ColumnAndShifts>(Settings::INVERSES))).is_zero();
156 return "INVERSES_ARE_CORRECT";
158 return "ACCUMULATION_IS_CORRECT";
A wrapper for Relations to expose methods used by the Sumcheck prover or verifier to add the contribu...
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
std::string to_string(bb::avm2::ValueTag tag)
TUPLET_INLINE constexpr auto forward_as_tuple(T &&... a) noexcept
static std::string get_subrelation_label(size_t index)
static bool skip(const AllEntities &in)
static constexpr std::string_view NAME
static void accumulate(ContainerOverSubrelations &accumulator, const AllEntities &in, const Parameters ¶ms, const FF_ &scaling_factor)
static constexpr std::string_view RELATION_NAME
Settings to be passed ot GenericLookupRelationImpl.
static auto get_entities(AllEntities &&in)
static constexpr std::array< uint8_t, NUM_LOOKUP_TERMS > LOOKUP_TYPES
static constexpr size_t NUM_LOOKUP_TERMS
static auto compute_inverse_exists(const AllEntities &in)
static constexpr size_t NUM_TABLE_TERMS
static auto inverse_polynomial_is_computed_at_row(const AllEntities &in)
static auto get_nonconst_entities(AllEntities &in)
static constexpr std::array< uint8_t, NUM_TABLE_TERMS > TABLE_TYPES
static constexpr std::array< size_t, NUM_LOOKUP_TERMS > LOOKUP_TERM_DEGREES
static constexpr std::array< size_t, NUM_TABLE_TERMS > TABLE_TERM_DEGREES
static auto get_const_entities(const AllEntities &in)
static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE
static std::string get_subrelation_label(size_t index)
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view NAME
static bool skip(const AllEntities &in)
static constexpr size_t INVERSE_EXISTS_POLYNOMIAL_DEGREE
static auto get_nonconst_entities(AllEntities &in)
static auto inverse_polynomial_is_computed_at_row(const AllEntities &in)
static auto get_const_entities(const AllEntities &in)
static auto get_entities(AllEntities &&in)