Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: protogalaxy relations #1897

Merged
merged 49 commits into from
Sep 7, 2023
Merged
Show file tree
Hide file tree
Changes from 47 commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
021adfc
Initial work Lagrange poly def.
codygunton Aug 24, 2023
868227b
Refactor to all compile time.
codygunton Aug 24, 2023
06a796b
Refactor to subclass.
codygunton Aug 24, 2023
9e44ce5
Light renaming and add comments.
codygunton Aug 28, 2023
e027cb4
Cleanup
codygunton Aug 30, 2023
cfad8ad
Efficient 2_to_N with benchmarks.
codygunton Aug 30, 2023
f707120
consts, std, etc.
codygunton Aug 30, 2023
2f2def3
Add relaiton benchmarks.
codygunton Aug 30, 2023
0ee5f81
Clean up includes.
codygunton Aug 31, 2023
e28045c
Remove more includes
codygunton Aug 31, 2023
6fc8b26
Rename test suite.
codygunton Aug 31, 2023
6688556
Rename tests--even better.
codygunton Aug 31, 2023
0b545df
Move multivariates.test.cpp
codygunton Aug 31, 2023
ce06bee
Clean up includes.
codygunton Aug 31, 2023
b148b49
...clean up includes.
codygunton Aug 31, 2023
9daf7d7
Move up: univariate, barycentric, pow.
codygunton Aug 31, 2023
8ef4655
Move univariate, pow, barycentric to bb namespace.
codygunton Aug 31, 2023
4e6be56
Link only polynomaials.
codygunton Aug 31, 2023
8e9118f
Merge remote-tracking branch 'origin/master' into cg/pg-relations-ref…
codygunton Aug 31, 2023
25c4440
Prune includes
codygunton Aug 31, 2023
3a9307f
Refactor to be indep of flavor, hence Honk.
codygunton Aug 31, 2023
72cad4c
Rename file
codygunton Aug 31, 2023
defab37
Update comment
codygunton Aug 31, 2023
7a803aa
Refactor ultra relation consistency tests.
codygunton Aug 31, 2023
69ab878
Change relations namespace.
codygunton Aug 31, 2023
b4d11c2
Move relations to proof_system.
codygunton Sep 1, 2023
9929cbc
Fix test.
codygunton Sep 1, 2023
77bf2ad
Resolve some WORKTODO.
codygunton Sep 1, 2023
784e2c5
Formatting
codygunton Sep 1, 2023
65da597
Clarify relation inheritance.
codygunton Sep 1, 2023
3b09315
Delete stale comment.
codygunton Sep 1, 2023
8459d7d
Update comments.
codygunton Sep 1, 2023
8917f09
More renaming for clarity.
codygunton Sep 1, 2023
cd71cb9
Rename templates for clarity.
codygunton Sep 1, 2023
b808419
Rename template instantiations.
codygunton Sep 1, 2023
5d68b6e
Merge remote-tracking branch 'origin/master' into cg/pg-relations-ref…
codygunton Sep 1, 2023
11c3aa6
Remove unused file.
codygunton Sep 1, 2023
a669bc1
Generalize benchmark comparison script.
codygunton Sep 1, 2023
91dd3d4
Remove utilities
codygunton Sep 1, 2023
fa1f8ad
Nix relations namespace.
codygunton Sep 5, 2023
a37913b
Prune includes.
codygunton Sep 5, 2023
ce3a6c3
Remove WORKTODOs
codygunton Sep 5, 2023
45f726b
Remove worktodo (explained above).
codygunton Sep 5, 2023
733ae6a
dirty move.
codygunton Sep 5, 2023
3d73f64
clean move
codygunton Sep 5, 2023
cc33504
Bring improved `extend` to RunTime class
codygunton Sep 5, 2023
70dec35
Merge branch 'master' into cg/pg-relations-refactor
codygunton Sep 5, 2023
ec2a4c8
Respond to review.
codygunton Sep 7, 2023
7ddecb5
Merge branch 'master' into cg/pg-relations-refactor
codygunton Sep 7, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
add_subdirectory(decrypt_bench)
add_subdirectory(pippenger_bench)
add_subdirectory(plonk_bench)
add_subdirectory(honk_bench)
add_subdirectory(honk_bench)
add_subdirectory(relations_bench)
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#!/bin/bash

