25 return (in.get(
static_cast<ColumnAndShifts>(Settings_::SRC_SELECTOR)) == 1 ||
29 template <
typename Accumulator,
typename AllEntities>
32 using View =
typename Accumulator::View;
33 const auto is_operation = View(in.get(
static_cast<ColumnAndShifts>(Settings_::SRC_SELECTOR)));
34 const auto is_table_entry = View(in.get(
static_cast<ColumnAndShifts>(Settings_::DST_SELECTOR)));
35 return (is_operation + is_table_entry - is_operation * is_table_entry);
38 template <
typename AllEntities>
static inline auto get_entities(AllEntities&& in)
40 return []<
size_t... ISource,
size_t... IDest>(
46 in.get(Settings_::SRC_COLUMNS[ISource])...,
47 in.get(Settings_::DST_COLUMNS[IDest])...);
66 static constexpr std::string_view
NAME = Settings::NAME;
67 static constexpr std::string_view
RELATION_NAME = Settings::RELATION_NAME;
69 template <
typename AllEntities>
inline static bool skip(
const AllEntities& in)
71 return (in.get(
static_cast<ColumnAndShifts>(Settings::INVERSES))).is_zero();
75 template <
typename ContainerOverSubrelations,
typename AllEntities,
typename Parameters>
76 static void accumulate(ContainerOverSubrelations& accumulator,
77 const AllEntities& in,
78 const Parameters& params,
79 const FF_& scaling_factor);
85 return "INVERSES_ARE_CORRECT";
87 return "ACCUMULATION_IS_CORRECT";
99 return (in.get(
static_cast<ColumnAndShifts>(Settings_::SRC_SELECTOR)) == 1 ||
103 template <
typename AllEntities>
static inline auto get_entities(AllEntities&& in)
105 return []<
size_t... ISource,
size_t... IDest>(
117 in.get(Settings_::SRC_COLUMNS[ISource])...,
118 in.get(Settings_::DST_COLUMNS[IDest])...);
135template <
typename FF_,
typename Settings_>
138 static constexpr std::string_view
NAME = Settings::NAME;
141 template <
typename AllEntities>
inline static bool skip(
const AllEntities& in)
143 return (in.get(
static_cast<ColumnAndShifts>(Settings::INVERSES))).is_zero();
150 return "INVERSES_ARE_CORRECT";
152 return "ACCUMULATION_IS_CORRECT";
A wrapper for Relations to expose methods used by the Sumcheck prover or verifier to add the contribu...
This file contains the template for the generic lookup that can be specialized to enforce various loo...
This file contains the template for the generic permutation that can be specialized to enforce variou...
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
static constexpr size_t WRITE_TERM_DEGREE
static auto get_entities(AllEntities &&in)
static auto compute_inverse_exists(const AllEntities &in)
static constexpr size_t WRITE_TERMS
static auto inverse_polynomial_is_computed_at_row(const AllEntities &in)
static constexpr size_t READ_TERM_TYPES[READ_TERMS]
static auto get_nonconst_entities(AllEntities &in)
static constexpr size_t WRITE_TERM_TYPES[WRITE_TERMS]
static constexpr size_t READ_TERM_DEGREE
static auto get_const_entities(const AllEntities &in)
static constexpr size_t READ_TERMS
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 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)