diff --git a/barretenberg/cpp/src/barretenberg/proof_system/relations/decomposition_relation.hpp b/barretenberg/cpp/src/barretenberg/proof_system/relations/decomposition_relation.hpp new file mode 100644 index 000000000000..ff536dd81732 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/proof_system/relations/decomposition_relation.hpp @@ -0,0 +1,771 @@ +#pragma once +#include "barretenberg/numeric/uint256/uint256.hpp" +#include "relation_parameters.hpp" +#include "relation_types.hpp" + +namespace proof_system { + +template class GoblinTranslatorDecompositionRelationImpl { + public: + using FF = FF_; + + // 1 + polynomial degree of this relation + static constexpr size_t RELATION_LENGTH = 3; // degree(lagrange_odd(a - a_0 - a_1*2¹⁴ ... - a_l⋅2¹⁴ˡ )) = 2 + static constexpr size_t LEN_1 = 3; + static constexpr size_t LEN_2 = 3; + static constexpr size_t LEN_3 = 3; + static constexpr size_t LEN_4 = 3; + static constexpr size_t LEN_5 = 3; + static constexpr size_t LEN_6 = 3; + static constexpr size_t LEN_7 = 3; + static constexpr size_t LEN_8 = 3; + static constexpr size_t LEN_9 = 3; + static constexpr size_t LEN_10 = 3; + static constexpr size_t LEN_11 = 3; + static constexpr size_t LEN_12 = 3; + static constexpr size_t LEN_13 = 3; + static constexpr size_t LEN_14 = 3; + static constexpr size_t LEN_15 = 3; + static constexpr size_t LEN_16 = 3; + static constexpr size_t LEN_17 = 3; + static constexpr size_t LEN_18 = 3; + static constexpr size_t LEN_19 = 3; + static constexpr size_t LEN_20 = 3; + static constexpr size_t LEN_21 = 3; + static constexpr size_t LEN_22 = 3; + static constexpr size_t LEN_23 = 3; + static constexpr size_t LEN_24 = 3; + static constexpr size_t LEN_25 = 3; + static constexpr size_t LEN_26 = 3; + static constexpr size_t LEN_27 = 3; + static constexpr size_t LEN_28 = 3; + static constexpr size_t LEN_29 = 3; + static constexpr size_t LEN_30 = 3; + static constexpr size_t LEN_31 = 3; + static constexpr size_t LEN_32 = 3; + static constexpr size_t LEN_33 = 3; + static constexpr size_t LEN_34 = 3; + static constexpr size_t LEN_35 = 3; + static constexpr size_t LEN_36 = 3; + static constexpr size_t LEN_37 = 3; + static constexpr size_t LEN_38 = 3; + static constexpr size_t LEN_39 = 3; + static constexpr size_t LEN_40 = 3; + static constexpr size_t LEN_41 = 3; + static constexpr size_t LEN_42 = 3; + static constexpr size_t LEN_43 = 3; + static constexpr size_t LEN_44 = 3; + static constexpr size_t LEN_45 = 3; + static constexpr size_t LEN_46 = 3; + static constexpr size_t LEN_47 = 3; + static constexpr size_t LEN_48 = 3; + + template