Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
execution_impl.hpp
Go to the documentation of this file.
1// AUTOGENERATED FILE
2#pragma once
3
6
7namespace bb::avm2 {
8
9template <typename FF_>
10template <typename ContainerOverSubrelations, typename AllEntities>
11void executionImpl<FF_>::accumulate(ContainerOverSubrelations& evals,
12 const AllEntities& in,
13 [[maybe_unused]] const RelationParameters<FF_>&,
14 [[maybe_unused]] const FF_& scaling_factor)
15{
16 using C = ColumnAndShifts;
17
18 const auto constants_MEM_TAG_U1 = FF(1);
19 const auto constants_MEM_TAG_U32 = FF(4);
20 const auto constants_AVM_SUBTRACE_ID_EXECUTION = FF(1);
21 const auto constants_AVM_SUBTRACE_ID_ALU = FF(2);
22 const auto constants_AVM_SUBTRACE_ID_BITWISE = FF(4);
23 const auto constants_AVM_SUBTRACE_ID_CAST = FF(8);
24 const auto constants_AVM_SUBTRACE_ID_CALLDATA_COPY = FF(16);
25 const auto constants_AVM_SUBTRACE_ID_RETURNDATA_COPY = FF(32);
26 const auto constants_AVM_SUBTRACE_ID_SET = FF(64);
27 const auto constants_AVM_SUBTRACE_ID_GETCONTRACTINSTANCE = FF(128);
28 const auto constants_AVM_SUBTRACE_ID_EMITUNENCRYPTEDLOG = FF(256);
29 const auto constants_AVM_SUBTRACE_ID_POSEIDON2_PERM = FF(512);
30 const auto constants_AVM_SUBTRACE_ID_SHA256_COMPRESSION = FF(1024);
31 const auto constants_AVM_SUBTRACE_ID_KECCAKF1600 = FF(2048);
32 const auto constants_AVM_SUBTRACE_ID_ECC = FF(4096);
33 const auto constants_AVM_SUBTRACE_ID_TO_RADIX = FF(8192);
34 const auto constants_AVM_DYN_GAS_ID_CALLDATACOPY = FF(1);
35 const auto constants_AVM_DYN_GAS_ID_RETURNDATACOPY = FF(2);
36 const auto constants_AVM_DYN_GAS_ID_TORADIX = FF(4);
37 const auto constants_AVM_DYN_GAS_ID_BITWISE = FF(8);
38 const auto constants_AVM_DYN_GAS_ID_EMITUNENCRYPTEDLOG = FF(16);
39 const auto constants_AVM_DYN_GAS_ID_SSTORE = FF(32);
40 const auto constants_AVM_EXEC_OP_ID_GETENVVAR = FF(1);
41 const auto constants_AVM_EXEC_OP_ID_MOV = FF(2);
42 const auto constants_AVM_EXEC_OP_ID_JUMP = FF(4);
43 const auto constants_AVM_EXEC_OP_ID_JUMPI = FF(8);
44 const auto constants_AVM_EXEC_OP_ID_CALL = FF(16);
45 const auto constants_AVM_EXEC_OP_ID_STATICCALL = FF(32);
46 const auto constants_AVM_EXEC_OP_ID_INTERNALCALL = FF(64);
47 const auto constants_AVM_EXEC_OP_ID_INTERNALRETURN = FF(128);
48 const auto constants_AVM_EXEC_OP_ID_RETURN = FF(256);
49 const auto constants_AVM_EXEC_OP_ID_REVERT = FF(512);
50 const auto constants_AVM_EXEC_OP_ID_SUCCESSCOPY = FF(1024);
51 const auto constants_AVM_EXEC_OP_ID_RETURNDATASIZE = FF(2048);
52 const auto constants_AVM_EXEC_OP_ID_DEBUGLOG = FF(4096);
53 const auto constants_AVM_EXEC_OP_ID_SLOAD = FF(8192);
54 const auto constants_AVM_EXEC_OP_ID_SSTORE = FF(16384);
55 const auto constants_AVM_EXEC_OP_ID_NOTEHASH_EXISTS = FF(32768);
56 const auto constants_AVM_EXEC_OP_ID_EMIT_NOTEHASH = FF(65536);
57 const auto constants_AVM_EXEC_OP_ID_L1_TO_L2_MESSAGE_EXISTS = FF(131072);
58 const auto constants_AVM_EXEC_OP_ID_NULLIFIER_EXISTS = FF(262144);
59 const auto constants_AVM_EXEC_OP_ID_EMIT_NULLIFIER = FF(524288);
60 const auto constants_AVM_EXEC_OP_ID_SENDL2TOL1MSG = FF(1048576);
61 const auto execution_SEL_SHOULD_RESOLVE_ADDRESS = in.get(C::execution_sel_instruction_fetching_success);
62
63 {
64 using View = typename std::tuple_element_t<0, ContainerOverSubrelations>::View;
65 auto tmp = static_cast<View>(in.get(C::execution_sel)) * (FF(1) - static_cast<View>(in.get(C::execution_sel)));
66 std::get<0>(evals) += (tmp * scaling_factor);
67 }
68 { // ENQUEUED_CALL_START
69 using View = typename std::tuple_element_t<1, ContainerOverSubrelations>::View;
70 auto tmp = (static_cast<View>(in.get(C::execution_enqueued_call_start_shift)) -
71 (static_cast<View>(in.get(C::precomputed_first_row)) +
72 static_cast<View>(in.get(C::execution_enqueued_call_end))) *
73 static_cast<View>(in.get(C::execution_sel_shift)));
74 std::get<1>(evals) += (tmp * scaling_factor);
75 }
76 { // ENQUEUED_CALL_END
77 using View = typename std::tuple_element_t<2, ContainerOverSubrelations>::View;
78 auto tmp = (static_cast<View>(in.get(C::execution_enqueued_call_end)) -
79 static_cast<View>(in.get(C::execution_sel_exit_call)) *
80 (FF(1) - static_cast<View>(in.get(C::execution_has_parent_ctx))));
81 std::get<2>(evals) += (tmp * scaling_factor);
82 }
83 {
84 using View = typename std::tuple_element_t<3, ContainerOverSubrelations>::View;
85 auto tmp = (static_cast<View>(in.get(C::execution_sel_first_row_in_context_shift)) -
86 (static_cast<View>(in.get(C::execution_sel_enter_call)) +
87 static_cast<View>(in.get(C::execution_enqueued_call_start_shift))));
88 std::get<3>(evals) += (tmp * scaling_factor);
89 }
90 { // TRACE_CONTINUITY
91 using View = typename std::tuple_element_t<4, ContainerOverSubrelations>::View;
92 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel))) *
93 (FF(1) - static_cast<View>(in.get(C::precomputed_first_row))) *
94 static_cast<View>(in.get(C::execution_sel_shift));
95 std::get<4>(evals) += (tmp * scaling_factor);
96 }
97 { // BYTECODE_RETRIEVAL_NO_FAILURE
98 using View = typename std::tuple_element_t<5, ContainerOverSubrelations>::View;
99 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel_first_row_in_context))) *
100 static_cast<View>(in.get(C::execution_sel_bytecode_retrieval_failure));
101 std::get<5>(evals) += (tmp * scaling_factor);
102 }
103 {
104 using View = typename std::tuple_element_t<6, ContainerOverSubrelations>::View;
105 auto tmp = (static_cast<View>(in.get(C::execution_sel_bytecode_retrieval_success)) -
106 static_cast<View>(in.get(C::execution_sel)) *
107 (FF(1) - static_cast<View>(in.get(C::execution_sel_bytecode_retrieval_failure))));
108 std::get<6>(evals) += (tmp * scaling_factor);
109 }
110 {
111 using View = typename std::tuple_element_t<7, ContainerOverSubrelations>::View;
112 auto tmp = (static_cast<View>(in.get(C::execution_sel_instruction_fetching_success)) -
113 static_cast<View>(in.get(C::execution_sel_bytecode_retrieval_success)) *
114 (FF(1) - static_cast<View>(in.get(C::execution_sel_instruction_fetching_failure))));
115 std::get<7>(evals) += (tmp * scaling_factor);
116 }
117 { // NO_FETCHING_NO_INSTR_FETCH_ERROR
118 using View = typename std::tuple_element_t<8, ContainerOverSubrelations>::View;
119 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel_bytecode_retrieval_success))) *
120 static_cast<View>(in.get(C::execution_sel_instruction_fetching_failure));
121 std::get<8>(evals) += (tmp * scaling_factor);
122 }
123 {
124 using View = typename std::tuple_element_t<9, ContainerOverSubrelations>::View;
125 auto tmp = (static_cast<View>(in.get(C::execution_sel_should_read_registers)) -
126 CView(execution_SEL_SHOULD_RESOLVE_ADDRESS) *
127 (FF(1) - static_cast<View>(in.get(C::execution_sel_addressing_error))));
128 std::get<9>(evals) += (tmp * scaling_factor);
129 }
130 {
131 using View = typename std::tuple_element_t<10, ContainerOverSubrelations>::View;
132 auto tmp = (static_cast<View>(in.get(C::execution_sel_should_check_gas)) -
133 static_cast<View>(in.get(C::execution_sel_should_read_registers)) *
134 (FF(1) - static_cast<View>(in.get(C::execution_sel_register_read_error))));
135 std::get<10>(evals) += (tmp * scaling_factor);
136 }
137 {
138 using View = typename std::tuple_element_t<11, ContainerOverSubrelations>::View;
139 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_calldata_copy)) *
140 (FF(1) - static_cast<View>(in.get(C::execution_sel_gas_calldata_copy)));
141 std::get<11>(evals) += (tmp * scaling_factor);
142 }
143 {
144 using View = typename std::tuple_element_t<12, ContainerOverSubrelations>::View;
145 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_returndata_copy)) *
146 (FF(1) - static_cast<View>(in.get(C::execution_sel_gas_returndata_copy)));
147 std::get<12>(evals) += (tmp * scaling_factor);
148 }
149 {
150 using View = typename std::tuple_element_t<13, ContainerOverSubrelations>::View;
151 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_to_radix)) *
152 (FF(1) - static_cast<View>(in.get(C::execution_sel_gas_to_radix)));
153 std::get<13>(evals) += (tmp * scaling_factor);
154 }
155 {
156 using View = typename std::tuple_element_t<14, ContainerOverSubrelations>::View;
157 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_bitwise)) *
158 (FF(1) - static_cast<View>(in.get(C::execution_sel_gas_bitwise)));
159 std::get<14>(evals) += (tmp * scaling_factor);
160 }
161 {
162 using View = typename std::tuple_element_t<15, ContainerOverSubrelations>::View;
163 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_emit_unencrypted_log)) *
164 (FF(1) - static_cast<View>(in.get(C::execution_sel_gas_emit_unencrypted_log)));
165 std::get<15>(evals) += (tmp * scaling_factor);
166 }
167 {
168 using View = typename std::tuple_element_t<16, ContainerOverSubrelations>::View;
169 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_sstore)) *
170 (FF(1) - static_cast<View>(in.get(C::execution_sel_gas_sstore)));
171 std::get<16>(evals) += (tmp * scaling_factor);
172 }
173 { // DYN_GAS_ID_DECOMPOSITION
174 using View = typename std::tuple_element_t<17, ContainerOverSubrelations>::View;
175 auto tmp =
176 ((static_cast<View>(in.get(C::execution_sel_gas_calldata_copy)) *
177 CView(constants_AVM_DYN_GAS_ID_CALLDATACOPY) +
178 static_cast<View>(in.get(C::execution_sel_gas_returndata_copy)) *
179 CView(constants_AVM_DYN_GAS_ID_RETURNDATACOPY) +
180 static_cast<View>(in.get(C::execution_sel_gas_to_radix)) * CView(constants_AVM_DYN_GAS_ID_TORADIX) +
181 static_cast<View>(in.get(C::execution_sel_gas_bitwise)) * CView(constants_AVM_DYN_GAS_ID_BITWISE) +
182 static_cast<View>(in.get(C::execution_sel_gas_emit_unencrypted_log)) *
183 CView(constants_AVM_DYN_GAS_ID_EMITUNENCRYPTEDLOG) +
184 static_cast<View>(in.get(C::execution_sel_gas_sstore)) * CView(constants_AVM_DYN_GAS_ID_SSTORE)) -
185 static_cast<View>(in.get(C::execution_sel_should_check_gas)) *
186 static_cast<View>(in.get(C::execution_dyn_gas_id)));
187 std::get<17>(evals) += (tmp * scaling_factor);
188 }
189 {
190 using View = typename std::tuple_element_t<18, ContainerOverSubrelations>::View;
191 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_to_radix)) *
192 (static_cast<View>(in.get(C::execution_two_five_six)) - FF(256));
193 std::get<18>(evals) += (tmp * scaling_factor);
194 }
195 {
196 using View = typename std::tuple_element_t<19, ContainerOverSubrelations>::View;
197 auto tmp = (static_cast<View>(in.get(C::execution_sel_lookup_num_p_limbs)) -
198 static_cast<View>(in.get(C::execution_sel_gas_to_radix)) *
199 (FF(1) - static_cast<View>(in.get(C::execution_sel_radix_gt_256))));
200 std::get<19>(evals) += (tmp * scaling_factor);
201 }
202 { // NUM_P_LIMBS_CEIL
203 using View = typename std::tuple_element_t<20, ContainerOverSubrelations>::View;
204 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_to_radix)) *
205 static_cast<View>(in.get(C::execution_sel_radix_gt_256)) *
206 (static_cast<View>(in.get(C::execution_num_p_limbs)) - FF(32));
207 std::get<20>(evals) += (tmp * scaling_factor);
208 }
209 { // DYN_L2_FACTOR_TO_RADIX_BE
210 using View = typename std::tuple_element_t<21, ContainerOverSubrelations>::View;
211 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_to_radix)) *
212 (((static_cast<View>(in.get(C::execution_register_2_)) -
213 static_cast<View>(in.get(C::execution_num_p_limbs))) *
214 static_cast<View>(in.get(C::execution_sel_use_num_limbs)) +
215 static_cast<View>(in.get(C::execution_num_p_limbs))) -
216 static_cast<View>(in.get(C::execution_dynamic_l2_gas_factor)));
217 std::get<21>(evals) += (tmp * scaling_factor);
218 }
219 {
220 using View = typename std::tuple_element_t<22, ContainerOverSubrelations>::View;
221 auto tmp = (static_cast<View>(in.get(C::execution_sel_gas_emit_unencrypted_log)) +
222 static_cast<View>(in.get(C::execution_sel_gas_calldata_copy)) +
223 static_cast<View>(in.get(C::execution_sel_gas_returndata_copy))) *
224 (static_cast<View>(in.get(C::execution_register_0_)) -
225 static_cast<View>(in.get(C::execution_dynamic_l2_gas_factor)));
226 std::get<22>(evals) += (tmp * scaling_factor);
227 }
228 {
229 using View = typename std::tuple_element_t<23, ContainerOverSubrelations>::View;
230 auto tmp = static_cast<View>(in.get(C::execution_sel_gas_emit_unencrypted_log)) *
231 (static_cast<View>(in.get(C::execution_register_0_)) -
232 static_cast<View>(in.get(C::execution_dynamic_da_gas_factor)));
233 std::get<23>(evals) += (tmp * scaling_factor);
234 }
235 { // DYN_DA_GAS_IS_ZERO
236 using View = typename std::tuple_element_t<24, ContainerOverSubrelations>::View;
237 auto tmp = ((FF(1) - static_cast<View>(in.get(C::execution_sel_gas_sstore))) -
238 static_cast<View>(in.get(C::execution_sel_gas_emit_unencrypted_log))) *
239 static_cast<View>(in.get(C::execution_dynamic_da_gas_factor));
240 std::get<24>(evals) += (tmp * scaling_factor);
241 }
242 { // DYN_L2_GAS_IS_ZERO
243 using View = typename std::tuple_element_t<25, ContainerOverSubrelations>::View;
244 auto tmp = (((((FF(1) - static_cast<View>(in.get(C::execution_sel_gas_bitwise))) -
245 static_cast<View>(in.get(C::execution_sel_gas_to_radix))) -
246 static_cast<View>(in.get(C::execution_sel_gas_emit_unencrypted_log))) -
247 static_cast<View>(in.get(C::execution_sel_gas_calldata_copy))) -
248 static_cast<View>(in.get(C::execution_sel_gas_returndata_copy))) *
249 static_cast<View>(in.get(C::execution_dynamic_l2_gas_factor));
250 std::get<25>(evals) += (tmp * scaling_factor);
251 }
252 {
253 using View = typename std::tuple_element_t<26, ContainerOverSubrelations>::View;
254 auto tmp = (static_cast<View>(in.get(C::execution_sel_should_execute_opcode)) -
255 static_cast<View>(in.get(C::execution_sel_should_check_gas)) *
256 (FF(1) - static_cast<View>(in.get(C::execution_sel_out_of_gas))));
257 std::get<26>(evals) += (tmp * scaling_factor);
258 }
259 {
260 using View = typename std::tuple_element_t<27, ContainerOverSubrelations>::View;
261 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_execution)) *
262 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_execution)));
263 std::get<27>(evals) += (tmp * scaling_factor);
264 }
265 {
266 using View = typename std::tuple_element_t<28, ContainerOverSubrelations>::View;
267 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_alu)) *
268 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_alu)));
269 std::get<28>(evals) += (tmp * scaling_factor);
270 }
271 {
272 using View = typename std::tuple_element_t<29, ContainerOverSubrelations>::View;
273 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_bitwise)) *
274 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_bitwise)));
275 std::get<29>(evals) += (tmp * scaling_factor);
276 }
277 {
278 using View = typename std::tuple_element_t<30, ContainerOverSubrelations>::View;
279 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_cast)) *
280 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_cast)));
281 std::get<30>(evals) += (tmp * scaling_factor);
282 }
283 {
284 using View = typename std::tuple_element_t<31, ContainerOverSubrelations>::View;
285 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_calldata_copy)) *
286 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_calldata_copy)));
287 std::get<31>(evals) += (tmp * scaling_factor);
288 }
289 {
290 using View = typename std::tuple_element_t<32, ContainerOverSubrelations>::View;
291 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_returndata_copy)) *
292 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_returndata_copy)));
293 std::get<32>(evals) += (tmp * scaling_factor);
294 }
295 {
296 using View = typename std::tuple_element_t<33, ContainerOverSubrelations>::View;
297 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_set)) *
298 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_set)));
299 std::get<33>(evals) += (tmp * scaling_factor);
300 }
301 {
302 using View = typename std::tuple_element_t<34, ContainerOverSubrelations>::View;
303 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_get_contract_instance)) *
304 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_get_contract_instance)));
305 std::get<34>(evals) += (tmp * scaling_factor);
306 }
307 {
308 using View = typename std::tuple_element_t<35, ContainerOverSubrelations>::View;
309 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_emit_unencrypted_log)) *
310 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_emit_unencrypted_log)));
311 std::get<35>(evals) += (tmp * scaling_factor);
312 }
313 {
314 using View = typename std::tuple_element_t<36, ContainerOverSubrelations>::View;
315 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_poseidon2_perm)) *
316 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_poseidon2_perm)));
317 std::get<36>(evals) += (tmp * scaling_factor);
318 }
319 {
320 using View = typename std::tuple_element_t<37, ContainerOverSubrelations>::View;
321 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_sha256_compression)) *
322 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_sha256_compression)));
323 std::get<37>(evals) += (tmp * scaling_factor);
324 }
325 {
326 using View = typename std::tuple_element_t<38, ContainerOverSubrelations>::View;
327 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_keccakf1600)) *
328 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_keccakf1600)));
329 std::get<38>(evals) += (tmp * scaling_factor);
330 }
331 {
332 using View = typename std::tuple_element_t<39, ContainerOverSubrelations>::View;
333 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_ecc_add)) *
334 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_ecc_add)));
335 std::get<39>(evals) += (tmp * scaling_factor);
336 }
337 {
338 using View = typename std::tuple_element_t<40, ContainerOverSubrelations>::View;
339 auto tmp = static_cast<View>(in.get(C::execution_sel_exec_dispatch_to_radix)) *
340 (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_to_radix)));
341 std::get<40>(evals) += (tmp * scaling_factor);
342 }
343 { // SUBTRACE_ID_DECOMPOSITION
344 using View = typename std::tuple_element_t<41, ContainerOverSubrelations>::View;
345 auto tmp =
346 ((static_cast<View>(in.get(C::execution_sel_exec_dispatch_execution)) *
347 CView(constants_AVM_SUBTRACE_ID_EXECUTION) +
348 static_cast<View>(in.get(C::execution_sel_exec_dispatch_alu)) * CView(constants_AVM_SUBTRACE_ID_ALU) +
349 static_cast<View>(in.get(C::execution_sel_exec_dispatch_bitwise)) *
350 CView(constants_AVM_SUBTRACE_ID_BITWISE) +
351 static_cast<View>(in.get(C::execution_sel_exec_dispatch_cast)) * CView(constants_AVM_SUBTRACE_ID_CAST) +
352 static_cast<View>(in.get(C::execution_sel_exec_dispatch_calldata_copy)) *
353 CView(constants_AVM_SUBTRACE_ID_CALLDATA_COPY) +
354 static_cast<View>(in.get(C::execution_sel_exec_dispatch_returndata_copy)) *
355 CView(constants_AVM_SUBTRACE_ID_RETURNDATA_COPY) +
356 static_cast<View>(in.get(C::execution_sel_exec_dispatch_set)) * CView(constants_AVM_SUBTRACE_ID_SET) +
357 static_cast<View>(in.get(C::execution_sel_exec_dispatch_get_contract_instance)) *
358 CView(constants_AVM_SUBTRACE_ID_GETCONTRACTINSTANCE) +
359 static_cast<View>(in.get(C::execution_sel_exec_dispatch_emit_unencrypted_log)) *
360 CView(constants_AVM_SUBTRACE_ID_EMITUNENCRYPTEDLOG) +
361 static_cast<View>(in.get(C::execution_sel_exec_dispatch_poseidon2_perm)) *
362 CView(constants_AVM_SUBTRACE_ID_POSEIDON2_PERM) +
363 static_cast<View>(in.get(C::execution_sel_exec_dispatch_sha256_compression)) *
364 CView(constants_AVM_SUBTRACE_ID_SHA256_COMPRESSION) +
365 static_cast<View>(in.get(C::execution_sel_exec_dispatch_keccakf1600)) *
366 CView(constants_AVM_SUBTRACE_ID_KECCAKF1600) +
367 static_cast<View>(in.get(C::execution_sel_exec_dispatch_ecc_add)) * CView(constants_AVM_SUBTRACE_ID_ECC) +
368 static_cast<View>(in.get(C::execution_sel_exec_dispatch_to_radix)) *
369 CView(constants_AVM_SUBTRACE_ID_TO_RADIX)) -
370 static_cast<View>(in.get(C::execution_sel_should_execute_opcode)) *
371 static_cast<View>(in.get(C::execution_subtrace_id)));
372 std::get<41>(evals) += (tmp * scaling_factor);
373 }
374 {
375 using View = typename std::tuple_element_t<42, ContainerOverSubrelations>::View;
376 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_get_env_var)) *
377 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_get_env_var)));
378 std::get<42>(evals) += (tmp * scaling_factor);
379 }
380 {
381 using View = typename std::tuple_element_t<43, ContainerOverSubrelations>::View;
382 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_mov)) *
383 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_mov)));
384 std::get<43>(evals) += (tmp * scaling_factor);
385 }
386 {
387 using View = typename std::tuple_element_t<44, ContainerOverSubrelations>::View;
388 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_jump)) *
389 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_jump)));
390 std::get<44>(evals) += (tmp * scaling_factor);
391 }
392 {
393 using View = typename std::tuple_element_t<45, ContainerOverSubrelations>::View;
394 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_jumpi)) *
395 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_jumpi)));
396 std::get<45>(evals) += (tmp * scaling_factor);
397 }
398 {
399 using View = typename std::tuple_element_t<46, ContainerOverSubrelations>::View;
400 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_call)) *
401 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_call)));
402 std::get<46>(evals) += (tmp * scaling_factor);
403 }
404 {
405 using View = typename std::tuple_element_t<47, ContainerOverSubrelations>::View;
406 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_static_call)) *
407 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_static_call)));
408 std::get<47>(evals) += (tmp * scaling_factor);
409 }
410 {
411 using View = typename std::tuple_element_t<48, ContainerOverSubrelations>::View;
412 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_internal_call)) *
413 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_internal_call)));
414 std::get<48>(evals) += (tmp * scaling_factor);
415 }
416 {
417 using View = typename std::tuple_element_t<49, ContainerOverSubrelations>::View;
418 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_internal_return)) *
419 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_internal_return)));
420 std::get<49>(evals) += (tmp * scaling_factor);
421 }
422 {
423 using View = typename std::tuple_element_t<50, ContainerOverSubrelations>::View;
424 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_return)) *
425 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_return)));
426 std::get<50>(evals) += (tmp * scaling_factor);
427 }
428 {
429 using View = typename std::tuple_element_t<51, ContainerOverSubrelations>::View;
430 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_revert)) *
431 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_revert)));
432 std::get<51>(evals) += (tmp * scaling_factor);
433 }
434 {
435 using View = typename std::tuple_element_t<52, ContainerOverSubrelations>::View;
436 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_success_copy)) *
437 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_success_copy)));
438 std::get<52>(evals) += (tmp * scaling_factor);
439 }
440 {
441 using View = typename std::tuple_element_t<53, ContainerOverSubrelations>::View;
442 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_returndata_size)) *
443 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_returndata_size)));
444 std::get<53>(evals) += (tmp * scaling_factor);
445 }
446 {
447 using View = typename std::tuple_element_t<54, ContainerOverSubrelations>::View;
448 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_debug_log)) *
449 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_debug_log)));
450 std::get<54>(evals) += (tmp * scaling_factor);
451 }
452 {
453 using View = typename std::tuple_element_t<55, ContainerOverSubrelations>::View;
454 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_sload)) *
455 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_sload)));
456 std::get<55>(evals) += (tmp * scaling_factor);
457 }
458 {
459 using View = typename std::tuple_element_t<56, ContainerOverSubrelations>::View;
460 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_sstore)) *
461 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_sstore)));
462 std::get<56>(evals) += (tmp * scaling_factor);
463 }
464 {
465 using View = typename std::tuple_element_t<57, ContainerOverSubrelations>::View;
466 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_notehash_exists)) *
467 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_notehash_exists)));
468 std::get<57>(evals) += (tmp * scaling_factor);
469 }
470 {
471 using View = typename std::tuple_element_t<58, ContainerOverSubrelations>::View;
472 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_emit_notehash)) *
473 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_emit_notehash)));
474 std::get<58>(evals) += (tmp * scaling_factor);
475 }
476 {
477 using View = typename std::tuple_element_t<59, ContainerOverSubrelations>::View;
478 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_l1_to_l2_message_exists)) *
479 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_l1_to_l2_message_exists)));
480 std::get<59>(evals) += (tmp * scaling_factor);
481 }
482 {
483 using View = typename std::tuple_element_t<60, ContainerOverSubrelations>::View;
484 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_nullifier_exists)) *
485 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_nullifier_exists)));
486 std::get<60>(evals) += (tmp * scaling_factor);
487 }
488 {
489 using View = typename std::tuple_element_t<61, ContainerOverSubrelations>::View;
490 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_emit_nullifier)) *
491 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_emit_nullifier)));
492 std::get<61>(evals) += (tmp * scaling_factor);
493 }
494 {
495 using View = typename std::tuple_element_t<62, ContainerOverSubrelations>::View;
496 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_send_l2_to_l1_msg)) *
497 (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_send_l2_to_l1_msg)));
498 std::get<62>(evals) += (tmp * scaling_factor);
499 }
500 { // EXEC_OP_ID_DECOMPOSITION
501 using View = typename std::tuple_element_t<63, ContainerOverSubrelations>::View;
502 auto tmp =
503 ((static_cast<View>(in.get(C::execution_sel_execute_get_env_var)) *
504 CView(constants_AVM_EXEC_OP_ID_GETENVVAR) +
505 static_cast<View>(in.get(C::execution_sel_execute_mov)) * CView(constants_AVM_EXEC_OP_ID_MOV) +
506 static_cast<View>(in.get(C::execution_sel_execute_jump)) * CView(constants_AVM_EXEC_OP_ID_JUMP) +
507 static_cast<View>(in.get(C::execution_sel_execute_jumpi)) * CView(constants_AVM_EXEC_OP_ID_JUMPI) +
508 static_cast<View>(in.get(C::execution_sel_execute_call)) * CView(constants_AVM_EXEC_OP_ID_CALL) +
509 static_cast<View>(in.get(C::execution_sel_execute_static_call)) *
510 CView(constants_AVM_EXEC_OP_ID_STATICCALL) +
511 static_cast<View>(in.get(C::execution_sel_execute_internal_call)) *
512 CView(constants_AVM_EXEC_OP_ID_INTERNALCALL) +
513 static_cast<View>(in.get(C::execution_sel_execute_internal_return)) *
514 CView(constants_AVM_EXEC_OP_ID_INTERNALRETURN) +
515 static_cast<View>(in.get(C::execution_sel_execute_return)) * CView(constants_AVM_EXEC_OP_ID_RETURN) +
516 static_cast<View>(in.get(C::execution_sel_execute_revert)) * CView(constants_AVM_EXEC_OP_ID_REVERT) +
517 static_cast<View>(in.get(C::execution_sel_execute_success_copy)) *
518 CView(constants_AVM_EXEC_OP_ID_SUCCESSCOPY) +
519 static_cast<View>(in.get(C::execution_sel_execute_returndata_size)) *
520 CView(constants_AVM_EXEC_OP_ID_RETURNDATASIZE) +
521 static_cast<View>(in.get(C::execution_sel_execute_debug_log)) * CView(constants_AVM_EXEC_OP_ID_DEBUGLOG) +
522 static_cast<View>(in.get(C::execution_sel_execute_sload)) * CView(constants_AVM_EXEC_OP_ID_SLOAD) +
523 static_cast<View>(in.get(C::execution_sel_execute_sstore)) * CView(constants_AVM_EXEC_OP_ID_SSTORE) +
524 static_cast<View>(in.get(C::execution_sel_execute_notehash_exists)) *
525 CView(constants_AVM_EXEC_OP_ID_NOTEHASH_EXISTS) +
526 static_cast<View>(in.get(C::execution_sel_execute_emit_notehash)) *
527 CView(constants_AVM_EXEC_OP_ID_EMIT_NOTEHASH) +
528 static_cast<View>(in.get(C::execution_sel_execute_l1_to_l2_message_exists)) *
529 CView(constants_AVM_EXEC_OP_ID_L1_TO_L2_MESSAGE_EXISTS) +
530 static_cast<View>(in.get(C::execution_sel_execute_nullifier_exists)) *
531 CView(constants_AVM_EXEC_OP_ID_NULLIFIER_EXISTS) +
532 static_cast<View>(in.get(C::execution_sel_execute_emit_nullifier)) *
533 CView(constants_AVM_EXEC_OP_ID_EMIT_NULLIFIER) +
534 static_cast<View>(in.get(C::execution_sel_execute_send_l2_to_l1_msg)) *
535 CView(constants_AVM_EXEC_OP_ID_SENDL2TOL1MSG)) -
536 static_cast<View>(in.get(C::execution_sel_exec_dispatch_execution)) *
537 static_cast<View>(in.get(C::execution_subtrace_operation_id)));
538 std::get<63>(evals) += (tmp * scaling_factor);
539 }
540 { // PC_NEXT_ROW_INT_CALL_JUMP
541 using View = typename std::tuple_element_t<64, ContainerOverSubrelations>::View;
542 auto tmp = static_cast<View>(in.get(C::execution_sel_shift)) *
543 (static_cast<View>(in.get(C::execution_sel_execute_internal_call)) +
544 static_cast<View>(in.get(C::execution_sel_execute_jump))) *
545 (static_cast<View>(in.get(C::execution_pc_shift)) - static_cast<View>(in.get(C::execution_rop_0_)));
546 std::get<64>(evals) += (tmp * scaling_factor);
547 }
548 { // PC_NEXT_ROW_JUMPI
549 using View = typename std::tuple_element_t<65, ContainerOverSubrelations>::View;
550 auto tmp =
551 static_cast<View>(in.get(C::execution_sel_shift)) *
552 static_cast<View>(in.get(C::execution_sel_execute_jumpi)) *
553 ((static_cast<View>(in.get(C::execution_register_0_)) *
554 (static_cast<View>(in.get(C::execution_rop_1_)) - static_cast<View>(in.get(C::execution_next_pc))) +
555 static_cast<View>(in.get(C::execution_next_pc))) -
556 static_cast<View>(in.get(C::execution_pc_shift)));
557 std::get<65>(evals) += (tmp * scaling_factor);
558 }
559 { // MOV_SAME_VALUE
560 using View = typename std::tuple_element_t<66, ContainerOverSubrelations>::View;
561 auto tmp =
562 static_cast<View>(in.get(C::execution_sel_execute_mov)) *
563 (static_cast<View>(in.get(C::execution_register_0_)) - static_cast<View>(in.get(C::execution_register_1_)));
564 std::get<66>(evals) += (tmp * scaling_factor);
565 }
566 { // MOV_SAME_TAG
567 using View = typename std::tuple_element_t<67, ContainerOverSubrelations>::View;
568 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_mov)) *
569 (static_cast<View>(in.get(C::execution_mem_tag_reg_0_)) -
570 static_cast<View>(in.get(C::execution_mem_tag_reg_1_)));
571 std::get<67>(evals) += (tmp * scaling_factor);
572 }
573 { // SUCCESS_COPY_WRITE_REG
574 using View = typename std::tuple_element_t<68, ContainerOverSubrelations>::View;
575 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_success_copy)) *
576 (static_cast<View>(in.get(C::execution_register_0_)) -
577 static_cast<View>(in.get(C::execution_last_child_success)));
578 std::get<68>(evals) += (tmp * scaling_factor);
579 }
580 { // SUCCESS_COPY_U1_TAG
581 using View = typename std::tuple_element_t<69, ContainerOverSubrelations>::View;
582 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_success_copy)) *
583 (static_cast<View>(in.get(C::execution_mem_tag_reg_0_)) - CView(constants_MEM_TAG_U1));
584 std::get<69>(evals) += (tmp * scaling_factor);
585 }
586 { // RETURNDATA_SIZE_WRITE_REG
587 using View = typename std::tuple_element_t<70, ContainerOverSubrelations>::View;
588 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_returndata_size)) *
589 (static_cast<View>(in.get(C::execution_register_0_)) -
590 static_cast<View>(in.get(C::execution_last_child_returndata_size)));
591 std::get<70>(evals) += (tmp * scaling_factor);
592 }
593 { // RETURNDATA_SIZE_U32_TAG
594 using View = typename std::tuple_element_t<71, ContainerOverSubrelations>::View;
595 auto tmp = static_cast<View>(in.get(C::execution_sel_execute_returndata_size)) *
596 (static_cast<View>(in.get(C::execution_mem_tag_reg_0_)) - CView(constants_MEM_TAG_U32));
597 std::get<71>(evals) += (tmp * scaling_factor);
598 }
599 { // PUBLIC_DATA_TREE_ROOT_NOT_CHANGED
600 using View = typename std::tuple_element_t<72, ContainerOverSubrelations>::View;
601 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_sstore))) *
602 (static_cast<View>(in.get(C::execution_prev_public_data_tree_root)) -
603 static_cast<View>(in.get(C::execution_public_data_tree_root)));
604 std::get<72>(evals) += (tmp * scaling_factor);
605 }
606 { // PUBLIC_DATA_TREE_SIZE_NOT_CHANGED
607 using View = typename std::tuple_element_t<73, ContainerOverSubrelations>::View;
608 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_sstore))) *
609 (static_cast<View>(in.get(C::execution_prev_public_data_tree_size)) -
610 static_cast<View>(in.get(C::execution_public_data_tree_size)));
611 std::get<73>(evals) += (tmp * scaling_factor);
612 }
613 { // WRITTEN_PUBLIC_DATA_SLOTS_TREE_ROOT_NOT_CHANGED
614 using View = typename std::tuple_element_t<74, ContainerOverSubrelations>::View;
615 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_sstore))) *
616 (static_cast<View>(in.get(C::execution_prev_written_public_data_slots_tree_root)) -
617 static_cast<View>(in.get(C::execution_written_public_data_slots_tree_root)));
618 std::get<74>(evals) += (tmp * scaling_factor);
619 }
620 { // WRITTEN_PUBLIC_DATA_SLOTS_TREE_SIZE_NOT_CHANGED
621 using View = typename std::tuple_element_t<75, ContainerOverSubrelations>::View;
622 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_sstore))) *
623 (static_cast<View>(in.get(C::execution_prev_written_public_data_slots_tree_size)) -
624 static_cast<View>(in.get(C::execution_written_public_data_slots_tree_size)));
625 std::get<75>(evals) += (tmp * scaling_factor);
626 }
627 { // NOTE_HASH_TREE_ROOT_NOT_CHANGED
628 using View = typename std::tuple_element_t<76, ContainerOverSubrelations>::View;
629 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_emit_notehash))) *
630 (static_cast<View>(in.get(C::execution_prev_note_hash_tree_root)) -
631 static_cast<View>(in.get(C::execution_note_hash_tree_root)));
632 std::get<76>(evals) += (tmp * scaling_factor);
633 }
634 { // NOTE_HASH_TREE_SIZE_NOT_CHANGED
635 using View = typename std::tuple_element_t<77, ContainerOverSubrelations>::View;
636 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_emit_notehash))) *
637 (static_cast<View>(in.get(C::execution_prev_note_hash_tree_size)) -
638 static_cast<View>(in.get(C::execution_note_hash_tree_size)));
639 std::get<77>(evals) += (tmp * scaling_factor);
640 }
641 { // NUM_NOTE_HASHES_EMITTED_NOT_CHANGED
642 using View = typename std::tuple_element_t<78, ContainerOverSubrelations>::View;
643 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_emit_notehash))) *
644 (static_cast<View>(in.get(C::execution_prev_num_note_hashes_emitted)) -
645 static_cast<View>(in.get(C::execution_num_note_hashes_emitted)));
646 std::get<78>(evals) += (tmp * scaling_factor);
647 }
648 { // NULLIFIER_TREE_ROOT_NOT_CHANGED
649 using View = typename std::tuple_element_t<79, ContainerOverSubrelations>::View;
650 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_emit_nullifier))) *
651 (static_cast<View>(in.get(C::execution_prev_nullifier_tree_root)) -
652 static_cast<View>(in.get(C::execution_nullifier_tree_root)));
653 std::get<79>(evals) += (tmp * scaling_factor);
654 }
655 { // NULLIFIER_TREE_SIZE_NOT_CHANGED
656 using View = typename std::tuple_element_t<80, ContainerOverSubrelations>::View;
657 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_emit_nullifier))) *
658 (static_cast<View>(in.get(C::execution_prev_nullifier_tree_size)) -
659 static_cast<View>(in.get(C::execution_nullifier_tree_size)));
660 std::get<80>(evals) += (tmp * scaling_factor);
661 }
662 { // NUM_NULLIFIERS_EMITTED_NOT_CHANGED
663 using View = typename std::tuple_element_t<81, ContainerOverSubrelations>::View;
664 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_emit_nullifier))) *
665 (static_cast<View>(in.get(C::execution_prev_num_nullifiers_emitted)) -
666 static_cast<View>(in.get(C::execution_num_nullifiers_emitted)));
667 std::get<81>(evals) += (tmp * scaling_factor);
668 }
669 { // NUM_UNENCRYPTED_LOGS_NOT_CHANGED
670 using View = typename std::tuple_element_t<82, ContainerOverSubrelations>::View;
671 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel_exec_dispatch_emit_unencrypted_log))) *
672 (static_cast<View>(in.get(C::execution_prev_num_unencrypted_log_fields)) -
673 static_cast<View>(in.get(C::execution_num_unencrypted_log_fields)));
674 std::get<82>(evals) += (tmp * scaling_factor);
675 }
676 { // NUM_L2_TO_L1_MESSAGES_NOT_CHANGED
677 using View = typename std::tuple_element_t<83, ContainerOverSubrelations>::View;
678 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel_execute_send_l2_to_l1_msg))) *
679 (static_cast<View>(in.get(C::execution_prev_num_l2_to_l1_messages)) -
680 static_cast<View>(in.get(C::execution_num_l2_to_l1_messages)));
681 std::get<83>(evals) += (tmp * scaling_factor);
682 }
683 { // RETRIEVED_BYTECODES_TREE_ROOT_NOT_CHANGED
684 using View = typename std::tuple_element_t<84, ContainerOverSubrelations>::View;
685 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel_first_row_in_context))) *
686 (static_cast<View>(in.get(C::execution_prev_retrieved_bytecodes_tree_root)) -
687 static_cast<View>(in.get(C::execution_retrieved_bytecodes_tree_root)));
688 std::get<84>(evals) += (tmp * scaling_factor);
689 }
690 { // RETRIEVED_BYTECODES_TREE_SIZE_NOT_CHANGED
691 using View = typename std::tuple_element_t<85, ContainerOverSubrelations>::View;
692 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel_first_row_in_context))) *
693 (static_cast<View>(in.get(C::execution_prev_retrieved_bytecodes_tree_size)) -
694 static_cast<View>(in.get(C::execution_retrieved_bytecodes_tree_size)));
695 std::get<85>(evals) += (tmp * scaling_factor);
696 }
697 {
698 using View = typename std::tuple_element_t<86, ContainerOverSubrelations>::View;
699 auto tmp = static_cast<View>(in.get(C::execution_sel_opcode_error)) *
700 (FF(1) - static_cast<View>(in.get(C::execution_sel_opcode_error)));
701 std::get<86>(evals) += (tmp * scaling_factor);
702 }
703 { // INFALLIBLE_OPCODES_SUCCESS
704 using View = typename std::tuple_element_t<87, ContainerOverSubrelations>::View;
705 auto tmp = (static_cast<View>(in.get(C::execution_sel_execute_mov)) +
706 static_cast<View>(in.get(C::execution_sel_execute_returndata_size)) +
707 static_cast<View>(in.get(C::execution_sel_execute_jump)) +
708 static_cast<View>(in.get(C::execution_sel_execute_jumpi)) +
709 static_cast<View>(in.get(C::execution_sel_execute_debug_log)) +
710 static_cast<View>(in.get(C::execution_sel_execute_success_copy)) +
711 static_cast<View>(in.get(C::execution_sel_execute_call)) +
712 static_cast<View>(in.get(C::execution_sel_execute_static_call)) +
713 static_cast<View>(in.get(C::execution_sel_execute_internal_call)) +
714 static_cast<View>(in.get(C::execution_sel_execute_return)) +
715 static_cast<View>(in.get(C::execution_sel_execute_revert)) +
716 static_cast<View>(in.get(C::execution_sel_execute_sload)) +
717 static_cast<View>(in.get(C::execution_sel_execute_notehash_exists)) +
718 static_cast<View>(in.get(C::execution_sel_execute_l1_to_l2_message_exists)) +
719 static_cast<View>(in.get(C::execution_sel_execute_nullifier_exists))) *
720 static_cast<View>(in.get(C::execution_sel_opcode_error));
721 std::get<87>(evals) += (tmp * scaling_factor);
722 }
723 {
724 using View = typename std::tuple_element_t<88, ContainerOverSubrelations>::View;
725 auto tmp = (FF(1) - static_cast<View>(in.get(C::execution_sel_should_execute_opcode))) *
726 static_cast<View>(in.get(C::execution_sel_opcode_error));
727 std::get<88>(evals) += (tmp * scaling_factor);
728 }
729 {
730 using View = typename std::tuple_element_t<89, ContainerOverSubrelations>::View;
731 auto tmp = (static_cast<View>(in.get(C::execution_sel_should_write_registers)) -
732 static_cast<View>(in.get(C::execution_sel_should_execute_opcode)) *
733 (FF(1) - static_cast<View>(in.get(C::execution_sel_opcode_error))));
734 std::get<89>(evals) += (tmp * scaling_factor);
735 }
736 {
737 using View = typename std::tuple_element_t<90, ContainerOverSubrelations>::View;
738 auto tmp = (static_cast<View>(in.get(C::execution_sel_error)) -
739 (static_cast<View>(in.get(C::execution_sel_bytecode_retrieval_failure)) +
740 static_cast<View>(in.get(C::execution_sel_instruction_fetching_failure)) +
741 static_cast<View>(in.get(C::execution_sel_addressing_error)) +
742 static_cast<View>(in.get(C::execution_sel_register_read_error)) +
743 static_cast<View>(in.get(C::execution_sel_out_of_gas)) +
744 static_cast<View>(in.get(C::execution_sel_opcode_error))));
745 std::get<90>(evals) += (tmp * scaling_factor);
746 }
747}
748
749} // namespace bb::avm2
static void accumulate(ContainerOverSubrelations &evals, const AllEntities &in, const RelationParameters< FF > &, const FF &scaling_factor)
ColumnAndShifts
Definition columns.hpp:34
AvmFlavorSettings::FF FF
Definition field.hpp:10
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
#define CView(v)
Container for parameters used by the grand product (permutation, lookup) Honk relations.