Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
execution.hpp
Go to the documentation of this file.
1// AUTOGENERATED FILE
2#pragma once
3
4#include <string_view>
5
10
11namespace bb::avm2 {
12
13template <typename FF_> class executionImpl {
14 public:
15 using FF = FF_;
16
17 static constexpr std::array<size_t, 88> SUBRELATION_PARTIAL_LENGTHS = {
18 3, 3, 3, 3, 2, 4, 3, 3, 3, 4, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
19 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3,
20 3, 3, 3, 4, 3, 5, 6, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 2
21 };
22
23 template <typename AllEntities> inline static bool skip(const AllEntities& in)
24 {
25 using C = ColumnAndShifts;
26
27 return (in.get(C::execution_sel)).is_zero();
28 }
29
30 template <typename ContainerOverSubrelations, typename AllEntities>
31 void static accumulate(ContainerOverSubrelations& evals,
32 const AllEntities& in,
33 [[maybe_unused]] const RelationParameters<FF>&,
34 [[maybe_unused]] const FF& scaling_factor);
35};
36
37template <typename FF> class execution : public Relation<executionImpl<FF>> {
38 public:
39 static constexpr const std::string_view NAME = "execution";
40
41 static std::string get_subrelation_label(size_t index)
42 {
43 switch (index) {
44 case 2:
45 return "ENQUEUED_CALL_START";
46 case 3:
47 return "ENQUEUED_CALL_END";
48 case 5:
49 return "TRACE_CONTINUITY";
50 case 6:
51 return "LAST_IS_LAST";
52 case 13:
53 return "NUM_P_LIMBS_CEIL";
54 case 14:
55 return "DYN_L2_FACTOR_TO_RADIX_BE";
56 case 15:
57 return "SSTORE_DYN_L2_GAS_IS_ZERO";
58 case 34:
59 return "SUBTRACE_ID_DECOMPOSITION";
60 case 56:
61 return "EXEC_OP_ID_DECOMPOSITION";
62 case 63:
63 return "DYN_GAS_ID_DECOMPOSITION";
64 case 65:
65 return "PC_NEXT_ROW_INT_CALL_JUMP";
66 case 66:
67 return "PC_NEXT_ROW_JUMPI";
68 case 67:
69 return "MOV_SAME_VALUE";
70 case 68:
71 return "MOV_SAME_TAG";
72 case 69:
73 return "SUCCESS_COPY_WRITE_REG";
74 case 70:
75 return "SUCCESS_COPY_U1_TAG";
76 case 71:
77 return "RETURNDATA_SIZE_WRITE_REG";
78 case 72:
79 return "RETURNDATA_SIZE_U32_TAG";
80 case 73:
81 return "PUBLIC_DATA_TREE_ROOT_NOT_CHANGED";
82 case 74:
83 return "PUBLIC_DATA_TREE_SIZE_NOT_CHANGED";
84 case 75:
85 return "WRITTEN_PUBLIC_DATA_SLOTS_TREE_ROOT_NOT_CHANGED";
86 case 76:
87 return "WRITTEN_PUBLIC_DATA_SLOTS_TREE_SIZE_NOT_CHANGED";
88 case 77:
89 return "NOTE_HASH_TREE_ROOT_NOT_CHANGED";
90 case 78:
91 return "NOTE_HASH_TREE_SIZE_NOT_CHANGED";
92 case 79:
93 return "NUM_NOTE_HASHES_EMITTED_NOT_CHANGED";
94 case 80:
95 return "NULLIFIER_TREE_ROOT_NOT_CHANGED";
96 case 81:
97 return "NULLIFIER_TREE_SIZE_NOT_CHANGED";
98 case 82:
99 return "NUM_NULLIFIERS_EMITTED_NOT_CHANGED";
100 case 83:
101 return "NUM_UNENCRYPTED_LOGS_NOT_CHANGED";
102 case 84:
103 return "NUM_L2_TO_L1_MESSAGES_NOT_CHANGED";
104 }
105 return std::to_string(index);
106 }
107
108 // Subrelation indices constants, to be used in tests.
109 static constexpr size_t SR_ENQUEUED_CALL_START = 2;
110 static constexpr size_t SR_ENQUEUED_CALL_END = 3;
111 static constexpr size_t SR_TRACE_CONTINUITY = 5;
112 static constexpr size_t SR_LAST_IS_LAST = 6;
113 static constexpr size_t SR_NUM_P_LIMBS_CEIL = 13;
114 static constexpr size_t SR_DYN_L2_FACTOR_TO_RADIX_BE = 14;
115 static constexpr size_t SR_SSTORE_DYN_L2_GAS_IS_ZERO = 15;
116 static constexpr size_t SR_SUBTRACE_ID_DECOMPOSITION = 34;
117 static constexpr size_t SR_EXEC_OP_ID_DECOMPOSITION = 56;
118 static constexpr size_t SR_DYN_GAS_ID_DECOMPOSITION = 63;
119 static constexpr size_t SR_PC_NEXT_ROW_INT_CALL_JUMP = 65;
120 static constexpr size_t SR_PC_NEXT_ROW_JUMPI = 66;
121 static constexpr size_t SR_MOV_SAME_VALUE = 67;
122 static constexpr size_t SR_MOV_SAME_TAG = 68;
123 static constexpr size_t SR_SUCCESS_COPY_WRITE_REG = 69;
124 static constexpr size_t SR_SUCCESS_COPY_U1_TAG = 70;
125 static constexpr size_t SR_RETURNDATA_SIZE_WRITE_REG = 71;
126 static constexpr size_t SR_RETURNDATA_SIZE_U32_TAG = 72;
127 static constexpr size_t SR_PUBLIC_DATA_TREE_ROOT_NOT_CHANGED = 73;
128 static constexpr size_t SR_PUBLIC_DATA_TREE_SIZE_NOT_CHANGED = 74;
131 static constexpr size_t SR_NOTE_HASH_TREE_ROOT_NOT_CHANGED = 77;
132 static constexpr size_t SR_NOTE_HASH_TREE_SIZE_NOT_CHANGED = 78;
133 static constexpr size_t SR_NUM_NOTE_HASHES_EMITTED_NOT_CHANGED = 79;
134 static constexpr size_t SR_NULLIFIER_TREE_ROOT_NOT_CHANGED = 80;
135 static constexpr size_t SR_NULLIFIER_TREE_SIZE_NOT_CHANGED = 81;
136 static constexpr size_t SR_NUM_NULLIFIERS_EMITTED_NOT_CHANGED = 82;
137 static constexpr size_t SR_NUM_UNENCRYPTED_LOGS_NOT_CHANGED = 83;
138 static constexpr size_t SR_NUM_L2_TO_L1_MESSAGES_NOT_CHANGED = 84;
139};
140
141} // namespace bb::avm2
A wrapper for Relations to expose methods used by the Sumcheck prover or verifier to add the contribu...
static constexpr size_t SR_NUM_L2_TO_L1_MESSAGES_NOT_CHANGED
static constexpr size_t SR_RETURNDATA_SIZE_WRITE_REG
static constexpr size_t SR_PC_NEXT_ROW_INT_CALL_JUMP
static constexpr size_t SR_ENQUEUED_CALL_END
static constexpr size_t SR_WRITTEN_PUBLIC_DATA_SLOTS_TREE_SIZE_NOT_CHANGED
static constexpr size_t SR_NULLIFIER_TREE_SIZE_NOT_CHANGED
static constexpr size_t SR_MOV_SAME_TAG
static std::string get_subrelation_label(size_t index)
Definition execution.hpp:41
static constexpr size_t SR_DYN_L2_FACTOR_TO_RADIX_BE
static constexpr size_t SR_MOV_SAME_VALUE
static constexpr size_t SR_LAST_IS_LAST
static constexpr size_t SR_RETURNDATA_SIZE_U32_TAG
static constexpr size_t SR_ENQUEUED_CALL_START
static constexpr size_t SR_NUM_NULLIFIERS_EMITTED_NOT_CHANGED
static constexpr size_t SR_SUCCESS_COPY_U1_TAG
static constexpr size_t SR_DYN_GAS_ID_DECOMPOSITION
static constexpr size_t SR_PC_NEXT_ROW_JUMPI
static constexpr size_t SR_PUBLIC_DATA_TREE_SIZE_NOT_CHANGED
static constexpr size_t SR_NOTE_HASH_TREE_ROOT_NOT_CHANGED
static constexpr size_t SR_TRACE_CONTINUITY
static constexpr size_t SR_SUBTRACE_ID_DECOMPOSITION
static constexpr size_t SR_SUCCESS_COPY_WRITE_REG
static constexpr size_t SR_NULLIFIER_TREE_ROOT_NOT_CHANGED
static constexpr size_t SR_NUM_UNENCRYPTED_LOGS_NOT_CHANGED
static constexpr size_t SR_EXEC_OP_ID_DECOMPOSITION
static constexpr size_t SR_PUBLIC_DATA_TREE_ROOT_NOT_CHANGED
static constexpr const std::string_view NAME
Definition execution.hpp:39
static constexpr size_t SR_WRITTEN_PUBLIC_DATA_SLOTS_TREE_ROOT_NOT_CHANGED
static constexpr size_t SR_NOTE_HASH_TREE_SIZE_NOT_CHANGED
static constexpr size_t SR_SSTORE_DYN_L2_GAS_IS_ZERO
static constexpr size_t SR_NUM_P_LIMBS_CEIL
static constexpr size_t SR_NUM_NOTE_HASHES_EMITTED_NOT_CHANGED
static void accumulate(ContainerOverSubrelations &evals, const AllEntities &in, const RelationParameters< FF > &, const FF &scaling_factor)
static constexpr std::array< size_t, 88 > SUBRELATION_PARTIAL_LENGTHS
Definition execution.hpp:17
static bool skip(const AllEntities &in)
Definition execution.hpp:23
ColumnAndShifts
Definition columns.hpp:35
AvmFlavorSettings::FF FF
Definition field.hpp:10
std::string to_string(bb::avm2::ValueTag tag)
Container for parameters used by the grand product (permutation, lookup) Honk relations.