118 { verifier_inst_1, verifier_inst_2 },
120 auto folding_proof = folding_prover.
prove();
131 &folding_circuit, recursive_verifier_inst_1, recursive_vk_and_hash_2, recursive_transcript
134 for (
size_t idx = 0; idx < num_verifiers; idx++) {
136 accumulator = verifier.verify_folding_proof(stdlib_proof);
137 if (idx < num_verifiers - 1) {
140 &folding_circuit, accumulator, recursive_vk_and_hash, recursive_transcript
147 folding_circuit.finalize_circuit(
true);
148 info(
"Folding Recursive Verifier: num gates finalized = ", folding_circuit.num_gates);
150 info(
"Dyadic size of verifier circuit: ", decider_pk->dyadic_size());
155 bool verified = verifier.template verify_proof<bb::DefaultIO>(proof).result;
157 ASSERT_TRUE(verified);
159 EXPECT_EQ(folding_circuit.failed(),
false) << folding_circuit.err();
161 auto variables_in_one_gate = graph.get_variables_in_one_gate();
162 EXPECT_EQ(variables_in_one_gate.size(), 0);
163 auto connected_components = graph.find_connected_components(
false);
164 EXPECT_EQ(connected_components.size(), 1);
165 if (connected_components.size() > 1) {
166 graph.print_connected_components_info();
187 { verifier_inst_1, verifier_inst_2 },
189 auto folding_proof = folding_prover.
prove();
198 recursive_verifier_inst_1,
199 recursive_vk_and_hash_2,
202 auto recursive_verifier_native_accum = verifier.verify_folding_proof(stdlib_proof);
203 auto native_verifier_acc =
210 native_folding_verifier.
transcript->enable_manifest();
211 auto verifier_accumulator = native_folding_verifier.verify_folding_proof(folding_proof.proof);
214 auto native_accum_hash = verifier_accumulator->hash_through_transcript(
"", *native_decider_transcript);
215 native_decider_transcript->add_to_hash_buffer(
"accum_hash", native_accum_hash);
217 InnerDeciderProver decider_prover(folding_proof.accumulator, native_decider_transcript);
225 auto stdlib_accum_hash = stdlib_verifier_acc->hash_through_transcript(
"", *stdlib_verifier_transcript);
228 stdlib_verifier_transcript->add_to_hash_buffer(
"accum_hash", stdlib_accum_hash);
230 auto pairing_points = decider_verifier.
verify_proof(decider_proof);
237 info(
"Decider Recursive Verifier: num gates = ", decider_circuit.num_gates);
239 EXPECT_EQ(decider_circuit.failed(),
false) << decider_circuit.err();
241 auto variables_in_one_gate = graph.get_variables_in_one_gate();
242 EXPECT_EQ(variables_in_one_gate.size(), 0);
243 auto connected_components = graph.find_connected_components(
false);
244 EXPECT_EQ(connected_components.size(), 1);
245 if (variables_in_one_gate.size() > 0) {
246 for (
const auto& elem : variables_in_one_gate) {
247 info(
"elem == ", elem);