126 template <
typename FF>
137 EntityId::kernel_calldata,
138 EntityId::kernel_calldata_read_counts,
139 EntityId::kernel_calldata_inverses,
140 EntityId::kernel_calldata_indicator,
143 EntityId::first_app_calldata,
144 EntityId::first_app_calldata_read_counts,
145 EntityId::first_app_calldata_inverses,
146 EntityId::first_app_calldata_indicator,
149 EntityId::second_app_calldata,
150 EntityId::second_app_calldata_read_counts,
151 EntityId::second_app_calldata_inverses,
152 EntityId::second_app_calldata_indicator,
155 EntityId::third_app_calldata,
156 EntityId::third_app_calldata_read_counts,
157 EntityId::third_app_calldata_inverses,
158 EntityId::third_app_calldata_indicator,
161 EntityId::fourth_app_calldata,
162 EntityId::fourth_app_calldata_read_counts,
163 EntityId::fourth_app_calldata_inverses,
164 EntityId::fourth_app_calldata_indicator,
167 EntityId::fifth_app_calldata,
168 EntityId::fifth_app_calldata_read_counts,
169 EntityId::fifth_app_calldata_inverses,
170 EntityId::fifth_app_calldata_indicator,
173 EntityId::return_data,
174 EntityId::return_data_read_counts,
175 EntityId::return_data_inverses,
176 EntityId::return_data_indicator,
212 using BlockBase =
typename TraceBlocks::BlockBase;
230 template <
typename TraceBlocks>
static auto get_gate_blocks(TraceBlocks
const& blocks)
232 using BlockBase =
typename TraceBlocks::BlockBase;
272 block.q_m(), block.q_1(), block.q_2(), block.q_3(), block.q_4(), block.q_c(), block.q_5(),
280 std::array<DataType, NUM_ALL_ENTITIES>
data{};
289 DataType&
sigma_1() {
return data[
static_cast<size_t>(EntityId::sigma_1)]; }
290 const DataType&
sigma_1()
const {
return data[
static_cast<size_t>(EntityId::sigma_1)]; }
291 DataType&
sigma_2() {
return data[
static_cast<size_t>(EntityId::sigma_2)]; }
292 const DataType&
sigma_2()
const {
return data[
static_cast<size_t>(EntityId::sigma_2)]; }
293 DataType&
sigma_3() {
return data[
static_cast<size_t>(EntityId::sigma_3)]; }
294 const DataType&
sigma_3()
const {
return data[
static_cast<size_t>(EntityId::sigma_3)]; }
295 DataType&
sigma_4() {
return data[
static_cast<size_t>(EntityId::sigma_4)]; }
296 const DataType&
sigma_4()
const {
return data[
static_cast<size_t>(EntityId::sigma_4)]; }
297 DataType&
id_1() {
return data[
static_cast<size_t>(EntityId::id_1)]; }
298 const DataType&
id_1()
const {
return data[
static_cast<size_t>(EntityId::id_1)]; }
299 DataType&
id_2() {
return data[
static_cast<size_t>(EntityId::id_2)]; }
300 const DataType&
id_2()
const {
return data[
static_cast<size_t>(EntityId::id_2)]; }
301 DataType&
id_3() {
return data[
static_cast<size_t>(EntityId::id_3)]; }
302 const DataType&
id_3()
const {
return data[
static_cast<size_t>(EntityId::id_3)]; }
303 DataType&
id_4() {
return data[
static_cast<size_t>(EntityId::id_4)]; }
304 const DataType&
id_4()
const {
return data[
static_cast<size_t>(EntityId::id_4)]; }
306 const DataType&
lagrange_first()
const {
return data[
static_cast<size_t>(EntityId::lagrange_first)]; }
308 const DataType&
lagrange_last()
const {
return data[
static_cast<size_t>(EntityId::lagrange_last)]; }
309 DataType&
q_lookup() {
return data[
static_cast<size_t>(EntityId::q_lookup)]; }
310 const DataType&
q_lookup()
const {
return data[
static_cast<size_t>(EntityId::q_lookup)]; }
311 DataType&
table_1() {
return data[
static_cast<size_t>(EntityId::table_1)]; }
312 const DataType&
table_1()
const {
return data[
static_cast<size_t>(EntityId::table_1)]; }
313 DataType&
table_2() {
return data[
static_cast<size_t>(EntityId::table_2)]; }
314 const DataType&
table_2()
const {
return data[
static_cast<size_t>(EntityId::table_2)]; }
315 DataType&
table_3() {
return data[
static_cast<size_t>(EntityId::table_3)]; }
316 const DataType&
table_3()
const {
return data[
static_cast<size_t>(EntityId::table_3)]; }
317 DataType&
table_4() {
return data[
static_cast<size_t>(EntityId::table_4)]; }
318 const DataType&
table_4()
const {
return data[
static_cast<size_t>(EntityId::table_4)]; }
319 DataType&
q_m() {
return data[
static_cast<size_t>(EntityId::q_m)]; }
320 const DataType&
q_m()
const {
return data[
static_cast<size_t>(EntityId::q_m)]; }
321 DataType&
q_r() {
return data[
static_cast<size_t>(EntityId::q_r)]; }
322 const DataType&
q_r()
const {
return data[
static_cast<size_t>(EntityId::q_r)]; }
323 DataType&
q_o() {
return data[
static_cast<size_t>(EntityId::q_o)]; }
324 const DataType&
q_o()
const {
return data[
static_cast<size_t>(EntityId::q_o)]; }
325 DataType&
q_c() {
return data[
static_cast<size_t>(EntityId::q_c)]; }
326 const DataType&
q_c()
const {
return data[
static_cast<size_t>(EntityId::q_c)]; }
327 DataType&
q_l() {
return data[
static_cast<size_t>(EntityId::q_l)]; }
328 const DataType&
q_l()
const {
return data[
static_cast<size_t>(EntityId::q_l)]; }
329 DataType&
q_4() {
return data[
static_cast<size_t>(EntityId::q_4)]; }
330 const DataType&
q_4()
const {
return data[
static_cast<size_t>(EntityId::q_4)]; }
331 DataType&
q_arith() {
return data[
static_cast<size_t>(EntityId::q_arith)]; }
332 const DataType&
q_arith()
const {
return data[
static_cast<size_t>(EntityId::q_arith)]; }
336 return data[
static_cast<size_t>(EntityId::q_bilinear_batched_eq)];
339 const DataType&
q_delta_range()
const {
return data[
static_cast<size_t>(EntityId::q_delta_range)]; }
340 DataType&
q_elliptic() {
return data[
static_cast<size_t>(EntityId::q_elliptic)]; }
341 const DataType&
q_elliptic()
const {
return data[
static_cast<size_t>(EntityId::q_elliptic)]; }
342 DataType&
q_memory() {
return data[
static_cast<size_t>(EntityId::q_memory)]; }
343 const DataType&
q_memory()
const {
return data[
static_cast<size_t>(EntityId::q_memory)]; }
344 DataType&
q_nnf() {
return data[
static_cast<size_t>(EntityId::q_nnf)]; }
345 const DataType&
q_nnf()
const {
return data[
static_cast<size_t>(EntityId::q_nnf)]; }
348 DataType&
q_busread() {
return data[
static_cast<size_t>(EntityId::q_busread)]; }
349 const DataType&
q_busread()
const {
return data[
static_cast<size_t>(EntityId::q_busread)]; }
353 return data[
static_cast<size_t>(EntityId::kernel_calldata_indicator)];
355 DataType&
databus_id() {
return data[
static_cast<size_t>(EntityId::databus_id)]; }
356 const DataType&
databus_id()
const {
return data[
static_cast<size_t>(EntityId::databus_id)]; }
359 return data[
static_cast<size_t>(EntityId::first_app_calldata_indicator)];
363 return data[
static_cast<size_t>(EntityId::first_app_calldata_indicator)];
367 return data[
static_cast<size_t>(EntityId::second_app_calldata_indicator)];
371 return data[
static_cast<size_t>(EntityId::second_app_calldata_indicator)];
375 return data[
static_cast<size_t>(EntityId::third_app_calldata_indicator)];
379 return data[
static_cast<size_t>(EntityId::third_app_calldata_indicator)];
383 return data[
static_cast<size_t>(EntityId::fourth_app_calldata_indicator)];
387 return data[
static_cast<size_t>(EntityId::fourth_app_calldata_indicator)];
389 DataType&
q_5() {
return data[
static_cast<size_t>(EntityId::q_5)]; }
390 const DataType&
q_5()
const {
return data[
static_cast<size_t>(EntityId::q_5)]; }
393 return data[
static_cast<size_t>(EntityId::fifth_app_calldata_indicator)];
397 return data[
static_cast<size_t>(EntityId::fifth_app_calldata_indicator)];
402 return data[
static_cast<size_t>(EntityId::return_data_indicator)];
407 return data[
static_cast<size_t>(EntityId::q_poseidon2_external)];
411 return data[
static_cast<size_t>(EntityId::q_poseidon2_external_initial)];
415 return data[
static_cast<size_t>(EntityId::q_poseidon2_external_initial)];
420 return data[
static_cast<size_t>(EntityId::q_poseidon2_quad_internal)];
424 return data[
static_cast<size_t>(EntityId::q_poseidon2_quad_internal_terminal)];
428 return data[
static_cast<size_t>(EntityId::q_poseidon2_quad_internal_terminal)];
432 return data[
static_cast<size_t>(EntityId::q_poseidon2_transition_entry)];
436 return data[
static_cast<size_t>(EntityId::q_poseidon2_transition_entry)];
438 DataType&
w_l() {
return data[
static_cast<size_t>(EntityId::w_l)]; }
439 const DataType&
w_l()
const {
return data[
static_cast<size_t>(EntityId::w_l)]; }
440 DataType&
w_r() {
return data[
static_cast<size_t>(EntityId::w_r)]; }
441 const DataType&
w_r()
const {
return data[
static_cast<size_t>(EntityId::w_r)]; }
442 DataType&
w_o() {
return data[
static_cast<size_t>(EntityId::w_o)]; }
443 const DataType&
w_o()
const {
return data[
static_cast<size_t>(EntityId::w_o)]; }
444 DataType&
w_4() {
return data[
static_cast<size_t>(EntityId::w_4)]; }
445 const DataType&
w_4()
const {
return data[
static_cast<size_t>(EntityId::w_4)]; }
446 DataType&
z_perm() {
return data[
static_cast<size_t>(EntityId::z_perm)]; }
447 const DataType&
z_perm()
const {
return data[
static_cast<size_t>(EntityId::z_perm)]; }
455 const DataType&
ecc_op_wire_1()
const {
return data[
static_cast<size_t>(EntityId::ecc_op_wire_1)]; }
457 const DataType&
ecc_op_wire_2()
const {
return data[
static_cast<size_t>(EntityId::ecc_op_wire_2)]; }
459 const DataType&
ecc_op_wire_3()
const {
return data[
static_cast<size_t>(EntityId::ecc_op_wire_3)]; }
461 const DataType&
ecc_op_wire_4()
const {
return data[
static_cast<size_t>(EntityId::ecc_op_wire_4)]; }
466 return data[
static_cast<size_t>(EntityId::kernel_calldata_read_counts)];
470 return data[
static_cast<size_t>(EntityId::kernel_calldata_read_counts)];
475 return data[
static_cast<size_t>(EntityId::kernel_calldata_inverses)];
481 return data[
static_cast<size_t>(EntityId::first_app_calldata_read_counts)];
485 return data[
static_cast<size_t>(EntityId::first_app_calldata_read_counts)];
489 return data[
static_cast<size_t>(EntityId::first_app_calldata_inverses)];
493 return data[
static_cast<size_t>(EntityId::first_app_calldata_inverses)];
499 return data[
static_cast<size_t>(EntityId::second_app_calldata_read_counts)];
503 return data[
static_cast<size_t>(EntityId::second_app_calldata_read_counts)];
507 return data[
static_cast<size_t>(EntityId::second_app_calldata_inverses)];
511 return data[
static_cast<size_t>(EntityId::second_app_calldata_inverses)];
517 return data[
static_cast<size_t>(EntityId::third_app_calldata_read_counts)];
521 return data[
static_cast<size_t>(EntityId::third_app_calldata_read_counts)];
525 return data[
static_cast<size_t>(EntityId::third_app_calldata_inverses)];
529 return data[
static_cast<size_t>(EntityId::third_app_calldata_inverses)];
535 return data[
static_cast<size_t>(EntityId::fourth_app_calldata_read_counts)];
539 return data[
static_cast<size_t>(EntityId::fourth_app_calldata_read_counts)];
543 return data[
static_cast<size_t>(EntityId::fourth_app_calldata_inverses)];
547 return data[
static_cast<size_t>(EntityId::fourth_app_calldata_inverses)];
553 return data[
static_cast<size_t>(EntityId::fifth_app_calldata_read_counts)];
557 return data[
static_cast<size_t>(EntityId::fifth_app_calldata_read_counts)];
561 return data[
static_cast<size_t>(EntityId::fifth_app_calldata_inverses)];
565 return data[
static_cast<size_t>(EntityId::fifth_app_calldata_inverses)];
568 const DataType&
return_data()
const {
return data[
static_cast<size_t>(EntityId::return_data)]; }
572 return data[
static_cast<size_t>(EntityId::return_data_read_counts)];
577 return data[
static_cast<size_t>(EntityId::return_data_inverses)];
579 DataType&
w_l_shift() {
return data[
static_cast<size_t>(EntityId::w_l_shift)]; }
580 const DataType&
w_l_shift()
const {
return data[
static_cast<size_t>(EntityId::w_l_shift)]; }
581 DataType&
w_r_shift() {
return data[
static_cast<size_t>(EntityId::w_r_shift)]; }
582 const DataType&
w_r_shift()
const {
return data[
static_cast<size_t>(EntityId::w_r_shift)]; }
583 DataType&
w_o_shift() {
return data[
static_cast<size_t>(EntityId::w_o_shift)]; }
584 const DataType&
w_o_shift()
const {
return data[
static_cast<size_t>(EntityId::w_o_shift)]; }
585 DataType&
w_4_shift() {
return data[
static_cast<size_t>(EntityId::w_4_shift)]; }
586 const DataType&
w_4_shift()
const {
return data[
static_cast<size_t>(EntityId::w_4_shift)]; }
588 const DataType&
z_perm_shift()
const {
return data[
static_cast<size_t>(EntityId::z_perm_shift)]; }
643 return { (*this)[EntityId::sigma_1],
644 (*this)[EntityId::sigma_2],
645 (*this)[EntityId::sigma_3],
646 (*this)[EntityId::sigma_4] };
650 return { (*this)[EntityId::sigma_1],
651 (*this)[EntityId::sigma_2],
652 (*this)[EntityId::sigma_3],
653 (*this)[EntityId::sigma_4] };
658 (*this)[EntityId::id_1], (*this)[EntityId::id_2], (*this)[EntityId::id_3], (*this)[EntityId::id_4]
664 (*this)[EntityId::id_1], (*this)[EntityId::id_2], (*this)[EntityId::id_3], (*this)[EntityId::id_4]
669 return { (*this)[EntityId::q_lookup],
670 (*this)[EntityId::q_arith],
671 (*this)[EntityId::q_bilinear_batched_eq],
672 (*this)[EntityId::q_delta_range],
673 (*this)[EntityId::q_elliptic],
674 (*this)[EntityId::q_memory],
675 (*this)[EntityId::q_nnf],
676 (*this)[EntityId::q_busread],
677 (*this)[EntityId::q_poseidon2_external],
678 (*this)[EntityId::q_poseidon2_external_initial],
679 (*this)[EntityId::q_poseidon2_quad_internal],
680 (*this)[EntityId::q_poseidon2_quad_internal_terminal],
681 (*this)[EntityId::q_poseidon2_transition_entry] };
685 return { (*this)[EntityId::q_lookup],
686 (*this)[EntityId::q_arith],
687 (*this)[EntityId::q_bilinear_batched_eq],
688 (*this)[EntityId::q_delta_range],
689 (*this)[EntityId::q_elliptic],
690 (*this)[EntityId::q_memory],
691 (*this)[EntityId::q_nnf],
692 (*this)[EntityId::q_busread],
693 (*this)[EntityId::q_poseidon2_external],
694 (*this)[EntityId::q_poseidon2_external_initial],
695 (*this)[EntityId::q_poseidon2_quad_internal],
696 (*this)[EntityId::q_poseidon2_quad_internal_terminal],
697 (*this)[EntityId::q_poseidon2_transition_entry] };
701 return { (*this)[EntityId::table_1],
702 (*this)[EntityId::table_2],
703 (*this)[EntityId::table_3],
704 (*this)[EntityId::table_4] };
708 return { (*this)[EntityId::table_1],
709 (*this)[EntityId::table_2],
710 (*this)[EntityId::table_3],
711 (*this)[EntityId::table_4] };
715 return { (*this)[EntityId::w_l], (*this)[EntityId::w_r], (*this)[EntityId::w_o], (*this)[EntityId::w_4] };
719 return { (*this)[EntityId::w_l], (*this)[EntityId::w_r], (*this)[EntityId::w_o], (*this)[EntityId::w_4] };
723 return { (*this)[EntityId::q_m], (*this)[EntityId::q_l], (*this)[EntityId::q_r], (*this)[EntityId::q_o],
724 (*this)[EntityId::q_4], (*this)[EntityId::q_c], (*this)[EntityId::q_5] };
728 return { (*this)[EntityId::q_m], (*this)[EntityId::q_l], (*this)[EntityId::q_r], (*this)[EntityId::q_o],
729 (*this)[EntityId::q_4], (*this)[EntityId::q_c], (*this)[EntityId::q_5] };
733 return { (*this)[EntityId::ecc_op_wire_1],
734 (*this)[EntityId::ecc_op_wire_2],
735 (*this)[EntityId::ecc_op_wire_3],
736 (*this)[EntityId::ecc_op_wire_4] };
740 return { (*this)[EntityId::ecc_op_wire_1],
741 (*this)[EntityId::ecc_op_wire_2],
742 (*this)[EntityId::ecc_op_wire_3],
743 (*this)[EntityId::ecc_op_wire_4] };
747 return { (*this)[EntityId::kernel_calldata], (*this)[EntityId::kernel_calldata_read_counts],
748 (*this)[EntityId::first_app_calldata], (*this)[EntityId::first_app_calldata_read_counts],
749 (*this)[EntityId::second_app_calldata], (*this)[EntityId::second_app_calldata_read_counts],
750 (*this)[EntityId::third_app_calldata], (*this)[EntityId::third_app_calldata_read_counts],
751 (*this)[EntityId::fourth_app_calldata], (*this)[EntityId::fourth_app_calldata_read_counts],
752 (*this)[EntityId::fifth_app_calldata], (*this)[EntityId::fifth_app_calldata_read_counts],
753 (*this)[EntityId::return_data], (*this)[EntityId::return_data_read_counts] };
757 return { (*this)[EntityId::kernel_calldata], (*this)[EntityId::kernel_calldata_read_counts],
758 (*this)[EntityId::first_app_calldata], (*this)[EntityId::first_app_calldata_read_counts],
759 (*this)[EntityId::second_app_calldata], (*this)[EntityId::second_app_calldata_read_counts],
760 (*this)[EntityId::third_app_calldata], (*this)[EntityId::third_app_calldata_read_counts],
761 (*this)[EntityId::fourth_app_calldata], (*this)[EntityId::fourth_app_calldata_read_counts],
762 (*this)[EntityId::fifth_app_calldata], (*this)[EntityId::fifth_app_calldata_read_counts],
763 (*this)[EntityId::return_data], (*this)[EntityId::return_data_read_counts] };
767 return { (*this)[EntityId::kernel_calldata_inverses], (*this)[EntityId::first_app_calldata_inverses],
768 (*this)[EntityId::second_app_calldata_inverses], (*this)[EntityId::third_app_calldata_inverses],
769 (*this)[EntityId::fourth_app_calldata_inverses], (*this)[EntityId::fifth_app_calldata_inverses],
770 (*this)[EntityId::return_data_inverses] };
774 return { (*this)[EntityId::kernel_calldata_inverses], (*this)[EntityId::first_app_calldata_inverses],
775 (*this)[EntityId::second_app_calldata_inverses], (*this)[EntityId::third_app_calldata_inverses],
776 (*this)[EntityId::fourth_app_calldata_inverses], (*this)[EntityId::fifth_app_calldata_inverses],
777 (*this)[EntityId::return_data_inverses] };
781 return { (*this)[EntityId::kernel_calldata_indicator], (*this)[EntityId::first_app_calldata_indicator],
782 (*this)[EntityId::second_app_calldata_indicator], (*this)[EntityId::third_app_calldata_indicator],
783 (*this)[EntityId::fourth_app_calldata_indicator], (*this)[EntityId::fifth_app_calldata_indicator],
784 (*this)[EntityId::return_data_indicator] };
788 return { (*this)[EntityId::kernel_calldata_indicator], (*this)[EntityId::first_app_calldata_indicator],
789 (*this)[EntityId::second_app_calldata_indicator], (*this)[EntityId::third_app_calldata_indicator],
790 (*this)[EntityId::fourth_app_calldata_indicator], (*this)[EntityId::fifth_app_calldata_indicator],
791 (*this)[EntityId::return_data_indicator] };
795 return { (*this)[EntityId::q_l], (*this)[EntityId::q_r], (*this)[EntityId::q_o], (*this)[EntityId::q_4],
796 (*this)[EntityId::q_5], (*this)[EntityId::q_c], (*this)[EntityId::q_m] };
800 return { (*this)[EntityId::q_l], (*this)[EntityId::q_r], (*this)[EntityId::q_o], (*this)[EntityId::q_4],
801 (*this)[EntityId::q_5], (*this)[EntityId::q_c], (*this)[EntityId::q_m] };
811 static const std::vector<std::string> labels = {
834 "Q_BILINEAR_BATCHED_EQ",
841 "KERNEL_CALLDATA_INDICATOR",
843 "FIRST_APP_CALLDATA_INDICATOR",
844 "SECOND_APP_CALLDATA_INDICATOR",
845 "THIRD_APP_CALLDATA_INDICATOR",
846 "FOURTH_APP_CALLDATA_INDICATOR",
848 "FIFTH_APP_CALLDATA_INDICATOR",
849 "RETURN_DATA_INDICATOR",
850 "Q_POSEIDON2_EXTERNAL",
851 "Q_POSEIDON2_EXTERNAL_INITIAL",
852 "Q_POSEIDON2_QUAD_INTERNAL",
853 "Q_POSEIDON2_QUAD_INTERNAL_TERMINAL",
854 "Q_POSEIDON2_TRANSITION_ENTRY",
861 "LOOKUP_READ_COUNTS",
868 "KERNEL_CALLDATA_READ_COUNTS",
869 "KERNEL_CALLDATA_INVERSES",
870 "FIRST_APP_CALLDATA",
871 "FIRST_APP_CALLDATA_READ_COUNTS",
872 "FIRST_APP_CALLDATA_INVERSES",
873 "SECOND_APP_CALLDATA",
874 "SECOND_APP_CALLDATA_READ_COUNTS",
875 "SECOND_APP_CALLDATA_INVERSES",
876 "THIRD_APP_CALLDATA",
877 "THIRD_APP_CALLDATA_READ_COUNTS",
878 "THIRD_APP_CALLDATA_INVERSES",
879 "FOURTH_APP_CALLDATA",
880 "FOURTH_APP_CALLDATA_READ_COUNTS",
881 "FOURTH_APP_CALLDATA_INVERSES",
882 "FIFTH_APP_CALLDATA",
883 "FIFTH_APP_CALLDATA_READ_COUNTS",
884 "FIFTH_APP_CALLDATA_INVERSES",
886 "RETURN_DATA_READ_COUNTS",
887 "RETURN_DATA_INVERSES",
902 std::array<DataType, NUM_PRECOMPUTED_ENTITIES>
data{};
1055 return { this->
q_m(), this->
q_l(), this->
q_r(), this->
q_o(), this->
q_4(), this->
q_c(), this->
q_5() };
1059 return { this->
q_m(), this->
q_l(), this->
q_r(), this->
q_o(), this->
q_4(), this->
q_c(), this->
q_5() };
1077 return { this->
q_l(), this->
q_r(), this->
q_o(), this->
q_4(), this->
q_5(), this->
q_c(), this->
q_m() };
1081 return { this->
q_l(), this->
q_r(), this->
q_o(), this->
q_4(), this->
q_5(), this->
q_c(), this->
q_m() };
1090 static const std::vector<std::string> labels = {
1113 "Q_BILINEAR_BATCHED_EQ",
1120 "KERNEL_CALLDATA_INDICATOR",
1122 "FIRST_APP_CALLDATA_INDICATOR",
1123 "SECOND_APP_CALLDATA_INDICATOR",
1124 "THIRD_APP_CALLDATA_INDICATOR",
1125 "FOURTH_APP_CALLDATA_INDICATOR",
1127 "FIFTH_APP_CALLDATA_INDICATOR",
1128 "RETURN_DATA_INDICATOR",
1129 "Q_POSEIDON2_EXTERNAL",
1130 "Q_POSEIDON2_EXTERNAL_INITIAL",
1131 "Q_POSEIDON2_QUAD_INTERNAL",
1132 "Q_POSEIDON2_QUAD_INTERNAL_TERMINAL",
1133 "Q_POSEIDON2_TRANSITION_ENTRY",
1143 std::array<DataType, NUM_WITNESS_ENTITIES>
data{};
1277 static const std::vector<std::string> labels = {
1284 "LOOKUP_READ_COUNTS",
1291 "KERNEL_CALLDATA_READ_COUNTS",
1292 "KERNEL_CALLDATA_INVERSES",
1293 "FIRST_APP_CALLDATA",
1294 "FIRST_APP_CALLDATA_READ_COUNTS",
1295 "FIRST_APP_CALLDATA_INVERSES",
1296 "SECOND_APP_CALLDATA",
1297 "SECOND_APP_CALLDATA_READ_COUNTS",
1298 "SECOND_APP_CALLDATA_INVERSES",
1299 "THIRD_APP_CALLDATA",
1300 "THIRD_APP_CALLDATA_READ_COUNTS",
1301 "THIRD_APP_CALLDATA_INVERSES",
1302 "FOURTH_APP_CALLDATA",
1303 "FOURTH_APP_CALLDATA_READ_COUNTS",
1304 "FOURTH_APP_CALLDATA_INVERSES",
1305 "FIFTH_APP_CALLDATA",
1306 "FIFTH_APP_CALLDATA_READ_COUNTS",
1307 "FIFTH_APP_CALLDATA_INVERSES",
1309 "RETURN_DATA_READ_COUNTS",
1310 "RETURN_DATA_INVERSES",
bb::field< bb::Bn254FrParams > FF
const DataType & q_4() const
const DataType & w_4() const
DataType & fifth_app_calldata_read_counts()
auto get_selectors() const
const DataType & id_2() const
DataType & fifth_app_calldata_inverses()
DataType & return_data_indicator()
const DataType & q_5() const
RefArray< const DataType, 4 > get_tables() const
const DataType & table_3() const
const DataType & first_app_calldata_indicator() const
const DataType & fifth_app_calldata_inverses() const
DataType & kernel_calldata_indicator()
const DataType & q_elliptic() const
DataType & lagrange_last()
std::span< DataType, NUM_ALL_ENTITIES > get_all()
const DataType & table_4() const
DataType & ecc_op_wire_2()
const DataType & fourth_app_calldata_indicator() const
const DataType & lookup_inverses() const
std::span< const DataType, NUM_SHIFTED_ENTITIES > get_shifted() const
const DataType & id_4() const
const DataType & id_3() const
const DataType & kernel_calldata() const
const DataType & q_lookup() const
const DataType & first_app_calldata_inverses() const
const DataType & fifth_app_calldata() const
const DataType & lookup_read_counts() const
DataType & second_app_calldata_read_counts()
RefArray< DataType, 4 > get_tables()
RefArray< const DataType, 7 > get_databus_selectors() const
const DataType & second_app_calldata_inverses() const
RefArray< DataType, 7 > get_non_gate_selectors()
std::span< const DataType, NUM_WITNESS_ENTITIES > get_witness() const
const DataType & ecc_op_wire_2() const
const DataType & fifth_app_calldata_indicator() const
const DataType & w_4_shift() const
const DataType & lagrange_last() const
DataType & lookup_read_counts()
DataType & q_delta_range()
RefArray< DataType, 7 > get_databus_selectors()
const DataType & q_o() const
std::span< const DataType, NUM_UNSHIFTED_ENTITIES > get_unshifted() const
const DataType & second_app_calldata_indicator() const
RefArray< DataType, 7 > get_databus_inverses()
const DataType & operator[](EntityId id) const
RefArray< DataType, 13 > get_gate_selectors()
DataType & third_app_calldata_read_counts()
DataType & third_app_calldata_inverses()
const DataType & lagrange_first() const
RefArray< const DataType, 7 > get_databus_indicators() const
DataType & fourth_app_calldata()
DataType & third_app_calldata_indicator()
const DataType & w_l_shift() const
DataType & z_perm_shift()
std::span< DataType, NUM_WITNESS_ENTITIES > get_witness()
const DataType & q_poseidon2_external_initial() const
DataType & fifth_app_calldata()
RefArray< const DataType, 13 > get_gate_selectors() const
std::span< const DataType, NUM_PRECOMPUTED_ENTITIES > get_precomputed() const
RefArray< DataType, 4 > get_sigmas()
DataType & kernel_calldata()
const DataType & kernel_calldata_indicator() const
const DataType & table_1() const
DataType & kernel_calldata_inverses()
RefArray< DataType, 4 > get_ecc_op_wires()
DataType & second_app_calldata()
DataType & first_app_calldata_indicator()
const DataType & q_poseidon2_transition_entry() const
const DataType & lagrange_ecc_op() const
DataType & fourth_app_calldata_inverses()
const DataType & third_app_calldata_read_counts() const
DataType & first_app_calldata_read_counts()
DataType & fourth_app_calldata_read_counts()
const DataType & third_app_calldata_inverses() const
const DataType & return_data_indicator() const
const DataType & z_perm() const
const DataType & q_busread() const
DataType & first_app_calldata_inverses()
DataType & lagrange_first()
const DataType & q_arith() const
DataType & lagrange_ecc_op()
std::span< const DataType, NUM_SHIFTED_ENTITIES > get_to_be_shifted() const
DataType & return_data_read_counts()
const DataType & kernel_calldata_inverses() const
DataType & ecc_op_wire_1()
RefArray< const DataType, 7 > get_databus_inverses() const
const DataType & sigma_1() const
const DataType & w_l() const
const DataType & databus_id() const
const DataType & ecc_op_wire_3() const
DataType & q_poseidon2_transition_entry()
DataType & q_poseidon2_quad_internal()
std::span< DataType, NUM_UNSHIFTED_ENTITIES > get_unshifted()
DataType & ecc_op_wire_3()
const DataType & ecc_op_wire_1() const
RefArray< DataType, 4 > get_ids()
const DataType & return_data_read_counts() const
std::span< DataType, NUM_SHIFTED_ENTITIES > get_to_be_shifted()
RefArray< const DataType, 14 > get_databus_entities() const
DataType & third_app_calldata()
DataType & return_data_inverses()
DataType & lookup_inverses()
RefArray< const DataType, 4 > get_ecc_op_wires() const
RefArray< DataType, 4 > get_wires()
const DataType & return_data() const
const DataType & q_poseidon2_external() const
const DataType & fourth_app_calldata_read_counts() const
DataType & q_poseidon2_external_initial()
const DataType & w_o() const
const DataType & q_bilinear_batched_eq() const
DataType & ecc_op_wire_4()
const DataType & q_delta_range() const
const DataType & q_m() const
DataType & fourth_app_calldata_indicator()
const DataType & ecc_op_wire_4() const
DataType & first_app_calldata()
const DataType & lookup_read_tags() const
const DataType & q_poseidon2_quad_internal_terminal() const
const DataType & fourth_app_calldata_inverses() const
const DataType & sigma_4() const
std::span< DataType, NUM_SHIFTED_ENTITIES > get_shifted()
const DataType & sigma_2() const
static const std::vector< std::string > & get_labels()
const DataType & z_perm_shift() const
const DataType & q_nnf() const
DataType & kernel_calldata_read_counts()
const DataType & q_memory() const
std::span< const DataType, NUM_ALL_ENTITIES > get_all() const
DataType & fifth_app_calldata_indicator()
const DataType & fourth_app_calldata() const
RefArray< const DataType, 4 > get_sigmas() const
const DataType & first_app_calldata_read_counts() const
RefArray< DataType, 14 > get_databus_entities()
std::span< DataType, NUM_PRECOMPUTED_ENTITIES > get_precomputed()
const DataType & third_app_calldata() const
DataType & lookup_read_tags()
const DataType & third_app_calldata_indicator() const
const DataType & q_l() const
const DataType & id_1() const
std::array< DataType, NUM_ALL_ENTITIES > data
DataType & second_app_calldata_inverses()
const DataType & second_app_calldata_read_counts() const
RefArray< DataType, 7 > get_databus_indicators()
const DataType & return_data_inverses() const
const DataType & first_app_calldata() const
DataType & q_poseidon2_quad_internal_terminal()
RefArray< const DataType, 4 > get_wires() const
const DataType & q_poseidon2_quad_internal() const
DataType & q_bilinear_batched_eq()
DataType & operator[](EntityId id)
RefArray< const DataType, 4 > get_ids() const
const DataType & q_r() const
const DataType & fifth_app_calldata_read_counts() const
const DataType & q_c() const
const DataType & w_r_shift() const
const DataType & sigma_3() const
const DataType & second_app_calldata() const
DataType & second_app_calldata_indicator()
DataType & q_poseidon2_external()
const DataType & table_2() const
const DataType & w_o_shift() const
const DataType & kernel_calldata_read_counts() const
RefArray< const DataType, 7 > get_non_gate_selectors() const
const DataType & w_r() const
const DataType & q_arith() const
const DataType & q_m() const
DataType & q_delta_range()
const DataType & fourth_app_calldata_indicator() const
RefArray< const DataType, 4 > get_sigmas() const
RefArray< const DataType, 13 > get_gate_selectors() const
RefArray< const DataType, 4 > get_ids() const
const DataType & first_app_calldata_indicator() const
const DataType & sigma_2() const
RefArray< DataType, 13 > get_gate_selectors()
DataType & q_poseidon2_external()
const DataType & id_2() const
const DataType & table_4() const
auto get_selectors() const
std::array< DataType, NUM_PRECOMPUTED_ENTITIES > data
const DataType & return_data_indicator() const
const DataType & fifth_app_calldata_indicator() const
const DataType & table_1() const
const DataType & q_r() const
const DataType & third_app_calldata_indicator() const
RefArray< DataType, 4 > get_sigmas()
const DataType & sigma_4() const
const DataType & lagrange_ecc_op() const
const DataType & q_delta_range() const
const DataType & second_app_calldata_indicator() const
RefArray< DataType, 7 > get_non_gate_selectors()
const DataType & q_4() const
DataType & kernel_calldata_indicator()
RefArray< DataType, 4 > get_ids()
const DataType & q_busread() const
RefArray< const DataType, 4 > get_tables() const
DataType & q_poseidon2_external_initial()
DataType & fifth_app_calldata_indicator()
const DataType & kernel_calldata_indicator() const
DataType & q_poseidon2_quad_internal_terminal()
RefArray< DataType, 7 > get_databus_indicators()
RefArray< DataType, 4 > get_tables()
RefArray< const DataType, 7 > get_non_gate_selectors() const
const DataType & sigma_1() const
const DataType & q_poseidon2_external() const
bool operator==(const PrecomputedEntities &) const =default
const DataType & id_3() const
static constexpr size_t size()
const DataType & id_4() const
const DataType & q_c() const
DataType & second_app_calldata_indicator()
const DataType & q_5() const
const DataType & q_o() const
const DataType & id_1() const
DataType & lagrange_ecc_op()
const DataType & q_poseidon2_external_initial() const
DataType & lagrange_last()
DataType & q_bilinear_batched_eq()
DataType & third_app_calldata_indicator()
RefArray< DataType, 7 > get_databus_selectors()
const DataType & q_elliptic() const
const DataType & databus_id() const
std::span< const DataType, NUM_PRECOMPUTED_ENTITIES > get_all() const
DataType & fourth_app_calldata_indicator()
DataType & lagrange_first()
const DataType & q_poseidon2_transition_entry() const
const DataType & q_poseidon2_quad_internal_terminal() const
DataType & q_poseidon2_transition_entry()
const DataType & table_2() const
const DataType & q_poseidon2_quad_internal() const
std::span< DataType, NUM_PRECOMPUTED_ENTITIES > get_all()
DataType & return_data_indicator()
const DataType & q_bilinear_batched_eq() const
const DataType & lagrange_last() const
RefArray< const DataType, 7 > get_databus_indicators() const
const DataType & q_memory() const
const DataType & sigma_3() const
const DataType & q_nnf() const
const DataType & lagrange_first() const
DataType & first_app_calldata_indicator()
const DataType & q_lookup() const
DataType & q_poseidon2_quad_internal()
RefArray< const DataType, 7 > get_databus_selectors() const
static const std::vector< std::string > & get_labels()
const DataType & q_l() const
const DataType & table_3() const
const DataType & fourth_app_calldata() const
RefArray< DataType, 5 > get_to_be_shifted()
DataType & fourth_app_calldata_inverses()
const DataType & return_data_inverses() const
DataType & third_app_calldata()
DataType & kernel_calldata_inverses()
const DataType & w_l() const
const DataType & second_app_calldata() const
DataType & ecc_op_wire_3()
const DataType & w_4() const
static const std::vector< std::string > & get_labels()
const DataType & ecc_op_wire_1() const
const DataType & third_app_calldata_inverses() const
DataType & fourth_app_calldata()
DataType & second_app_calldata_inverses()
RefArray< const DataType, 4 > get_wires() const
DataType & kernel_calldata_read_counts()
DataType & fourth_app_calldata_read_counts()
DataType & ecc_op_wire_1()
DataType & lookup_read_tags()
const DataType & lookup_read_tags() const
const DataType & second_app_calldata_inverses() const
const DataType & fifth_app_calldata() const
const DataType & z_perm() const
DataType & fifth_app_calldata_inverses()
RefArray< DataType, 7 > get_databus_inverses()
RefArray< const DataType, 4 > get_ecc_op_wires() const
const DataType & kernel_calldata_inverses() const
DataType & fifth_app_calldata()
RefArray< const DataType, 5 > get_to_be_shifted() const
const DataType & fifth_app_calldata_inverses() const
const DataType & first_app_calldata_inverses() const
const DataType & fifth_app_calldata_read_counts() const
const DataType & ecc_op_wire_2() const
const DataType & return_data() const
RefArray< DataType, 4 > get_wires()
DataType & third_app_calldata_read_counts()
std::span< const DataType, NUM_WITNESS_ENTITIES > get_all() const
static constexpr size_t size()
std::span< DataType, NUM_WITNESS_ENTITIES > get_all()
RefArray< const DataType, 7 > get_databus_inverses() const
const DataType & lookup_read_counts() const
RefArray< const DataType, 14 > get_databus_entities() const
const DataType & return_data_read_counts() const
DataType & first_app_calldata_read_counts()
DataType & fifth_app_calldata_read_counts()
const DataType & kernel_calldata_read_counts() const
DataType & second_app_calldata()
DataType & ecc_op_wire_4()
const DataType & third_app_calldata_read_counts() const
const DataType & w_r() const
DataType & first_app_calldata_inverses()
const DataType & second_app_calldata_read_counts() const
const DataType & ecc_op_wire_4() const
DataType & return_data_read_counts()
DataType & lookup_read_counts()
const DataType & first_app_calldata_read_counts() const
const DataType & lookup_inverses() const
const DataType & fourth_app_calldata_inverses() const
DataType & kernel_calldata()
DataType & ecc_op_wire_2()
bool operator==(const WitnessEntities &) const =default
DataType & lookup_inverses()
std::array< DataType, NUM_WITNESS_ENTITIES > data
const DataType & first_app_calldata() const
DataType & second_app_calldata_read_counts()
const DataType & third_app_calldata() const
const DataType & ecc_op_wire_3() const
DataType & first_app_calldata()
const DataType & kernel_calldata() const
RefArray< DataType, 14 > get_databus_entities()
DataType & third_app_calldata_inverses()
DataType & return_data_inverses()
const DataType & w_o() const
RefArray< DataType, 4 > get_ecc_op_wires()
const DataType & fourth_app_calldata_read_counts() const
static constexpr size_t NUM_BUS_COLUMNS
static constexpr size_t NUM_ALL_ENTITIES
static auto get_gate_blocks(TraceBlocks const &blocks)
static constexpr RepeatedCommitmentsData REPEATED_COMMITMENTS
static auto get_gate_blocks(TraceBlocks &blocks)
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::kernel_calldata, EntityId::kernel_calldata_read_counts, EntityId::kernel_calldata_inverses, EntityId::kernel_calldata_indicator, EntityId::q_l >, bb::SingleBusLookupRelation< FF, EntityId::first_app_calldata, EntityId::first_app_calldata_read_counts, EntityId::first_app_calldata_inverses, EntityId::first_app_calldata_indicator, EntityId::q_r >, bb::SingleBusLookupRelation< FF, EntityId::second_app_calldata, EntityId::second_app_calldata_read_counts, EntityId::second_app_calldata_inverses, EntityId::second_app_calldata_indicator, EntityId::q_o >, bb::SingleBusLookupRelation< FF, EntityId::third_app_calldata, EntityId::third_app_calldata_read_counts, EntityId::third_app_calldata_inverses, EntityId::third_app_calldata_indicator, EntityId::q_4 >, bb::SingleBusLookupRelation< FF, EntityId::fourth_app_calldata, EntityId::fourth_app_calldata_read_counts, EntityId::fourth_app_calldata_inverses, EntityId::fourth_app_calldata_indicator, EntityId::q_5 >, bb::SingleBusLookupRelation< FF, EntityId::fifth_app_calldata, EntityId::fifth_app_calldata_read_counts, EntityId::fifth_app_calldata_inverses, EntityId::fifth_app_calldata_indicator, EntityId::q_c >, 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 constexpr size_t NUM_WITNESS_ENTITIES
static constexpr bool HasMemory
static constexpr std::array< GateKind, 13 > GATE_KINDS
static constexpr size_t NUM_MASKING_ENTITIES
static constexpr bool HasDataBus
static constexpr size_t NUM_COMMITTED_WITNESS_ENTITIES
static constexpr bool HasElliptic
static constexpr size_t NUM_SHIFTED_ENTITIES
static auto get_block_non_gate_selectors(TraceBlock &block)
static constexpr size_t NUM_UNSHIFTED_ENTITIES
static constexpr std::array< size_t, NUM_BUS_COLUMNS > BUILDER_BUS_INDICES
static constexpr std::array< DuplicatePair, NUM_SHIFTED_ENTITIES > REPEATED_COMMITMENT_PAIRS
static constexpr bool HasLogDerivLookup
static constexpr bool HasNonNativeField
@ fifth_app_calldata_inverses
@ fifth_app_calldata_read_counts
@ third_app_calldata_inverses
@ kernel_calldata_inverses
@ second_app_calldata_read_counts
@ q_poseidon2_quad_internal_terminal
@ q_poseidon2_external_initial
@ third_app_calldata_indicator
@ fifth_app_calldata_indicator
@ fourth_app_calldata_indicator
@ first_app_calldata_inverses
@ kernel_calldata_indicator
@ first_app_calldata_read_counts
@ fourth_app_calldata_read_counts
@ q_poseidon2_transition_entry
@ third_app_calldata_read_counts
@ second_app_calldata_inverses
@ fourth_app_calldata_inverses
@ first_app_calldata_indicator
@ q_poseidon2_quad_internal
@ kernel_calldata_read_counts
@ second_app_calldata_indicator
@ return_data_read_counts
static constexpr size_t NUM_PRECOMPUTED_ENTITIES
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.