115 template <
typename FF>
124 EntityId::kernel_calldata,
125 EntityId::kernel_calldata_read_counts,
126 EntityId::kernel_calldata_inverses,
127 EntityId::kernel_calldata_indicator,
130 EntityId::first_app_calldata,
131 EntityId::first_app_calldata_read_counts,
132 EntityId::first_app_calldata_inverses,
133 EntityId::first_app_calldata_indicator,
136 EntityId::second_app_calldata,
137 EntityId::second_app_calldata_read_counts,
138 EntityId::second_app_calldata_inverses,
139 EntityId::second_app_calldata_indicator,
142 EntityId::third_app_calldata,
143 EntityId::third_app_calldata_read_counts,
144 EntityId::third_app_calldata_inverses,
145 EntityId::third_app_calldata_indicator,
148 EntityId::fourth_app_calldata,
149 EntityId::fourth_app_calldata_read_counts,
150 EntityId::fourth_app_calldata_inverses,
151 EntityId::fourth_app_calldata_indicator,
154 EntityId::fifth_app_calldata,
155 EntityId::fifth_app_calldata_read_counts,
156 EntityId::fifth_app_calldata_inverses,
157 EntityId::fifth_app_calldata_indicator,
160 EntityId::return_data,
161 EntityId::return_data_read_counts,
162 EntityId::return_data_inverses,
163 EntityId::return_data_indicator,
199 using BlockBase =
typename TraceBlocks::BlockBase;
215 template <
typename TraceBlocks>
static auto get_gate_blocks(TraceBlocks
const& blocks)
217 using BlockBase =
typename TraceBlocks::BlockBase;
253 block.q_m(), block.q_1(), block.q_2(), block.q_3(), block.q_4(), block.q_c(), block.q_5(),
261 std::array<DataType, NUM_ALL_ENTITIES>
data{};
270 DataType&
q_m() {
return data[
static_cast<size_t>(EntityId::q_m)]; }
271 const DataType&
q_m()
const {
return data[
static_cast<size_t>(EntityId::q_m)]; }
272 DataType&
q_l() {
return data[
static_cast<size_t>(EntityId::q_l)]; }
273 const DataType&
q_l()
const {
return data[
static_cast<size_t>(EntityId::q_l)]; }
274 DataType&
q_r() {
return data[
static_cast<size_t>(EntityId::q_r)]; }
275 const DataType&
q_r()
const {
return data[
static_cast<size_t>(EntityId::q_r)]; }
276 DataType&
q_o() {
return data[
static_cast<size_t>(EntityId::q_o)]; }
277 const DataType&
q_o()
const {
return data[
static_cast<size_t>(EntityId::q_o)]; }
278 DataType&
q_4() {
return data[
static_cast<size_t>(EntityId::q_4)]; }
279 const DataType&
q_4()
const {
return data[
static_cast<size_t>(EntityId::q_4)]; }
280 DataType&
q_c() {
return data[
static_cast<size_t>(EntityId::q_c)]; }
281 const DataType&
q_c()
const {
return data[
static_cast<size_t>(EntityId::q_c)]; }
282 DataType&
q_arith() {
return data[
static_cast<size_t>(EntityId::q_arith)]; }
283 const DataType&
q_arith()
const {
return data[
static_cast<size_t>(EntityId::q_arith)]; }
287 return data[
static_cast<size_t>(EntityId::q_bilinear_batched_eq)];
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)]; }
310 const DataType&
q_delta_range()
const {
return data[
static_cast<size_t>(EntityId::q_delta_range)]; }
311 DataType&
q_elliptic() {
return data[
static_cast<size_t>(EntityId::q_elliptic)]; }
312 const DataType&
q_elliptic()
const {
return data[
static_cast<size_t>(EntityId::q_elliptic)]; }
313 DataType&
q_memory() {
return data[
static_cast<size_t>(EntityId::q_memory)]; }
314 const DataType&
q_memory()
const {
return data[
static_cast<size_t>(EntityId::q_memory)]; }
317 DataType&
q_busread() {
return data[
static_cast<size_t>(EntityId::q_busread)]; }
318 const DataType&
q_busread()
const {
return data[
static_cast<size_t>(EntityId::q_busread)]; }
322 return data[
static_cast<size_t>(EntityId::kernel_calldata_indicator)];
324 DataType&
databus_id() {
return data[
static_cast<size_t>(EntityId::databus_id)]; }
325 const DataType&
databus_id()
const {
return data[
static_cast<size_t>(EntityId::databus_id)]; }
328 return data[
static_cast<size_t>(EntityId::first_app_calldata_indicator)];
332 return data[
static_cast<size_t>(EntityId::first_app_calldata_indicator)];
336 return data[
static_cast<size_t>(EntityId::second_app_calldata_indicator)];
340 return data[
static_cast<size_t>(EntityId::second_app_calldata_indicator)];
344 return data[
static_cast<size_t>(EntityId::third_app_calldata_indicator)];
348 return data[
static_cast<size_t>(EntityId::third_app_calldata_indicator)];
352 return data[
static_cast<size_t>(EntityId::fourth_app_calldata_indicator)];
356 return data[
static_cast<size_t>(EntityId::fourth_app_calldata_indicator)];
358 DataType&
q_5() {
return data[
static_cast<size_t>(EntityId::q_5)]; }
359 const DataType&
q_5()
const {
return data[
static_cast<size_t>(EntityId::q_5)]; }
362 return data[
static_cast<size_t>(EntityId::fifth_app_calldata_indicator)];
366 return data[
static_cast<size_t>(EntityId::fifth_app_calldata_indicator)];
371 return data[
static_cast<size_t>(EntityId::return_data_indicator)];
376 return data[
static_cast<size_t>(EntityId::q_poseidon2_external)];
380 return data[
static_cast<size_t>(EntityId::q_poseidon2_external_initial)];
384 return data[
static_cast<size_t>(EntityId::q_poseidon2_external_initial)];
389 return data[
static_cast<size_t>(EntityId::q_poseidon2_quad_internal)];
393 return data[
static_cast<size_t>(EntityId::q_poseidon2_quad_internal_terminal)];
397 return data[
static_cast<size_t>(EntityId::q_poseidon2_quad_internal_terminal)];
401 return data[
static_cast<size_t>(EntityId::q_poseidon2_transition_entry)];
405 return data[
static_cast<size_t>(EntityId::q_poseidon2_transition_entry)];
407 DataType&
w_l() {
return data[
static_cast<size_t>(EntityId::w_l)]; }
408 const DataType&
w_l()
const {
return data[
static_cast<size_t>(EntityId::w_l)]; }
409 DataType&
w_r() {
return data[
static_cast<size_t>(EntityId::w_r)]; }
410 const DataType&
w_r()
const {
return data[
static_cast<size_t>(EntityId::w_r)]; }
411 DataType&
w_o() {
return data[
static_cast<size_t>(EntityId::w_o)]; }
412 const DataType&
w_o()
const {
return data[
static_cast<size_t>(EntityId::w_o)]; }
413 DataType&
w_4() {
return data[
static_cast<size_t>(EntityId::w_4)]; }
414 const DataType&
w_4()
const {
return data[
static_cast<size_t>(EntityId::w_4)]; }
415 DataType&
z_perm() {
return data[
static_cast<size_t>(EntityId::z_perm)]; }
416 const DataType&
z_perm()
const {
return data[
static_cast<size_t>(EntityId::z_perm)]; }
418 const DataType&
ecc_op_wire_1()
const {
return data[
static_cast<size_t>(EntityId::ecc_op_wire_1)]; }
420 const DataType&
ecc_op_wire_2()
const {
return data[
static_cast<size_t>(EntityId::ecc_op_wire_2)]; }
422 const DataType&
ecc_op_wire_3()
const {
return data[
static_cast<size_t>(EntityId::ecc_op_wire_3)]; }
424 const DataType&
ecc_op_wire_4()
const {
return data[
static_cast<size_t>(EntityId::ecc_op_wire_4)]; }
429 return data[
static_cast<size_t>(EntityId::kernel_calldata_read_counts)];
433 return data[
static_cast<size_t>(EntityId::kernel_calldata_read_counts)];
438 return data[
static_cast<size_t>(EntityId::kernel_calldata_inverses)];
444 return data[
static_cast<size_t>(EntityId::first_app_calldata_read_counts)];
448 return data[
static_cast<size_t>(EntityId::first_app_calldata_read_counts)];
452 return data[
static_cast<size_t>(EntityId::first_app_calldata_inverses)];
456 return data[
static_cast<size_t>(EntityId::first_app_calldata_inverses)];
462 return data[
static_cast<size_t>(EntityId::second_app_calldata_read_counts)];
466 return data[
static_cast<size_t>(EntityId::second_app_calldata_read_counts)];
470 return data[
static_cast<size_t>(EntityId::second_app_calldata_inverses)];
474 return data[
static_cast<size_t>(EntityId::second_app_calldata_inverses)];
480 return data[
static_cast<size_t>(EntityId::third_app_calldata_read_counts)];
484 return data[
static_cast<size_t>(EntityId::third_app_calldata_read_counts)];
488 return data[
static_cast<size_t>(EntityId::third_app_calldata_inverses)];
492 return data[
static_cast<size_t>(EntityId::third_app_calldata_inverses)];
498 return data[
static_cast<size_t>(EntityId::fourth_app_calldata_read_counts)];
502 return data[
static_cast<size_t>(EntityId::fourth_app_calldata_read_counts)];
506 return data[
static_cast<size_t>(EntityId::fourth_app_calldata_inverses)];
510 return data[
static_cast<size_t>(EntityId::fourth_app_calldata_inverses)];
516 return data[
static_cast<size_t>(EntityId::fifth_app_calldata_read_counts)];
520 return data[
static_cast<size_t>(EntityId::fifth_app_calldata_read_counts)];
524 return data[
static_cast<size_t>(EntityId::fifth_app_calldata_inverses)];
528 return data[
static_cast<size_t>(EntityId::fifth_app_calldata_inverses)];
531 const DataType&
return_data()
const {
return data[
static_cast<size_t>(EntityId::return_data)]; }
535 return data[
static_cast<size_t>(EntityId::return_data_read_counts)];
540 return data[
static_cast<size_t>(EntityId::return_data_inverses)];
542 DataType&
w_l_shift() {
return data[
static_cast<size_t>(EntityId::w_l_shift)]; }
543 const DataType&
w_l_shift()
const {
return data[
static_cast<size_t>(EntityId::w_l_shift)]; }
544 DataType&
w_r_shift() {
return data[
static_cast<size_t>(EntityId::w_r_shift)]; }
545 const DataType&
w_r_shift()
const {
return data[
static_cast<size_t>(EntityId::w_r_shift)]; }
546 DataType&
w_o_shift() {
return data[
static_cast<size_t>(EntityId::w_o_shift)]; }
547 const DataType&
w_o_shift()
const {
return data[
static_cast<size_t>(EntityId::w_o_shift)]; }
548 DataType&
w_4_shift() {
return data[
static_cast<size_t>(EntityId::w_4_shift)]; }
549 const DataType&
w_4_shift()
const {
return data[
static_cast<size_t>(EntityId::w_4_shift)]; }
551 const DataType&
z_perm_shift()
const {
return data[
static_cast<size_t>(EntityId::z_perm_shift)]; }
606 return { (*this)[EntityId::w_l], (*this)[EntityId::w_r], (*this)[EntityId::w_o], (*this)[EntityId::w_4] };
610 return { (*this)[EntityId::w_l], (*this)[EntityId::w_r], (*this)[EntityId::w_o], (*this)[EntityId::w_4] };
614 return { (*this)[EntityId::q_m], (*this)[EntityId::q_l], (*this)[EntityId::q_r], (*this)[EntityId::q_o],
615 (*this)[EntityId::q_4], (*this)[EntityId::q_c], (*this)[EntityId::q_5] };
619 return { (*this)[EntityId::q_m], (*this)[EntityId::q_l], (*this)[EntityId::q_r], (*this)[EntityId::q_o],
620 (*this)[EntityId::q_4], (*this)[EntityId::q_c], (*this)[EntityId::q_5] };
624 return { (*this)[EntityId::q_arith],
625 (*this)[EntityId::q_bilinear_batched_eq],
626 (*this)[EntityId::q_delta_range],
627 (*this)[EntityId::q_elliptic],
628 (*this)[EntityId::q_memory],
629 (*this)[EntityId::q_busread],
630 (*this)[EntityId::q_poseidon2_external],
631 (*this)[EntityId::q_poseidon2_external_initial],
632 (*this)[EntityId::q_poseidon2_quad_internal],
633 (*this)[EntityId::q_poseidon2_quad_internal_terminal],
634 (*this)[EntityId::q_poseidon2_transition_entry] };
638 return { (*this)[EntityId::q_arith],
639 (*this)[EntityId::q_bilinear_batched_eq],
640 (*this)[EntityId::q_delta_range],
641 (*this)[EntityId::q_elliptic],
642 (*this)[EntityId::q_memory],
643 (*this)[EntityId::q_busread],
644 (*this)[EntityId::q_poseidon2_external],
645 (*this)[EntityId::q_poseidon2_external_initial],
646 (*this)[EntityId::q_poseidon2_quad_internal],
647 (*this)[EntityId::q_poseidon2_quad_internal_terminal],
648 (*this)[EntityId::q_poseidon2_transition_entry] };
652 return { (*this)[EntityId::sigma_1],
653 (*this)[EntityId::sigma_2],
654 (*this)[EntityId::sigma_3],
655 (*this)[EntityId::sigma_4] };
659 return { (*this)[EntityId::sigma_1],
660 (*this)[EntityId::sigma_2],
661 (*this)[EntityId::sigma_3],
662 (*this)[EntityId::sigma_4] };
667 (*this)[EntityId::id_1], (*this)[EntityId::id_2], (*this)[EntityId::id_3], (*this)[EntityId::id_4]
673 (*this)[EntityId::id_1], (*this)[EntityId::id_2], (*this)[EntityId::id_3], (*this)[EntityId::id_4]
678 return { (*this)[EntityId::ecc_op_wire_1],
679 (*this)[EntityId::ecc_op_wire_2],
680 (*this)[EntityId::ecc_op_wire_3],
681 (*this)[EntityId::ecc_op_wire_4] };
685 return { (*this)[EntityId::ecc_op_wire_1],
686 (*this)[EntityId::ecc_op_wire_2],
687 (*this)[EntityId::ecc_op_wire_3],
688 (*this)[EntityId::ecc_op_wire_4] };
692 return { (*this)[EntityId::kernel_calldata], (*this)[EntityId::kernel_calldata_read_counts],
693 (*this)[EntityId::first_app_calldata], (*this)[EntityId::first_app_calldata_read_counts],
694 (*this)[EntityId::second_app_calldata], (*this)[EntityId::second_app_calldata_read_counts],
695 (*this)[EntityId::third_app_calldata], (*this)[EntityId::third_app_calldata_read_counts],
696 (*this)[EntityId::fourth_app_calldata], (*this)[EntityId::fourth_app_calldata_read_counts],
697 (*this)[EntityId::fifth_app_calldata], (*this)[EntityId::fifth_app_calldata_read_counts],
698 (*this)[EntityId::return_data], (*this)[EntityId::return_data_read_counts] };
702 return { (*this)[EntityId::kernel_calldata], (*this)[EntityId::kernel_calldata_read_counts],
703 (*this)[EntityId::first_app_calldata], (*this)[EntityId::first_app_calldata_read_counts],
704 (*this)[EntityId::second_app_calldata], (*this)[EntityId::second_app_calldata_read_counts],
705 (*this)[EntityId::third_app_calldata], (*this)[EntityId::third_app_calldata_read_counts],
706 (*this)[EntityId::fourth_app_calldata], (*this)[EntityId::fourth_app_calldata_read_counts],
707 (*this)[EntityId::fifth_app_calldata], (*this)[EntityId::fifth_app_calldata_read_counts],
708 (*this)[EntityId::return_data], (*this)[EntityId::return_data_read_counts] };
712 return { (*this)[EntityId::kernel_calldata_inverses], (*this)[EntityId::first_app_calldata_inverses],
713 (*this)[EntityId::second_app_calldata_inverses], (*this)[EntityId::third_app_calldata_inverses],
714 (*this)[EntityId::fourth_app_calldata_inverses], (*this)[EntityId::fifth_app_calldata_inverses],
715 (*this)[EntityId::return_data_inverses] };
719 return { (*this)[EntityId::kernel_calldata_inverses], (*this)[EntityId::first_app_calldata_inverses],
720 (*this)[EntityId::second_app_calldata_inverses], (*this)[EntityId::third_app_calldata_inverses],
721 (*this)[EntityId::fourth_app_calldata_inverses], (*this)[EntityId::fifth_app_calldata_inverses],
722 (*this)[EntityId::return_data_inverses] };
726 return { (*this)[EntityId::kernel_calldata_indicator], (*this)[EntityId::first_app_calldata_indicator],
727 (*this)[EntityId::second_app_calldata_indicator], (*this)[EntityId::third_app_calldata_indicator],
728 (*this)[EntityId::fourth_app_calldata_indicator], (*this)[EntityId::fifth_app_calldata_indicator],
729 (*this)[EntityId::return_data_indicator] };
733 return { (*this)[EntityId::kernel_calldata_indicator], (*this)[EntityId::first_app_calldata_indicator],
734 (*this)[EntityId::second_app_calldata_indicator], (*this)[EntityId::third_app_calldata_indicator],
735 (*this)[EntityId::fourth_app_calldata_indicator], (*this)[EntityId::fifth_app_calldata_indicator],
736 (*this)[EntityId::return_data_indicator] };
740 return { (*this)[EntityId::q_l], (*this)[EntityId::q_r], (*this)[EntityId::q_o], (*this)[EntityId::q_4],
741 (*this)[EntityId::q_5], (*this)[EntityId::q_c], (*this)[EntityId::q_m] };
745 return { (*this)[EntityId::q_l], (*this)[EntityId::q_r], (*this)[EntityId::q_o], (*this)[EntityId::q_4],
746 (*this)[EntityId::q_5], (*this)[EntityId::q_c], (*this)[EntityId::q_m] };
756 static const std::vector<std::string> labels = {
764 "Q_BILINEAR_BATCHED_EQ",
780 "KERNEL_CALLDATA_INDICATOR",
782 "FIRST_APP_CALLDATA_INDICATOR",
783 "SECOND_APP_CALLDATA_INDICATOR",
784 "THIRD_APP_CALLDATA_INDICATOR",
785 "FOURTH_APP_CALLDATA_INDICATOR",
787 "FIFTH_APP_CALLDATA_INDICATOR",
788 "RETURN_DATA_INDICATOR",
789 "Q_POSEIDON2_EXTERNAL",
790 "Q_POSEIDON2_EXTERNAL_INITIAL",
791 "Q_POSEIDON2_QUAD_INTERNAL",
792 "Q_POSEIDON2_QUAD_INTERNAL_TERMINAL",
793 "Q_POSEIDON2_TRANSITION_ENTRY",
804 "KERNEL_CALLDATA_READ_COUNTS",
805 "KERNEL_CALLDATA_INVERSES",
806 "FIRST_APP_CALLDATA",
807 "FIRST_APP_CALLDATA_READ_COUNTS",
808 "FIRST_APP_CALLDATA_INVERSES",
809 "SECOND_APP_CALLDATA",
810 "SECOND_APP_CALLDATA_READ_COUNTS",
811 "SECOND_APP_CALLDATA_INVERSES",
812 "THIRD_APP_CALLDATA",
813 "THIRD_APP_CALLDATA_READ_COUNTS",
814 "THIRD_APP_CALLDATA_INVERSES",
815 "FOURTH_APP_CALLDATA",
816 "FOURTH_APP_CALLDATA_READ_COUNTS",
817 "FOURTH_APP_CALLDATA_INVERSES",
818 "FIFTH_APP_CALLDATA",
819 "FIFTH_APP_CALLDATA_READ_COUNTS",
820 "FIFTH_APP_CALLDATA_INVERSES",
822 "RETURN_DATA_READ_COUNTS",
823 "RETURN_DATA_INVERSES",
838 std::array<DataType, NUM_PRECOMPUTED_ENTITIES>
data{};
926 return { this->
q_m(), this->
q_l(), this->
q_r(), this->
q_o(), this->
q_4(), this->
q_c(), this->
q_5() };
930 return { this->
q_m(), this->
q_l(), this->
q_r(), this->
q_o(), this->
q_4(), this->
q_c(), this->
q_5() };
989 return { this->
q_l(), this->
q_r(), this->
q_o(), this->
q_4(), this->
q_5(), this->
q_c(), this->
q_m() };
993 return { this->
q_l(), this->
q_r(), this->
q_o(), this->
q_4(), this->
q_5(), this->
q_c(), this->
q_m() };
1002 static const std::vector<std::string> labels = {
1010 "Q_BILINEAR_BATCHED_EQ",
1026 "KERNEL_CALLDATA_INDICATOR",
1028 "FIRST_APP_CALLDATA_INDICATOR",
1029 "SECOND_APP_CALLDATA_INDICATOR",
1030 "THIRD_APP_CALLDATA_INDICATOR",
1031 "FOURTH_APP_CALLDATA_INDICATOR",
1033 "FIFTH_APP_CALLDATA_INDICATOR",
1034 "RETURN_DATA_INDICATOR",
1035 "Q_POSEIDON2_EXTERNAL",
1036 "Q_POSEIDON2_EXTERNAL_INITIAL",
1037 "Q_POSEIDON2_QUAD_INTERNAL",
1038 "Q_POSEIDON2_QUAD_INTERNAL_TERMINAL",
1039 "Q_POSEIDON2_TRANSITION_ENTRY",
1049 std::array<DataType, NUM_WITNESS_ENTITIES>
data{};
1177 static const std::vector<std::string> labels = {
1188 "KERNEL_CALLDATA_READ_COUNTS",
1189 "KERNEL_CALLDATA_INVERSES",
1190 "FIRST_APP_CALLDATA",
1191 "FIRST_APP_CALLDATA_READ_COUNTS",
1192 "FIRST_APP_CALLDATA_INVERSES",
1193 "SECOND_APP_CALLDATA",
1194 "SECOND_APP_CALLDATA_READ_COUNTS",
1195 "SECOND_APP_CALLDATA_INVERSES",
1196 "THIRD_APP_CALLDATA",
1197 "THIRD_APP_CALLDATA_READ_COUNTS",
1198 "THIRD_APP_CALLDATA_INVERSES",
1199 "FOURTH_APP_CALLDATA",
1200 "FOURTH_APP_CALLDATA_READ_COUNTS",
1201 "FOURTH_APP_CALLDATA_INVERSES",
1202 "FIFTH_APP_CALLDATA",
1203 "FIFTH_APP_CALLDATA_READ_COUNTS",
1204 "FIFTH_APP_CALLDATA_INVERSES",
1206 "RETURN_DATA_READ_COUNTS",
1207 "RETURN_DATA_INVERSES",
bb::field< bb::Bn254FrParams > FF
const DataType & w_l() const
const DataType & w_4() const
const DataType & q_bilinear_batched_eq() const
const DataType & fourth_app_calldata() const
DataType & q_poseidon2_external()
RefArray< const DataType, 4 > get_sigmas() const
auto get_selectors() const
RefArray< const DataType, 7 > get_databus_selectors() const
const DataType & q_busread() const
const DataType & z_perm() const
const DataType & lagrange_ecc_op() const
RefArray< const DataType, 7 > get_databus_indicators() const
RefArray< DataType, 4 > get_wires()
static const std::vector< std::string > & get_labels()
const DataType & id_4() const
const DataType & w_r_shift() const
DataType & kernel_calldata_read_counts()
const DataType & fifth_app_calldata_inverses() const
const DataType & q_memory() const
DataType & q_delta_range()
const DataType & fourth_app_calldata_read_counts() const
const DataType & w_4_shift() const
RefArray< DataType, 4 > get_ecc_op_wires()
const DataType & first_app_calldata() const
const DataType & q_m() const
DataType & first_app_calldata_inverses()
const DataType & sigma_2() const
DataType & kernel_calldata_indicator()
DataType & second_app_calldata_inverses()
DataType & first_app_calldata_read_counts()
DataType & fourth_app_calldata_inverses()
DataType & lagrange_ecc_op()
const DataType & third_app_calldata_inverses() const
const DataType & id_1() const
std::span< DataType, NUM_SHIFTED_ENTITIES > get_shifted()
DataType & fifth_app_calldata_read_counts()
const DataType & q_c() const
std::span< const DataType, NUM_UNSHIFTED_ENTITIES > get_unshifted() const
const DataType & lagrange_first() const
const DataType & third_app_calldata_indicator() const
RefArray< DataType, 4 > get_ids()
std::array< DataType, NUM_ALL_ENTITIES > data
RefArray< const DataType, 7 > get_non_gate_selectors() const
const DataType & q_l() const
DataType & ecc_op_wire_2()
RefArray< DataType, 7 > get_databus_inverses()
DataType & ecc_op_wire_4()
const DataType & second_app_calldata_read_counts() const
RefArray< const DataType, 4 > get_ecc_op_wires() const
RefArray< const DataType, 14 > get_databus_entities() const
const DataType & q_poseidon2_transition_entry() const
RefArray< DataType, 4 > get_sigmas()
const DataType & fourth_app_calldata_indicator() const
std::span< const DataType, NUM_ALL_ENTITIES > get_all() const
DataType & operator[](EntityId id)
const DataType & kernel_calldata_indicator() const
const DataType & fifth_app_calldata() const
DataType & second_app_calldata_read_counts()
DataType & z_perm_shift()
const DataType & third_app_calldata() const
DataType & ecc_op_wire_3()
const DataType & q_elliptic() const
const DataType & fifth_app_calldata_indicator() const
const DataType & w_o_shift() const
std::span< DataType, NUM_WITNESS_ENTITIES > get_witness()
DataType & second_app_calldata_indicator()
const DataType & q_poseidon2_quad_internal() const
const DataType & return_data_inverses() const
const DataType & sigma_3() const
DataType & first_app_calldata_indicator()
DataType & ecc_op_wire_1()
const DataType & second_app_calldata_indicator() const
DataType & fifth_app_calldata_inverses()
std::span< const DataType, NUM_PRECOMPUTED_ENTITIES > get_precomputed() const
DataType & kernel_calldata_inverses()
DataType & return_data_read_counts()
DataType & q_poseidon2_transition_entry()
DataType & third_app_calldata()
const DataType & return_data_indicator() const
DataType & lagrange_last()
const DataType & q_poseidon2_external() const
std::span< DataType, NUM_ALL_ENTITIES > get_all()
const DataType & w_r() const
DataType & fourth_app_calldata()
const DataType & second_app_calldata() const
DataType & fourth_app_calldata_read_counts()
const DataType & ecc_op_wire_1() const
const DataType & sigma_4() const
RefArray< DataType, 7 > get_non_gate_selectors()
DataType & q_poseidon2_external_initial()
const DataType & first_app_calldata_inverses() const
const DataType & kernel_calldata_inverses() const
const DataType & q_delta_range() const
DataType & fourth_app_calldata_indicator()
RefArray< const DataType, 7 > get_databus_inverses() const
const DataType & ecc_op_wire_3() const
RefArray< const DataType, 4 > get_wires() const
DataType & first_app_calldata()
RefArray< DataType, 14 > get_databus_entities()
DataType & lagrange_first()
std::span< DataType, NUM_SHIFTED_ENTITIES > get_to_be_shifted()
DataType & kernel_calldata()
DataType & fifth_app_calldata()
DataType & third_app_calldata_inverses()
const DataType & databus_id() const
const DataType & w_o() const
const DataType & w_l_shift() const
const DataType & q_poseidon2_external_initial() const
const DataType & lagrange_last() const
const DataType & return_data() const
RefArray< DataType, 7 > get_databus_indicators()
const DataType & z_perm_shift() const
const DataType & q_r() const
DataType & q_bilinear_batched_eq()
const DataType & q_4() const
const DataType & sigma_1() const
const DataType & fifth_app_calldata_read_counts() const
const DataType & id_3() const
const DataType & ecc_op_wire_4() const
DataType & third_app_calldata_read_counts()
std::span< const DataType, NUM_SHIFTED_ENTITIES > get_to_be_shifted() const
const DataType & q_poseidon2_quad_internal_terminal() const
const DataType & kernel_calldata_read_counts() const
std::span< const DataType, NUM_WITNESS_ENTITIES > get_witness() const
DataType & third_app_calldata_indicator()
const DataType & second_app_calldata_inverses() const
std::span< DataType, NUM_PRECOMPUTED_ENTITIES > get_precomputed()
RefArray< const DataType, 11 > get_gate_selectors() const
const DataType & id_2() const
DataType & q_poseidon2_quad_internal()
const DataType & q_o() const
const DataType & kernel_calldata() const
const DataType & return_data_read_counts() const
const DataType & q_5() const
std::span< const DataType, NUM_SHIFTED_ENTITIES > get_shifted() const
DataType & second_app_calldata()
RefArray< const DataType, 4 > get_ids() const
std::span< DataType, NUM_UNSHIFTED_ENTITIES > get_unshifted()
DataType & return_data_indicator()
const DataType & third_app_calldata_read_counts() const
const DataType & first_app_calldata_read_counts() const
RefArray< DataType, 7 > get_databus_selectors()
const DataType & first_app_calldata_indicator() const
DataType & q_poseidon2_quad_internal_terminal()
DataType & return_data_inverses()
const DataType & q_arith() const
RefArray< DataType, 11 > get_gate_selectors()
const DataType & ecc_op_wire_2() const
DataType & fifth_app_calldata_indicator()
const DataType & operator[](EntityId id) const
const DataType & fourth_app_calldata_inverses() const
const DataType & q_poseidon2_external_initial() const
DataType & third_app_calldata_indicator()
const DataType & q_poseidon2_transition_entry() const
RefArray< const DataType, 4 > get_sigmas() const
static constexpr size_t size()
const DataType & q_arith() const
const DataType & fifth_app_calldata_indicator() const
RefArray< const DataType, 11 > get_gate_selectors() const
DataType & kernel_calldata_indicator()
const DataType & lagrange_first() const
RefArray< DataType, 4 > get_ids()
const DataType & sigma_1() const
RefArray< const DataType, 7 > get_databus_selectors() const
const DataType & fourth_app_calldata_indicator() const
DataType & q_poseidon2_external()
const DataType & q_o() const
DataType & fourth_app_calldata_indicator()
const DataType & lagrange_last() const
const DataType & q_elliptic() const
static const std::vector< std::string > & get_labels()
const DataType & q_5() const
DataType & q_bilinear_batched_eq()
RefArray< const DataType, 4 > get_ids() const
const DataType & q_l() const
std::span< DataType, NUM_PRECOMPUTED_ENTITIES > get_all()
const DataType & return_data_indicator() const
const DataType & q_delta_range() const
std::array< DataType, NUM_PRECOMPUTED_ENTITIES > data
const DataType & q_m() const
DataType & q_delta_range()
DataType & lagrange_first()
DataType & first_app_calldata_indicator()
const DataType & q_c() const
const DataType & second_app_calldata_indicator() const
bool operator==(const PrecomputedEntities &) const =default
const DataType & id_1() const
const DataType & kernel_calldata_indicator() const
RefArray< DataType, 7 > get_databus_selectors()
DataType & q_poseidon2_transition_entry()
DataType & q_poseidon2_quad_internal_terminal()
DataType & q_poseidon2_external_initial()
const DataType & first_app_calldata_indicator() const
const DataType & sigma_4() const
const DataType & q_bilinear_batched_eq() const
RefArray< const DataType, 7 > get_databus_indicators() const
DataType & return_data_indicator()
DataType & lagrange_ecc_op()
RefArray< DataType, 4 > get_sigmas()
const DataType & q_poseidon2_quad_internal_terminal() const
const DataType & databus_id() const
const DataType & q_poseidon2_external() const
const DataType & sigma_2() const
const DataType & id_4() const
const DataType & q_memory() const
auto get_selectors() const
const DataType & id_3() const
RefArray< DataType, 7 > get_non_gate_selectors()
DataType & second_app_calldata_indicator()
const DataType & sigma_3() const
const DataType & q_busread() const
RefArray< DataType, 7 > get_databus_indicators()
DataType & fifth_app_calldata_indicator()
RefArray< const DataType, 7 > get_non_gate_selectors() const
DataType & lagrange_last()
const DataType & q_4() const
const DataType & lagrange_ecc_op() const
std::span< const DataType, NUM_PRECOMPUTED_ENTITIES > get_all() const
RefArray< DataType, 11 > get_gate_selectors()
const DataType & q_poseidon2_quad_internal() const
const DataType & q_r() const
DataType & q_poseidon2_quad_internal()
const DataType & third_app_calldata_indicator() const
const DataType & id_2() const
const DataType & return_data_inverses() const
const DataType & second_app_calldata_read_counts() const
DataType & first_app_calldata_inverses()
const DataType & first_app_calldata_inverses() const
const DataType & fifth_app_calldata() const
RefArray< DataType, 4 > get_ecc_op_wires()
const DataType & ecc_op_wire_2() const
DataType & second_app_calldata_inverses()
const DataType & return_data() const
DataType & third_app_calldata_read_counts()
const DataType & fourth_app_calldata_inverses() const
const DataType & fourth_app_calldata_read_counts() const
const DataType & w_4() const
RefArray< const DataType, 14 > get_databus_entities() const
const DataType & ecc_op_wire_3() const
const DataType & w_o() const
RefArray< DataType, 7 > get_databus_inverses()
const DataType & w_r() const
RefArray< const DataType, 4 > get_ecc_op_wires() const
DataType & fourth_app_calldata_inverses()
DataType & ecc_op_wire_2()
std::array< DataType, NUM_WITNESS_ENTITIES > data
const DataType & third_app_calldata_inverses() const
DataType & second_app_calldata_read_counts()
const DataType & fifth_app_calldata_inverses() const
RefArray< DataType, 14 > get_databus_entities()
const DataType & z_perm() const
static constexpr size_t size()
DataType & fifth_app_calldata_read_counts()
const DataType & kernel_calldata_read_counts() const
std::span< const DataType, NUM_WITNESS_ENTITIES > get_all() const
RefArray< const DataType, 5 > get_to_be_shifted() const
const DataType & first_app_calldata() const
DataType & fourth_app_calldata()
DataType & fifth_app_calldata()
const DataType & third_app_calldata_read_counts() const
DataType & fifth_app_calldata_inverses()
const DataType & second_app_calldata_inverses() const
DataType & kernel_calldata_read_counts()
RefArray< DataType, 5 > get_to_be_shifted()
RefArray< const DataType, 7 > get_databus_inverses() const
const DataType & return_data_read_counts() const
static const std::vector< std::string > & get_labels()
DataType & ecc_op_wire_4()
const DataType & third_app_calldata() const
DataType & return_data_inverses()
const DataType & kernel_calldata() const
RefArray< DataType, 4 > get_wires()
const DataType & first_app_calldata_read_counts() const
DataType & ecc_op_wire_3()
DataType & fourth_app_calldata_read_counts()
std::span< DataType, NUM_WITNESS_ENTITIES > get_all()
DataType & third_app_calldata_inverses()
DataType & kernel_calldata_inverses()
const DataType & ecc_op_wire_1() const
const DataType & w_l() const
DataType & kernel_calldata()
const DataType & second_app_calldata() const
DataType & ecc_op_wire_1()
DataType & third_app_calldata()
DataType & first_app_calldata()
DataType & return_data_read_counts()
RefArray< const DataType, 4 > get_wires() const
const DataType & fourth_app_calldata() const
const DataType & kernel_calldata_inverses() const
DataType & first_app_calldata_read_counts()
bool operator==(const WitnessEntities &) const =default
const DataType & fifth_app_calldata_read_counts() const
DataType & second_app_calldata()
const DataType & ecc_op_wire_4() const
static constexpr size_t NUM_ALL_ENTITIES
std::tuple< bb::ArithmeticRelation< FF >, bb::BilinearOrBatchedEqCheckRelation< FF >, bb::UltraPermutationRelation< FF >, bb::DeltaRangeConstraintRelation< FF >, bb::EllipticRelation< FF >, bb::MemoryRelation< 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_UNSHIFTED_ENTITIES
static constexpr size_t NUM_MASKING_ENTITIES
static constexpr std::array< size_t, NUM_BUS_COLUMNS > BUILDER_BUS_INDICES
static constexpr size_t NUM_SHIFTED_ENTITIES
static constexpr std::array< GateKind, 11 > GATE_KINDS
static auto get_gate_blocks(TraceBlocks const &blocks)
static auto get_gate_blocks(TraceBlocks &blocks)
static constexpr bool HasDataBus
static constexpr bool HasElliptic
static constexpr bool HasMemory
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_WITNESS_ENTITIES
static constexpr std::array< DuplicatePair, NUM_SHIFTED_ENTITIES > REPEATED_COMMITMENT_PAIRS
static constexpr size_t NUM_PRECOMPUTED_ENTITIES
static constexpr bool HasEccOpQueue
static constexpr size_t NUM_COMMITTED_WITNESS_ENTITIES
static auto get_block_non_gate_selectors(TraceBlock &block)
static constexpr size_t NUM_BUS_COLUMNS
static constexpr bool HasLogDerivLookup
static constexpr RepeatedCommitmentsData REPEATED_COMMITMENTS
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.