102 template <
typename FF>
113 EntityId::return_data,
114 EntityId::return_data_read_counts,
115 EntityId::return_data_inverses,
116 EntityId::return_data_indicator,
152 using BlockBase =
typename TraceBlocks::BlockBase;
170 template <
typename TraceBlocks>
static auto get_gate_blocks(TraceBlocks
const& blocks)
172 using BlockBase =
typename TraceBlocks::BlockBase;
212 block.q_m(), block.q_1(), block.q_2(), block.q_3(), block.q_4(), block.q_c(), block.q_5(),
220 std::array<DataType, NUM_ALL_ENTITIES>
data{};
229 DataType&
sigma_1() {
return data[
static_cast<size_t>(EntityId::sigma_1)]; }
230 const DataType&
sigma_1()
const {
return data[
static_cast<size_t>(EntityId::sigma_1)]; }
231 DataType&
sigma_2() {
return data[
static_cast<size_t>(EntityId::sigma_2)]; }
232 const DataType&
sigma_2()
const {
return data[
static_cast<size_t>(EntityId::sigma_2)]; }
233 DataType&
sigma_3() {
return data[
static_cast<size_t>(EntityId::sigma_3)]; }
234 const DataType&
sigma_3()
const {
return data[
static_cast<size_t>(EntityId::sigma_3)]; }
235 DataType&
sigma_4() {
return data[
static_cast<size_t>(EntityId::sigma_4)]; }
236 const DataType&
sigma_4()
const {
return data[
static_cast<size_t>(EntityId::sigma_4)]; }
237 DataType&
id_1() {
return data[
static_cast<size_t>(EntityId::id_1)]; }
238 const DataType&
id_1()
const {
return data[
static_cast<size_t>(EntityId::id_1)]; }
239 DataType&
id_2() {
return data[
static_cast<size_t>(EntityId::id_2)]; }
240 const DataType&
id_2()
const {
return data[
static_cast<size_t>(EntityId::id_2)]; }
241 DataType&
id_3() {
return data[
static_cast<size_t>(EntityId::id_3)]; }
242 const DataType&
id_3()
const {
return data[
static_cast<size_t>(EntityId::id_3)]; }
243 DataType&
id_4() {
return data[
static_cast<size_t>(EntityId::id_4)]; }
244 const DataType&
id_4()
const {
return data[
static_cast<size_t>(EntityId::id_4)]; }
246 const DataType&
lagrange_first()
const {
return data[
static_cast<size_t>(EntityId::lagrange_first)]; }
248 const DataType&
lagrange_last()
const {
return data[
static_cast<size_t>(EntityId::lagrange_last)]; }
249 DataType&
q_lookup() {
return data[
static_cast<size_t>(EntityId::q_lookup)]; }
250 const DataType&
q_lookup()
const {
return data[
static_cast<size_t>(EntityId::q_lookup)]; }
251 DataType&
table_1() {
return data[
static_cast<size_t>(EntityId::table_1)]; }
252 const DataType&
table_1()
const {
return data[
static_cast<size_t>(EntityId::table_1)]; }
253 DataType&
table_2() {
return data[
static_cast<size_t>(EntityId::table_2)]; }
254 const DataType&
table_2()
const {
return data[
static_cast<size_t>(EntityId::table_2)]; }
255 DataType&
table_3() {
return data[
static_cast<size_t>(EntityId::table_3)]; }
256 const DataType&
table_3()
const {
return data[
static_cast<size_t>(EntityId::table_3)]; }
257 DataType&
table_4() {
return data[
static_cast<size_t>(EntityId::table_4)]; }
258 const DataType&
table_4()
const {
return data[
static_cast<size_t>(EntityId::table_4)]; }
259 DataType&
q_m() {
return data[
static_cast<size_t>(EntityId::q_m)]; }
260 const DataType&
q_m()
const {
return data[
static_cast<size_t>(EntityId::q_m)]; }
261 DataType&
q_r() {
return data[
static_cast<size_t>(EntityId::q_r)]; }
262 const DataType&
q_r()
const {
return data[
static_cast<size_t>(EntityId::q_r)]; }
263 DataType&
q_o() {
return data[
static_cast<size_t>(EntityId::q_o)]; }
264 const DataType&
q_o()
const {
return data[
static_cast<size_t>(EntityId::q_o)]; }
265 DataType&
q_c() {
return data[
static_cast<size_t>(EntityId::q_c)]; }
266 const DataType&
q_c()
const {
return data[
static_cast<size_t>(EntityId::q_c)]; }
267 DataType&
q_l() {
return data[
static_cast<size_t>(EntityId::q_l)]; }
268 const DataType&
q_l()
const {
return data[
static_cast<size_t>(EntityId::q_l)]; }
269 DataType&
q_4() {
return data[
static_cast<size_t>(EntityId::q_4)]; }
270 const DataType&
q_4()
const {
return data[
static_cast<size_t>(EntityId::q_4)]; }
271 DataType&
q_arith() {
return data[
static_cast<size_t>(EntityId::q_arith)]; }
272 const DataType&
q_arith()
const {
return data[
static_cast<size_t>(EntityId::q_arith)]; }
276 return data[
static_cast<size_t>(EntityId::q_bilinear_batched_eq)];
279 const DataType&
q_delta_range()
const {
return data[
static_cast<size_t>(EntityId::q_delta_range)]; }
280 DataType&
q_elliptic() {
return data[
static_cast<size_t>(EntityId::q_elliptic)]; }
281 const DataType&
q_elliptic()
const {
return data[
static_cast<size_t>(EntityId::q_elliptic)]; }
282 DataType&
q_memory() {
return data[
static_cast<size_t>(EntityId::q_memory)]; }
283 const DataType&
q_memory()
const {
return data[
static_cast<size_t>(EntityId::q_memory)]; }
284 DataType&
q_nnf() {
return data[
static_cast<size_t>(EntityId::q_nnf)]; }
285 const DataType&
q_nnf()
const {
return data[
static_cast<size_t>(EntityId::q_nnf)]; }
288 DataType&
q_busread() {
return data[
static_cast<size_t>(EntityId::q_busread)]; }
289 const DataType&
q_busread()
const {
return data[
static_cast<size_t>(EntityId::q_busread)]; }
293 return data[
static_cast<size_t>(EntityId::return_data_indicator)];
295 DataType&
databus_id() {
return data[
static_cast<size_t>(EntityId::databus_id)]; }
296 const DataType&
databus_id()
const {
return data[
static_cast<size_t>(EntityId::databus_id)]; }
300 return data[
static_cast<size_t>(EntityId::q_poseidon2_external)];
304 return data[
static_cast<size_t>(EntityId::q_poseidon2_external_initial)];
308 return data[
static_cast<size_t>(EntityId::q_poseidon2_external_initial)];
313 return data[
static_cast<size_t>(EntityId::q_poseidon2_quad_internal)];
315 DataType&
q_5() {
return data[
static_cast<size_t>(EntityId::q_5)]; }
316 const DataType&
q_5()
const {
return data[
static_cast<size_t>(EntityId::q_5)]; }
319 return data[
static_cast<size_t>(EntityId::q_poseidon2_quad_internal_terminal)];
323 return data[
static_cast<size_t>(EntityId::q_poseidon2_quad_internal_terminal)];
327 return data[
static_cast<size_t>(EntityId::q_poseidon2_transition_entry)];
331 return data[
static_cast<size_t>(EntityId::q_poseidon2_transition_entry)];
333 DataType&
w_l() {
return data[
static_cast<size_t>(EntityId::w_l)]; }
334 const DataType&
w_l()
const {
return data[
static_cast<size_t>(EntityId::w_l)]; }
335 DataType&
w_r() {
return data[
static_cast<size_t>(EntityId::w_r)]; }
336 const DataType&
w_r()
const {
return data[
static_cast<size_t>(EntityId::w_r)]; }
337 DataType&
w_o() {
return data[
static_cast<size_t>(EntityId::w_o)]; }
338 const DataType&
w_o()
const {
return data[
static_cast<size_t>(EntityId::w_o)]; }
339 DataType&
w_4() {
return data[
static_cast<size_t>(EntityId::w_4)]; }
340 const DataType&
w_4()
const {
return data[
static_cast<size_t>(EntityId::w_4)]; }
341 DataType&
z_perm() {
return data[
static_cast<size_t>(EntityId::z_perm)]; }
342 const DataType&
z_perm()
const {
return data[
static_cast<size_t>(EntityId::z_perm)]; }
350 const DataType&
ecc_op_wire_1()
const {
return data[
static_cast<size_t>(EntityId::ecc_op_wire_1)]; }
352 const DataType&
ecc_op_wire_2()
const {
return data[
static_cast<size_t>(EntityId::ecc_op_wire_2)]; }
354 const DataType&
ecc_op_wire_3()
const {
return data[
static_cast<size_t>(EntityId::ecc_op_wire_3)]; }
356 const DataType&
ecc_op_wire_4()
const {
return data[
static_cast<size_t>(EntityId::ecc_op_wire_4)]; }
358 const DataType&
return_data()
const {
return data[
static_cast<size_t>(EntityId::return_data)]; }
362 return data[
static_cast<size_t>(EntityId::return_data_read_counts)];
367 return data[
static_cast<size_t>(EntityId::return_data_inverses)];
369 DataType&
w_l_shift() {
return data[
static_cast<size_t>(EntityId::w_l_shift)]; }
370 const DataType&
w_l_shift()
const {
return data[
static_cast<size_t>(EntityId::w_l_shift)]; }
371 DataType&
w_r_shift() {
return data[
static_cast<size_t>(EntityId::w_r_shift)]; }
372 const DataType&
w_r_shift()
const {
return data[
static_cast<size_t>(EntityId::w_r_shift)]; }
373 DataType&
w_o_shift() {
return data[
static_cast<size_t>(EntityId::w_o_shift)]; }
374 const DataType&
w_o_shift()
const {
return data[
static_cast<size_t>(EntityId::w_o_shift)]; }
375 DataType&
w_4_shift() {
return data[
static_cast<size_t>(EntityId::w_4_shift)]; }
376 const DataType&
w_4_shift()
const {
return data[
static_cast<size_t>(EntityId::w_4_shift)]; }
378 const DataType&
z_perm_shift()
const {
return data[
static_cast<size_t>(EntityId::z_perm_shift)]; }
433 return { (*this)[EntityId::sigma_1],
434 (*this)[EntityId::sigma_2],
435 (*this)[EntityId::sigma_3],
436 (*this)[EntityId::sigma_4] };
440 return { (*this)[EntityId::sigma_1],
441 (*this)[EntityId::sigma_2],
442 (*this)[EntityId::sigma_3],
443 (*this)[EntityId::sigma_4] };
448 (*this)[EntityId::id_1], (*this)[EntityId::id_2], (*this)[EntityId::id_3], (*this)[EntityId::id_4]
454 (*this)[EntityId::id_1], (*this)[EntityId::id_2], (*this)[EntityId::id_3], (*this)[EntityId::id_4]
459 return { (*this)[EntityId::q_lookup],
460 (*this)[EntityId::q_arith],
461 (*this)[EntityId::q_bilinear_batched_eq],
462 (*this)[EntityId::q_delta_range],
463 (*this)[EntityId::q_elliptic],
464 (*this)[EntityId::q_memory],
465 (*this)[EntityId::q_nnf],
466 (*this)[EntityId::q_busread],
467 (*this)[EntityId::q_poseidon2_external],
468 (*this)[EntityId::q_poseidon2_external_initial],
469 (*this)[EntityId::q_poseidon2_quad_internal],
470 (*this)[EntityId::q_poseidon2_quad_internal_terminal],
471 (*this)[EntityId::q_poseidon2_transition_entry] };
475 return { (*this)[EntityId::q_lookup],
476 (*this)[EntityId::q_arith],
477 (*this)[EntityId::q_bilinear_batched_eq],
478 (*this)[EntityId::q_delta_range],
479 (*this)[EntityId::q_elliptic],
480 (*this)[EntityId::q_memory],
481 (*this)[EntityId::q_nnf],
482 (*this)[EntityId::q_busread],
483 (*this)[EntityId::q_poseidon2_external],
484 (*this)[EntityId::q_poseidon2_external_initial],
485 (*this)[EntityId::q_poseidon2_quad_internal],
486 (*this)[EntityId::q_poseidon2_quad_internal_terminal],
487 (*this)[EntityId::q_poseidon2_transition_entry] };
491 return { (*this)[EntityId::table_1],
492 (*this)[EntityId::table_2],
493 (*this)[EntityId::table_3],
494 (*this)[EntityId::table_4] };
498 return { (*this)[EntityId::table_1],
499 (*this)[EntityId::table_2],
500 (*this)[EntityId::table_3],
501 (*this)[EntityId::table_4] };
505 return { (*this)[EntityId::w_l], (*this)[EntityId::w_r], (*this)[EntityId::w_o], (*this)[EntityId::w_4] };
509 return { (*this)[EntityId::w_l], (*this)[EntityId::w_r], (*this)[EntityId::w_o], (*this)[EntityId::w_4] };
513 return { (*this)[EntityId::q_m], (*this)[EntityId::q_l], (*this)[EntityId::q_r], (*this)[EntityId::q_o],
514 (*this)[EntityId::q_4], (*this)[EntityId::q_c], (*this)[EntityId::q_5] };
518 return { (*this)[EntityId::q_m], (*this)[EntityId::q_l], (*this)[EntityId::q_r], (*this)[EntityId::q_o],
519 (*this)[EntityId::q_4], (*this)[EntityId::q_c], (*this)[EntityId::q_5] };
523 return { (*this)[EntityId::ecc_op_wire_1],
524 (*this)[EntityId::ecc_op_wire_2],
525 (*this)[EntityId::ecc_op_wire_3],
526 (*this)[EntityId::ecc_op_wire_4] };
530 return { (*this)[EntityId::ecc_op_wire_1],
531 (*this)[EntityId::ecc_op_wire_2],
532 (*this)[EntityId::ecc_op_wire_3],
533 (*this)[EntityId::ecc_op_wire_4] };
537 return { (*this)[EntityId::return_data], (*this)[EntityId::return_data_read_counts] };
541 return { (*this)[EntityId::return_data], (*this)[EntityId::return_data_read_counts] };
548 return { (*this)[EntityId::return_data_indicator] };
560 static const std::vector<std::string> labels = {
583 "Q_BILINEAR_BATCHED_EQ",
590 "RETURN_DATA_INDICATOR",
592 "Q_POSEIDON2_EXTERNAL",
593 "Q_POSEIDON2_EXTERNAL_INITIAL",
594 "Q_POSEIDON2_QUAD_INTERNAL",
596 "Q_POSEIDON2_QUAD_INTERNAL_TERMINAL",
597 "Q_POSEIDON2_TRANSITION_ENTRY",
604 "LOOKUP_READ_COUNTS",
611 "RETURN_DATA_READ_COUNTS",
612 "RETURN_DATA_INVERSES",
627 std::array<DataType, NUM_PRECOMPUTED_ENTITIES>
data{};
768 return { this->
q_m(), this->
q_l(), this->
q_r(), this->
q_o(), this->
q_4(), this->
q_c(), this->
q_5() };
772 return { this->
q_m(), this->
q_l(), this->
q_r(), this->
q_o(), this->
q_4(), this->
q_c(), this->
q_5() };
785 static const std::vector<std::string> labels = {
808 "Q_BILINEAR_BATCHED_EQ",
815 "RETURN_DATA_INDICATOR",
817 "Q_POSEIDON2_EXTERNAL",
818 "Q_POSEIDON2_EXTERNAL_INITIAL",
819 "Q_POSEIDON2_QUAD_INTERNAL",
821 "Q_POSEIDON2_QUAD_INTERNAL_TERMINAL",
822 "Q_POSEIDON2_TRANSITION_ENTRY",
832 std::array<DataType, NUM_WITNESS_ENTITIES>
data{};
906 static const std::vector<std::string> labels = {
913 "LOOKUP_READ_COUNTS",
920 "RETURN_DATA_READ_COUNTS",
921 "RETURN_DATA_INVERSES",
bb::field< bb::Bn254FrParams > FF
const DataType & q_delta_range() const
RefArray< const DataType, 4 > get_tables() const
const DataType & sigma_2() const
std::span< DataType, NUM_WITNESS_ENTITIES > get_witness()
std::array< DataType, NUM_ALL_ENTITIES > data
const DataType & id_1() const
RefArray< DataType, 4 > get_wires()
auto get_selectors() const
std::span< DataType, NUM_PRECOMPUTED_ENTITIES > get_precomputed()
DataType & lookup_read_tags()
DataType & lookup_inverses()
const DataType & table_3() const
static const std::vector< std::string > & get_labels()
std::span< const DataType, NUM_PRECOMPUTED_ENTITIES > get_precomputed() const
RefArray< DataType, 1 > get_databus_indicators()
std::span< DataType, NUM_SHIFTED_ENTITIES > get_to_be_shifted()
const DataType & q_elliptic() const
DataType & lagrange_last()
const DataType & table_4() const
const DataType & w_r() const
std::span< const DataType, NUM_UNSHIFTED_ENTITIES > get_unshifted() const
RefArray< DataType, 7 > get_non_gate_selectors()
RefArray< const DataType, 13 > get_gate_selectors() const
const DataType & q_5() const
const DataType & w_o_shift() const
const DataType & q_memory() const
RefArray< const DataType, 7 > get_non_gate_selectors() const
RefArray< DataType, 1 > get_databus_inverses()
RefArray< const DataType, 4 > get_sigmas() const
const DataType & q_c() const
std::span< const DataType, NUM_SHIFTED_ENTITIES > get_shifted() const
DataType & return_data_read_counts()
RefArray< DataType, 1 > get_databus_selectors()
const DataType & q_poseidon2_external() const
std::span< DataType, NUM_UNSHIFTED_ENTITIES > get_unshifted()
const DataType & q_lookup() const
const DataType & q_o() const
RefArray< DataType, 4 > get_tables()
DataType & q_poseidon2_external()
const DataType & ecc_op_wire_4() const
const DataType & q_poseidon2_quad_internal() const
const DataType & ecc_op_wire_3() const
const DataType & lookup_inverses() const
DataType & lookup_read_counts()
DataType & operator[](EntityId id)
const DataType & q_r() const
RefArray< DataType, 2 > get_databus_entities()
RefArray< DataType, 4 > get_sigmas()
const DataType & lookup_read_counts() const
DataType & q_poseidon2_external_initial()
DataType & q_poseidon2_quad_internal_terminal()
const DataType & q_poseidon2_transition_entry() const
DataType & return_data_indicator()
const DataType & lagrange_last() const
const DataType & sigma_3() const
const DataType & w_4_shift() const
const DataType & return_data_read_counts() const
DataType & q_poseidon2_transition_entry()
DataType & q_delta_range()
const DataType & id_3() const
const DataType & return_data() const
const DataType & lagrange_first() const
const DataType & sigma_1() const
const DataType & lagrange_ecc_op() const
std::span< const DataType, NUM_SHIFTED_ENTITIES > get_to_be_shifted() const
RefArray< const DataType, 4 > get_wires() const
DataType & ecc_op_wire_1()
const DataType & table_1() const
const DataType & q_busread() const
DataType & q_poseidon2_quad_internal()
const DataType & q_bilinear_batched_eq() const
const DataType & sigma_4() const
DataType & ecc_op_wire_3()
const DataType & q_poseidon2_quad_internal_terminal() const
RefArray< const DataType, 1 > get_databus_selectors() const
const DataType & w_r_shift() const
const DataType & w_o() const
RefArray< DataType, 13 > get_gate_selectors()
RefArray< DataType, 4 > get_ecc_op_wires()
const DataType & z_perm_shift() const
const DataType & id_4() const
const DataType & return_data_indicator() const
const DataType & q_m() const
RefArray< DataType, 4 > get_ids()
const DataType & z_perm() const
DataType & lagrange_ecc_op()
const DataType & q_poseidon2_external_initial() const
const DataType & w_l_shift() const
RefArray< const DataType, 1 > get_databus_inverses() const
const DataType & ecc_op_wire_1() const
const DataType & q_arith() const
RefArray< const DataType, 1 > get_databus_indicators() const
const DataType & operator[](EntityId id) const
std::span< DataType, NUM_ALL_ENTITIES > get_all()
const DataType & ecc_op_wire_2() const
DataType & return_data_inverses()
RefArray< const DataType, 4 > get_ecc_op_wires() const
DataType & z_perm_shift()
const DataType & q_nnf() const
std::span< DataType, NUM_SHIFTED_ENTITIES > get_shifted()
const DataType & table_2() const
const DataType & return_data_inverses() const
DataType & q_bilinear_batched_eq()
DataType & lagrange_first()
RefArray< const DataType, 2 > get_databus_entities() const
const DataType & lookup_read_tags() const
const DataType & q_l() const
DataType & ecc_op_wire_4()
const DataType & id_2() const
RefArray< const DataType, 4 > get_ids() const
const DataType & w_l() const
std::span< const DataType, NUM_ALL_ENTITIES > get_all() const
const DataType & q_4() const
const DataType & w_4() const
const DataType & databus_id() const
std::span< const DataType, NUM_WITNESS_ENTITIES > get_witness() const
DataType & ecc_op_wire_2()
const DataType & q_5() const
RefArray< const DataType, 4 > get_ids() const
const DataType & q_o() const
DataType & q_poseidon2_transition_entry()
const DataType & table_3() const
static const std::vector< std::string > & get_labels()
const DataType & q_nnf() const
auto get_selectors() const
const DataType & q_m() const
const DataType & q_poseidon2_external_initial() const
const DataType & q_arith() const
const DataType & q_l() const
RefArray< const DataType, 4 > get_sigmas() const
RefArray< DataType, 13 > get_gate_selectors()
std::span< const DataType, NUM_PRECOMPUTED_ENTITIES > get_all() const
const DataType & return_data_indicator() const
const DataType & q_delta_range() const
DataType & q_poseidon2_quad_internal()
const DataType & q_poseidon2_external() const
DataType & q_poseidon2_external_initial()
RefArray< DataType, 4 > get_sigmas()
const DataType & id_3() const
DataType & q_poseidon2_quad_internal_terminal()
const DataType & table_4() const
DataType & lagrange_last()
const DataType & databus_id() const
const DataType & q_elliptic() const
const DataType & id_1() const
const DataType & q_memory() const
DataType & return_data_indicator()
const DataType & table_1() const
const DataType & q_4() const
DataType & lagrange_ecc_op()
const DataType & q_lookup() const
RefArray< DataType, 1 > get_databus_indicators()
std::array< DataType, NUM_PRECOMPUTED_ENTITIES > data
static constexpr size_t size()
const DataType & lagrange_last() const
RefArray< DataType, 7 > get_non_gate_selectors()
RefArray< DataType, 4 > get_tables()
const DataType & table_2() const
DataType & q_poseidon2_external()
DataType & q_delta_range()
const DataType & sigma_2() const
const DataType & q_r() const
const DataType & sigma_3() const
const DataType & q_poseidon2_quad_internal_terminal() const
RefArray< const DataType, 1 > get_databus_selectors() const
const DataType & q_poseidon2_quad_internal() const
const DataType & lagrange_first() const
const DataType & id_4() const
const DataType & lagrange_ecc_op() const
const DataType & id_2() const
RefArray< DataType, 4 > get_ids()
DataType & lagrange_first()
const DataType & q_c() const
RefArray< const DataType, 1 > get_databus_indicators() const
RefArray< const DataType, 4 > get_tables() const
RefArray< DataType, 1 > get_databus_selectors()
RefArray< const DataType, 13 > get_gate_selectors() const
const DataType & q_bilinear_batched_eq() const
DataType & q_bilinear_batched_eq()
const DataType & sigma_4() const
const DataType & q_poseidon2_transition_entry() const
RefArray< const DataType, 7 > get_non_gate_selectors() const
bool operator==(const PrecomputedEntities &) const =default
const DataType & q_busread() const
std::span< DataType, NUM_PRECOMPUTED_ENTITIES > get_all()
const DataType & sigma_1() const
RefArray< DataType, 4 > get_ecc_op_wires()
RefArray< const DataType, 1 > get_databus_inverses() const
RefArray< DataType, 1 > get_databus_inverses()
const DataType & ecc_op_wire_1() const
const DataType & w_r() const
const DataType & w_o() const
RefArray< DataType, 5 > get_to_be_shifted()
DataType & ecc_op_wire_2()
RefArray< const DataType, 4 > get_wires() const
std::span< const DataType, NUM_WITNESS_ENTITIES > get_all() const
DataType & lookup_read_tags()
const DataType & ecc_op_wire_2() const
RefArray< const DataType, 5 > get_to_be_shifted() const
const DataType & return_data() const
DataType & return_data_inverses()
static constexpr size_t size()
bool operator==(const WitnessEntities &) const =default
static const std::vector< std::string > & get_labels()
const DataType & return_data_read_counts() const
RefArray< const DataType, 4 > get_ecc_op_wires() const
DataType & lookup_read_counts()
std::array< DataType, NUM_WITNESS_ENTITIES > data
const DataType & w_l() const
DataType & lookup_inverses()
RefArray< const DataType, 2 > get_databus_entities() const
DataType & return_data_read_counts()
DataType & ecc_op_wire_4()
const DataType & lookup_inverses() const
RefArray< DataType, 2 > get_databus_entities()
const DataType & ecc_op_wire_3() const
const DataType & lookup_read_counts() const
RefArray< DataType, 4 > get_wires()
DataType & ecc_op_wire_3()
const DataType & z_perm() const
std::span< DataType, NUM_WITNESS_ENTITIES > get_all()
const DataType & lookup_read_tags() const
const DataType & w_4() const
DataType & ecc_op_wire_1()
const DataType & ecc_op_wire_4() const
const DataType & return_data_inverses() const
static constexpr bool HasMemory
static constexpr size_t NUM_BUS_COLUMNS
static constexpr size_t NUM_MASKING_ENTITIES
static constexpr bool HasLogDerivLookup
static constexpr size_t NUM_ALL_ENTITIES
@ q_poseidon2_quad_internal_terminal
@ q_poseidon2_external_initial
@ q_poseidon2_transition_entry
@ q_poseidon2_quad_internal
@ return_data_read_counts
static constexpr bool HasNonNativeField
std::tuple< bb::UltraPermutationRelation< FF >, bb::LogDerivLookupRelation< FF >, bb::ArithmeticRelation< FF >, bb::BilinearOrBatchedEqCheckRelation< FF >, bb::DeltaRangeConstraintRelation< FF >, bb::EllipticRelation< FF >, bb::MemoryRelation< FF >, bb::NonNativeFieldRelation< FF >, bb::EccOpQueueRelation< FF >, bb::SingleBusLookupRelation< FF, EntityId::return_data, EntityId::return_data_read_counts, EntityId::return_data_inverses, EntityId::return_data_indicator, EntityId::q_m >, bb::Poseidon2ExternalRelation< FF >, bb::Poseidon2InitialExternalRelation< FF >, bb::Poseidon2QuadInternalRelation< FF >, bb::Poseidon2QuadInternalTerminalRelation< FF >, bb::Poseidon2TransitionEntryRelation< FF > > Relations_
static auto get_block_non_gate_selectors(TraceBlock &block)
static constexpr std::array< GateKind, 13 > GATE_KINDS
static constexpr size_t NUM_WITNESS_ENTITIES
static auto get_gate_blocks(TraceBlocks &blocks)
static constexpr RepeatedCommitmentsData REPEATED_COMMITMENTS
static constexpr bool HasElliptic
static constexpr size_t NUM_COMMITTED_WITNESS_ENTITIES
static constexpr size_t NUM_PRECOMPUTED_ENTITIES
static constexpr bool HasDataBus
static constexpr size_t NUM_SHIFTED_ENTITIES
static constexpr std::array< DuplicatePair, NUM_SHIFTED_ENTITIES > REPEATED_COMMITMENT_PAIRS
static constexpr std::array< size_t, NUM_BUS_COLUMNS > BUILDER_BUS_INDICES
static constexpr size_t NUM_UNSHIFTED_ENTITIES
static auto get_gate_blocks(TraceBlocks const &blocks)
static constexpr bool HasEccOpQueue
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.