54 for (
size_t idx = 0; idx < num_subtables_up_to_tail; ++idx) {
60 op_queue->construct_zk_columns();
68 BB_ASSERT_LTE(op_queue->get_current_subtable_size(), bb::HIDING_KERNEL_ULTRA_OPS);
69 while (op_queue->get_current_subtable_size() < bb::HIDING_KERNEL_ULTRA_OPS) {
70 op_queue->no_op_ultra_only();
78 RecursiveBuilder outer_circuit;
81 MergeProver merge_prover{ op_queue, prover_transcript };
87 auto t_current = op_queue->construct_current_ultra_ops_subtable_columns();
88 auto T_prev = op_queue->construct_table_columns_up_to_tail();
90 merge_commitments.
t_commitments[idx] = merge_prover.pcs_commitment_key.commit(t_current[idx]);
91 merge_commitments.
T_prev_commitments[idx] = merge_prover.pcs_commitment_key.commit(T_prev[idx]);
93 RecursiveMergeVerifier::Commitment::from_witness(&outer_circuit, merge_commitments.
t_commitments[idx]);
94 recursive_merge_commitments.
T_prev_commitments[idx] = RecursiveMergeVerifier::Commitment::from_witness(
98 recursive_merge_commitments.
t_commitments[idx].unset_free_witness_tag();
106 auto [pairing_points, merged_commitments, reduction_succeeded] =
107 verifier.reduce_to_pairing_check(stdlib_merge_proof, recursive_merge_commitments);
113 pairing_points.fix_witness();
116 EXPECT_FALSE(outer_circuit.failed());