# This script is used to compare the honk benchmarks between baseline (default: master) and
# This script is used to compare a suite of benchmarks between baseline (default: master) and
# the branch from which the script is run. Simply check out the branch of interest, ensure
# it is up to date with local master, and run the script.

# Specify the benchmark suite and the "baseline" branch against which to compare
BENCH_TARGET="ultra_honk_bench"
BENCH_TARGET=${1:?"Please provide the name of a benchmark target."}
BASELINE_BRANCH="master"

echo -e "\nComparing $BENCH_TARGET between $BASELINE_BRANCH and current branch:"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Each source represents a separate benchmark suite
set(BENCHMARK_SOURCES
barycentric.bench.cpp
relations.bench.cpp
)

# Required libraries for benchmark suites
set(LINKED_LIBRARIES
polynomials
benchmark::benchmark
)

# Add executable and custom target for each suite, e.g. standard_honk_bench
foreach(BENCHMARK_SOURCE ${BENCHMARK_SOURCES})
get_filename_component(BENCHMARK_NAME ${BENCHMARK_SOURCE} NAME_WE) # extract name without extension
add_executable(${BENCHMARK_NAME}_bench main.bench.cpp ${BENCHMARK_SOURCE})
target_link_libraries(${BENCHMARK_NAME}_bench ${LINKED_LIBRARIES})
add_custom_target(run_${BENCHMARK_NAME} COMMAND ${BENCHMARK_NAME} WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
endforeach()
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#include "barretenberg/ecc/curves/bn254/fr.hpp"
#include "barretenberg/polynomials/barycentric.hpp"
#include <benchmark/benchmark.h>

using namespace benchmark;

namespace {
auto& engine = numeric::random::get_debug_engine();
}

using FF = barretenberg::fr;
using barretenberg::Univariate;
using barretenberg::BarycentricData;


namespace proof_system::benchmark {

void extend_2_to_6(State& state) noexcept
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Used this to compare the optimization I put in BarycentricData to make extension from degree 2 very efficient. It gives approximately a 10x improvement, in one measurement, 417ns to 40ns.

{
auto univariate = Univariate<FF, 2>::get_random();
BarycentricData<FF, 2, 6> barycentric_2_to_6;
for (auto _ : state)
{
DoNotOptimize(barycentric_2_to_6.extend(univariate));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's the purpose of this DoNotOptimize here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From https://github.com/google/benchmark/blob/main/docs/user_guide.md#preventing-optimization

DoNotOptimize() forces the result of to be stored in either memory or a register.

Since the result of extend is not used, the compiler would most likely optimize away the function call, meaning at the benchmark would measure the cost of doing nothing.

}
}
BENCHMARK(extend_2_to_6);

} // namespace proof_system::benchmark
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#include <benchmark/benchmark.h>

BENCHMARK_MAIN();
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
#include "barretenberg/honk/flavor/goblin_ultra.hpp"
#include "barretenberg/honk/flavor/standard.hpp"
#include "barretenberg/honk/flavor/ultra.hpp"
#include "barretenberg/proof_system/relations/arithmetic_relation.hpp"
#include "barretenberg/proof_system/relations/auxiliary_relation.hpp"
#include "barretenberg/proof_system/relations/ecc_op_queue_relation.hpp"
#include "barretenberg/proof_system/relations/elliptic_relation.hpp"
#include "barretenberg/proof_system/relations/gen_perm_sort_relation.hpp"
#include "barretenberg/proof_system/relations/lookup_relation.hpp"
#include "barretenberg/proof_system/relations/permutation_relation.hpp"
#include "barretenberg/proof_system/relations/ultra_arithmetic_relation.hpp"
#include <benchmark/benchmark.h>

namespace {
auto& engine = numeric::random::get_debug_engine();
}

namespace proof_system::benchmark::relations {

using FF = barretenberg::fr;

template <typename Flavor, typename Relation> void execute_relation(::benchmark::State& state)
{
// Generate beta and gamma
auto beta = FF::random_element();
auto gamma = FF::random_element();
auto public_input_delta = FF::random_element();

RelationParameters<FF> params{
.beta = beta,
.gamma = gamma,
.public_input_delta = public_input_delta,
};

using ClaimedEvaluations = typename Flavor::ClaimedEvaluations;
using RelationValues = typename Relation::RelationValues;

// Extract an array containing all the polynomial evaluations at a given row i
ClaimedEvaluations new_value;
// Define the appropriate RelationValues type for this relation and initialize to zero
RelationValues accumulator;
// Evaluate each constraint in the relation and check that each is satisfied

Relation relation;
for (auto _ : state) {
relation.add_full_relation_value_contribution(accumulator, new_value, params);
}
}

void arithmetic_relation(::benchmark::State& state) noexcept
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We'll want to measure how the relations improve as we optimize.

{
execute_relation<honk::flavor::Standard, ArithmeticRelation<FF>>(state);
}
BENCHMARK(arithmetic_relation);

void auxiliary_relation(::benchmark::State& state) noexcept
{
execute_relation<honk::flavor::Ultra, AuxiliaryRelation<FF>>(state);
}
BENCHMARK(auxiliary_relation);

void elliptic_relation(::benchmark::State& state) noexcept
{
execute_relation<honk::flavor::Ultra, EllipticRelation<FF>>(state);
}
BENCHMARK(elliptic_relation);

void ecc_op_queue_relation(::benchmark::State& state) noexcept
{
execute_relation<honk::flavor::GoblinUltra, EccOpQueueRelation<FF>>(state);
}
BENCHMARK(ecc_op_queue_relation);

void gen_perm_sort_relation(::benchmark::State& state) noexcept
{
execute_relation<honk::flavor::Ultra, GenPermSortRelation<FF>>(state);
}
BENCHMARK(gen_perm_sort_relation);

void lookup_relation(::benchmark::State& state) noexcept
{
execute_relation<honk::flavor::Ultra, LookupRelation<FF>>(state);
}
BENCHMARK(lookup_relation);

void permutation_relation(::benchmark::State& state) noexcept
{
execute_relation<honk::flavor::Standard, PermutationRelation<FF>>(state);
}
BENCHMARK(permutation_relation);

void ultra_arithmetic_relation(::benchmark::State& state) noexcept
{
execute_relation<honk::flavor::Ultra, UltraArithmeticRelation<FF>>(state);
}
BENCHMARK(ultra_arithmetic_relation);

} // namespace proof_system::benchmark::relations
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ template <StandardFlavor Flavor> class StandardComposer_ {
std::shared_ptr<VerificationKey> verification_key;

// The crs_factory holds the path to the srs and exposes methods to extract the srs elements
std::shared_ptr<srs::factories::CrsFactory<typename Flavor::Curve>> crs_factory_;
std::shared_ptr<barretenberg::srs::factories::CrsFactory<typename Flavor::Curve>> crs_factory_;

// The commitment key is passed to the prover but also used herein to compute the verfication key commitments
std::shared_ptr<CommitmentKey> commitment_key;
Expand All @@ -47,11 +47,11 @@ template <StandardFlavor Flavor> class StandardComposer_ {
}
}

StandardComposer_(std::shared_ptr<srs::factories::CrsFactory<typename Flavor::Curve>> crs_factory)
StandardComposer_(std::shared_ptr<barretenberg::srs::factories::CrsFactory<typename Flavor::Curve>> crs_factory)
: crs_factory_(std::move(crs_factory))
{}

StandardComposer_(std::unique_ptr<srs::factories::CrsFactory<typename Flavor::Curve>>&& crs_factory)
StandardComposer_(std::unique_ptr<barretenberg::srs::factories::CrsFactory<typename Flavor::Curve>>&& crs_factory)
: crs_factory_(std::move(crs_factory))
{}
StandardComposer_(std::shared_ptr<ProvingKey> p_key, std::shared_ptr<VerificationKey> v_key)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@

#include "barretenberg/honk/composer/standard_composer.hpp"
#include "barretenberg/honk/proof_system/prover.hpp"
#include "barretenberg/honk/sumcheck/relations/permutation_relation.hpp"
#include "barretenberg/honk/sumcheck/relations/relation_parameters.hpp"
#include "barretenberg/proof_system/relations/permutation_relation.hpp"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I moved the relations to the proof_system module because they will eventually be used to implement the check_circuit logic, starting with Zac's ECCVM code.

#include "barretenberg/proof_system/relations/relation_parameters.hpp"
#include "barretenberg/honk/sumcheck/sumcheck_round.hpp"
#include "barretenberg/honk/utils/grand_product_delta.hpp"
#include "barretenberg/numeric/uint256/uint256.hpp"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
#include "barretenberg/honk/composer/ultra_composer.hpp"
#include "barretenberg/honk/proof_system/prover.hpp"
#include "barretenberg/honk/proof_system/ultra_prover.hpp"
#include "barretenberg/honk/sumcheck/relations/permutation_relation.hpp"
#include "barretenberg/honk/sumcheck/relations/relation_parameters.hpp"
#include "barretenberg/proof_system/relations/permutation_relation.hpp"
#include "barretenberg/proof_system/relations/relation_parameters.hpp"
#include "barretenberg/honk/sumcheck/sumcheck_round.hpp"
#include "barretenberg/honk/utils/grand_product_delta.hpp"
#include "barretenberg/numeric/uint256/uint256.hpp"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,16 @@
#pragma once
#include "barretenberg/ecc/curves/bn254/g1.hpp"
#include "barretenberg/honk/pcs/kzg/kzg.hpp"
#include "barretenberg/honk/sumcheck/polynomials/barycentric_data.hpp"
#include "barretenberg/honk/sumcheck/polynomials/univariate.hpp"
#include "barretenberg/honk/sumcheck/relations/auxiliary_relation.hpp"
#include "barretenberg/honk/sumcheck/relations/ecc_op_queue_relation.hpp"
#include "barretenberg/honk/sumcheck/relations/elliptic_relation.hpp"
#include "barretenberg/honk/sumcheck/relations/gen_perm_sort_relation.hpp"
#include "barretenberg/honk/sumcheck/relations/lookup_relation.hpp"
#include "barretenberg/honk/sumcheck/relations/permutation_relation.hpp"
#include "barretenberg/honk/sumcheck/relations/ultra_arithmetic_relation.hpp"
#include "barretenberg/proof_system/relations/auxiliary_relation.hpp"
#include "barretenberg/proof_system/relations/ecc_op_queue_relation.hpp"
#include "barretenberg/proof_system/relations/elliptic_relation.hpp"
#include "barretenberg/proof_system/relations/gen_perm_sort_relation.hpp"
#include "barretenberg/proof_system/relations/lookup_relation.hpp"
#include "barretenberg/proof_system/relations/permutation_relation.hpp"
#include "barretenberg/proof_system/relations/ultra_arithmetic_relation.hpp"
#include "barretenberg/honk/transcript/transcript.hpp"
#include "barretenberg/polynomials/evaluation_domain.hpp"
#include "barretenberg/polynomials/polynomial.hpp"
#include "barretenberg/polynomials/univariate.hpp"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I moved barycentric evaluation/extension and univariate polynomials out of the honk module and into the polynomials module. My motivation (other than cleanliness) was to make it quicker to work on the barycentric class; previously you had to build the entire Honk module.

#include "barretenberg/proof_system/circuit_builder/ultra_circuit_builder.hpp"
#include "barretenberg/proof_system/flavor/flavor.hpp"
#include "barretenberg/srs/factories/crs_factory.hpp"
#include <array>
#include <concepts>
#include <span>
#include <string>
#include <type_traits>
#include <vector>

namespace proof_system::honk::flavor {

Expand Down Expand Up @@ -50,16 +39,17 @@ class GoblinUltra {
// The total number of witness entities not including shifts.
static constexpr size_t NUM_WITNESS_ENTITIES = 15; // 11 (UH) + 4 op wires

using GrandProductRelations = std::tuple<sumcheck::UltraPermutationRelation<FF>, sumcheck::LookupRelation<FF>>;
using GrandProductRelations =
std::tuple<proof_system::UltraPermutationRelation<FF>, proof_system::LookupRelation<FF>>;

// define the tuple of Relations that comprise the Sumcheck relation
using Relations = std::tuple<sumcheck::UltraArithmeticRelation<FF>,
sumcheck::UltraPermutationRelation<FF>,
sumcheck::LookupRelation<FF>,
sumcheck::GenPermSortRelation<FF>,
sumcheck::EllipticRelation<FF>,
sumcheck::AuxiliaryRelation<FF>,
sumcheck::EccOpQueueRelation<FF>>;
using Relations = std::tuple<proof_system::UltraArithmeticRelation<FF>,
proof_system::UltraPermutationRelation<FF>,
proof_system::LookupRelation<FF>,
proof_system::GenPermSortRelation<FF>,
proof_system::EllipticRelation<FF>,
proof_system::AuxiliaryRelation<FF>,
proof_system::EccOpQueueRelation<FF>>;

static constexpr size_t MAX_RELATION_LENGTH = get_max_relation_length<Relations>();

Expand Down Expand Up @@ -338,8 +328,8 @@ class GoblinUltra {
* @todo TODO(#390): Simplify this by moving MAX_RELATION_LENGTH?
*/
template <size_t MAX_RELATION_LENGTH>
using ExtendedEdges =
AllEntities<sumcheck::Univariate<FF, MAX_RELATION_LENGTH>, sumcheck::Univariate<FF, MAX_RELATION_LENGTH>>;
using ExtendedEdges = AllEntities<barretenberg::Univariate<FF, MAX_RELATION_LENGTH>,
barretenberg::Univariate<FF, MAX_RELATION_LENGTH>>;

/**
* @brief A container for the polynomials evaluations produced during sumcheck, which are purported to be the
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,16 @@
#pragma once
#include "barretenberg/ecc/curves/bn254/g1.hpp"
#include "barretenberg/honk/pcs/kzg/kzg.hpp"
#include "barretenberg/honk/sumcheck/polynomials/barycentric_data.hpp"
#include "barretenberg/honk/sumcheck/polynomials/univariate.hpp"
#include "barretenberg/honk/sumcheck/relations/arithmetic_relation.hpp"
#include "barretenberg/honk/sumcheck/relations/permutation_relation.hpp"
#include "barretenberg/proof_system/relations/arithmetic_relation.hpp"
#include "barretenberg/proof_system/relations/permutation_relation.hpp"
#include "barretenberg/honk/transcript/transcript.hpp"
#include "barretenberg/polynomials/barycentric.hpp"
#include "barretenberg/polynomials/evaluation_domain.hpp"
#include "barretenberg/polynomials/polynomial.hpp"
#include "barretenberg/polynomials/univariate.hpp"
#include "barretenberg/proof_system/circuit_builder/standard_circuit_builder.hpp"
#include "barretenberg/proof_system/flavor/flavor.hpp"
#include "barretenberg/srs/factories/crs_factory.hpp"
#include <array>
#include <concepts>
#include <span>
#include <string>
#include <type_traits>
#include <vector>

namespace proof_system::honk::flavor {

Expand Down Expand Up @@ -52,9 +46,9 @@ class Standard {
// The total number of witness entities not including shifts.
static constexpr size_t NUM_WITNESS_ENTITIES = 4;

using GrandProductRelations = std::tuple<sumcheck::PermutationRelation<FF>>;
using GrandProductRelations = std::tuple<proof_system::PermutationRelation<FF>>;
// define the tuple of Relations that comprise the Sumcheck relation
using Relations = std::tuple<sumcheck::ArithmeticRelation<FF>, sumcheck::PermutationRelation<FF>>;
using Relations = std::tuple<proof_system::ArithmeticRelation<FF>, proof_system::PermutationRelation<FF>>;

static constexpr size_t MAX_RELATION_LENGTH = get_max_relation_length<Relations>();

Expand Down Expand Up @@ -234,8 +228,8 @@ class Standard {
* @todo TODO(#390): Simplify this by moving MAX_RELATION_LENGTH?
*/
template <size_t MAX_RELATION_LENGTH>
using ExtendedEdges =
AllEntities<sumcheck::Univariate<FF, MAX_RELATION_LENGTH>, sumcheck::Univariate<FF, MAX_RELATION_LENGTH>>;
using ExtendedEdges = AllEntities<barretenberg::Univariate<FF, MAX_RELATION_LENGTH>,
barretenberg::Univariate<FF, MAX_RELATION_LENGTH>>;

/**
* @brief A container for the polynomials evaluations produced during sumcheck, which are purported to be the
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
#pragma once
#include "barretenberg/ecc/curves/bn254/g1.hpp"
#include "barretenberg/honk/pcs/ipa/ipa.hpp"
#include "barretenberg/honk/sumcheck/polynomials/barycentric_data.hpp"
#include "barretenberg/honk/sumcheck/polynomials/univariate.hpp"
#include "barretenberg/honk/sumcheck/relations/arithmetic_relation.hpp"
#include "barretenberg/honk/sumcheck/relations/permutation_relation.hpp"
#include "barretenberg/polynomials/barycentric.hpp"
#include "barretenberg/polynomials/univariate.hpp"

#include "barretenberg/proof_system/relations/arithmetic_relation.hpp"
#include "barretenberg/proof_system/relations/permutation_relation.hpp"
#include "barretenberg/honk/transcript/transcript.hpp"
#include "barretenberg/polynomials/evaluation_domain.hpp"
#include "barretenberg/polynomials/polynomial.hpp"
Expand Down Expand Up @@ -45,9 +46,9 @@ class StandardGrumpkin {
static constexpr size_t NUM_WITNESS_ENTITIES = 4;

// define the tuple of Relations that require grand products
using GrandProductRelations = std::tuple<sumcheck::PermutationRelation<FF>>;
using GrandProductRelations = std::tuple<proof_system::PermutationRelation<FF>>;
// define the tuple of Relations that comprise the Sumcheck relation
using Relations = std::tuple<sumcheck::ArithmeticRelation<FF>, sumcheck::PermutationRelation<FF>>;
using Relations = std::tuple<proof_system::ArithmeticRelation<FF>, proof_system::PermutationRelation<FF>>;

static constexpr size_t MAX_RELATION_LENGTH = get_max_relation_length<Relations>();

Expand Down Expand Up @@ -226,7 +227,7 @@ class StandardGrumpkin {
*/
template <size_t MAX_RELATION_LENGTH>
using ExtendedEdges =
AllEntities<sumcheck::Univariate<FF, MAX_RELATION_LENGTH>, sumcheck::Univariate<FF, MAX_RELATION_LENGTH>>;
AllEntities<barretenberg::Univariate<FF, MAX_RELATION_LENGTH>, barretenberg::Univariate<FF, MAX_RELATION_LENGTH>>;

/**
* @brief A container for the polynomials evaluations produced during sumcheck, which are purported to be the
Expand Down
Loading