2#include "barretenberg/relations/relation_types.hpp"
4namespace proof_system {
10 static constexpr size_t RELATION_LENGTH = 7;
12 static constexpr std::array<size_t, 2> SUBRELATION_PARTIAL_LENGTHS{
17 inline static auto& get_grand_product_polynomial(
auto& in) {
return in.z_perm; }
18 inline static auto& get_shifted_grand_product_polynomial(
auto& in) {
return in.z_perm_shift; }
20 template <
typename Accumulator,
typename AllEntities,
typename Parameters>
21 inline static Accumulator compute_grand_product_numerator(
const AllEntities& in,
const Parameters& params)
23 using View =
typename Accumulator::View;
25 auto concatenated_range_constraints_0 = View(in.concatenated_range_constraints_0);
26 auto concatenated_range_constraints_1 = View(in.concatenated_range_constraints_1);
27 auto concatenated_range_constraints_2 = View(in.concatenated_range_constraints_2);
28 auto concatenated_range_constraints_3 = View(in.concatenated_range_constraints_3);
30 auto ordered_extra_range_constraints_numerator = View(in.ordered_extra_range_constraints_numerator);
32 const auto& gamma = params.gamma;
33 return (concatenated_range_constraints_0 + gamma) * (concatenated_range_constraints_1 + gamma) *
34 (concatenated_range_constraints_2 + gamma) * (concatenated_range_constraints_3 + gamma) *
35 (ordered_extra_range_constraints_numerator + gamma);
38 template <
typename Accumulator,
typename AllEntities,
typename Parameters>
39 inline static Accumulator compute_grand_product_denominator(
const AllEntities& in,
const Parameters& params)
41 using View =
typename Accumulator::View;
43 auto ordered_range_constraints_0 = View(in.ordered_range_constraints_0);
44 auto ordered_range_constraints_1 = View(in.ordered_range_constraints_1);
45 auto ordered_range_constraints_2 = View(in.ordered_range_constraints_2);
46 auto ordered_range_constraints_3 = View(in.ordered_range_constraints_3);
47 auto ordered_range_constraints_4 = View(in.ordered_range_constraints_4);
49 const auto& gamma = params.gamma;
51 return (ordered_range_constraints_0 + gamma) * (ordered_range_constraints_1 + gamma) *
52 (ordered_range_constraints_2 + gamma) * (ordered_range_constraints_3 + gamma) *
53 (ordered_range_constraints_4 + gamma);
76 template <
typename ContainerOverSubrelations,
typename AllEntities,
typename Parameters>
77 static void accumulate(ContainerOverSubrelations& accumulators,
78 const AllEntities& in,
79 const Parameters& params,
80 const FF& scaling_factor);
Definition: translator_permutation_relation.hpp:6
static void accumulate(ContainerOverSubrelations &accumulators, const AllEntities &in, const Parameters ¶ms, const FF &scaling_factor)
Compute contribution of the goblin translator permutation relation for a given edge (internal functio...
Definition: translator_permutation_relation.cpp:29
The templates defined herein facilitate sharing the relation arithmetic between the prover and the ve...
Definition: relation_types.hpp:121