87 template <
typename FF>
95 EntityId::kernel_calldata,
96 EntityId::kernel_calldata_read_counts,
97 EntityId::kernel_calldata_inverses,
98 EntityId::kernel_calldata_indicator,
134 using BlockBase =
typename TraceBlocks::BlockBase;
148 template <
typename TraceBlocks>
static auto get_gate_blocks(TraceBlocks
const& blocks)
150 using BlockBase =
typename TraceBlocks::BlockBase;
182 block.q_m(), block.q_1(), block.q_2(), block.q_3(), block.q_4(), block.q_c(), block.q_5(),
190 std::array<DataType, NUM_ALL_ENTITIES>
data{};
199 DataType&
q_m() {
return data[
static_cast<size_t>(EntityId::q_m)]; }
200 const DataType&
q_m()
const {
return data[
static_cast<size_t>(EntityId::q_m)]; }
201 DataType&
q_l() {
return data[
static_cast<size_t>(EntityId::q_l)]; }
202 const DataType&
q_l()
const {
return data[
static_cast<size_t>(EntityId::q_l)]; }
203 DataType&
q_r() {
return data[
static_cast<size_t>(EntityId::q_r)]; }
204 const DataType&
q_r()
const {
return data[
static_cast<size_t>(EntityId::q_r)]; }
205 DataType&
q_o() {
return data[
static_cast<size_t>(EntityId::q_o)]; }
206 const DataType&
q_o()
const {
return data[
static_cast<size_t>(EntityId::q_o)]; }
207 DataType&
q_4() {
return data[
static_cast<size_t>(EntityId::q_4)]; }
208 const DataType&
q_4()
const {
return data[
static_cast<size_t>(EntityId::q_4)]; }
209 DataType&
q_c() {
return data[
static_cast<size_t>(EntityId::q_c)]; }
210 const DataType&
q_c()
const {
return data[
static_cast<size_t>(EntityId::q_c)]; }
211 DataType&
q_arith() {
return data[
static_cast<size_t>(EntityId::q_arith)]; }
212 const DataType&
q_arith()
const {
return data[
static_cast<size_t>(EntityId::q_arith)]; }
216 return data[
static_cast<size_t>(EntityId::q_bilinear_batched_eq)];
218 DataType&
sigma_1() {
return data[
static_cast<size_t>(EntityId::sigma_1)]; }
219 const DataType&
sigma_1()
const {
return data[
static_cast<size_t>(EntityId::sigma_1)]; }
220 DataType&
sigma_2() {
return data[
static_cast<size_t>(EntityId::sigma_2)]; }
221 const DataType&
sigma_2()
const {
return data[
static_cast<size_t>(EntityId::sigma_2)]; }
222 DataType&
sigma_3() {
return data[
static_cast<size_t>(EntityId::sigma_3)]; }
223 const DataType&
sigma_3()
const {
return data[
static_cast<size_t>(EntityId::sigma_3)]; }
224 DataType&
sigma_4() {
return data[
static_cast<size_t>(EntityId::sigma_4)]; }
225 const DataType&
sigma_4()
const {
return data[
static_cast<size_t>(EntityId::sigma_4)]; }
226 DataType&
id_1() {
return data[
static_cast<size_t>(EntityId::id_1)]; }
227 const DataType&
id_1()
const {
return data[
static_cast<size_t>(EntityId::id_1)]; }
228 DataType&
id_2() {
return data[
static_cast<size_t>(EntityId::id_2)]; }
229 const DataType&
id_2()
const {
return data[
static_cast<size_t>(EntityId::id_2)]; }
230 DataType&
id_3() {
return data[
static_cast<size_t>(EntityId::id_3)]; }
231 const DataType&
id_3()
const {
return data[
static_cast<size_t>(EntityId::id_3)]; }
232 DataType&
id_4() {
return data[
static_cast<size_t>(EntityId::id_4)]; }
233 const DataType&
id_4()
const {
return data[
static_cast<size_t>(EntityId::id_4)]; }
235 const DataType&
lagrange_first()
const {
return data[
static_cast<size_t>(EntityId::lagrange_first)]; }
237 const DataType&
lagrange_last()
const {
return data[
static_cast<size_t>(EntityId::lagrange_last)]; }
239 const DataType&
q_delta_range()
const {
return data[
static_cast<size_t>(EntityId::q_delta_range)]; }
242 DataType&
q_busread() {
return data[
static_cast<size_t>(EntityId::q_busread)]; }
243 const DataType&
q_busread()
const {
return data[
static_cast<size_t>(EntityId::q_busread)]; }
247 return data[
static_cast<size_t>(EntityId::kernel_calldata_indicator)];
249 DataType&
databus_id() {
return data[
static_cast<size_t>(EntityId::databus_id)]; }
250 const DataType&
databus_id()
const {
return data[
static_cast<size_t>(EntityId::databus_id)]; }
254 return data[
static_cast<size_t>(EntityId::q_poseidon2_external)];
258 return data[
static_cast<size_t>(EntityId::q_poseidon2_external_initial)];
262 return data[
static_cast<size_t>(EntityId::q_poseidon2_external_initial)];
267 return data[
static_cast<size_t>(EntityId::q_poseidon2_quad_internal)];
269 DataType&
q_5() {
return data[
static_cast<size_t>(EntityId::q_5)]; }
270 const DataType&
q_5()
const {
return data[
static_cast<size_t>(EntityId::q_5)]; }
273 return data[
static_cast<size_t>(EntityId::q_poseidon2_quad_internal_terminal)];
277 return data[
static_cast<size_t>(EntityId::q_poseidon2_quad_internal_terminal)];
281 return data[
static_cast<size_t>(EntityId::q_poseidon2_transition_entry)];
285 return data[
static_cast<size_t>(EntityId::q_poseidon2_transition_entry)];
287 DataType&
w_l() {
return data[
static_cast<size_t>(EntityId::w_l)]; }
288 const DataType&
w_l()
const {
return data[
static_cast<size_t>(EntityId::w_l)]; }
289 DataType&
w_r() {
return data[
static_cast<size_t>(EntityId::w_r)]; }
290 const DataType&
w_r()
const {
return data[
static_cast<size_t>(EntityId::w_r)]; }
291 DataType&
w_o() {
return data[
static_cast<size_t>(EntityId::w_o)]; }
292 const DataType&
w_o()
const {
return data[
static_cast<size_t>(EntityId::w_o)]; }
293 DataType&
w_4() {
return data[
static_cast<size_t>(EntityId::w_4)]; }
294 const DataType&
w_4()
const {
return data[
static_cast<size_t>(EntityId::w_4)]; }
295 DataType&
z_perm() {
return data[
static_cast<size_t>(EntityId::z_perm)]; }
296 const DataType&
z_perm()
const {
return data[
static_cast<size_t>(EntityId::z_perm)]; }
298 const DataType&
ecc_op_wire_1()
const {
return data[
static_cast<size_t>(EntityId::ecc_op_wire_1)]; }
300 const DataType&
ecc_op_wire_2()
const {
return data[
static_cast<size_t>(EntityId::ecc_op_wire_2)]; }
302 const DataType&
ecc_op_wire_3()
const {
return data[
static_cast<size_t>(EntityId::ecc_op_wire_3)]; }
304 const DataType&
ecc_op_wire_4()
const {
return data[
static_cast<size_t>(EntityId::ecc_op_wire_4)]; }
309 return data[
static_cast<size_t>(EntityId::kernel_calldata_read_counts)];
313 return data[
static_cast<size_t>(EntityId::kernel_calldata_read_counts)];
318 return data[
static_cast<size_t>(EntityId::kernel_calldata_inverses)];
320 DataType&
w_l_shift() {
return data[
static_cast<size_t>(EntityId::w_l_shift)]; }
321 const DataType&
w_l_shift()
const {
return data[
static_cast<size_t>(EntityId::w_l_shift)]; }
322 DataType&
w_r_shift() {
return data[
static_cast<size_t>(EntityId::w_r_shift)]; }
323 const DataType&
w_r_shift()
const {
return data[
static_cast<size_t>(EntityId::w_r_shift)]; }
324 DataType&
w_o_shift() {
return data[
static_cast<size_t>(EntityId::w_o_shift)]; }
325 const DataType&
w_o_shift()
const {
return data[
static_cast<size_t>(EntityId::w_o_shift)]; }
326 DataType&
w_4_shift() {
return data[
static_cast<size_t>(EntityId::w_4_shift)]; }
327 const DataType&
w_4_shift()
const {
return data[
static_cast<size_t>(EntityId::w_4_shift)]; }
329 const DataType&
z_perm_shift()
const {
return data[
static_cast<size_t>(EntityId::z_perm_shift)]; }
384 return { (*this)[EntityId::w_l], (*this)[EntityId::w_r], (*this)[EntityId::w_o], (*this)[EntityId::w_4] };
388 return { (*this)[EntityId::w_l], (*this)[EntityId::w_r], (*this)[EntityId::w_o], (*this)[EntityId::w_4] };
392 return { (*this)[EntityId::q_m], (*this)[EntityId::q_l], (*this)[EntityId::q_r], (*this)[EntityId::q_o],
393 (*this)[EntityId::q_4], (*this)[EntityId::q_c], (*this)[EntityId::q_5] };
397 return { (*this)[EntityId::q_m], (*this)[EntityId::q_l], (*this)[EntityId::q_r], (*this)[EntityId::q_o],
398 (*this)[EntityId::q_4], (*this)[EntityId::q_c], (*this)[EntityId::q_5] };
402 return { (*this)[EntityId::q_arith],
403 (*this)[EntityId::q_bilinear_batched_eq],
404 (*this)[EntityId::q_delta_range],
405 (*this)[EntityId::q_busread],
406 (*this)[EntityId::q_poseidon2_external],
407 (*this)[EntityId::q_poseidon2_external_initial],
408 (*this)[EntityId::q_poseidon2_quad_internal],
409 (*this)[EntityId::q_poseidon2_quad_internal_terminal],
410 (*this)[EntityId::q_poseidon2_transition_entry] };
414 return { (*this)[EntityId::q_arith],
415 (*this)[EntityId::q_bilinear_batched_eq],
416 (*this)[EntityId::q_delta_range],
417 (*this)[EntityId::q_busread],
418 (*this)[EntityId::q_poseidon2_external],
419 (*this)[EntityId::q_poseidon2_external_initial],
420 (*this)[EntityId::q_poseidon2_quad_internal],
421 (*this)[EntityId::q_poseidon2_quad_internal_terminal],
422 (*this)[EntityId::q_poseidon2_transition_entry] };
426 return { (*this)[EntityId::sigma_1],
427 (*this)[EntityId::sigma_2],
428 (*this)[EntityId::sigma_3],
429 (*this)[EntityId::sigma_4] };
433 return { (*this)[EntityId::sigma_1],
434 (*this)[EntityId::sigma_2],
435 (*this)[EntityId::sigma_3],
436 (*this)[EntityId::sigma_4] };
441 (*this)[EntityId::id_1], (*this)[EntityId::id_2], (*this)[EntityId::id_3], (*this)[EntityId::id_4]
447 (*this)[EntityId::id_1], (*this)[EntityId::id_2], (*this)[EntityId::id_3], (*this)[EntityId::id_4]
452 return { (*this)[EntityId::ecc_op_wire_1],
453 (*this)[EntityId::ecc_op_wire_2],
454 (*this)[EntityId::ecc_op_wire_3],
455 (*this)[EntityId::ecc_op_wire_4] };
459 return { (*this)[EntityId::ecc_op_wire_1],
460 (*this)[EntityId::ecc_op_wire_2],
461 (*this)[EntityId::ecc_op_wire_3],
462 (*this)[EntityId::ecc_op_wire_4] };
466 return { (*this)[EntityId::kernel_calldata], (*this)[EntityId::kernel_calldata_read_counts] };
470 return { (*this)[EntityId::kernel_calldata], (*this)[EntityId::kernel_calldata_read_counts] };
475 return { (*this)[EntityId::kernel_calldata_inverses] };
480 return { (*this)[EntityId::kernel_calldata_indicator] };
492 static const std::vector<std::string> labels = {
500 "Q_BILINEAR_BATCHED_EQ",
514 "KERNEL_CALLDATA_INDICATOR",
516 "Q_POSEIDON2_EXTERNAL",
517 "Q_POSEIDON2_EXTERNAL_INITIAL",
518 "Q_POSEIDON2_QUAD_INTERNAL",
520 "Q_POSEIDON2_QUAD_INTERNAL_TERMINAL",
521 "Q_POSEIDON2_TRANSITION_ENTRY",
532 "KERNEL_CALLDATA_READ_COUNTS",
533 "KERNEL_CALLDATA_INVERSES",
548 std::array<DataType, NUM_PRECOMPUTED_ENTITIES>
data{};
620 return { this->
q_m(), this->
q_l(), this->
q_r(), this->
q_o(), this->
q_4(), this->
q_c(), this->
q_5() };
624 return { this->
q_m(), this->
q_l(), this->
q_r(), this->
q_o(), this->
q_4(), this->
q_c(), this->
q_5() };
674 static const std::vector<std::string> labels = {
682 "Q_BILINEAR_BATCHED_EQ",
696 "KERNEL_CALLDATA_INDICATOR",
698 "Q_POSEIDON2_EXTERNAL",
699 "Q_POSEIDON2_EXTERNAL_INITIAL",
700 "Q_POSEIDON2_QUAD_INTERNAL",
702 "Q_POSEIDON2_QUAD_INTERNAL_TERMINAL",
703 "Q_POSEIDON2_TRANSITION_ENTRY",
713 std::array<DataType, NUM_WITNESS_ENTITIES>
data{};
781 static const std::vector<std::string> labels = {
792 "KERNEL_CALLDATA_READ_COUNTS",
793 "KERNEL_CALLDATA_INVERSES",
bb::field< bb::Bn254FrParams > FF
std::span< const DataType, NUM_WITNESS_ENTITIES > get_witness() const
const DataType & id_3() const
DataType & lagrange_ecc_op()
RefArray< DataType, 9 > get_gate_selectors()
const DataType & sigma_3() const
const DataType & q_delta_range() const
RefArray< const DataType, 4 > get_ids() const
DataType & q_delta_range()
RefArray< const DataType, 4 > get_sigmas() const
DataType & operator[](EntityId id)
std::span< const DataType, NUM_SHIFTED_ENTITIES > get_shifted() const
RefArray< const DataType, 4 > get_ecc_op_wires() const
const DataType & q_bilinear_batched_eq() const
const DataType & lagrange_ecc_op() const
const DataType & w_l_shift() const
const DataType & kernel_calldata_indicator() const
const DataType & q_busread() const
const DataType & q_o() const
const DataType & q_5() const
const DataType & q_poseidon2_external() const
RefArray< const DataType, 1 > get_databus_selectors() const
DataType & kernel_calldata()
std::span< const DataType, NUM_PRECOMPUTED_ENTITIES > get_precomputed() const
DataType & q_poseidon2_external()
const DataType & databus_id() const
DataType & q_bilinear_batched_eq()
DataType & ecc_op_wire_1()
RefArray< const DataType, 7 > get_non_gate_selectors() const
DataType & kernel_calldata_indicator()
static const std::vector< std::string > & get_labels()
RefArray< const DataType, 4 > get_wires() const
const DataType & w_r_shift() const
DataType & lagrange_first()
const DataType & ecc_op_wire_2() const
const DataType & q_4() const
DataType & q_poseidon2_transition_entry()
RefArray< DataType, 1 > get_databus_inverses()
DataType & kernel_calldata_read_counts()
std::span< DataType, NUM_SHIFTED_ENTITIES > get_to_be_shifted()
const DataType & q_poseidon2_quad_internal_terminal() const
RefArray< const DataType, 9 > get_gate_selectors() const
std::span< DataType, NUM_UNSHIFTED_ENTITIES > get_unshifted()
RefArray< DataType, 4 > get_wires()
const DataType & q_c() const
const DataType & z_perm_shift() const
const DataType & w_o() const
DataType & q_poseidon2_external_initial()
const DataType & lagrange_first() const
const DataType & w_4() const
const DataType & id_2() const
const DataType & q_l() const
const DataType & q_poseidon2_quad_internal() const
DataType & q_poseidon2_quad_internal_terminal()
DataType & ecc_op_wire_2()
const DataType & sigma_2() const
RefArray< DataType, 2 > get_databus_entities()
const DataType & ecc_op_wire_3() const
RefArray< DataType, 4 > get_ecc_op_wires()
const DataType & ecc_op_wire_4() const
const DataType & w_l() const
RefArray< DataType, 1 > get_databus_selectors()
const DataType & kernel_calldata() const
RefArray< const DataType, 1 > get_databus_indicators() const
const DataType & q_r() const
const DataType & q_poseidon2_external_initial() const
std::span< DataType, NUM_PRECOMPUTED_ENTITIES > get_precomputed()
RefArray< DataType, 1 > get_databus_indicators()
const DataType & kernel_calldata_read_counts() const
DataType & kernel_calldata_inverses()
RefArray< DataType, 4 > get_ids()
DataType & ecc_op_wire_4()
const DataType & q_m() const
const DataType & w_4_shift() const
const DataType & operator[](EntityId id) const
const DataType & kernel_calldata_inverses() const
const DataType & sigma_4() const
auto get_selectors() const
std::array< DataType, NUM_ALL_ENTITIES > data
RefArray< const DataType, 2 > get_databus_entities() const
DataType & z_perm_shift()
const DataType & w_o_shift() const
RefArray< const DataType, 1 > get_databus_inverses() const
std::span< DataType, NUM_WITNESS_ENTITIES > get_witness()
DataType & q_poseidon2_quad_internal()
std::span< DataType, NUM_ALL_ENTITIES > get_all()
const DataType & ecc_op_wire_1() const
std::span< const DataType, NUM_SHIFTED_ENTITIES > get_to_be_shifted() const
RefArray< DataType, 7 > get_non_gate_selectors()
const DataType & id_1() const
std::span< const DataType, NUM_UNSHIFTED_ENTITIES > get_unshifted() const
std::span< DataType, NUM_SHIFTED_ENTITIES > get_shifted()
DataType & lagrange_last()
const DataType & id_4() const
const DataType & q_poseidon2_transition_entry() const
std::span< const DataType, NUM_ALL_ENTITIES > get_all() const
const DataType & lagrange_last() const
const DataType & z_perm() const
const DataType & sigma_1() const
DataType & ecc_op_wire_3()
const DataType & q_arith() const
RefArray< DataType, 4 > get_sigmas()
const DataType & w_r() const
RefArray< DataType, 1 > get_databus_selectors()
DataType & q_delta_range()
RefArray< DataType, 7 > get_non_gate_selectors()
const DataType & q_l() const
const DataType & q_poseidon2_quad_internal() const
RefArray< const DataType, 4 > get_ids() const
auto get_selectors() const
RefArray< DataType, 4 > get_ids()
const DataType & lagrange_first() const
bool operator==(const PrecomputedEntities &) const =default
const DataType & sigma_1() const
DataType & q_poseidon2_external()
const DataType & kernel_calldata_indicator() const
const DataType & q_4() const
RefArray< const DataType, 7 > get_non_gate_selectors() const
const DataType & q_o() const
RefArray< const DataType, 1 > get_databus_indicators() const
RefArray< const DataType, 4 > get_sigmas() const
std::span< DataType, NUM_PRECOMPUTED_ENTITIES > get_all()
DataType & lagrange_ecc_op()
const DataType & id_3() const
const DataType & q_5() const
const DataType & q_poseidon2_quad_internal_terminal() const
RefArray< DataType, 4 > get_sigmas()
const DataType & sigma_4() const
DataType & kernel_calldata_indicator()
DataType & lagrange_last()
const DataType & q_m() const
const DataType & sigma_2() const
const DataType & q_busread() const
const DataType & id_1() const
DataType & q_poseidon2_quad_internal_terminal()
const DataType & q_poseidon2_external() const
const DataType & q_arith() const
DataType & q_poseidon2_quad_internal()
const DataType & q_delta_range() const
const DataType & sigma_3() const
const DataType & q_poseidon2_external_initial() const
RefArray< DataType, 1 > get_databus_indicators()
const DataType & id_4() const
DataType & q_poseidon2_transition_entry()
const DataType & q_bilinear_batched_eq() const
const DataType & databus_id() const
DataType & q_poseidon2_external_initial()
DataType & lagrange_first()
const DataType & id_2() const
const DataType & q_c() const
std::span< const DataType, NUM_PRECOMPUTED_ENTITIES > get_all() const
DataType & q_bilinear_batched_eq()
static constexpr size_t size()
RefArray< const DataType, 9 > get_gate_selectors() const
const DataType & lagrange_last() const
RefArray< DataType, 9 > get_gate_selectors()
RefArray< const DataType, 1 > get_databus_selectors() const
const DataType & q_r() const
const DataType & lagrange_ecc_op() const
const DataType & q_poseidon2_transition_entry() const
static const std::vector< std::string > & get_labels()
std::array< DataType, NUM_PRECOMPUTED_ENTITIES > data
DataType & ecc_op_wire_1()
const DataType & w_r() const
DataType & kernel_calldata_read_counts()
const DataType & w_4() const
RefArray< const DataType, 4 > get_ecc_op_wires() const
std::span< DataType, NUM_WITNESS_ENTITIES > get_all()
RefArray< const DataType, 4 > get_wires() const
static const std::vector< std::string > & get_labels()
RefArray< DataType, 4 > get_wires()
static constexpr size_t size()
const DataType & w_o() const
std::span< const DataType, NUM_WITNESS_ENTITIES > get_all() const
const DataType & kernel_calldata_read_counts() const
const DataType & kernel_calldata_inverses() const
RefArray< const DataType, 5 > get_to_be_shifted() const
const DataType & ecc_op_wire_1() const
const DataType & z_perm() const
RefArray< DataType, 1 > get_databus_inverses()
RefArray< DataType, 5 > get_to_be_shifted()
const DataType & ecc_op_wire_4() const
const DataType & ecc_op_wire_2() const
DataType & kernel_calldata_inverses()
DataType & kernel_calldata()
DataType & ecc_op_wire_4()
RefArray< DataType, 4 > get_ecc_op_wires()
RefArray< DataType, 2 > get_databus_entities()
DataType & ecc_op_wire_2()
const DataType & w_l() const
RefArray< const DataType, 1 > get_databus_inverses() const
std::array< DataType, NUM_WITNESS_ENTITIES > data
RefArray< const DataType, 2 > get_databus_entities() const
bool operator==(const WitnessEntities &) const =default
const DataType & kernel_calldata() const
const DataType & ecc_op_wire_3() const
DataType & ecc_op_wire_3()
static constexpr bool HasNonNativeField
static constexpr size_t NUM_MASKING_ENTITIES
static constexpr size_t NUM_BUS_COLUMNS
static constexpr bool HasElliptic
static constexpr size_t NUM_COMMITTED_WITNESS_ENTITIES
static constexpr std::array< size_t, NUM_BUS_COLUMNS > BUILDER_BUS_INDICES
std::tuple< bb::ArithmeticRelation< FF >, bb::BilinearOrBatchedEqCheckRelation< FF >, bb::UltraPermutationRelation< FF >, bb::DeltaRangeConstraintRelation< FF >, bb::EccOpQueueRelation< FF >, bb::MegaEccOpBoundaryRelation< FF >, bb::SingleBusLookupRelation< FF, EntityId::kernel_calldata, EntityId::kernel_calldata_read_counts, EntityId::kernel_calldata_inverses, EntityId::kernel_calldata_indicator, EntityId::q_l >, bb::Poseidon2ExternalRelation< FF >, bb::Poseidon2InitialExternalRelation< FF >, bb::Poseidon2QuadInternalRelation< FF >, bb::Poseidon2QuadInternalTerminalRelation< FF >, bb::Poseidon2TransitionEntryRelation< FF > > Relations_
static constexpr bool HasDataBus
static constexpr bool HasLogDerivLookup
static constexpr size_t NUM_ALL_ENTITIES
static constexpr std::array< DuplicatePair, NUM_SHIFTED_ENTITIES > REPEATED_COMMITMENT_PAIRS
static constexpr size_t NUM_SHIFTED_ENTITIES
static constexpr RepeatedCommitmentsData REPEATED_COMMITMENTS
static constexpr bool HasEccOpQueue
static constexpr size_t NUM_WITNESS_ENTITIES
static auto get_block_non_gate_selectors(TraceBlock &block)
static auto get_gate_blocks(TraceBlocks const &blocks)
@ kernel_calldata_inverses
@ q_poseidon2_quad_internal_terminal
@ q_poseidon2_external_initial
@ kernel_calldata_indicator
@ q_poseidon2_transition_entry
@ q_poseidon2_quad_internal
@ kernel_calldata_read_counts
static constexpr bool HasMemory
static constexpr std::array< GateKind, 9 > GATE_KINDS
static constexpr size_t NUM_PRECOMPUTED_ENTITIES
static auto get_gate_blocks(TraceBlocks &blocks)
static constexpr size_t NUM_UNSHIFTED_ENTITIES
A template class for a reference array. Behaves as if std::array<T&, N> was possible.
A wrapper for Relations to expose methods used by the Sumcheck prover or verifier to add the contribu...
Entry point for Barretenberg command-line interface.
constexpr RepeatedCommitmentsData repeated_commitments_from_pairs(std::span< const DuplicatePair > pairs)
Collapse a span of (original, duplicate) pairs into a RepeatedCommitmentsData of up to two contiguous...
RefArray< T,(Ns+...)> constexpr concatenate(const RefArray< T, Ns > &... ref_arrays)
Concatenates multiple RefArray objects into a single RefArray.
@ Poseidon2QuadIntTerminal
@ Poseidon2TransitionEntry
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
One commitment shared by an unshifted polynomial and its shifted copy.