barretenberg
Loading...
Searching...
No Matches
ecc_set_relation.hpp
1#pragma once
2#include <array>
3#include <tuple>
4
5#include "barretenberg/common/constexpr_utils.hpp"
6#include "barretenberg/polynomials/polynomial.hpp"
7#include "barretenberg/polynomials/univariate.hpp"
8#include "barretenberg/relations/relation_types.hpp"
9
10namespace proof_system::honk::sumcheck {
11
12template <typename FF_> class ECCVMSetRelationImpl {
13 public:
14 using FF = FF_;
15
16 static constexpr std::array<size_t, 2> SUBRELATION_PARTIAL_LENGTHS{
17 19, // grand product construction sub-relation
18 19 // left-shiftable polynomial sub-relation
19 };
20
21 template <typename Accumulator> static Accumulator convert_to_wnaf(const auto& s0, const auto& s1)
22 {
23 auto t = s0 + s0;
24 t += t;
25 t += s1;
26
27 auto naf = t + t - 15;
28 return naf;
29 }
30
31 inline static auto& get_grand_product_polynomial(auto& input) { return input.z_perm; }
32 inline static auto& get_shifted_grand_product_polynomial(auto& input) { return input.z_perm_shift; }
33
34 template <typename Accumulator, typename AllEntities, typename Parameters>
35 static Accumulator compute_permutation_numerator(const AllEntities& in, const Parameters& params);
36
37 template <typename Accumulator, typename AllEntities, typename Parameters>
38 static Accumulator compute_permutation_denominator(const AllEntities& in, const Parameters& params);
39
40 template <typename ContainerOverSubrelations, typename AllEntities, typename Parameters>
41 static void accumulate(ContainerOverSubrelations& accumulator,
42 const AllEntities& in,
43 const Parameters& params,
44 const FF& scaling_factor);
45};
46
47template <typename FF> using ECCVMSetRelation = Relation<ECCVMSetRelationImpl<FF>>;
48
49} // namespace proof_system::honk::sumcheck
The templates defined herein facilitate sharing the relation arithmetic between the prover and the ve...
Definition: relation_types.hpp:121
Definition: ecc_set_relation.hpp:12
static Accumulator compute_permutation_numerator(const AllEntities &in, const Parameters &params)
Performs list-equivalence checks for the ECCVM.
Definition: ecc_set_relation.cpp:37
static void accumulate(ContainerOverSubrelations &accumulator, const AllEntities &in, const Parameters &params, const FF &scaling_factor)
Expression for the StandardArithmetic gate. @dbetails The relation is defined as C(in(X)....
Definition: ecc_set_relation.cpp:367
static Accumulator compute_permutation_denominator(const AllEntities &in, const Parameters &params)
Definition: ecc_set_relation.cpp:230