barretenberg
Loading...
Searching...
No Matches
translator_decomposition_relation.hpp
1#pragma once
2#include "barretenberg/numeric/uint256/uint256.hpp"
3#include "barretenberg/relations/relation_types.hpp"
4
5namespace proof_system {
6
7template <typename FF_> class GoblinTranslatorDecompositionRelationImpl {
8 public:
9 using FF = FF_;
10
11 // 1 + polynomial degree of this relation
12 static constexpr size_t RELATION_LENGTH =
13 3; // degree(lagrange_odd_in_minicircuit_in_minicircuit(a - a_0 - a_1*2¹⁴ ... - a_l⋅2¹⁴ˡ )) = 2
14 static constexpr std::array<size_t, 48> SUBRELATION_PARTIAL_LENGTHS{
15 3, // decomposition of P.x limb 0 into microlimbs subrelation
16 3, // decomposition of P.x limb 1 into microlimbs subrelation
17 3, // decomposition of P.x limb 2 into microlimbs subrelation
18 3, // decomposition of P.x limb 3 into microlimbs subrelation
19 3, // decomposition of P.y limb 0 into microlimbs subrelation
20 3, // decomposition of P.y limb 1 into microlimbs subrelation
21 3, // decomposition of P.y limb 2 into microlimbs subrelation
22 3, // decomposition of P.y limb 3 into microlimbs subrelation
23 3, // decomposition of z1 limb 0 into microlimbs subrelation
24 3, // decomposition of z2 limb 0 into microlimbs subrelation
25 3, // decomposition of z1 limb 1 into microlimbs subrelation
26 3, // decomposition of z2 limb 1 into microlimbs subrelation
27 3, // decomposition of accumulator limb 0 into microlimbs subrelation
28 3, // decomposition of accumulator limb 1 into microlimbs subrelation
29 3, // decomposition of accumulator limb 2 into microlimbs subrelation
30 3, // decomposition of accumulator limb 3 into microlimbs subrelation
31 3, // decomposition of quotient limb 0 into microlimbs subrelation
32 3, // decomposition of quotient limb 1 into microlimbs subrelation
33 3, // decomposition of quotient limb 2 into microlimbs subrelation
34 3, // decomposition of quotient limb 3 into microlimbs subrelation
35 3, // decomposition of low relation wide limb into microlimbs subrelation
36 3, // decomposition of high relation wide limb into microlimbs subrelation
37 3, // stricter constraint on highest microlimb of P.x limb 0 subrelation
38 3, // stricter constraint on highest microlimb of P.x limb 1 subrelation
39 3, // stricter constraint on highest microlimb of P.x limb 2 subrelation
40 3, // stricter constraint on highest microlimb of P.x limb 3 subrelation
41 3, // stricter constraint on highest microlimb of P.y limb 0 subrelation
42 3, // stricter constraint on highest microlimb of P.y limb 1 subrelation
43 3, // stricter constraint on highest microlimb of P.y limb 2 subrelation
44 3, // stricter constraint on highest microlimb of P.y limb 3 subrelation
45 3, // stricter constraint on highest microlimb of z1 limb 0 subrelation
46 3, // stricter constraint on highest microlimb of z2 limb 0 subrelation
47 3, // stricter constraint on highest microlimb of z1 limb 1 subrelation
48 3, // stricter constraint on highest microlimb of z2 limb 1 subrelation
49 3, // stricter constraint on highest microlimb of accumulator limb 0 subrelation
50 3, // stricter constraint on highest microlimb of accumulator limb 1 subrelation
51 3, // stricter constraint on highest microlimb of accumulator limb 2 subrelation
52 3, // stricter constraint on highest microlimb of accumulator limb 3 subrelation
53 3, // stricter constraint on highest microlimb of quotient limb 0 subrelation
54 3, // stricter constraint on highest microlimb of quotient limb 1 subrelation
55 3, // stricter constraint on highest microlimb of quotient limb 2 subrelation
56 3, // stricter constraint on highest microlimb of quotient limb 3 subrelation
57 3, // decomposition of x_lo into 2 limbs subrelation
58 3, // decomposition of x_hi into 2 limbs subrelation
59 3, // decomposition of y_lo into 2 limbs subrelation
60 3, // decomposition of y_hi into 2 limbs subrelation
61 3, // decomposition of z1 into 2 limbs subrelation
62 3 // decomposition of z2 into 2 limbs subrelation
63 };
64
83 template <typename ContainerOverSubrelations, typename AllEntities, typename Parameters>
84 static void accumulate(ContainerOverSubrelations& accumulators,
85 const AllEntities& in,
86 const Parameters&,
87 const FF& scaling_factor);
88};
89
90template <typename FF>
92
93} // namespace proof_system
Definition: translator_decomposition_relation.hpp:7
static void accumulate(ContainerOverSubrelations &accumulators, const AllEntities &in, const Parameters &, const FF &scaling_factor)
Expression for decomposition of various values into smaller limbs or microlimbs.
Definition: translator_decomposition_relation.cpp:26
The templates defined herein facilitate sharing the relation arithmetic between the prover and the ve...
Definition: relation_types.hpp:121