Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
relation_definitions.hpp
Go to the documentation of this file.
1// === AUDIT STATUS ===
2// internal: { status: not started, auditors: [], date: YYYY-MM-DD }
3// external_1: { status: not started, auditors: [], date: YYYY-MM-DD }
4// external_2: { status: not started, auditors: [], date: YYYY-MM-DD }
5// =====================
6
7#pragma once
8
10
11// Utilities for explicit instantiation of relation and permutation classes.
12
13#define ExtendedEdge(Flavor) Flavor::ExtendedEdges
14#define EvaluationEdge(Flavor) Flavor::AllValues
15#define EntityEdge(Flavor) Flavor::AllEntities<Flavor::FF>
16
17#define ACCUMULATE(...) _ACCUMULATE(__VA_ARGS__)
18#define _ACCUMULATE(RelationImpl, Flavor, AccumulatorType, EdgeType) \
19 template void \
20 RelationImpl<Flavor::FF>::accumulate<bb::Relation<RelationImpl<Flavor::FF>>::AccumulatorType, EdgeType(Flavor)>( \
21 bb::Relation<RelationImpl<Flavor::FF>>::AccumulatorType&, \
22 EdgeType(Flavor) const&, \
23 RelationParameters<Flavor::FF> const&, \
24 Flavor::FF const&);
25
26#define PERMUTATION_METHOD(...) _PERMUTATION_METHOD(__VA_ARGS__)
27#define _PERMUTATION_METHOD(MethodName, RelationImpl, Flavor, AccumulatorType, EdgeType) \
28 template typename bb::Relation<RelationImpl<Flavor::FF>>::AccumulatorType \
29 RelationImpl<Flavor::FF>::MethodName<bb::Relation<RelationImpl<Flavor::FF>>::AccumulatorType, EdgeType(Flavor)>( \
30 EdgeType(Flavor) const&, RelationParameters<Flavor::FF> const&);
31
32#define DEFINE_SUMCHECK_RELATION_CLASS(RelationImpl, Flavor) \
33 ACCUMULATE(RelationImpl, Flavor, SumcheckTupleOfUnivariatesOverSubrelations, ExtendedEdge) \
34 ACCUMULATE(RelationImpl, Flavor, SumcheckArrayOfValuesOverSubrelations, EvaluationEdge) \
35 ACCUMULATE(RelationImpl, Flavor, SumcheckArrayOfValuesOverSubrelations, EntityEdge)
36
37#define DEFINE_ZK_SUMCHECK_RELATION_CLASS(RelationImpl, Flavor) \
38 ACCUMULATE(RelationImpl, Flavor, SumcheckArrayOfValuesOverSubrelations, EvaluationEdge) \
39 ACCUMULATE(RelationImpl, Flavor, SumcheckArrayOfValuesOverSubrelations, EntityEdge)
40
41#define DEFINE_SUMCHECK_VERIFIER_RELATION_CLASS(RelationImpl, Flavor) \
42 ACCUMULATE(RelationImpl, Flavor, SumcheckArrayOfValuesOverSubrelations, EvaluationEdge)
43
44#define DEFINE_SUMCHECK_PERMUTATION_CLASS(RelationImpl, Flavor) \
45 PERMUTATION_METHOD(compute_grand_product_numerator, RelationImpl, Flavor, UnivariateAccumulator0, ExtendedEdge) \
46 PERMUTATION_METHOD(compute_grand_product_numerator, RelationImpl, Flavor, ValueAccumulator0, EvaluationEdge) \
47 PERMUTATION_METHOD(compute_grand_product_numerator, RelationImpl, Flavor, ValueAccumulator0, EntityEdge) \
48 PERMUTATION_METHOD(compute_grand_product_denominator, RelationImpl, Flavor, UnivariateAccumulator0, ExtendedEdge) \
49 PERMUTATION_METHOD(compute_grand_product_denominator, RelationImpl, Flavor, ValueAccumulator0, EvaluationEdge) \
50 PERMUTATION_METHOD(compute_grand_product_denominator, RelationImpl, Flavor, ValueAccumulator0, EntityEdge)
51
52#define DEFINE_SUMCHECK_VERIFIER_PERMUTATION_CLASS(RelationImpl, Flavor) \
53 PERMUTATION_METHOD(compute_grand_product_numerator, RelationImpl, Flavor, ValueAccumulator0, EvaluationEdge) \
54 PERMUTATION_METHOD(compute_grand_product_denominator, RelationImpl, Flavor, ValueAccumulator0, EvaluationEdge)