5#include "gtest/gtest.h"
45 auto unshifted_polynomial =
Polynomial(accumulator.non_shifted_polynomial);
46 auto shifted_polynomial =
Polynomial(accumulator.shifted_polynomial);
47 unshifted_polynomial.increase_virtual_size(1 <<
static_cast<uint
>(accumulator.challenge.size()));
48 shifted_polynomial.increase_virtual_size(1 <<
static_cast<uint
>(accumulator.challenge.size()));
49 if (unshifted_polynomial.evaluate_mle(accumulator.challenge) != accumulator.non_shifted_evaluation) {
50 info(
"Mismatch between batched unshifted evaluation and evaluation of the batched unshifted polynomial.");
53 if (shifted_polynomial.evaluate_mle(accumulator.challenge,
true) != accumulator.shifted_evaluation) {
54 info(
"Mismatch between batched shifted evaluation and evaluation of the batched shifted polynomial.");
57 if (
ck.commit(accumulator.non_shifted_polynomial) != accumulator.non_shifted_commitment) {
58 info(
"Mismatch between the commitment to the batched unshifted polynomial and the batched unshifted "
62 if (
ck.commit(accumulator.shifted_polynomial) != accumulator.shifted_commitment) {
63 info(
"Mismatch between the commitment to the batched shifted polynomial and the batched shifted "
79 for (
size_t i = 0; i < num_instances; ++i) {
93 auto accumulator = TestFixture::fold_session(1);
94 EXPECT_TRUE(TestFixture::validate_accumulator(accumulator));
100 for (
size_t num_instances = 2; num_instances <= CHONK_MAX_CLAIMS_PER_KERNEL; ++num_instances) {
101 auto accumulator = TestFixture::fold_session(num_instances);
102 EXPECT_TRUE(TestFixture::validate_accumulator(accumulator)) <<
"width " << num_instances;
109 for (
size_t num_instances = 2; num_instances < CHONK_MAX_CLAIMS_PER_KERNEL; ++num_instances) {
110 auto previous_accumulator = TestFixture::fold_session(1);
111 auto accumulator = TestFixture::fold_session(num_instances,
std::move(previous_accumulator));
112 EXPECT_TRUE(TestFixture::validate_accumulator(accumulator)) <<
"width " << num_instances;
120 auto previous_accumulator = TestFixture::fold_session(1);
122 auto accumulator = TestFixture::fold_session(2,
std::move(previous_accumulator));
123 EXPECT_FALSE(TestFixture::validate_accumulator(accumulator));
static void SetUpTestSuite()
static Accumulator fold_session(size_t num_instances, std::optional< Accumulator > previous_accumulator=std::nullopt)
Run a folding session: accumulate num_instances fresh instances on a new transcript,...
static constexpr size_t LOG_NUM_GATES
static bool validate_accumulator(Accumulator &accumulator)
Check that an accumulator's claimed evaluations and commitments are consistent with its polynomials.
static std::shared_ptr< ProverInstance > generate_new_instance(size_t log_num_gates=LOG_NUM_GATES)
Flavor::CommitmentKey CommitmentKey
Common transcript class for both parties. Stores the data for the current round, as well as the manif...
CommitmentKey object over a pairing group 𝔾₁.
ECCVMCircuitBuilder CircuitBuilder
bb::CommitmentKey< Curve > CommitmentKey
HyperNova folding prover. Folds circuit instances into accumulators, deferring PCS verification.
MultilinearBatchingProverClaim Accumulator
std::pair< HonkProof, Accumulator > finalize(std::optional< Accumulator > previous_accumulator=std::nullopt)
Batch the previous accumulator (if any) and the cached claims into a single accumulator.
MegaFlavor::Transcript Transcript
static void add_arithmetic_gates_with_public_inputs(Builder &builder, const size_t num_gates=4)
Add a specified number of arithmetic gates (with public inputs) to the provided circuit.
static void add_lookup_gates(Builder &builder, size_t num_iterations=1)
Add lookup gates using the uint32 XOR lookup table (table size 4096)
static void add_arithmetic_gates(Builder &builder, const size_t num_gates=4)
Add a specified number of arithmetic gates to the provided circuit.
Contains all the information required by a Honk prover to create a proof, constructed from a finalize...
::testing::Types< MegaKernelFlavor, MegaAppFlavor > ProverTestFlavors
std::filesystem::path bb_crs_path()
void init_file_crs_factory(const std::filesystem::path &path)
Entry point for Barretenberg command-line interface.
TYPED_TEST_SUITE(CommitmentKeyTest, Curves)
TYPED_TEST(CommitmentKeyTest, CommitToZeroPoly)
CommitmentKey< Curve > ck
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Prover's claim for multilinear batching - contains polynomials and their evaluation claims.
static field random_element(numeric::RNG *engine=nullptr) noexcept